Где в 1С находится программный код объекта и как получить к нему доступ

· 9 мин

Содержание

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

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

Запуск Конфигуратора и дерево конфигурации

Откройте окно запуска 1С, выберите в списке нужную базу и нажмите кнопку Конфигуратор (а не 1С:Предприятие). Если кнопка неактивна, у пользователя нет права на административный режим — запускать Конфигуратор можно только пользователю с ролью, где включён этот доступ.

После запуска выполните Конфигурация → Открыть конфигурацию. Откроется окно «Конфигурация» — то самое дерево метаданных, где лежат все объекты базы. Дерево сгруппировано по видам объектов:

  • 🗂 Справочники — номенклатура, контрагенты, склады;
  • 📄 Документы — реализации, поступления, платёжки;
  • 📊 Отчёты и Обработки;
  • ⚙️ Общие → Общие модули — код, не привязанный к одному объекту;
  • 🧩 корневой узел с названием конфигурации — в нём живут модули приложения.

Если окно «Конфигурация» закрылось, вернуть его можно через Конфигурация → Открыть конфигурацию ещё раз или сочетанием, которое показано рядом с пунктом меню. Дерево — отправная точка для всех способов ниже.

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

Открытие модуля справочника, документа и другого объекта

У прикладного объекта (справочника, документа, регистра) есть два собственных модуля:

  • Модуль объекта — здесь пишут обработчики ПриЗаписи, ОбработкаПроведения, ПередУдалением и прочую логику конкретного экземпляра.
  • Модуль менеджера — код, который относится к объекту в целом, а не к одной записи: функции, вызываемые как Справочники.Номенклатура.МойМетод().

Открыть их можно тремя путями — выбирайте любой.

  1. Через контекстное меню дерева. Найдите объект (например, Справочники → Номенклатура), щёлкните по нему правой кнопкой и выберите Открыть модуль объекта или Открыть модуль менеджера. Самый быстрый способ, если знаете, какой модуль нужен.
  2. Через окно редактирования объекта. Дважды щёлкните объект — откроется окно редактирования (конструктор). В списке разделов слева найдите Прочее — там собраны ссылки Модуль объекта и Модуль менеджера. Удобно, когда по пути нужно заглянуть в реквизиты или формы.
  3. Через палитру свойств. Выделите объект в дереве и откройте его свойства (правая кнопка → Свойства или кнопка Свойства на панели инструментов). В палитре есть строки Модуль объекта и Модуль менеджера с кнопкой открытия (значок лупы) — нажатие открывает код.

У регистров набор модулей немного другой: вместо модуля объекта там модуль набора записей (запись в регистр идёт наборами, а не по одной строке) плюс модуль менеджера. Открываются они теми же тремя способами — через контекстное меню, окно редактирования или палитру свойств.

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

Как открыть модуль формы

Модуль формы живёт не у объекта, а у конкретной формы. Раскройте у объекта ветку Формы, дважды щёлкните нужную форму (например, ФормаЭлемента или ФормаСписка). Откроется редактор формы. Внизу редактора три вкладки: Форма, Модуль, Командный интерфейс. Нажмите вкладку Модуль — это и есть код формы с обработчиками событий элементов и команд.

В модуле формы различают клиентский и серверный код — он помечен директивами компиляции &НаКлиенте, &НаСервере, &НаСервереБезКонтекста. Это не разные модули, а один, разделённый областью исполнения.

Общие модули и модули приложения

Общий модуль сам по себе является модулем — у него нет «объекта» вокруг. Откройте Общие → Общие модули, найдите нужный (например, ОбщегоНазначения) и дважды щёлкните по его имени — код откроется сразу. Контекстное меню и палитра свойств тоже работают, но двойного клика достаточно.

У общего модуля в свойствах задано, где он исполняется: флажки Клиент (управляемое приложение), Сервер, Внешнее соединение, Вызов сервера, Повторное использование возвращаемых значений. Эти настройки видны в палитре свойств рядом с модулем и влияют на то, какие процедуры в нём допустимы.

Модули приложения относятся ко всей конфигурации и открываются от корневого узла дерева. Щёлкните правой кнопкой по корню (строка с названием конфигурации) и выберите нужный пункт:

  • Открыть модуль управляемого приложения — запускается при старте в веб- и тонком клиенте;
  • Открыть модуль обычного приложения — для толстого клиента в обычном режиме;
  • Открыть модуль сеанса — выполняется раньше модуля приложения, здесь задают параметры сеанса;
  • Открыть модуль внешнего соединения — для работы базы как COM-сервера.

Модуль внешней обработки или отчёта

Внешняя обработка (.epf) и внешний отчёт (.erf) не входят в дерево конфигурации. Чтобы добраться до их кода:

  1. В Конфигураторе выполните Файл → Открыть и выберите файл .epf или .erf.
  2. Откроется окно редактирования внешней обработки.
  3. В разделе Прочее нажмите Модуль объекта — это основной код обработки. У форм обработки модуль открывается так же, как у форм конфигурации.

Внешнюю обработку удобно использовать как песочницу: код в ней правится без снятия конфигурации с поддержки и без обновления базы.

