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

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

Для чего используется форма в 1С и как с ней работать

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

Форма в 1С — это визуальный интерфейс, через который пользователь взаимодействует с данными: просматривает списки документов, заполняет карточки контрагентов, вводит параметры отчётов. Без форм платформа показывала бы только служебные окна, а вся работа с прикладными данными свелась бы к программному коду. Именно форма превращает структуры данных конфигурации в понятные пользователю экраны с полями ввода, таблицами, кнопками и командными панелями.

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

Ниже разобрано назначение форм, их основные виды, сценарии создания и настройки, а также типичные ошибки, которые приводят к медленной работе или потере данных при вводе.

Что такое форма в 1С и зачем она нужна

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

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

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

Основные виды форм и их назначение

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

  • Форма объекта — карточка одного элемента: документа, элемента справочника, записи регистра. Используется для ввода и редактирования данных.
  • Форма списка — таблица с перечнем элементов, отбором, сортировкой и поиском. Открывается при переходе в раздел справочника или журнала документов.
  • Форма выбора — упрощённый список для подбора значения в поле ввода. Отличается от формы списка тем, что результатом её работы является выбранное значение.
  • Форма группы — для папок иерархических справочников.
  • Форма констант, форма отчёта, форма обработки — специализированные формы для настроек и запуска алгоритмов.

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

Когда платформа создаёт форму сама, а когда нужна своя

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

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

Маршрут решения

Как выбрать действие

Достаточно стандартного набора полей и нет особой логикиОставьте автоматическую форму — не создавайте объект без необходимости
Нужно переставить поля, скрыть часть реквизитов, добавить подсказкиСоздайте основную форму объекта и настройте её в конструкторе
Требуется нестандартный диалог, мастер настройки или панель администратораСоздайте общую форму или форму обработки
Нужен быстрый подбор значений с отборомСоздайте отдельную форму выбора с предустановленными параметрами

Как создать и настроить форму в конфигураторе

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

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

Порядок создания формы объекта
  1. 1
    В конфигураторе откройте ветку нужного объекта, правой кнопкой по «Формы» — «Добавить»
  2. 2
    В конструкторе выберите тип формы (например, «Форма документа») и отметьте нужные реквизиты
  3. 3
    Нажмите «Готово» — платформа создаст форму и откроет редактор
  4. 4
    Упорядочьте элементы: сгруппируйте связанные поля, задайте заголовки и подсказки
  5. 5
    Добавьте обработчики событий в модуль формы (ПриСозданииНаСервере, ПередЗаписью и др.)
  6. 6
    Сохраните конфигурацию, обновите конфигурацию базы данных и проверьте форму в режиме предприятия

События формы и программная логика

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

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

Обычные и управляемые формы: в чём разница

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

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

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

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

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

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

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

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

Большинство проблем с формами возникает не из-за сложности механизма, а из-за нарушения простых правил. Форма, которая тормозит или сбрасывает введённые данные, почти всегда содержит одну из перечисленных ниже ошибок.

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

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

Как проверить, что форма работает правильно

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

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

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

Скорость открытия формы
Норма

Форма открывается без заметной паузы

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

Задержка в несколько секунд — проверьте запросы в ПриСозданииНаСервере

Сохранение данных
Норма

После записи и повторного открытия все введённые значения на месте

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

Часть полей пуста — проверьте связь элементов с реквизитами объекта

Контроль обязательных полей
Норма

При попытке записать объект без обязательных полей выводится понятное сообщение

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

Объект записывается с пустыми ключевыми реквизитами

Работа в разных клиентах
Норма

Форма корректно отображается в тонком и веб-клиенте

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

Элементы недоступны или код не выполняется — проверьте директивы компиляции

Итог

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

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

Частые вопросы о формах в 1С

Чем форма списка отличается от формы выбора?

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

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

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

Почему форма открывается медленно?

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

Что такое общие формы и когда их создавать?

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

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

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

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

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