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

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

1С: как заполнить поле списка

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

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

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

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

Как определить, какой тип списка перед вами

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

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

Стрелка вниз у поляВыпадающий список выбора

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

Таблица с кнопкой «Добавить»Табличная часть

Строки добавляются вручную или подбором

Список обновляется самДинамический список

Состав определяется запросом и отбором

Кнопка «...» открывает справочникСсылочное поле

Значение выбирается из существующих объектов базы

Заполнение выпадающего списка выбора

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

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

&НаСервере

Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

Элементы.СтатусЗаявки.СписокВыбора.Добавить("Новая", "Новая заявка");

Элементы.СтатусЗаявки.СписокВыбора.Добавить("ВРаботе", "В работе");

Элементы.СтатусЗаявки.СписокВыбора.Добавить("Закрыта", "Закрыта");

КонецПроцедуры;

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

Заполнение табличной части документа или справочника

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

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

Программно табличная часть заполняется через коллекцию строк объекта. Типовой пример — добавление строки при обработке:

НоваяСтрока = Объект.Товары.Добавить();

НоваяСтрока.Номенклатура = ВыбраннаяНоменклатура;

НоваяСтрока.Количество = 1;

НоваяСтрока.Цена = ПолучитьЦену(ВыбраннаяНоменклатура);

Работа с реквизитом типа «Список значений»

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

В коде список значений заполняется методом «Добавить», где первый параметр — само значение, второй — представление для отображения, третий (необязательный) — пометка:

СписокКонтрагентов = Новый СписокЗначений;

СписокКонтрагентов.Добавить(КонтрагентСсылка, "Основной поставщик", Истина);

Типичное применение — передача списка в параметр запроса для отбора по нескольким значениям через оператор «В (&Список)». Учтите: все элементы списка должны иметь совместимый тип, иначе запрос вернёт ошибку или неполный результат.

Типичные ошибки и их устранение

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

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

Третья ситуация — динамический список не обновляется после изменения данных. Обычно помогает команда «Обновить» (F5) в списке; если список на форме обработки, вызовите метод Элементы.Список.Обновить() после записи объекта.

Типичные ошибки
01
Добавление строки в табличную часть без заполнения обязательных колонок — документ не проводится
02
Передача строки вместо ссылки в список значений — ошибка типа при выполнении запроса
03
Попытка вручную править строки динамического списка — изменения не сохраняются, нужно править источник
04
Редактирование перечисления в рабочей базе без копии — риск потери данных в старых документах
05
Ожидание автоматического обновления списка на форме обработки — требуется вызов Обновить()

Как проверить, что список заполнен правильно

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

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

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

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

Поле выбора после записи
Норма

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

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

Поле пустое или сброшено — значение не подошло по типу

Проведение документа
Норма

Документ проведён без сообщений

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

Сообщения о незаполненных колонках табличной части

Динамический список
Норма

Записи соответствуют установленному отбору

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

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

Список значений в отчёте
Норма

Отчёт учитывает все выбранные элементы

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

Часть значений игнорируется — несовместимые типы элементов

Итог

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

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

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

Почему в выпадающем списке нет нужного значения?

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

Как добавить сразу много строк в табличную часть?

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

Можно ли заполнить список значений из запроса?

Да. Выполните запрос, выгрузите результат в таблицу значений и загрузите нужную колонку в список методом ЗагрузитьЗначения(Таблица.ВыгрузитьКолонку("ИмяКолонки")).

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

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

Как ограничить состав выпадающего списка для пользователя?

Разработчик задаёт свойство «СписокВыбора» у элемента формы или использует параметры выбора и связи параметров выбора для ссылочных полей. Для перечислений состав фиксируется в конфигураторе и не меняется пользователем.