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