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