Где искать код объекта: модули документов, справочников и форм в конфигураторе

· 9 мин

Содержание

Модуль объекта открывается только в конфигураторе: Конфигурация → Открыть конфигурацию, затем в дереве найдите нужный документ или справочник, щёлкните по нему правой кнопкой и выберите Открыть модуль объекта. Рядом в том же меню — Открыть модуль менеджера.

Частое заблуждение — искать код в пользовательском режиме. В режиме 1С:Предприятие модуль не открыть и не поправить: там можно только узнать, какой объект нужен, и запустить отладку. Сам текст модуля всегда живёт в конфигураторе (или в EDT, если команда работает в ней).

Подготовка: что нужно, чтобы добраться до модуля

Прежде чем открывать модуль, проверьте три вещи.

  • 🔑 Вход в конфигуратор. Если в базе есть список пользователей, войти в конфигуратор может только пользователь с правом «Администрирование». Обычный бухгалтер увидит отказ.
  • 📂 Открытая конфигурация. После запуска конфигуратора дерево объектов не показывается само. Его открывают командой Конфигурация → Открыть конфигурацию.
  • 🖥️ Нужная база. В списке баз легко перепутать рабочую и копию. Код удобнее изучать и править в копии, а в рабочую переносить уже проверенное.

Если модуль нужен только почитать, монопольный режим не требуется. Конфигуратор спокойно открывается, пока пользователи работают в базе. Монопольный доступ понадобится позже — когда будете обновлять конфигурацию базы данных со сменой структуры.

Как открыть модуль объекта в конфигураторе: три способа

Все способы ведут в одно и то же окно редактора. Выбирайте тот, что быстрее в вашей ситуации.

Способ 1. Контекстное меню в дереве конфигурации

  1. Раскройте ветку нужного вида объектов: Документы, Справочники, Обработки, Отчёты и т. д.
  2. Найдите объект. В длинных ветках проще начать набирать имя с клавиатуры, когда фокус стоит в дереве, — курсор переместится к совпадению.
  3. Щёлкните по объекту правой кнопкой мыши.
  4. Выберите Открыть модуль объекта или Открыть модуль менеджера.

Модуль откроется отдельной вкладкой. Если он пустой, это нормально: у нового или простого объекта кода может не быть вовсе.

Способ 2. Окно редактирования объекта

  1. Дважды щёлкните по объекту в дереве — откроется окно редактирования с вкладками.
  2. Перейдите на вкладку Прочее.
  3. Нажмите кнопку Модуль объекта или Модуль менеджера.

Этот путь удобен, когда вы и так настраиваете реквизиты или формы объекта и не хотите возвращаться в дерево.

Способ 3. Палитра свойств

Выделите объект и нажмите Alt+Enter — откроется палитра свойств. В ней есть строки «Модуль объекта» и «Модуль менеджера» со ссылкой Открыть. Способ медленнее остальных, но выручает, когда контекстное меню перегружено командами расширений и обработчиков.

Модули формы, приложения и общие модули: где каждый открывается

Модуль объекта — не единственный. В 8.3 код разнесён по нескольким видам модулей, и у каждого своя «точка входа».

МодульГде находитсяКак открыть
Модуль объектаДокумент, справочник, обработка, отчётПКМ по объекту → Открыть модуль объекта
Модуль менеджераТе же объектыПКМ по объекту → Открыть модуль менеджера
Модуль формыВетка Формы внутри объектаОткрыть форму → вкладка Модуль внизу редактора
Модуль набора записейРегистры сведений, накопления, бухгалтерииПКМ по регистру → Открыть модуль набора записей
Модуль менеджера значенияКонстантыПКМ по константе → Открыть модуль менеджера значения
Модуль командыВетка Команды объекта или общие командыДвойной щелчок по команде
Общий модульОбщие → Общие модулиДвойной щелчок по модулю
Модуль сеанса, управляемого приложения, внешнего соединенияКорень конфигурацииПКМ по самой верхней строке дерева → нужная команда Открыть модуль…

