Разработка и Конфигурация · 9 мин
Как создать обычную форму в 1С
Как создать обычную форму в 1С: добавление формы объекта, работа с конструктором, реквизиты, команды и код модуля. Практическая инструкция для конфигуратора.
Форма в 1С — это визуальный интерфейс объекта конфигурации: справочника, документа, отчёта или обработки. Через форму пользователь вводит данные, просматривает списки и запускает операции. Создание обычной формы — базовый навык разработчика, который выполняется в конфигураторе без установки дополнительных инструментов.
Под «обычной формой» чаще всего понимают форму объекта (элемента справочника, документа), форму списка или произвольную форму обработки. В управляемом приложении все формы строятся декларативно: разработчик описывает состав реквизитов и элементов, а платформа сама рисует интерфейс под тонкий клиент, веб-клиент и мобильную платформу.
Ниже разобран полный цикл: от добавления формы в дереве конфигурации до проверки её работы в режиме предприятия. Материал ориентирован на платформу 1С:Предприятие 8.3 и типовые приёмы, которые работают в любой конфигурации.
Какие бывают формы и какую выбрать
Перед созданием важно определить тип формы, потому что от этого зависят её свойства и состав данных. Основные варианты: форма объекта (элемента справочника или документа), форма списка, форма выбора, форма констант и произвольная форма (например, у обработки или отчёта).
Сравнение вариантов
Для просмотра и редактирования одного элемента справочника или документа. Содержит все реквизиты и табличные части объекта.
Показывает таблицу элементов с отбором и сортировкой. Подходит для журналов документов и списков справочников.
Свободный интерфейс обработки или отчёта: кнопки, поля, таблицы без привязки к одному объекту. Требует ручного описания реквизитов формы.
Если объект уже имеет основные формы, назначенные конфигурацией, новая форма может быть добавлена как дополнительная и назначена основной вместо типовой. Это стандартный способ доработки типовых решений без изменения существующих форм.
Добавление формы через конструктор
Откройте конфигуратор, разверните в дереве конфигурации нужный объект, например «Справочники → Номенклатура», и выделите ветку «Формы». В контекстном меню выберите «Добавить» — запустится конструктор формы.
Конструктор предложит выбрать тип формы и автоматически сформирует список реквизитов объекта. Галочками отмечается, какие поля попадут на форму. После нажатия «Готово» платформа создаст форму с деревом элементов, модулем и автоматически сгенерированной командной панелью.
Если форма создаётся у обработки, конструктор предложит только произвольную форму — реквизиты придётся добавлять вручную через окно редактора формы, вкладка «Реквизиты».
Настройка реквизитов и элементов формы
Редактор формы состоит из нескольких областей: дерево элементов (слева вверху), реквизиты и команды (справа), предпросмотр формы. Элемент — это визуальный контрол: поле ввода, надпись, кнопка, таблица, группа. Реквизит — данные, которые элемент отображает.
Чтобы добавить поле вручную, перетащите реквизит из правой панели в дерево элементов. Платформа сама создаст элемент подходящего типа: для строки — поле ввода, для булево — флажок, для ссылки на справочник — поле с кнопкой выбора. Порядок элементов в дереве определяет их расположение на форме; группы («ГруппаКолонок», «ГруппаСтраницы») управляют компоновкой.
Полезные свойства элементов настраиваются в палитре свойств (правый клик → «Свойства»): «Заголовок» меняет подпись поля, «ТолькоПросмотр» блокирует редактирование, «Видимость» и «Доступность» управляют отображением, «АвтоОтметкаНезаполненного» включает проверку обязательности заполнения.
Команды и модуль формы
Команды — это действия, доступные пользователю: кнопки на командной панели, пункты меню «Ещё». Чтобы добавить свою команду, откройте вкладку «Команды» в редакторе формы, создайте новую команду и задайте ей обработчик — процедуру в модуле формы.
Модуль формы открывается кнопкой с листком в редакторе формы. В нём пишутся обработчики событий: ПриСозданииНаСервере (инициализация при открытии), ПередЗаписью и ПослеЗаписи (контроль и реакция на сохранение), обработчики команд и событий элементов, например ПриИзменении поля ввода.
&НаКлиенте
Процедура РассчитатьСумму(Команда)
Объект.Сумма = Объект.Цена * Объект.Количество;
КонецПроцедурыДирективы &НаКлиенте и &НаСервере определяют, где выполняется код. Работа с базой данных (запросы, обращение к объектам) возможна только на сервере; интерактивные действия (предупреждения, диалоги) — только на клиенте. Ошибка в распределении контекста — самая частая причина сообщений вида «Процедура или функция с указанным именем не определена».
Назначение формы основной и проверка работы
Чтобы новая форма открывалась вместо типовой, откройте палитру свойств объекта конфигурации и в поле «Основная форма объекта» (или «Основная форма списка») укажите созданную форму. Альтернатива — оставить типовую форму основной, а новую открывать программно через ОткрытьФорму() с явным указанием имени.
Как проверить результат
Форма открывается без ошибок, все поля видны и доступны
Ошибка компиляции модуля или пустая форма без элементов
Данные сохраняются, объект появляется в списке
Ошибка при записи или потеря введённых значений
Кнопки выполняют задуманные действия
Кнопка не реагирует или выдаёт ошибку контекста
Проверка выполняется в режиме отладки: нажмите F5, откройте объект в пользовательском интерфейсе и пройдите основной сценарий — создание, заполнение, запись, повторное открытие. Для отлова ошибок используйте точки останова в модуле формы.
Типичные ошибки при создании форм
Отдельная группа проблем связана с расширениями конфигурации. Если форма дорабатывается через расширение, изменённые элементы типовой формы могут конфликтовать с обновлениями типового решения. Минимизируйте заимствованные элементы и проверяйте форму после каждого обновления конфигурации поставщика.
Если нужно только добавить одно поле на типовую форму, часто проще использовать расширение конфигурации, чем копировать форму целиком: при обновлении типового решения такая доработка сохранится без ручного сравнения форм.
Часто задаваемые вопросы
Чем управляемая форма отличается от обычной формы 8.2?
Обычные формы (толстый клиент, режим обычного приложения) рисовались пиксельно и работали только на клиенте. Управляемые формы описываются декларативно, выполняются с разделением клиент-сервер и работают в тонком, веб- и мобильном клиентах. В современных конфигурациях используются только управляемые формы.
Как открыть созданную форму программно?
Используйте метод ОткрытьФорму("Справочник.Номенклатура.Форма.ИмяФормы", ПараметрыФормы). В параметрах можно передать ключ записи, значения заполнения и режим открытия. Для получения результата работы формы применяется ОткрытьФормуМодально с описанием оповещения.
Почему добавленный реквизит не виден на форме?
Реквизит и элемент формы — разные сущности. После добавления реквизита его нужно перетащить в дерево элементов. Также проверьте свойство «Видимость» элемента и функциональные опции, которые могут скрывать реквизит в зависимости от настроек базы.
Можно ли создать форму без конструктора?
Да. В ветке «Формы» выберите «Добавить» и в конструкторе нажмите «Отмена» либо сразу создайте пустую форму — дальше все реквизиты, элементы и команды добавляются вручную в редакторе формы. Это обычная практика для произвольных форм обработок.
Как вернуть типовую форму, если своя не подошла?
Откройте свойства объекта конфигурации и очистите поле «Основная форма объекта» или верните в него типовую форму. Саму созданную форму можно удалить из ветки «Формы» — на хранящиеся данные это не влияет, форма отвечает только за отображение.
Нужно ли менять код при переносе формы в расширение?
Обычно нет: в расширении форма заимствуется из основной конфигурации, и добавленные обработчики пишутся по тем же правилам с директивами &НаКлиенте и &НаСервере. Ограничение — нельзя удалять заимствованные элементы, можно только изменять их свойства и добавлять свои.
Что важно запомнить
Форма создаётся через ветку «Формы» объекта конфигурации и конструктор; реквизиты перетаскиваются в дерево элементов; логика пишется в модуле формы с правильными директивами контекста; результат всегда проверяется в режиме предприятия на копии базы.