Где в 1С находится программный код объекта и как получить к нему доступ
Содержание
Код объекта правят не в «1С:Предприятии», а в отдельной программе — Конфигураторе. В режиме Предприятия модуль можно только посмотреть при отладке, но не изменить. Поэтому первый шаг всегда один: закрыть Предприятие (или оставить работать) и запустить ту же базу в Конфигураторе.
У одного объекта модулей бывает несколько: модуль объекта, модуль менеджера, модуль формы. Плюс отдельно стоят общие модули и модули приложения. Ниже — где каждый из них открыть, тремя способами, и что делать, если код открылся, но правка заблокирована замком.
Запуск Конфигуратора и дерево конфигурации
Откройте окно запуска 1С, выберите в списке нужную базу и нажмите кнопку Конфигуратор (а не 1С:Предприятие). Если кнопка неактивна, у пользователя нет права на административный режим — запускать Конфигуратор можно только пользователю с ролью, где включён этот доступ.
После запуска выполните Конфигурация → Открыть конфигурацию. Откроется окно «Конфигурация» — то самое дерево метаданных, где лежат все объекты базы. Дерево сгруппировано по видам объектов:
- 🗂 Справочники — номенклатура, контрагенты, склады;
- 📄 Документы — реализации, поступления, платёжки;
- 📊 Отчёты и Обработки;
- ⚙️ Общие → Общие модули — код, не привязанный к одному объекту;
- 🧩 корневой узел с названием конфигурации — в нём живут модули приложения.
Если окно «Конфигурация» закрылось, вернуть его можно через Конфигурация → Открыть конфигурацию ещё раз или сочетанием, которое показано рядом с пунктом меню. Дерево — отправная точка для всех способов ниже.
Раскрыть ветку можно двойным кликом по её названию или щелчком по значку + слева. Чтобы быстро найти объект в большой конфигурации, начните печатать его имя, когда фокус стоит на дереве, — курсор перескочит к первому совпадению.
Открытие модуля справочника, документа и другого объекта
У прикладного объекта (справочника, документа, регистра) есть два собственных модуля:
- Модуль объекта — здесь пишут обработчики
ПриЗаписи,ОбработкаПроведения,ПередУдалениеми прочую логику конкретного экземпляра. - Модуль менеджера — код, который относится к объекту в целом, а не к одной записи: функции, вызываемые как
Справочники.Номенклатура.МойМетод().
Открыть их можно тремя путями — выбирайте любой.
- Через контекстное меню дерева. Найдите объект (например,
Справочники → Номенклатура), щёлкните по нему правой кнопкой и выберитеОткрыть модуль объектаилиОткрыть модуль менеджера. Самый быстрый способ, если знаете, какой модуль нужен. - Через окно редактирования объекта. Дважды щёлкните объект — откроется окно редактирования (конструктор). В списке разделов слева найдите
Прочее— там собраны ссылкиМодуль объектаиМодуль менеджера. Удобно, когда по пути нужно заглянуть в реквизиты или формы. - Через палитру свойств. Выделите объект в дереве и откройте его свойства (правая кнопка →
Свойстваили кнопкаСвойствана панели инструментов). В палитре есть строкиМодуль объектаиМодуль менеджерас кнопкой открытия (значок лупы) — нажатие открывает код.
У регистров набор модулей немного другой: вместо модуля объекта там модуль набора записей (запись в регистр идёт наборами, а не по одной строке) плюс модуль менеджера. Открываются они теми же тремя способами — через контекстное меню, окно редактирования или палитру свойств.
Отдельный вид — модуль команды. У команды объекта или общей команды есть свой модуль с единственным обработчиком, который выполняется при нажатии. Раскройте у объекта ветку Команды, выберите команду и откройте её модуль из контекстного меню.
Как открыть модуль формы
Модуль формы живёт не у объекта, а у конкретной формы. Раскройте у объекта ветку Формы, дважды щёлкните нужную форму (например, ФормаЭлемента или ФормаСписка). Откроется редактор формы. Внизу редактора три вкладки: Форма, Модуль, Командный интерфейс. Нажмите вкладку Модуль — это и есть код формы с обработчиками событий элементов и команд.
В модуле формы различают клиентский и серверный код — он помечен директивами компиляции &НаКлиенте, &НаСервере, &НаСервереБезКонтекста. Это не разные модули, а один, разделённый областью исполнения.
Общие модули и модули приложения
Общий модуль сам по себе является модулем — у него нет «объекта» вокруг. Откройте Общие → Общие модули, найдите нужный (например, ОбщегоНазначения) и дважды щёлкните по его имени — код откроется сразу. Контекстное меню и палитра свойств тоже работают, но двойного клика достаточно.
У общего модуля в свойствах задано, где он исполняется: флажки Клиент (управляемое приложение), Сервер, Внешнее соединение, Вызов сервера, Повторное использование возвращаемых значений. Эти настройки видны в палитре свойств рядом с модулем и влияют на то, какие процедуры в нём допустимы.
Модули приложения относятся ко всей конфигурации и открываются от корневого узла дерева. Щёлкните правой кнопкой по корню (строка с названием конфигурации) и выберите нужный пункт:
Открыть модуль управляемого приложения— запускается при старте в веб- и тонком клиенте;Открыть модуль обычного приложения— для толстого клиента в обычном режиме;Открыть модуль сеанса— выполняется раньше модуля приложения, здесь задают параметры сеанса;Открыть модуль внешнего соединения— для работы базы как COM-сервера.
Модуль внешней обработки или отчёта
Внешняя обработка (.epf) и внешний отчёт (.erf) не входят в дерево конфигурации. Чтобы добраться до их кода:
- В Конфигураторе выполните
Файл → Открытьи выберите файл.epfили.erf. - Откроется окно редактирования внешней обработки.
- В разделе
ПрочеенажмитеМодуль объекта— это основной код обработки. У форм обработки модуль открывается так же, как у форм конфигурации.
Внешнюю обработку удобно использовать как песочницу: код в ней правится без снятия конфигурации с поддержки и без обновления базы.
Если вместо классического Конфигуратора вы работаете в 1C:EDT (среда разработки на базе Eclipse), логика та же, но терминология отличается: модули там представлены файлами в структуре проекта, а переключение между модулем объекта, менеджера и формы делается в панели навигатора и в редакторе формы. Открыть одну и ту же конфигурацию можно и в Конфигураторе, и в EDT — это два разных инструмента к одной базе.
Способы открытия: контекстное меню, палитра свойств, горячие клавиши
Чтобы не держать в голове, какой путь короче, держите под рукой сводку. Для одного и того же объекта все способы ведут к одному коду.
| Что открываем | Самый быстрый путь | Альтернатива |
|---|---|---|
| Модуль объекта справочника/документа | Правый клик по объекту → Открыть модуль объекта | Окно редактирования → Прочее → Модуль объекта |
| Модуль менеджера | Правый клик → Открыть модуль менеджера | Палитра свойств → строка Модуль менеджера → лупа |
| Модуль формы | Двойной клик по форме → вкладка Модуль | — |
| Общий модуль | Двойной клик по имени модуля | Правый клик → Открыть |
| Модуль управляемого приложения | Правый клик по корню дерева → Открыть модуль управляемого приложения | — |
Несколько приёмов, которые ускоряют навигацию внутри открытого кода:
- 🔎 Переход к процедуре — список процедур и функций текущего модуля открывается кнопкой над текстом кода; выбор строки перекидывает курсор к объявлению.
- ↩️ Переход к определению — поставьте курсор на имя вызываемой процедуры и используйте команду перехода из контекстного меню редактора, чтобы прыгнуть в её объявление в другом модуле.
- 🧭 Глобальный поиск —
Правка → Глобальный поискищет текст по всем модулям конфигурации сразу, что удобно, когда не помните, в каком модуле лежит нужная функция.
Просмотр кода в режиме Предприятия и при отладке
Частое заблуждение: «открою базу в Предприятии и поправлю модуль». В режиме Предприятия редактировать код нельзя — модули там только исполняются. Увидеть исходный текст можно лишь при отладке, и то в режиме чтения.
Отладка запускается из Конфигуратора:
- В Конфигураторе выполните
Отладка → Начать отладку(клавишаF5) — платформа запустит Предприятие в режиме отладки. - Поставьте точку останова в нужной строке модуля (щелчок по серому полю слева от строки или клавиша
F9). - Когда выполнение дойдёт до этой строки, оно остановится, и вы увидите код и значения переменных.
Чтобы Конфигуратор мог подключиться к
уже запущенному сеансу Предприятия, в этом сеансе должна быть разрешена отладка. Включается она в окне запуска 1С: выделите базу, нажмите Изменить → Далее, на странице дополнительных параметров отметьте разрешение отладки. После этого в Конфигураторе доступна команда Отладка → Подключение к работающему сеансу.
Отладка показывает код, но не даёт его менять. Любая правка всё равно делается в Конфигураторе, после чего базу нужно обновить командой Конфигурация → Обновить конфигурацию базы данных (F7).
Код открылся, но правка заблокирована: снятие замка и доступ через расширение
Самая частая причина, по которой модуль «не открывается на редактирование», — конфигурация стоит на поддержке поставщика. Объекты в дереве помечены замком, код показан серым и доступен только для чтения.
Чтобы снять блокировку:
- Откройте
Конфигурация → Поддержка → Настройка поддержки. - Нажмите
Включить возможность изменения. - Подтвердите — для объектов, которые планируете менять, разрешите изменение (с сохранением или без сохранения поддержки).
После снятия с поддержки типовая конфигурация перестаёт обновляться автоматически — каждое обновление придётся сопоставлять вручную. Поэтому сначала оцените, нельзя ли решить задачу расширением.
Расширение конфигурации — способ изменить поведение типовой конфигурации, не трогая её саму (доступно с версии платформы 8.3.6). Вы создаёте отдельное расширение, в нём заимствуете объект и дописываете код. Открывается модуль расширения в том же дереве, но в отдельном окне расширения, а типовая конфигурация остаётся на поддержке и продолжает обновляться. Для большинства доработок это предпочтительный путь.
Разберём остальные ситуации, когда код не поддаётся:
Конфигурация → Поддержка → Настройка поддержки и включите возможность изменения.Модуль самой формы. Модуль объекта открывается из контекстного меню объекта или раздела Прочее.Конфигурация → Обновить конфигурацию базы данных (F7). Без обновления база работает на старой версии конфигурации.Перед тем как снимать конфигурацию с поддержки или вносить правки в рабочую базу, сделайте выгрузку (.dt) или резервную копию. Откат изменений в структуре конфигурации вручную — долгая и неприятная процедура.
Частые вопросы
Чем модуль объекта отличается от модуля менеджера?
Справочники.Номенклатура.Метод() без привязки к одному элементу.Можно ли открыть и изменить модуль прямо в 1С:Предприятии?
Почему код открылся, но строки серые и не редактируются?
Конфигурация → Поддержка → Настройка поддержки → Включить возможность изменения либо дорабатывайте через расширение.Где лежит модуль формы, если у объекта я его не вижу?
Модуль внизу редактора формы.Как найти процедуру, если не знаю, в каком она модуле?
Правка → Глобальный поиск — он ищет текст по всем модулям конфигурации сразу и показывает список найденных вхождений с переходом к строке.