Чем модули отличаются по смыслу

  • 📄 Модуль объекта — код конкретного экземпляра: обработчики ПередЗаписью, ОбработкаПроведения, ОбработкаЗаполнения. Для документа именно здесь формируются движения при проведении.
  • 🗂️ Модуль менеджера — код, который работает с объектом «в целом»: печать, служебные функции, обработчики получения формы. Экземпляр объекта для этого не нужен.
  • 🪟 Модуль формы — всё, что происходит в окне: нажатия кнопок, изменения полей, открытие и закрытие формы. Здесь директивы &НаКлиенте и &НаСервере встречаются на каждом шагу.
  • 🧩 Общий модуль — библиотека процедур для всей конфигурации. Его флажки в свойствах (Клиент, Сервер, Вызов сервера, Глобальный, Привилегированный) определяют, откуда его можно вызвать.
  • 🚀 Модули приложения и сеанса — код при старте программы и начале сеанса пользователя.

Модуль формы: короткий путь к обработчику

Самый быстрый способ попасть в нужное место модуля формы — через сам элемент.

  1. Откройте форму и выделите элемент: кнопку, поле, таблицу.
  2. В палитре свойств найдите раздел событий.
  3. Нажмите кнопку с лупой рядом с событием.

Если обработчик уже есть, конфигуратор перейдёт к нему. Если нет — создаст заготовку процедуры и спросит, где её выполнять: на клиенте, на сервере или в обоих местах.

Как найти модуль, который сработал в режиме Предприятия

Пользователь пишет: «при проведении вылезает ошибка». Открыть модуль прямо из пользовательского режима нельзя, но можно быстро понять, где искать.

Узнайте имя объекта

  • 🔗 Откройте документ и нажмите Shift+F11 («Получить ссылку»). В ссылке будет внутреннее имя объекта метаданных, например Документ.РеализацияТоваровУслуг. По этому имени объект находится в дереве конфигуратора.
  • 🧾 Текст ошибки 1С часто сам называет модуль и строку: {Документ.ПоступлениеТоваровУслуг.МодульОбъекта(152)}. Число в скобках — номер строки. В модуле нажмите Ctrl+G и введите его.

Запустите Предприятие в режиме отладки

Это главный приём разработчика: Предприятие запускается из конфигуратора, а модуль открывается сам на нужной строке.

  1. В конфигураторе откройте модуль и поставьте точку останова на подозрительной строке клавишей F9.
  2. Нажмите F5 — запустится 1С:Предприятие в режиме отладки.
  3. Повторите действие пользователя в Предприятии: проведите документ, нажмите кнопку.
  4. Выполнение остановится, а конфигуратор покажет модуль с подсвеченной строкой.

Если точное место неизвестно, используйте команду приостановки выполнения в меню Отладка конфигуратора. Пока Предприятие что-то считает, она остановит код и откроет модуль там, где он выполнялся в этот момент.

Подключение к уже запущенному сеансу

Сеанс Предприятия, запущенный не из конфигуратора, можно подключить к отладке через Отладка → Подключение. Чтобы сеанс был виден в списке, запустите клиент с параметром /DEBUG:

"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /F"D:\Bases\Buh_copy" /DEBUG

В клиент-серверном варианте отладка серверного кода работает, только если сервер 1С запущен с ключом -debug.

Перезапуск службы сервера 1С ради включения отладки оборвёт сеансы всех пользователей этого кластера. Делайте это вне рабочего времени или на тестовом сервере.

Внешние обработки и отчёты

Модуль внешней обработки (.epf) или отчёта (.erf) открывают в конфигураторе через Файл → Открыть. Конфигурацию базы при этом открывать не обязательно. После выбора файла появится дерево обработки — дальше всё так же: ПКМ → Открыть модуль объекта или форма → вкладка Модуль.

Горячие клавиши для работы с модулем

Мышью до модуля добираться долго. Вот клавиши, которые экономят больше всего действий.

КлавишиЧто делают
Alt+EnterПалитра свойств выделенного объекта
Ctrl+Alt+PСписок процедур и функций модуля с поиском
F12Перейти к определению процедуры под курсором
Ctrl+GПерейти к строке по номеру
Ctrl+F / Ctrl+HПоиск и замена в текущем модуле
Alt+F2 / F2Поставить закладку / перейти к следующей
Ctrl+SpaceКонтекстная подсказка
Ctrl+F1Синтакс-помощник по слову под курсором
Ctrl+F7Проверка синтаксиса модуля
F9Точка останова
F5Запуск отладки
F7Обновить конфигурацию базы данных

F12 работает и для общих модулей: курсор на ОбщегоНазначения.СообщитьПользователю — и вы уже внутри общего модуля, без поиска по дереву.

