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

Справочники и Данные · 11 мин

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

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

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

Пользователю обычно достаточно встроенных средств: стандартные списки справочников и документов, отборы, настройка колонок и группировка. Разработчику доступны программные объекты — СписокЗначений, запросы и динамические списки. Ниже разобраны оба подхода с конкретными шагами и проверками результата.

Материал ориентирован на типовые конфигурации на платформе 1С:Предприятие 8.3 (Бухгалтерия, Управление торговлей, ERP, ЗУП). В отраслевых и устаревших решениях названия команд могут отличаться, но общая логика сохраняется.

Определите, какой именно список вам нужен

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

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

Маршрут решения

Как выбрать действие

Нужно посмотреть или распечатать элементы справочника или документы за периодОткройте стандартный список и настройте отбор по периоду и реквизитам
Список должен автоматически обновляться на форме или в рабочем местеИспользуйте динамический список с запросом и отборами
Данные собираются внутри обработки, отчёта или процедурыСоздайте СписокЗначений или ТаблицуЗначений в коде
Нужен список по сложным условиям из нескольких таблицНапишите запрос и выведите результат через отчёт на СКД

Сформируйте список справочника в режиме пользователя

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

Чтобы сузить перечень, нажмите кнопку «Ещё» и выберите «Настроить список» (в некоторых конфигурациях — «Отбор»). Добавьте условия: например, «Группа равно Поставщики» или «Артикул содержит АБВ». Условия можно комбинировать по «И» и «ИЛИ». После применения отбора в списке останутся только подходящие элементы.

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

Порядок действий
  1. 1
    Откройте раздел со справочником или видом документов
  2. 2
    Нажмите «Ещё» → «Настроить список» и добавьте условия отбора
  3. 3
    Настройте состав и порядок колонок через настройку формы
  4. 4
    Проверьте, что в списке остались только нужные элементы
  5. 5
    При необходимости выведите список на печать через «Ещё» → «Вывести список»

Сформируйте список документов за период

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

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

Обратите внимание на признак проведения: в списке видно, проведён документ, помечен на удаление или просто записан. Если список нужен для анализа учёта, отберите только проведённые — иначе в выборку попадут черновики и отменённые документы.

Выведите список на печать или сохраните в файл

Сформированный список можно вывести в табличный документ: команда «Ещё → Вывести список». В диалоге отметьте, какие колонки включить, и нажмите «ОК» — система сформирует табличный документ, который можно распечатать или сохранить в Excel, PDF или mxl.

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

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

Создайте список значений программно

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

bsl
Список = Новый СписокЗначений;
Список.Добавить(Справочники.Контрагенты.НайтиПоКоду("000000001"), "Основной поставщик");
Список.Добавить("Аванс", "Вид оплаты", Истина);
Список.СортироватьПоПредставлению();
Для Каждого Элемент Из Список Цикл
    Сообщить(Элемент.Представление + " — " + Элемент.Значение);
КонецЦикла;

У элемента списка есть три свойства: Значение, Представление и пометка (флажок). Пометка используется, когда список показывается пользователю для выбора нескольких позиций — например, через метод ОтметитьЭлементы(). Методы СортироватьПоЗначению() и СортироватьПоПредставлению() упорядочивают список.

Если в списке нужны не простые значения, а наборы полей (например, номенклатура + цена + количество), СписокЗначений не подойдёт — используйте ТаблицуЗначений с колонками. Это частая ошибка начинающих разработчиков: они пытаются хранить структуры в списке и теряют возможность сортировки и поиска по полям.

Настройте динамический список на форме

Динамический список — это реквизит формы, который отображает данные из базы и обновляется автоматически. В конфигураторе откройте форму, добавьте реквизит типа «ДинамическийСписок» и задайте его свойство «Основная таблица» (например, «Документ.РеализацияТоваровУслуг») или произвольный запрос.

Произвольный запрос нужен, когда данные берутся из нескольких таблиц или требуется отбор на уровне запроса. Установите флаг «Произвольный запрос» и напишите текст запроса с полями и условиями. Условия с параметрами (ГДЕ Организация = &Организация) позволят управлять отбором программно через Параметры списка.

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

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

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

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

Для программных списков проверяйте тип значений: если в СписокЗначений попали незаполненные ссылки из-за отсутствия элемента по коду, дальнейшая обработка упадёт с ошибкой. Перед добавлением проверяйте результат НайтиПоКоду() на пустую ссылку.

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

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

Количество строк в списке
Норма

Совпадает с ожидаемым по отчёту или журналу

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

Строк больше или меньше — проверьте условия отбора

Состав колонок
Норма

Видны только нужные реквизиты, порядок удобен

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

Лишние пустые колонки, нет ключевых данных

Отбор по периоду
Норма

Установлен явно и соответствует задаче

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

Период пуст — список грузится долго

Программный список
Норма

Все значения заполнены, типы корректны

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

Есть пустые ссылки или строки вместо ссылок

Типичные ошибки
01
Отбор по подстроке без учёта регистра и пробелов — элементы не находятся, хотя существуют
02
Хранение сложных данных в СпискеЗначений вместо ТаблицыЗначений — теряется сортировка и поиск по полям
03
Динамический список без ограничения периода — медленная работа формы и нагрузка на сервер
04
Поиск элемента по наименованию вместо кода или ссылки — дубли с одинаковыми названиями ломают логику
05
Забытый отбор по признаку проведения — в список попадают черновики и помеченные на удаление документы

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

Чем список значений отличается от таблицы значений в 1С?

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

Как сохранить настройки отбора списка, чтобы не настраивать заново?

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

Можно ли сформировать список из нескольких справочников сразу?

Стандартный список показывает один объект. Для объединения данных из разных таблиц нужен запрос с объединением (ОБЪЕДИНИТЬ) — его можно использовать в произвольном динамическом списке или отчёте на СКД. Пользователю без доработок проще сформировать два списка и свести их в Excel.

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

Чаще всего причина в отсутствии ограничения периода и в большом количестве видимых колонок. Установите интервал дат, уберите лишние реквизиты и примените отбор по организации. Если список всё равно тормозит в клиент-серверном режиме, проблему нужно разбирать с администратором — возможны нехватка индексов или неоптимальный доработанный запрос.

Как программно передать список значений в отбор запроса?

Передайте список как параметр запроса и используйте условие «В» — например, ГДЕ Номенклатура В (&СписокНоменклатуры). Запрос сам развернёт список в набор значений. Это удобнее, чем перебирать элементы в цикле и выполнять отдельные запросы для каждого значения — такой подход работает значительно быстрее.

Как выгрузить список из 1С в Excel без потери кодов с нулями?

Используйте «Ещё → Вывести список» и сохраните табличный документ в формате Excel — при этом текстовые коды обычно сохраняются корректно. Если после открытия ведущие нули исчезли, задайте для колонки текстовый формат в Excel или сохраняйте файл в mxl и конвертируйте через копирование с предварительной настройкой формата ячеек.

Итог

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

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