Разработка и Конфигурация · 8 мин
Модуль формы в 1С: где находится и как с ним работать
Где находится модуль формы в 1С: как открыть его в конфигураторе и EDT, чем отличается от модуля объекта, какие события содержит и как не сломать форму.
Модуль формы — это программный код на встроенном языке 1С, который хранится вместе с формой объекта (документа, справочника, отчёта, обработки) и отвечает за поведение формы на клиенте и на сервере. Найти его можно только в режиме разработки: в конфигураторе или в 1C:EDT. В пользовательском режиме «Предприятие» модуль формы недоступен — там виден только результат его работы.
Чаще всего вопрос «где модуль формы» возникает у начинающих разработчиков, которые открыли форму в конструкторе, но не видят кода, либо путают модуль формы с модулем объекта. Ниже разобраны конкретные способы открыть модуль, различия между типами модулей и типичные ситуации, когда код «пропадает» или форма не открывается.
Где именно находится модуль формы в конфигураторе
Откройте конфигуратор, загрузите конфигурацию и в дереве объектов найдите нужный объект — например, «Документы → РеализацияТоваровУслуг». Разверните узел объекта и перейдите в подчинённую ветку «Формы». Там перечислены все формы объекта: форма документа, форма списка, форма выбора и другие.
Двойной клик по имени формы открывает редактор формы. Окно редактора состоит из нескольких вкладок в нижней части: «Форма» (визуальный конструктор элементов), «Модуль» (программный код), «Реквизиты» и «Командный интерфейс» в зависимости от версии платформы. Переход на вкладку «Модуль» показывает весь код формы. Быстрый способ — нажать F2, когда редактор формы активен: платформа переключит вас на модуль.
Если формы в ветке нет вообще, значит, для объекта используется автоматически генерируемая форма, и её модуль не существует физически. Чтобы писать код, нужно сначала создать форму: в свойствах объекта нажать кнопку с лупой у поля «Основная форма» или через контекстное меню ветки «Формы → Добавить».
- 1Откройте конфигуратор и разверните дерево конфигурации
- 2Найдите нужный объект (документ, справочник, обработка)
- 3Разверните ветку «Формы» и дважды щёлкните по нужной форме
- 4В редакторе формы нажмите вкладку «Модуль» или клавишу F2
- 5Убедитесь, что видите заготовки обработчиков, например ПриСозданииНаСервере
Как открыть модуль формы в 1C:EDT
В среде 1C:EDT структура проекта отображается в панели «Навигатор». Форма объекта представлена несколькими файлами: файл описания формы и отдельный файл модуля с расширением, соответствующим коду формы. Раскройте узел объекта, затем узел формы — рядом с описанием формы будет элемент модуля, который открывается двойным кликом в редакторе кода.
Альтернативный путь — открыть форму в визуальном редакторе и использовать контекстное меню или соответствующую кнопку перехода к модулю. EDT также поддерживает быстрый поиск: через глобальный поиск по проекту можно найти процедуру внутри модуля формы по её имени, что удобно в больших конфигурациях.
Чем модуль формы отличается от других модулей
Новички часто ищут код не там, потому что в 1С несколько типов модулей с похожими названиями. Модуль формы выполняется в контексте конкретной открытой формы и имеет доступ к её элементам, реквизитам формы и данным объекта. Модуль объекта (или модуля менеджера) выполняется на сервере и не имеет доступа к элементам формы — там нельзя обратиться к полю ввода или установить видимость кнопки.
Общие модули содержат переиспользуемые процедуры и функции, доступные из любого места конфигурации. Модуль приложения и модуль сеанса отвечают за запуск системы. Если нужная логика связана с поведением интерфейса — она в модуле формы; если с записью и проверкой данных — чаще в модуле объекта.
Где искать нужный код
Поведение элементов формы, обработчики событий открытия, ввода, команд. Открывается из редактора формы.
Обработка проведения, заполнение, проверка заполнения. Открывается из свойств объекта в дереве конфигурации.
Переиспользуемые функции для всей конфигурации. Ветка «Общие → Общие модули».
Код произвольных команд объекта или формы, открывается из ветки «Команды».
Структура модуля формы: что там искать
Модуль формы состоит из областей: объявления переменных формы, обработчики событий формы, обработчики событий элементов формы, обработчики команд и служебные процедуры. В типовых конфигурациях код разбит директивами #Область, что помогает ориентироваться.
Ключевые обработчики, с которых обычно начинают поиск: ПриСозданииНаСервере (инициализация формы), ПриОткрытии (клиентская логика после открытия), ПередЗаписью и ПослеЗаписи, а также обработчики изменения полей вида ИмяПоляПриИзменении. Если вам нужно понять, почему поле скрывается или значение пересчитывается — ищите именно эти процедуры через поиск по модулю (Ctrl+F).
Типичные проблемы: модуль пуст, код не находится, форма не открывается
Ситуация «открыл модуль, а там пусто» обычно означает, что форма только что создана конструктором и обработчики ещё не добавлены, либо вы открыли не ту форму — например, форму списка вместо формы элемента. Проверьте заголовок окна редактора: там указан полный путь к форме.
Если поведение формы в режиме «Предприятие» есть, а кода в модуле нет, логика может быть вынесена в общие модули, в модуль менеджера объекта или реализована через подписки на события и расширения конфигурации. В типовых конфигурациях значительная часть логики форм живёт в общих модулях с постфиксами вида «Клиент», «ВызовСервера», «Переопределяемый».
Если конфигурация доработана расширением, исходный модуль формы в основной конфигурации не покажет код расширения — его нужно смотреть отдельно в дереве расширения. При этом в расширении видны только переопределённые обработчики с аннотациями &ИзменениеИКонтроль, &После, &Вместо.
Безопасное редактирование модуля формы
Перед изменением модуля формы рабочей базы сделайте выгрузку конфигурации или хотя бы сохраните текст модуля в файл. Ошибка в коде формы приводит к тому, что форма перестаёт открываться у всех пользователей, а синтаксическая ошибка в модуле блокирует обновление конфигурации базы данных.
Для типовых конфигураций на поддержке безопасный путь — доработка через расширение: так вы не нарушаете механизм обновления и можете отключить свои изменения одним действием. Прямое изменение модуля формы типового объекта оправдано только в собственных (нетиповых) конфигурациях.
После правок проверяйте модуль через «Конфигурация → Проверка конфигурации» с включённой проверкой модулей, затем тестируйте форму под пользователем с теми же правами, что у реальных пользователей, — часть кода может зависеть от ролей и функциональных опций.
Как проверить результат после правок
Ошибок нет, конфигурация обновляется
Сообщения об ошибках компиляции в окне сообщений
Форма открывается, элементы работают
Ошибка при открытии или пустая форма
Логика работает с боевыми правами
Ошибки доступа к данным или скрытые элементы
FAQ
Можно ли посмотреть модуль формы в режиме «Предприятие»?
Нет. В пользовательском режиме доступна только сама форма. Код открывается исключительно в конфигураторе или в 1C:EDT. Для отладки в режиме «Предприятие» используется отладчик, подключённый из конфигуратора.
Почему в ветке «Формы» у объекта ничего нет?
Объект использует автоматически генерируемую платформой форму. Чтобы писать код, создайте форму вручную: контекстное меню ветки «Формы → Добавить» и выберите нужный тип формы в конструкторе.
Где искать код, если модуль формы пуст, а логика работает?
Проверьте общие модули (особенно с постфиксами «Клиент», «ВызовСервера», «Переопределяемый»), модуль менеджера объекта, подписки на события и подключённые расширения конфигурации.
Чем отличается &НаСервереБезКонтекста от &НаСервере?
Процедура &НаСервереБезКонтекста не имеет доступа к реквизитам и данным формы — туда нужно передавать параметры явно. &НаСервере выполняется в контексте формы и видит её реквизиты, но требует передачи контекста на сервер.
Что будет, если допустить ошибку в модуле формы?
Синтаксическая ошибка помешает обновлению конфигурации базы данных. Логическая ошибка в обработчиках может сделать форму неоткрываемой для всех пользователей. Перед правками сохраняйте копию модуля и тестируйте на копии базы.
Как доработать форму типовой конфигурации, не ломая обновление?
Используйте расширение конфигурации: добавьте форму в расширение и переопределите нужные обработчики через аннотации &ИзменениеИКонтроль, &После или &Вместо. Основной модуль формы при этом остаётся нетронутым.
Что важно запомнить
Модуль формы открывается только в конфигураторе или EDT: объект → ветка «Формы» → редактор формы → вкладка «Модуль» (F2). Если формы нет — её нужно создать; если код не находится — проверяйте общие модули и расширения. Доработки типовых форм безопаснее делать через расширение, а перед правками сохранять копию.