Открываем модуль объекта в конфигураторе 1С 8.3

· 9 мин

Содержание

Модуль объекта открывают в конфигураторе. Самый короткий путь: правый клик по справочнику или документу в дереве конфигурации → команда Открыть модуль объекта. Второй способ — двойным кликом открыть окно редактирования объекта и в списке разделов слева выбрать Прочее → Модуль объекта.

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

Сначала — вход в конфигуратор

Модули правятся не в режиме 1С:Предприятие, а в конфигураторе. При запуске 1С в окне выбора информационной базы нажмите кнопку Конфигуратор (а не 1С:Предприятие).

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

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

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

Открытие через дерево конфигурации

Это основной способ, работает для любого объекта, у которого модуль объекта вообще есть.

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

Откроется окно редактора кода с заголовком вида СправочникОбъект.Контрагенты. Это и есть модуль объекта.

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

У регистров пункта Открыть модуль объекта не будет. У них данные хранятся наборами записей, поэтому в меню стоит Открыть модуль набора записей. Это нормально, а не ошибка.

Через окно редактирования объекта

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

  1. Дважды щёлкните по объекту в дереве (или нажмите Enter, когда он выделен). Откроется окно редактирования объекта.
  2. Слева идёт вертикальный список разделов: Основные, Данные, Нумерация, Формы, Команды, Макеты, Права, Прочее и другие.
  3. Щёлкните раздел Прочее.
  4. В нём есть ссылки Модуль объекта и Модуль менеджера. Щёлкните нужную.

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

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

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

Процедура ПередЗаписью(Отказ)
    Если НЕ ЗначениеЗаполнено(ИНН) Тогда
        Отказ = Истина;
        Сообщение = Новый СообщениеПользователю;
        Сообщение.Текст = "Заполните ИНН контрагента";
        Сообщение.Сообщить();
    КонецЕсли;
КонецПроцедуры

Процедуру ПередЗаписью вызывать вручную не нужно — платформа сама выполняет её перед сохранением объекта. Установка Отказ = Истина отменяет запись.

Быстрые команды и работа с клавиатуры

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

  • Двойной клик или Enter по объекту в дереве — открывает окно редактирования, дальше раздел Прочее.
  • Поле поиска над деревом конфигурации — начните печатать имя объекта, дерево отфильтруется, и вы быстро доберётесь до нужной ветки, не прокручивая весь список.
  • Переключение между открытыми окнами модулей — через меню Окна, где перечислены все открытые редакторы.

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

  • F12 — перейти к определению процедуры или функции под курсором.
  • Ctrl+- и Ctrl+Shift+- — вернуться назад и вперёд по истории переходов.
  • Ctrl+F — поиск текста в модуле, F3 — найти следующее совпадение.
  • Ctrl+G — перейти к строке по номеру.

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

Какие бывают модули и у каких объектов их нет

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

Тип объектаКакой модуль хранит код строки/экземпляра
Справочники, документы, планы видов характеристик, планы счетов, бизнес-процессы, задачиМодуль объекта
Обработки, отчётыМодуль объекта
Регистры сведений, накопления, бухгалтерии, расчётаМодуль набора записей (модуля объекта нет)
КонстантыМодуль менеджера значения
ПеречисленияТолько модуль менеджера

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

Отдельно стоят модули уровня всей конфигурации. Чтобы открыть их, щёлкните правой кнопкой по корню дерева (верхний узел с именем конфигурации):

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

Общие модули лежат в ветке Общие → Общие модули. Двойной клик по общему модулю сразу открывает его код — промежуточного окна редактирования у него нет.

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

Модуль объекта и модуль формы — разные вещи. Код в модуле формы работает только на этой форме. Если событие должно срабатывать всегда, независимо от формы (например, контроль при записи), его пишут в модуле объекта.

Как быстро найти нужный модуль в большой конфигурации

В типовой конфигурации тысячи объектов, и прокручивать дерево вручную долго. Есть два приёма.

Фильтр над деревом. Над окном Конфигурация есть строка поиска. Введите часть имени объекта — дерево покажет только совпадения. Дальше открываете модуль привычным способом.

Глобальный поиск по текстам модулей. Если вы ищете не объект, а строчку кода (имя процедуры, текст сообщения, вызов метода), используйте меню Правка → Глобальный поиск. Платформа пройдёт по всем модулям конфигурации и покажет список совпадений; двойной клик по строке результата открывает нужный модуль на нужной строке.

Ещё полезна команда Поиск ссылок на объект в контекстном меню объекта — она показывает, где объект используется, и помогает понять, какой модуль нужно открыть. Это выручает, когда вы знаете, что некий справочник где-то обрабатывается, но не помните, в каком именно модуле.

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

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

Почему пункта «Модуль объекта» нет или он не открывается

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

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

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

Как дополнить модуль через расширение конфигурации

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

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

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

Готовое расширение можно выгрузить в файл .cfe и перенести в другую базу — исходную конфигурацию при этом трогать не нужно.

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

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