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

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

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

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

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

Ниже разобраны все рабочие способы открыть модуль формы: через дерево конфигурации, через палитру свойств, поиском по конфигурации. Отдельно описаны ситуации, когда форма отсутствует (используется автоматически генерируемая), когда конфигурация закрыта от изменений и когда модуль открывается в режиме «только чтение». Инструкции актуальны для платформы 8.3, но базовый порядок действий одинаков и для 8.2.

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

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

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

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

Основной способ — через дерево объектов конфигурации. Запустите конфигуратор, откройте конфигурацию командой «Конфигурация → Открыть конфигурацию» (или Ctrl+Shift+O). Если конфигурация ещё не открыта, дерево объектов будет пустым, и никакие формы недоступны.

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

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

Как открыть модуль, если формы нет в дереве

Если в ветке «Формы» объекта пусто, значит разработчик не создавал собственную форму — платформа генерирует её автоматически при открытии. Модуля у такой формы нет, и открывать нечего. Чтобы добавить код, сначала нужно создать форму: правой кнопкой по ветке «Формы» → «Добавить», выбрать тип формы (например, «ФормаДокумента»), пройти конструктор и нажать «Готово». После этого вкладка «Модуль» станет доступна.

Обратная ситуация: форма есть, но вкладки «Модуль» не видно. Так бывает, если окно редактора свёрнуто нестандартно или открыт не редактор формы, а, например, макет. Закройте окно и откройте форму заново двойным щелчком именно по элементу ветки «Формы», а не по «Макеты» или «Команды».

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

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

Выделите объект в дереве, нажмите правую кнопку и выберите «Свойства» (или Alt+Enter). В палитре свойств найдите поле с типом формы по умолчанию — например, «Основная форма объекта». Рядом с полем есть кнопка открытия (лупа или стрелка), которая открывает выбранную форму. Дальше — та же вкладка «Модуль».

Через глобальный поиск по конфигурации

Если известен фрагмент кода или имя процедуры, но неизвестно, в какой форме она находится, используйте «Правка → Глобальный поиск» (Ctrl+Shift+F). Введите текст, убедитесь, что поиск идёт по всей конфигурации, и запустите. В результатах двойной щелчок по строке открывает конкретный модуль формы сразу на нужной строке — это самый быстрый способ попасть в код, когда структура конфигурации незнакома.

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

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

Сравнение способов

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

Подходит, когда известен объект и нужная форма; наглядно, но требует навигации по дереву

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

Лучший вариант, когда известен фрагмент кода, но неизвестно расположение; открывает модуль сразу на нужной строке

Отладка по стеку вызовов

Единственный способ точно определить, какая форма и какая строка кода участвуют в ошибке в режиме предприятия

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

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

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

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

После правки кода сохраните модуль (Ctrl+S) и обновите конфигурацию базы данных клавишей F7. Без этого шага код сохранится в конфигурации, но пользователи продолжат работать со старой версией. В клиент-серверном режиме обновление может потребовать монопольного доступа — завершите сеансы пользователей или используйте динамическое обновление с последующим перезапуском сеансов.

Для проверки откройте форму в режиме предприятия и выполните действие, которое должно вызвать ваш код. Надёжнее всего поставить точку останова в изменённой процедуре и запустить отладку (F5): если выполнение останавливается на вашей строке — изменения применились. Если точка останова подсвечена как недостижимая, значит исполняется другая версия модуля или код не вызывается.

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

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

Точка останова в новой процедуре
Норма

Отладчик останавливается на строке при действии пользователя

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

Точка серая или не срабатывает — конфигурация БД не обновлена или код не вызывается

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

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

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

Ошибка «Процедура или функция не определена» / синтаксическая ошибка при открытии

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

Ошибок нет

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

Список ошибок в окне сообщений — исправить до обновления конфигурации

Типичные ошибки при работе с модулем формы

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

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

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

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

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

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

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

Почему в ветке «Формы» пусто, хотя форма в программе открывается?

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

Модуль открывается, но код недоступен для редактирования. Что делать?

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

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

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

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

Используйте выпадающий список процедур и функций в верхней части окна модуля или поиск по тексту (Ctrl+F). Также работает переход к определению процедуры по Ctrl+F12 или через контекстное меню «Перейти к определению».

Изменения в модуле сохранил, но в режиме предприятия работает старый код. Почему?

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