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

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

Модуль формы в 1С: где находится и как с ним работать

Где находится модуль формы в 1С: как открыть его в конфигураторе и EDT, чем отличается от модуля объекта, какие события содержит и как не сломать форму.

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

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

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

Откройте конфигуратор, загрузите конфигурацию и в дереве объектов найдите нужный объект — например, «Документы → РеализацияТоваровУслуг». Разверните узел объекта и перейдите в подчинённую ветку «Формы». Там перечислены все формы объекта: форма документа, форма списка, форма выбора и другие.

Двойной клик по имени формы открывает редактор формы. Окно редактора состоит из нескольких вкладок в нижней части: «Форма» (визуальный конструктор элементов), «Модуль» (программный код), «Реквизиты» и «Командный интерфейс» в зависимости от версии платформы. Переход на вкладку «Модуль» показывает весь код формы. Быстрый способ — нажать F2, когда редактор формы активен: платформа переключит вас на модуль.

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

Как открыть модуль формы за 5 шагов
  1. 1
    Откройте конфигуратор и разверните дерево конфигурации
  2. 2
    Найдите нужный объект (документ, справочник, обработка)
  3. 3
    Разверните ветку «Формы» и дважды щёлкните по нужной форме
  4. 4
    В редакторе формы нажмите вкладку «Модуль» или клавишу F2
  5. 5
    Убедитесь, что видите заготовки обработчиков, например ПриСозданииНаСервере

Как открыть модуль формы в 1C:EDT

В среде 1C:EDT структура проекта отображается в панели «Навигатор». Форма объекта представлена несколькими файлами: файл описания формы и отдельный файл модуля с расширением, соответствующим коду формы. Раскройте узел объекта, затем узел формы — рядом с описанием формы будет элемент модуля, который открывается двойным кликом в редакторе кода.

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

Чем модуль формы отличается от других модулей

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

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

Где искать нужный код

Модуль формы

Поведение элементов формы, обработчики событий открытия, ввода, команд. Открывается из редактора формы.

Модуль объекта

Обработка проведения, заполнение, проверка заполнения. Открывается из свойств объекта в дереве конфигурации.

Общий модуль

Переиспользуемые функции для всей конфигурации. Ветка «Общие → Общие модули».

Модуль команды

Код произвольных команд объекта или формы, открывается из ветки «Команды».

Структура модуля формы: что там искать

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

Ключевые обработчики, с которых обычно начинают поиск: ПриСозданииНаСервере (инициализация формы), ПриОткрытии (клиентская логика после открытия), ПередЗаписью и ПослеЗаписи, а также обработчики изменения полей вида ИмяПоляПриИзменении. Если вам нужно понять, почему поле скрывается или значение пересчитывается — ищите именно эти процедуры через поиск по модулю (Ctrl+F).

Типичные проблемы: модуль пуст, код не находится, форма не открывается

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

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

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

Типичные ошибки при поиске модуля формы
01
Искать код в режиме «Предприятие» — там модули недоступны, нужен конфигуратор
02
Путать форму списка и форму элемента — код разный, обработчики не совпадают
03
Не замечать расширение конфигурации — доработки формы лежат в нём, а не в основном модуле
04
Редактировать модуль формы при обновляемой типовой конфигурации без расширения — изменения затрутся при обновлении
05
Искать серверную логику в клиентском контексте и наоборот из-за директив компиляции

Безопасное редактирование модуля формы

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

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

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

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

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

Синтаксическая проверка модуля
Норма

Ошибок нет, конфигурация обновляется

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

Сообщения об ошибках компиляции в окне сообщений

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

Форма открывается, элементы работают

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

Ошибка при открытии или пустая форма

Поведение под типовым пользователем
Норма

Логика работает с боевыми правами

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

Ошибки доступа к данным или скрытые элементы

FAQ

Можно ли посмотреть модуль формы в режиме «Предприятие»?

Нет. В пользовательском режиме доступна только сама форма. Код открывается исключительно в конфигураторе или в 1C:EDT. Для отладки в режиме «Предприятие» используется отладчик, подключённый из конфигуратора.

Почему в ветке «Формы» у объекта ничего нет?

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

Где искать код, если модуль формы пуст, а логика работает?

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

Чем отличается &НаСервереБезКонтекста от &НаСервере?

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

Что будет, если допустить ошибку в модуле формы?

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

Как доработать форму типовой конфигурации, не ломая обновление?

Используйте расширение конфигурации: добавьте форму в расширение и переопределите нужные обработчики через аннотации &ИзменениеИКонтроль, &После или &Вместо. Основной модуль формы при этом остаётся нетронутым.

Итог

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

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