Если вместо классического Конфигуратора вы работаете в 1C:EDT (среда разработки на базе Eclipse), логика та же, но терминология отличается: модули там представлены файлами в структуре проекта, а переключение между модулем объекта, менеджера и формы делается в панели навигатора и в редакторе формы. Открыть одну и ту же конфигурацию можно и в Конфигураторе, и в EDT — это два разных инструмента к одной базе.

Способы открытия: контекстное меню, палитра свойств, горячие клавиши

Чтобы не держать в голове, какой путь короче, держите под рукой сводку. Для одного и того же объекта все способы ведут к одному коду.

Что открываемСамый быстрый путьАльтернатива
Модуль объекта справочника/документаПравый клик по объекту → Открыть модуль объектаОкно редактирования → Прочее → Модуль объекта
Модуль менеджераПравый клик → Открыть модуль менеджераПалитра свойств → строка Модуль менеджера → лупа
Модуль формыДвойной клик по форме → вкладка Модуль—
Общий модульДвойной клик по имени модуляПравый клик → Открыть
Модуль управляемого приложенияПравый клик по корню дерева → Открыть модуль управляемого приложения—

Несколько приёмов, которые ускоряют навигацию внутри открытого кода:

  • 🔎 Переход к процедуре — список процедур и функций текущего модуля открывается кнопкой над текстом кода; выбор строки перекидывает курсор к объявлению.
  • ↩️ Переход к определению — поставьте курсор на имя вызываемой процедуры и используйте команду перехода из контекстного меню редактора, чтобы прыгнуть в её объявление в другом модуле.
  • 🧭 Глобальный поиск — Правка → Глобальный поиск ищет текст по всем модулям конфигурации сразу, что удобно, когда не помните, в каком модуле лежит нужная функция.

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

Частое заблуждение: «открою базу в Предприятии и поправлю модуль». В режиме Предприятия редактировать код нельзя — модули там только исполняются. Увидеть исходный текст можно лишь при отладке, и то в режиме чтения.

Отладка запускается из Конфигуратора:

  1. В Конфигураторе выполните Отладка → Начать отладку (клавиша F5) — платформа запустит Предприятие в режиме отладки.
  2. Поставьте точку останова в нужной строке модуля (щелчок по серому полю слева от строки или клавиша F9).
  3. Когда выполнение дойдёт до этой строки, оно остановится, и вы увидите код и значения переменных.

Чтобы Конфигуратор мог подключиться к уже запущенному сеансу Предприятия, в этом сеансе должна быть разрешена отладка. Включается она в окне запуска 1С: выделите базу, нажмите Изменить → Далее, на странице дополнительных параметров отметьте разрешение отладки. После этого в Конфигураторе доступна команда Отладка → Подключение к работающему сеансу.

Отладка показывает код, но не даёт его менять. Любая правка всё равно делается в Конфигураторе, после чего базу нужно обновить командой Конфигурация → Обновить конфигурацию базы данных (F7).

Код открылся, но правка заблокирована: снятие замка и доступ через расширение

Самая частая причина, по которой модуль «не открывается на редактирование», — конфигурация стоит на поддержке поставщика. Объекты в дереве помечены замком, код показан серым и доступен только для чтения.

Чтобы снять блокировку:

  1. Откройте Конфигурация → Поддержка → Настройка поддержки.
  2. Нажмите Включить возможность изменения.
  3. Подтвердите — для объектов, которые планируете менять, разрешите изменение (с сохранением или без сохранения поддержки).

После снятия с поддержки типовая конфигурация перестаёт обновляться автоматически — каждое обновление придётся сопоставлять вручную. Поэтому сначала оцените, нельзя ли решить задачу расширением.

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

Разберём остальные ситуации, когда код не поддаётся:

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

Перед тем как снимать конфигурацию с поддержки или вносить правки в рабочую базу, сделайте выгрузку (.dt) или резервную копию. Откат изменений в структуре конфигурации вручную — долгая и неприятная процедура.

Частые вопросы

Чем модуль объекта отличается от модуля менеджера?
Модуль объекта хранит логику конкретной записи — обработчики записи, проведения, удаления. Модуль менеджера содержит код уровня объекта в целом, который вызывают как Справочники.Номенклатура.Метод() без привязки к одному элементу.
Можно ли открыть и изменить модуль прямо в 1С:Предприятии?
Нет. В Предприятии код только исполняется. Посмотреть его можно при отладке (в режиме чтения), а править — только в Конфигураторе, с последующим обновлением конфигурации базы данных.
Почему код открылся, но строки серые и не редактируются?
Конфигурация на поддержке поставщика. Включите изменение через Конфигурация → Поддержка → Настройка поддержки → Включить возможность изменения либо дорабатывайте через расширение.
Где лежит модуль формы, если у объекта я его не вижу?
Модуль формы принадлежит форме, а не объекту. Откройте нужную форму двойным кликом и переключитесь на вкладку Модуль внизу редактора формы.
Как найти процедуру, если не знаю, в каком она модуле?
Используйте Правка → Глобальный поиск — он ищет текст по всем модулям конфигурации сразу и показывает список найденных вхождений с переходом к строке.
Нужно ли снимать конфигурацию с поддержки, чтобы дописать код?
Не всегда. Для доработок типовой конфигурации лучше использовать расширение (с 8.3.6): оно не снимает основную конфигурацию с автоматического обновления.