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

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

Как добавить форму в 1С: подробная инструкция

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

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

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

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

Подготовка: что нужно перед созданием формы

Работа с формами выполняется в конфигураторе, поэтому потребуется запустить 1С в режиме «Конфигуратор» и открыть конфигурацию (меню Конфигурация → Открыть конфигурацию). Если конфигурация закрыта, дерево объектов будет недоступно.

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

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

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

Конструктор — самый быстрый способ добавить стандартную форму. Порядок действий:

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

После создания формы не забудьте обновить конфигурацию базы данных (клавиша F7 или Конфигурация → Обновить конфигурацию базы данных). Без этого изменения не попадут в рабочую базу, и пользователи новую форму не увидят.

Выбор типа формы и назначение по умолчанию

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

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

Настройка формы в редакторе: реквизиты, элементы, команды

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

Чтобы добавить поле на форму, перетащите реквизит из правой панели в дерево элементов. Порядок элементов в дереве определяет порядок отображения на экране. Для группировки полей используйте элементы «Группа» с видом «Обычная группа», «Страницы» или «Командная панель».

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

Не размещайте на форме все реквизиты объекта подряд. Форма с большим количеством полей открывается медленнее и неудобна пользователю. Оставьте на первой странице только ключевые данные, а редко используемые реквизиты вынесите на отдельные закладки или в группу «Дополнительно».
ПЗ
Практическое замечание

Добавление кода: обработчики событий формы

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

Пример простого обработчика, который при открытии новой карточки подставляет значение по умолчанию:

&НаСервере

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

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

Объект.Валюта = Константы.ОсновнаяВалюта.Получить();

КонецЕсли;

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

bsl
&НаКлиенте
Процедура КомандаЗаполнить(Команда)
    ЗаполнитьНаСервере();
КонецПроцедуры

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

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

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

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

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

Открытие объекта
Норма

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

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

Ошибка «Форма не найдена» или «Ошибка компиляции модуля»

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

Данные сохраняются, поля валидируются

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

При записи ошибка или данные не сохраняются

Запуск под другим пользователем
Норма

Форма доступна с учётом прав роли

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

Нарушение прав доступа или пустая форма

Типичные ошибки
01
Форма создана, но не назначена основной — платформа продолжает генерировать форму автоматически, и доработки не видны
02
Забыли обновить конфигурацию базы данных (F7) — изменения есть в конфигураторе, но не в рабочей базе
03
Серверный вызов из клиентской процедуры без директивы &НаСервере — ошибка компиляции при открытии
04
Добавление реквизита объекта вместо реквизита формы, когда данные нужны только для отображения, — лишнее изменение структуры данных
05
Изменение типовой формы без резервной копии — при ошибке сложно вернуть исходное состояние

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

Альтернативы: расширение конфигурации и внешние обработки

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

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

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

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

Конфигурация собственная или снята с поддержкиСоздавайте и редактируйте форму напрямую в конфигураторе
Типовая конфигурация на полной поддержкеИспользуйте расширение конфигурации с заимствованием формы
Нужен разовый диалог без изменения конфигурацииСоздайте внешнюю обработку с собственной формой
Нужны только дополнительные колонки в спискеВозможно, достаточно настройки динамического списка без создания новой формы
Итог

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

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

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

Можно ли добавить форму без конфигуратора, прямо в режиме 1С:Предприятие?

Полноценно создать новую форму нельзя — для этого нужен конфигуратор. Но пользователь с правами может изменять настройки уже существующей формы: порядок и видимость полей через меню «Ещё → Изменить форму». Этого достаточно для простой адаптации интерфейса без доработок.

Создал форму, но открывается старая. Что не так?

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

Чем форма элемента отличается от формы документа?

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

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

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

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

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

Опасно ли менять форму в рабочей базе, где уже есть данные?

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