Навигация по открытому модулю

В типовых конфигурациях модуль документа легко занимает несколько тысяч строк. Листать его колёсиком бесполезно.

Переход к процедуре

Нажмите Ctrl+Alt+P. Откроется список всех процедур и функций модуля. Начните вводить часть имени — список отфильтруется. Двойной щелчок переносит к началу процедуры.

Области и группировки

Код в типовых решениях разбит на блоки:

#Область ОбработчикиСобытий

Процедура ОбработкаПроведения(Отказ, РежимПроведения)
	// формирование движений
КонецПроцедуры

#КонецОбласти

Слева от #Область есть значок свёртки. Сверните все области и раскрывайте только нужную — модуль на 3000 строк превратится в оглавление из 10–15 пунктов.

Поиск по всей конфигурации

Когда неясно, в каком модуле лежит процедура, используйте Правка → Глобальный поиск. Он ищет по текстам всех модулей, а результаты выводит списком: двойной щелчок открывает модуль на найденной строке.

Если модуль не открывается или не редактируется

Модуль может открыться только для чтения, вовсе не открыться или показать пустой текст. У каждого симптома своя причина.

Диагностика: выберите симптом

Модуль типового объекта и расширения

Даже если правка основной конфигурации запрещена, код можно изменить через расширение. В дереве расширения заимствуют объект, затем открывают его модуль и пишут процедуры с аннотациями &Перед, &После или &Вместо. Типовой модуль при этом остаётся нетронутым, и обновления ставятся без сравнения. Расширения доступны в платформе с версии 8.3.6, перехват модулей объектов — в более поздних релизах.

Частые ошибки при работе с модулями

  • ❌ Правка без обновления базы. Изменили код, сохранили — а в Предприятии ничего не поменялось. Сохранение пишет изменения в основную конфигурацию. В базу они попадут только после F7 («Обновить конфигурацию базы данных») и перезапуска сеансов пользователей.
  • ❌ Код не в том модуле. Процедура печати оказалась в модуле объекта, а вызывается из менеджера — и её «не видно». Сверьтесь с таблицей выше: экземплярное — в модуль объекта, общее для всех — в модуль менеджера.
  • ❌ Не та директива в модуле формы. Обращение к базе в процедуре с &НаКлиенте вызывает ошибку. Работу с данными выносите в процедуру &НаСервере.
  • ❌ Флажки общего модуля. Модуль с одним флажком Сервер не вызывается с клиента. Для такого вызова нужен флажок Вызов сервера.
  • ❌ Проверка на уже открытой форме. Поправили модуль формы, обновили базу, а форма у пользователя ведёт себя по-старому. Открытая форма живёт со старым кодом: закройте её и откройте заново, а надёжнее — перезапустите сеанс.
  • ❌ Без проверки синтаксиса. Опечатка в одном модуле не даст обновить конфигурацию базы, а конфигуратор покажет список ошибок только при сохранении. Нажимайте Ctrl+F7 после каждой заметной правки — так ошибка найдётся сразу, пока вы помните, что меняли.
  • ❌ Правки прямо в рабочей базе. Ошибка синтаксиса в модуле проведения остановит работу всего отдела. Пробуйте изменения в копии базы и делайте резервную копию перед обновлением конфигурации рабочей базы.
Можно ли открыть модуль 1С без конфигуратора?
Да, в 1С:EDT — среде разработки на основе Eclipse. Там модули лежат в виде файлов проекта. В пользовательском режиме 1С:Предприятия код не открывается.
Как выгрузить модули в файлы, чтобы читать их в редакторе?
Через Конфигурация → Выгрузить конфигурацию в файлы. Каждый модуль сохранится отдельным файлом с расширением .bsl.
Почему модуль открылся, а в списке процедур пусто?
Модуль действительно пустой. У многих объектов код есть только в менеджере или в формах — проверьте их.
Видят ли пользователи изменения сразу после сохранения модуля?
Нет. Нужно обновить конфигурацию базы данных, а пользователям — перезапустить программу. Без изменения структуры обновление обычно проходит без монопольного режима.
Как найти модуль по тексту ошибки с номером строки?
Имя модуля в фигурных скобках указывает на объект и вид модуля. Откройте его и нажмите Ctrl+G, чтобы перейти к строке из скобок.