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