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

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

Как сделать форму в 1С:Предприятие

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

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

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

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

Какие виды форм существуют и какую выбрать

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

Основные виды форм

Форма элемента (объекта)

Для просмотра и редактирования одного элемента справочника или документа. Самый частый тип при доработке.

Форма списка

Таблица записей с отбором и поиском. Подходит, когда нужно изменить колонки или добавить команды списка.

Форма выбора

Открывается при подборе значения в поле ввода. Нужна, чтобы ограничить или переупорядочить выбор.

Произвольная форма

Не привязана к конкретному объекту. Используется для обработок, панелей и служебных окон.

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

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

Конструктор форм — самый быстрый способ получить рабочую заготовку. Он сам создаст реквизиты формы, разместит основные элементы и сформирует модуль.

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

После нажатия «Готово» откроется редактор формы. В управляемой форме вы увидите три области: дерево элементов формы (слева вверху), список реквизитов формы (справа) и командную панель с командами. Именно связка «элемент ↔ реквизит» определяет, какие данные отображаются и куда сохраняются.

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

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

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

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

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

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

Программирование логики: модуль формы и события

Модуль формы открывается кнопкой «Модуль» в редакторе формы. В нём пишутся обработчики событий и вспомогательные процедуры. В управляемой форме код делится на серверный и клиентский — директивы &НаСервере и &НаКлиенте указывают, где выполняется процедура.

Ключевые события, которые используются чаще всего:

  • ПриСозданииНаСервере — инициализация формы, заполнение реквизитов, настройка видимости;
  • ПриОткрытии — клиентские действия после отображения формы;
  • ПередЗаписью и ПриЗаписи — проверки и сопутствующие действия при сохранении;
  • обработчики элементов, например ПриИзменении для поля ввода.

Пример: при изменении цены или количества пересчитывать сумму строки табличной части.

&НаКлиенте

Процедура ТоварыКоличествоПриИзменении(Элемент)

Строка = Элементы.Товары.ТекущиеДанные;

Строка.Сумма = Строка.Количество * Строка.Цена;

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

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

bsl
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Если Объект.Ссылка.Пустая() Тогда
        Объект.Ответственный = ПользователиИнформационнойБазы.ТекущийПользователь().Имя;
    КонецЕсли;
КонецПроцедуры

Команды формы и динамические списки

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

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

Расширение конфигурации как альтернатива доработке

Если конфигурация типовая и регулярно обновляется, форму лучше доработать через расширение. В конфигураторе: «Конфигурация» → «Расширения конфигурации» → «Создать». Затем в дереве конфигурации найдите нужную форму, в контекстном меню выберите «Добавить в расширение» и внесите изменения уже в расширении.

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

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

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

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

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

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

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

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

Ошибка компиляции модуля или пустая форма вместо вашей

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

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

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

Поле очищается после записи — неверная связь элемента с реквизитом

Работа обработчиков
Норма

При изменении полей срабатывают пересчёты и проверки

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

Обработчик не вызывается — событие не назначено элементу

Поведение при разных правах
Норма

Форма корректно открывается у пользователя с ограниченными правами

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

Ошибки доступа к данным при открытии

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

Если форма не открывается, первым делом смотрите текст ошибки: чаще всего это синтаксическая ошибка в модуле формы или обращение к несуществующему реквизиту. Проверка модуля выполняется через «Конфигурация» → «Проверка конфигурации» с флагом «Модули».

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

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

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

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

Управляемая форма описывается декларативно и работает в тонком, веб- и мобильном клиенте; код в ней разделён на клиентский и серверный. Обычная форма рисуется точным позиционированием элементов и работает только в толстом клиенте. Для новых разработок используются управляемые формы.

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

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

Почему моя форма не открывается у пользователей?

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

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

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

Где писать код — на клиенте или на сервере?

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

Итог

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

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