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

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

Как создать форму списка в 1С

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

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

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

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

Как работает форма списка и когда её нужно создавать вручную

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

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

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

Создание формы списка в конфигураторе: пошаговый порядок

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

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

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

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

Настройка колонок и внешнего вида списка

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

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

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

Если колонка добавлена в таблицу формы, но не отображается у пользователя, чаще всего у поля снят флажок «Пользовательская видимость» или пользователь сам скрыл колонку через «Изменить форму». Проверяйте оба места.
ПЗ
Практическое замечание

Произвольный запрос динамического списка

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

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

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

bsl
// Пример: отбор непомеченных элементов при открытии формы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ПометкаУдаления");
    ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
    ЭлементОтбора.ПравоеЗначение = Ложь;
    ЭлементОтбора.Использование = Истина;
КонецПроцедуры

Отборы, порядок и условное оформление

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

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

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

Несколько форм списка и открытие с параметрами

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

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

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

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

Типичные ошибки
01
В произвольном запросе убрано поле «Ссылка» — перестают работать открытие элемента и стандартные команды списка
02
Не задано свойство «Основная таблица» у произвольного динамического списка — платформа не может связать команды с объектом
03
Соединение с виртуальной таблицей регистра без параметров — список открывается медленно на больших объёмах данных
04
Отбор задан программно без учёта того, что пользователь его не видит — возникают жалобы на «пропавшие» записи
05
В список выведены десятки реквизитов — запрос тяжелеет, форма открывается с задержкой
Контрольные точки

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

Открытие списка
Норма

Форма открывается за разумное время, данные видны сразу

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

Долгое ожидание или пустой список при наличии данных в базе

Стандартные команды
Норма

Создание, копирование, пометка удаления и открытие элемента работают

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

Команды недоступны или выдают ошибку — вероятно, нарушена связь с основной таблицей

Работа под ограниченными правами
Норма

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

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

Ошибка доступа — в произвольном запросе есть таблицы, на которые у роли нет прав

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

Итог

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

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

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

Можно ли обойтись без создания формы списка?

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

Почему в динамическом списке недоступно редактирование строк?

Динамический список предназначен для просмотра и навигации, а не для прямого редактирования данных. Изменение выполняется через открытие формы элемента. Если в запросе используются соединения или группировки, список дополнительно теряет часть интерактивных возможностей — это ограничение механизма.

Как открыть форму списка с отбором из другой формы?

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

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

Частые причины: соединение с виртуальными таблицами регистров без задания параметров (периода, отборов), отсутствие индексов по полям соединения, вывод большого числа колонок. Начните с упрощения запроса и проверьте его выполнение в консоли запросов.

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

Установите отбор программно в обработчике «ПриСозданииНаСервере» с проверкой роли или функциональной опции текущего пользователя. Для остальных пользователей отбор не добавляйте — они увидят полный список.

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

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