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

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

Как добавить управляемую форму в 1С

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

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

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

Ниже разобран полный цикл: выбор типа формы, создание её в конфигураторе, настройка реквизитов и команд, назначение формы основной и проверка результата. Инструкция применима к платформе 8.3 в тонком и веб-клиенте.

Какие бывают типы управляемых форм и что выбрать

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

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

Сравнение типов форм

Форма объекта

Карточка одного элемента справочника или документа. Подходит для ввода и редактирования данных; ограничение — работает только с одним объектом за раз.

Форма списка

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

Форма выбора

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

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

Форма обработки или отчёта без привязки к объекту. Максимальная свобода, но всю логику заполнения нужно писать самостоятельно.

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

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

Откройте конфигуратор, найдите в дереве конфигурации нужный объект (например, «Справочники → Номенклатура») и раскройте его. Перейдите на вкладку «Формы» в палитре свойств объекта либо раскройте подчинённую ветку «Формы» в дереве. Нажмите кнопку добавления (значок с плюсом) — запустится конструктор формы.

В конструкторе задайте имя формы латиницей без пробелов (например, ФормаЭлементаРасширенная), выберите тип формы и отметьте, нужно ли назначить её основной. Для формы объекта конструктор предложит список реквизитов — отметьте те, что должны отображаться. После нажатия «Готово» платформа создаст форму и откроет редактор с уже размещёнными элементами.

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

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

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

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

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

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

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

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

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

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

&НаСервере
Процедура РассчитатьСуммуНаСервере()
	Объект.СуммаДокумента = Объект.Товары.Итог("Сумма");
КонецПроцедуры

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

Назначение формы основной и проверка результата

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

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

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

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

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

Открывается созданная форма с заданным порядком полей

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

Открывается автогенерированная форма — значит, форма не назначена основной

Кнопки и команды
Норма

Свои команды видны в командной панели и выполняются без ошибок

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

Кнопка есть, но при нажатии ошибка — проверьте директивы &НаКлиенте/&НаСервере

Запись объекта
Норма

Объект записывается, проверки заполнения срабатывают

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

Ошибка при записи — смотрите обработчики ПередЗаписью и обязательные реквизиты

Типичные ошибки и ограничения

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

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

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

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

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

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

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

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

Как открыть форму программно из другого модуля?

Используйте метод ОткрытьФорму() с указанием полного имени формы, например: ОткрытьФорму("Справочник.Номенклатура.Форма.ФормаЭлементаРасширенная"). Параметры передаются вторым аргументом в виде структуры, а в форме они доступны через свойство «Параметры» в обработчике ПриСозданииНаСервере.

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

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

Как добавить форму для внешней обработки?

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

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

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

Итог

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

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