Где искать код объекта: модули документов, справочников и форм в конфигураторе
Содержание
Модуль объекта открывается только в конфигураторе: Конфигурация → Открыть конфигурацию, затем в дереве найдите нужный документ или справочник, щёлкните по нему правой кнопкой и выберите Открыть модуль объекта. Рядом в том же меню — Открыть модуль менеджера.
Частое заблуждение — искать код в пользовательском режиме. В режиме 1С:Предприятие модуль не открыть и не поправить: там можно только узнать, какой объект нужен, и запустить отладку. Сам текст модуля всегда живёт в конфигураторе (или в EDT, если команда работает в ней).
Подготовка: что нужно, чтобы добраться до модуля
Прежде чем открывать модуль, проверьте три вещи.
- 🔑 Вход в конфигуратор. Если в базе есть список пользователей, войти в конфигуратор может только пользователь с правом «Администрирование». Обычный бухгалтер увидит отказ.
- 📂 Открытая конфигурация. После запуска конфигуратора дерево объектов не показывается само. Его открывают командой
Конфигурация → Открыть конфигурацию. - 🖥️ Нужная база. В списке баз легко перепутать рабочую и копию. Код удобнее изучать и править в копии, а в рабочую переносить уже проверенное.
Если модуль нужен только почитать, монопольный режим не требуется. Конфигуратор спокойно открывается, пока пользователи работают в базе. Монопольный доступ понадобится позже — когда будете обновлять конфигурацию базы данных со сменой структуры.
Как открыть модуль объекта в конфигураторе: три способа
Все способы ведут в одно и то же окно редактора. Выбирайте тот, что быстрее в вашей ситуации.
Способ 1. Контекстное меню в дереве конфигурации
- Раскройте ветку нужного вида объектов:
Документы,Справочники,Обработки,Отчётыи т. д. - Найдите объект. В длинных ветках проще начать набирать имя с клавиатуры, когда фокус стоит в дереве, — курсор переместится к совпадению.
- Щёлкните по объекту правой кнопкой мыши.
- Выберите
Открыть модуль объектаилиОткрыть модуль менеджера.
Модуль откроется отдельной вкладкой. Если он пустой, это нормально: у нового или простого объекта кода может не быть вовсе.
Способ 2. Окно редактирования объекта
- Дважды щёлкните по объекту в дереве — откроется окно редактирования с вкладками.
- Перейдите на вкладку
Прочее. - Нажмите кнопку
Модуль объектаилиМодуль менеджера.
Этот путь удобен, когда вы и так настраиваете реквизиты или формы объекта и не хотите возвращаться в дерево.
Способ 3. Палитра свойств
Выделите объект и нажмите Alt+Enter — откроется палитра свойств. В ней есть строки «Модуль объекта» и «Модуль менеджера» со ссылкой Открыть. Способ медленнее остальных, но выручает, когда контекстное меню перегружено командами расширений и обработчиков.
Модули формы, приложения и общие модули: где каждый открывается
Модуль объекта — не единственный. В 8.3 код разнесён по нескольким видам модулей, и у каждого своя «точка входа».
| Модуль | Где находится | Как открыть |
|---|---|---|
| Модуль объекта | Документ, справочник, обработка, отчёт | ПКМ по объекту → Открыть модуль объекта |
| Модуль менеджера | Те же объекты | ПКМ по объекту → Открыть модуль менеджера |
| Модуль формы | Ветка Формы внутри объекта | Открыть форму → вкладка Модуль внизу редактора |
| Модуль набора записей | Регистры сведений, накопления, бухгалтерии | ПКМ по регистру → Открыть модуль набора записей |
| Модуль менеджера значения | Константы | ПКМ по константе → Открыть модуль менеджера значения |
| Модуль команды | Ветка Команды объекта или общие команды | Двойной щелчок по команде |
| Общий модуль | Общие → Общие модули | Двойной щелчок по модулю |
| Модуль сеанса, управляемого приложения, внешнего соединения | Корень конфигурации | ПКМ по самой верхней строке дерева → нужная команда Открыть модуль… |
Чем модули отличаются по смыслу
- 📄 Модуль объекта — код конкретного экземпляра: обработчики
ПередЗаписью,ОбработкаПроведения,ОбработкаЗаполнения. Для документа именно здесь формируются движения при проведении. - 🗂️ Модуль менеджера — код, который работает с объектом «в целом»: печать, служебные функции, обработчики получения формы. Экземпляр объекта для этого не нужен.
- 🪟 Модуль формы — всё, что происходит в окне: нажатия кнопок, изменения полей, открытие и закрытие формы. Здесь директивы
&НаКлиентеи&НаСерверевстречаются на каждом шагу. - 🧩 Общий модуль — библиотека процедур для всей конфигурации. Его флажки в свойствах (
Клиент,Сервер,Вызов сервера,Глобальный,Привилегированный) определяют, откуда его можно вызвать. - 🚀 Модули приложения и сеанса — код при старте программы и начале сеанса пользователя.
Модуль формы: короткий путь к обработчику
Самый быстрый способ попасть в нужное место модуля формы — через сам элемент.
- Откройте форму и выделите элемент: кнопку, поле, таблицу.
- В палитре свойств найдите раздел событий.
- Нажмите кнопку с лупой рядом с событием.
Если обработчик уже есть, конфигуратор перейдёт к нему. Если нет — создаст заготовку процедуры и спросит, где её выполнять: на клиенте, на сервере или в обоих местах.
Как найти модуль, который сработал в режиме Предприятия
Пользователь пишет: «при проведении вылезает ошибка». Открыть модуль прямо из пользовательского режима нельзя, но можно быстро понять, где искать.
Узнайте имя объекта
- 🔗 Откройте документ и нажмите
Shift+F11(«Получить ссылку»). В ссылке будет внутреннее имя объекта метаданных, напримерДокумент.РеализацияТоваровУслуг. По этому имени объект находится в дереве конфигуратора. - 🧾 Текст ошибки 1С часто сам называет модуль и строку:
{Документ.ПоступлениеТоваровУслуг.МодульОбъекта(152)}. Число в скобках — номер строки. В модуле нажмитеCtrl+Gи введите его.
Запустите Предприятие в режиме отладки
Это главный приём разработчика: Предприятие запускается из конфигуратора, а модуль открывается сам на нужной строке.
- В конфигураторе откройте модуль и поставьте точку останова на подозрительной строке клавишей
F9. - Нажмите
F5— запустится 1С:Предприятие в режиме отладки. - Повторите действие пользователя в Предприятии: проведите документ, нажмите кнопку.
- Выполнение остановится, а конфигуратор покажет модуль с подсвеченной строкой.
Если точное место неизвестно, используйте команду приостановки выполнения в меню Отладка конфигуратора. Пока Предприятие что-то считает, она остановит код и откроет модуль там, где он выполнялся в этот момент.
Подключение к уже запущенному сеансу
Сеанс Предприятия, запущенный не из конфигуратора, можно подключить к отладке через Отладка → Подключение. Чтобы сеанс был виден в списке, запустите клиент с параметром /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С без конфигуратора?
Как выгрузить модули в файлы, чтобы читать их в редакторе?
Конфигурация → Выгрузить конфигурацию в файлы. Каждый модуль сохранится отдельным файлом с расширением .bsl.Почему модуль открылся, а в списке процедур пусто?
Видят ли пользователи изменения сразу после сохранения модуля?
Как найти модуль по тексту ошибки с номером строки?
Ctrl+G, чтобы перейти к строке из скобок.