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

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

Управляемые формы 1С: стандартная форма как список

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

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

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

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

Как платформа решает, какую форму показать

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

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

Настройка объекта, чтобы стандартная форма работала как список

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

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

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

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

Программное открытие списка и параметры формы

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

Параметры открытия позволяют настроить список без создания собственной формы. Наиболее востребованные:

  • Отбор — структура отбора по реквизитам, например показать только элементы конкретной группы;
  • РежимВыбора — открывает список в режиме выбора значения;
  • ТекущаяСтрока — позиционирует курсор на нужном элементе;
  • РазрешитьВыборКорня — для планов видов характеристик и подобных объектов.

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

bsl
ПараметрыФормы = Новый Структура;
Отбор = Новый Структура("Родитель", ГруппаТоваров);
ПараметрыФормы.Вставить("Отбор", Отбор);
ОткрытьФорму("Справочник.Номенклатура.ФормаСписка", ПараметрыФормы);

ОбработкаПолученияФормы: управление без создания формы

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

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

Когда стандартной формы недостаточно

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

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

Сравнение вариантов

Стандартная форма списка

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

Собственная форма с динамическим списком

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

Расширение конфигурации

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

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

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

Типичные ошибки
01
Создана форма, но не назначена основной — открывается стандартная, разработчик ищет ошибку в коде, хотя дело в свойствах объекта.
02
Отбор передаётся по реквизиту, которого нет в запросе динамического списка — платформа выдаёт ошибку поля отбора при открытии.
03
В ОбработкаПолученияФормы сброшена СтандартнаяОбработка, но ВыбраннаяФорма не заполнена — форма вообще не открывается.
04
Ожидание, что стандартная форма запомнит настройки для всех пользователей — настройки списка хранятся персонально для каждого пользователя.
Контрольные точки

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

Открытие списка из меню раздела
Норма

Открывается ожидаемая форма с нужными колонками

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

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

Выбор значения в поле ввода
Норма

Открывается список в режиме выбора с рабочим поиском

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

Открывается форма элемента или пустой список — проверьте свойства ввода по строке и отборы

Программный вызов ОткрытьФорму с параметром Отбор
Норма

Список отфильтрован, отбор виден в настройках

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

Ошибка поля отбора — реквизит недоступен в динамическом списке

FAQ

Как открыть стандартную форму списка, если назначена основная собственная форма?

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

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

Штатно — нет, команда «Настроить список» доступна всегда в стандартной форме. Если требуется зафиксировать состав и отборы, создайте собственную форму с динамическим списком и отключите пользовательские настройки у него.

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

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

Как позиционировать список на нужном элементе при открытии?

Передайте в параметры формы ключ «ТекущаяСтрока» со ссылкой на объект. Платформа установит курсор на этот элемент, если он удовлетворяет установленным отборам списка.

Работает ли стандартная форма списка в мобильном клиенте и веб-клиенте?

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

Итог

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

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