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

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

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

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

Форма документа — это экранное представление объекта, с которым работает пользователь: шапка с реквизитами, табличные части, кнопки проведения и печати. В 1С:Предприятии 8 форму можно создать автоматически через конструктор, а затем доработать в редакторе формы: переставить элементы, добавить команды, написать обработчики событий. Ниже разобран полный цикл — от создания документа до проверки готовой формы в режиме предприятия.

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

Что нужно подготовить перед созданием формы

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

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

Создание формы через конструктор

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

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

Порядок действий
  1. 1
    Откройте конфигуратор и разверните ветку «Документы» в дереве конфигурации
  2. 2
    Дважды щёлкните по нужному документу и перейдите на вкладку «Формы»
  3. 3
    Нажмите кнопку добавления формы и выберите тип «Форма документа»
  4. 4
    Отметьте реквизиты и табличные части, расставьте их в нужном порядке
  5. 5
    Нажмите «Готово», сохраните конфигурацию и откройте документ в режиме «1С:Предприятие»

Структура редактора формы: что где находится

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

В нижней части расположен модуль формы — код на встроенном языке с обработчиками событий. Закладка «Форма» внизу окна показывает визуальный макет, но в управляемых формах он условный: итоговое расположение система вычисляет автоматически с учётом группировки и свойств элементов. Поэтому точное позиционирование достигается не перетаскиванием по макету, а настройкой групп и свойств «Горизонтальное положение», «Ширина», «Растягивать по горизонтали».

Добавление реквизитов и табличных частей на форму

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

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

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

Команды и программный код в модуле формы

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

Обработчики событий создаются через палитру свойств формы или элемента: выделите элемент, откройте свойства, прокрутите до раздела «События» и нажмите лупу у нужного события. Чаще всего используются «ПриСозданииНаСервере» (начальная настройка формы), «ПриОткрытии», «ПередЗаписью» и «ПриИзменении» у полей ввода. Пример заполнения реквизита при открытии нового документа:

&НаСервере

Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

Если Объект.Ссылка.Пустая() Тогда

Объект.Ответственный = Пользователи.ТекущийПользователь();

КонецЕсли;

КонецПроцедуры

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

Особенности обычных форм и внешних форм

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

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

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

Конструктор форм

Быстрый старт для типовой структуры документа; ограничение — стандартное расположение элементов, требует ручной доработки

Ручная доработка в редакторе

Полный контроль над группами, командами и кодом; требует понимания клиент-серверной модели управляемых форм

Расширение конфигурации

Подходит для доработки типовых форм без снятия с поддержки; ограничение — не все изменения возможны, есть накладные расходы при обновлении расширения

Проверка результата и типичные ошибки

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

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

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

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

Открытие формы
Норма

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

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

Ошибка «Переменная не определена» или «Поле объекта не обнаружено»

Заполнение и запись
Норма

Реквизиты сохраняются, документ проводится

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

Значения сбрасываются после записи — реквизит не связан с данными объекта

Работа кнопок
Норма

Команды выполняются, результат виден сразу

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

Кнопка есть, но ничего не происходит — обработчик не создан или пуст

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

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

Можно ли создать форму документа без конфигуратора?

Нет, создание и изменение форм выполняется только в конфигураторе. В режиме «1С:Предприятие» пользователь может лишь настроить видимость и порядок уже существующих элементов через меню «Изменить форму», если администратор не запретил это правами.

Как сделать другую форму основной для документа?

Откройте свойства документа, вкладку «Формы», и в поле «Форма документа» выберите нужную из списка. Именно она будет открываться при создании и редактировании документа. Остальные формы остаются доступными для вызова из кода.

Почему реквизит есть в данных, но не виден на форме?

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

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

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

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

Используйте расширение конфигурации: в конфигураторе откройте «Конфигурация — Расширения конфигурации», создайте расширение и добавьте в него нужную форму. Доработки сохранятся отдельно от типового кода и не блокируют автоматическое обновление, хотя после обновления расширение стоит проверить на совместимость.

Форма открывается медленно — в чём причина?

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

Итог

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

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