К статье
Практический материал

Разработка и Конфигурация · 9 мин

Как открыть модуль объекта в 1С: подробная инструкция

Как открыть модуль объекта в конфигураторе 1С: через дерево конфигурации, форму и палитру свойств. Разбираем ошибки, права доступа и особенности расширений.

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

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

Что такое модуль объекта и когда его нужно открывать

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

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

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

Основной и самый надёжный способ — через дерево конфигурации. Запустите конфигуратор, откройте конфигурацию через меню «Конфигурация → Открыть конфигурацию» (если она ещё не открыта). В дереве слева раскройте нужную ветку: «Документы», «Справочники», «Регистры накопления» и так далее.

Найдите конкретный объект и кликните по нему правой кнопкой мыши. В контекстном меню выберите пункт «Открыть модуль объекта». Откроется окно редактора кода с содержимым модуля. Если модуль пустой, вы увидите пустое окно редактора — это нормально для объектов без собственной логики.

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

Для быстрого поиска объекта в большой конфигурации используйте строку поиска над деревом конфигурации или глобальный поиск (Ctrl+Shift+F), если помните фрагмент кода из модуля. Это существенно быстрее, чем ручное раскрытие веток в конфигурации с тысячами объектов.

Альтернативные способы открыть модуль объекта

Через палитру свойств

Выделите объект в дереве конфигурации и откройте палитру свойств (правый клик → «Свойства» или Alt+Enter). В палитре свойств есть команда «Модуль объекта» — обычно она расположена в верхней части в виде гиперссылки. Клик по ней открывает тот же редактор кода.

Через форму объекта

Если вы уже работаете с формой объекта, модуль формы и модуль объекта — разные вещи, и перепутать их легко. Из модуля формы нельзя напрямую «перепрыгнуть» в модуль объекта штатной командой, но можно быстро найти объект в дереве: правый клик по форме в дереве → «Перейти к объекту» либо просто выделите родительский объект и откройте его модуль стандартным способом.

Из режима отладки

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

Сравнение вариантов

Дерево конфигурации

Универсальный способ, работает всегда. Требует знать, где объект расположен в дереве.

Палитра свойств

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

Отладка

Лучший вариант при поиске ошибки — сразу попадаете в нужную строку. Не подходит для простого просмотра кода.

Глобальный поиск

Быстро находит модуль по фрагменту кода, но требует знать, что искать.

Ограничения: права, поддержка и расширения

Не всегда модуль объекта можно открыть на редактирование. Если конфигурация находится на полной поддержке поставщика и не включена возможность изменения, модуль откроется в режиме «только чтение». Чтобы править типовой код, нужно включить возможность изменений через «Конфигурация → Поддержка → Настройка поддержки». Учтите: это усложнит последующие обновления.

Более безопасная альтернатива — расширение конфигурации. В расширении модуль объекта открывается так же: добавьте объект в расширение, кликните по нему правой кнопкой и выберите открытие модуля. Внутри можно переопределять обработчики через аннотации «&Вместо», «&После», «&Перед», не трогая типовой код.

Ещё одно ограничение — права пользователя. Если вы зашли в конфигуратор под учётной записью без права «Администрирование» и доступа к конфигурированию, конфигурация может быть недоступна вовсе. Проверьте, что у пользователя есть право на работу в конфигураторе.

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

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

Вторая типичная проблема — пункт «Открыть модуль объекта» неактивен или отсутствует. Так бывает у объектов, у которых модуля объекта нет по определению (например, у некоторых вспомогательных элементов), либо когда выбран не сам объект, а его подчинённый элемент — форма, макет или реквизит. Убедитесь, что выделен именно корневой узел объекта.

Типичные ошибки
01
Правка модуля формы вместо модуля объекта — проверки не срабатывают при программной записи и обмене данными
02
Изменение типового кода без расширения — конфигурация снимается с полной поддержки, обновления становятся трудоёмкими
03
Забытая проверка синтаксиса (F7) — ошибка в модуле обнаруживается только при попытке провести документ у пользователя
04
Работа в рабочей базе без копии — при ошибке в ОбработкаПроведения останавливается документооборот компании

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

После внесения изменений нажмите F7 или используйте «Конфигурация → Проверка конфигурации», чтобы убедиться в отсутствии синтаксических ошибок. Затем обновите конфигурацию базы данных (F7 в окне конфигуратора или «Конфигурация → Обновить конфигурацию базы данных») — без этого изменения не попадут в работающее приложение.

Функциональную проверку выполняйте в режиме предприятия: проведите тестовый документ, убедитесь, что движения по регистрам сформировались корректно и новые проверки срабатывают. Для отладки используйте точки останова и окно «Вычислить выражение» (Shift+F9).

Контрольные точки

Как проверить результат

Синтаксис модуля
Норма

Проверка конфигурации завершается без ошибок

Тревожный признак

Сообщения об ошибках в окне служебных сообщений

Проведение документа
Норма

Документ проводится, движения корректны

Тревожный признак

Ошибка при проведении или отсутствие движений

Программная запись
Норма

Обработчик срабатывает и при записи из кода, и при обмене

Тревожный признак

Логика работает только при записи из формы

FAQ: частые вопросы о модуле объекта

Чем модуль объекта отличается от модуля менеджера?

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

Почему модуль объекта открывается пустым, хотя документ проводится?

Значит, вся логика проведения вынесена в общие модули, а обработчик «ОбработкаПроведения» в модуле объекта либо отсутствует, либо только вызывает процедуры из общих модулей. Найдите реальный код через глобальный поиск (Ctrl+Shift+F) по имени процедуры проведения.

Можно ли открыть модуль объекта без конфигуратора?

Нет, просмотр и редактирование модулей доступны только в конфигураторе. В режиме предприятия можно лишь увидеть текст ошибки с указанием строки модуля. Если конфигуратор недоступен, попросите администратора предоставить доступ или выгрузку конфигурации в файлы (XML) для просмотра кода.

Как открыть модуль объекта внешней обработки?

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

Безопасно ли менять модуль объекта типового документа?

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

Итог

Что важно запомнить

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