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