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

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

Как открыть модуль формы документа в 1С

Как открыть модуль формы документа в 1С: через конфигуратор, команду «Перейти к модулю», сочетания клавиш. Разбор ошибок и отличий управляемых и обычных форм.

Модуль формы документа в 1С — это программный код на встроенном языке, который обрабатывает события формы: открытие, запись, изменение реквизитов, нажатие кнопок. Чтобы его открыть, нужно работать в конфигураторе с правами на изменение конфигурации и понимать, где именно находится форма — в составе объекта «Документ» или в общих формах.

Способ открытия зависит от задачи. Если нужно просто посмотреть код обработчиков, достаточно пары кликов по дереву конфигурации. Если форма открывается программно из другого модуля — потребуется найти вызов ОткрытьФорму() или ПолучитьФорму() и перейти к нужному объекту. Ниже разобраны оба сценария, а также типичные ошибки, из-за которых модуль «не открывается» или открывается пустым.

Где находится модуль формы документа

В дереве конфигурации каждый документ содержит несколько служебных веток: «Данные», «Нумераторы», «Движения», «Последовательности», «Журналы», «Печать», «Ввод на основании», «Права», «Макеты», «Команды», «Формы» и «Модули». Именно ветка «Формы» хранит экранные представления документа — форму документа, форму списка, форму выбора.

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

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

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

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

Дважды щёлкните по нужной форме (например, «ФормаДокумента») — откроется редактор формы. Для управляемых форм в нижней части окна редактора есть вкладки: «Форма», «Модуль», «Реквизиты» и другие. Перейдите на вкладку «Модуль» — перед вами код формы.

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

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

Открытие модуля из режима отладки и из кода

Переход к модулю во время отладки

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

Этот способ полезен, когда форма генерируется динамически или вы не уверены, какая именно форма используется: основная, дополнительная или форма из расширения конфигурации.

Поиск места программного открытия формы

Когда форма документа открывается программно, в коде встречаются вызовы вида:

bsl
ОткрытьФорму("Документ.РеализацияТоваровУслуг.Форма.ФормаДокумента", ПараметрыФормы);

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

Отличия управляемых и обычных форм

В обычном приложении (режим совместимости с версиями 8.2 и ранее) редактор формы совмещает диалог, модуль и табличный документ в одном окне с закладками внизу. Модуль открывается вкладкой «Модуль» или кнопкой на панели инструментов редактора форм.

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

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

Управляемая форма

Вкладка «Модуль» в редакторе формы, директивы &НаКлиенте/&НаСервере. Используется в большинстве современных конфигураций.

Обычная форма

Закладки «Диалог/Модуль» в одном окне, без директив компиляции. Встречается в старых конфигурациях и режиме совместимости.

Форма в расширении

Открывается из дерева расширения, а не основной конфигурации. Изменения в основной форме могут конфликтовать с расширением.

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

Самая частая причина «пустого» модуля — форма создана автоматически платформой и не имеет явного описания в конфигурации. Если у документа нет собственной формы, 1С генерирует её на лету, и открывать в дереве конфигурации нечего. Решение — создать форму явно: правой кнопкой по ветке «Формы» → «Добавить», выбрать тип «Форма документа» и пройти шаги конструктора.

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

Третья ситуация — форма находится в расширении конфигурации. Если основная форма не содержит нужного кода, проверьте подключённые расширения: «Конфигурация» → «Расширения конфигурации». Модуль расширения открывается из дерева самого расширения.

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

Проверка результата и безопасное внесение изменений

После открытия и правки модуля обязательно выполните проверку синтаксиса: в редакторе модуля нажмите Ctrl+F7 или используйте кнопку проверки на панели инструментов. Ошибки компиляции подсвечиваются в окне сообщений с указанием строки.

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

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

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

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

Открытие формы в режиме предприятия
Норма

Форма открывается без сообщений об ошибках

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

Ошибка «Процедура или функция не обнаружена» или форма не открывается

Проверка синтаксиса модуля (Ctrl+F7)
Норма

Окно сообщений пустое

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

Есть строки с ошибками компиляции

Работа обработчиков
Норма

ПриОткрытии и команды выполняются, данные обновляются

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

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

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

Можно ли открыть модуль формы из режима 1С:Предприятие?

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

Почему в ветке «Формы» у документа пусто?

Значит, форма не создана явно и платформа генерирует её автоматически. Добавьте форму через контекстное меню ветки «Формы» → «Добавить», выберите тип формы — после этого появятся и редактор формы, и её модуль.

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

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

Как открыть модуль формы, если конфигурация на поддержке?

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

Открываю модуль, а кода обработчиков нет — это нормально?

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

Итог

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

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