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