Отбор и поиск документов в 1С 8.3: от фильтра списка до запроса
Содержание
Чтобы выбрать документы в 1С 8.3, откройте их список и задайте отбор: период — Ещё → Установить период, поиск по любой колонке — Ещё → Расширенный поиск (Alt+F), сложные условия — на вкладке «Отбор» в настройке списка из того же меню «Ещё». Если условие касается товаров внутри документа, проводок или данных из нескольких видов документов, интерфейса уже мало: нужен запрос.
Способы идут от простых к сложным: сначала для бухгалтера, потом для программиста. Всё описанное работает на платформе 8.3 в интерфейсе «Такси» и не зависит от конкретной типовой конфигурации: примеры даны на документах БП 3.0, но в УТ 11 и ЗУП 3.1 механика та же.
Быстрый отбор документов прямо в списке
Список документов в 1С — это динамический список. У него четыре штатных инструмента отбора, и они складываются друг с другом.
🔹 Строка поиска в правом верхнем углу списка. Наберите номер, часть названия контрагента или сумму — 1С оставит строки, где найдено совпадение хотя бы в одной видимой колонке. Сочетание клавиш — Ctrl+F.
🔹 Период. Команда Ещё → Установить период ограничивает список датами. Это первое, что стоит сделать в базе за несколько лет: список открывается быстрее, а поиск не перебирает лишнее.
🔹 Расширенный поиск (Ещё → Расширенный поиск, Alt+F). Выберите колонку, введите значение и вариант сравнения: «по началу строки», «по части строки» или «точное совпадение». Удобно для номеров вида 0000-000123: ищите по части 123.
🔹 Отбор по значению в ячейке. Встаньте на нужную ячейку, например на контрагента «Альфа», и нажмите Alt+F: значение текущей ячейки подставится в поиск само. Список сожмётся до документов этого контрагента.
Во многих формах БП 3.0 над списком есть ещё быстрые поля отбора — «Организация», «Контрагент», «Склад». Они работают так же и сохраняются между сеансами.
Активный отбор легко забыть. Если «пропали» документы, сначала посмотрите на строку над списком: там выводятся условия поиска и крестик для их снятия. Отменить поиск можно и сочетанием Ctrl+Q.
Несколько документов выделяют мышью с зажатым Ctrl (по одному) или Shift (диапазон). Выделенные строки можно разом провести, распечатать или пометить на удаление командами списка.
Настройка списка: условия по любым реквизитам
Когда условий больше одного или нужен реквизит, которого нет в колонках, откройте в меню «Ещё» настройку списка. Окно состоит из вкладок «Отбор», «Сортировка», «Условное оформление» и «Группировка».
На вкладке «Отбор»:
- Слева раскройте список доступных полей. Там все реквизиты шапки документа, даже скрытые из колонок: «Ответственный», «Комментарий», «Договор», «Валюта документа».
- Перетащите поле вправо или дважды щёлкните по нему.
- Выберите вид сравнения: «Равно», «Не равно», «В списке», «В группе», «Заполнено», «Не заполнено», «Содержит», «Больше», «Меньше».
- Укажите значение и нажмите «Завершить редактирование».
Условия можно объединить в группы «И», «ИЛИ», «НЕ». Пример: все реализации, где контрагент «Альфа» ИЛИ «Бета», сумма больше 100 000 и комментарий не заполнен.
| Задача | Поле | Вид сравнения |
|---|---|---|
| Документы конкретного менеджера | Ответственный | Равно |
| Без комментария | Комментарий | Не заполнено |
| Только по группе покупателей | Контрагент | В группе |
| Крупные суммы | Сумма документа | Больше или равно |
| Несколько договоров сразу | Договор | В списке |
Дополнительные реквизиты
Если в базе используются дополнительные реквизиты (в БП включаются в Администрирование → Общие настройки, флажок «Дополнительные реквизиты и сведения»), отбор по ним делается двумя путями.
- 📌 В настройке списка такие реквизиты появляются в доступных полях отдельной группой — для документов, у которых они заведены.
- 📌 Если в списке их нет, выручает запрос: значения хранятся в табличной части
ДополнительныеРеквизитысамого документа, колонкиСвойствоиЗначение.
ВЫБРАТЬ
ДопРекв.Ссылка КАК Документ
ИЗ
Документ.РеализацияТоваровУслуг.ДополнительныеРеквизиты КАК ДопРекв
ГДЕ
ДопРекв.Свойство = &Свойство
И ДопРекв.Значение = &Значение
Настроенный отбор можно сохранить: Ещё → Сохранить настройки. Вернуть список к исходному виду — Ещё → Установить стандартные настройки.
Как найти документы по товару или услуге внутри
Самый частый вопрос: «в каких документах была эта номенклатура?». Отбор по шапке тут не поможет, потому что товар лежит в табличной части.
Способ 1. Места использования
Откройте карточку номенклатуры и выполните Ещё → Места использования. Откроется перечень всех объектов, где она встречается: поступления, реализации, перемещения, инвентаризации. Работает для любой ссылки — контрагента, договора, склада, основного средства.
Минус: выводится всё подряд, без периода и без количества.
Способ 2. Отчёт по регистру
Для проведённых документов надёжнее отчёт. В БП 3.0 подойдут «Оборотно-сальдовая ведомость по счёту» (41, 10, 43) с расшифровкой до документа и «Карточка счёта» с отбором по субконто «Номенклатура». Двойной щелчок по сумме открывает документ.
Способ 3. Полнотекстовый поиск
Если включён полнотекстовый поиск (в БП — Администрирование → Общие настройки, раздел «Полнотекстовый поиск данных»), строка поиска в заголовке окна найдёт документы, где слово встречается в любом реквизите, включая табличные части. Индекс нужно обновлять: в настройке задаётся расписание.
Способ 4. Запрос к табличной части
Программисту проще всего обратиться к табличной части напрямую:
ВЫБРАТЬ РАЗЛИЧНЫЕ
Товары.Ссылка КАК Документ,
Товары.Ссылка.Дата КАК Дата,
Товары.Ссылка.Контрагент КАК Контрагент
ИЗ
Документ.РеализацияТоваровУслуг.Товары КАК Товары
ГДЕ
Товары.Номенклатура = &Номенклатура
И Товары.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода
И Товары.Ссылка.Проведен
УПОРЯДОЧИТЬ ПО
Дата
РАЗЛИЧНЫЕ здесь обязателен: если товар встречается в документе в двух строках, без него документ попадёт в результат дважды.
Выборка документов запросом: шаблоны на каждый день
Запрос пишут в конфигураторе, во внешней обработке или в консоли запросов. Базовая выборка документов по периоду и контрагенту:
ВЫБРАТЬ
Док.Ссылка,
Док.Номер,
Док.Дата,
Док.СуммаДокумента
ИЗ
Документ.РеализацияТоваровУслуг КАК Док
ГДЕ
Док.Дата МЕЖДУ &НачалоПериода И &КонецПериода
И Док.Контрагент = &Контрагент
И НЕ Док.ПометкаУдаления
Выполнение из кода:
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("НачалоПериода", НачалоДня(ДатаНачала));
Запрос.УстановитьПараметр("КонецПериода", КонецДня(ДатаОкончания));
Запрос.УстановитьПараметр("Контрагент", Контрагент);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Сообщить(СтрШаблон("%1 от %2 на сумму %3",
Выборка.Номер, Формат(Выборка.Дата, "ДЛФ=D"), Выборка.СуммаДокумента));
КонецЦикла;
Полезные приёмы в условиях:
- ⚙️
Док.Контрагент В (&СписокКонтрагентов)— несколько значений сразу; параметр — массив или список значений. - ⚙️
Док.Контрагент В ИЕРАРХИИ (&Группа)— все контрагенты группы и её подгрупп. - ⚙️
ПОДОБНО "%аренд%"— поиск подстроки в строковом реквизите, например в комментарии. - ⚙️
ВЫБРАТЬ ПЕРВЫЕ 10— когда нужен только образец, а не вся таблица.
Короткий путь без запроса — метод менеджера Документы.РеализацияТоваровУслуг.Выбрать(ДатаНачала, ДатаОкончания). Он перебирает документы в хронологическом порядке, но отбор третьим параметром принимает только по индексируемым реквизитам. Для любых других условий берите запрос.
Отбор по статусу: проведённые, помеченные, без проводок
В списке статус виден по пиктограмме слева от строки: зелёная галочка — документ проведён, без галочки — записан, но не проведён, крестик — помечен на удаление. Для отбора в настройке списка используйте поля «Проведен» и «Пометка удаления» с видом сравнения «Равно» и значением «Да» или «Нет».
В запросе это реквизиты Проведен и ПометкаУдаления:
ГДЕ
НЕ Док.Проведен
И НЕ Док.ПометкаУдаления
Такой отбор показывает «зависшие» черновики — то, что менеджер записал и забыл провести.
Проведён, но без движений
Отдельная беда — документ с галочкой, но без проводок. Так бывает, если не заполнены суммы или счета учёта. Найти такие документы можно левым соединением с регистром бухгалтерии:
ВЫБРАТЬ
Док.Ссылка
ИЗ
Документ.РеализацияТоваровУслуг КАК Док
ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный КАК Проводки
ПО Док.Ссылка = Проводки.Регистратор
ГДЕ
Док.Проведен
И Док.Дата МЕЖДУ &НачалоПериода И &КонецПериода
И Проводки.Регистратор ЕСТЬ NULL
Для документов, которые двигают только регистры накопления (например, в УТ 11), в соединении указывают соответствующий регистр. Сами проводки любого документа пользователь видит кнопкой «Показать проводки и другие движения документа» (значок Дт/Кт) в форме документа или списка.
Обработка уже отобранных документов
Отбор редко нужен ради самого списка. Обычно дальше документы надо что-то с ними сделать.
- 🛠 Изменить реквизит у многих документов. Выделите строки и выполните
Ещё → Изменить выделенные. Откроется обработка группового изменения реквизитов: укажите поле, например «Ответственный», и новое значение. - 🛠 Перепровести. Выделенные документы проводятся командой «Провести» в списке.
- 🛠 Выгрузить в Excel.
Ещё → Вывести список— 1С сформирует табличный документ по текущему отбору, его можно сохранить в xlsx. - 🛠 Свой отчёт. Если одна и та же выборка нужна каждый месяц, запрос оформляют во внешний отчёт на СКД. В БП 3.0 его подключают в
Администрирование → Печатные формы, отчеты и обработки, в УТ 11 — вНСИ и администрирование, после чего пользователь сам меняет параметры периода и отбора.
Групповое изменение и перепроведение меняют учёт сразу в десятках документов. Перед массовой операцией сделайте резервную копию базы, а в закрытом периоде согласуйте действия с главным бухгалтером: перепроведение может изменить уже сданную отчётность.
Для разовых сложных выборок программисты держат под рукой консоль запросов — внешнюю обработку, где запрос пишется и выполняется прямо в пользовательском режиме. Для нестандартных команд вроде открытия любых объектов включите «Все функции»: главное меню → Сервис → Параметры → флажок «Отображать команду “Все функции”».
Сложные выборки: временные таблицы и объединение видов документов
Когда документы нужно собрать из нескольких источников или отфильтровать по результату предыдущего шага, запрос делят на пакеты.
Объединение разных видов документов
Задача: все приходы и расходы по контрагенту за квартал в одной таблице.
ВЫБРАТЬ
Пост.Ссылка КАК Документ,
Пост.Дата КАК Дата,
"Поступление" КАК Вид,
Пост.СуммаДокумента КАК Сумма
ИЗ
Документ.ПоступлениеТоваровУслуг КАК Пост
ГДЕ
Пост.Контрагент = &Контрагент
И Пост.Дата МЕЖДУ &НачалоПериода И &КонецПериода
И Пост.Проведен
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
Реал.Ссылка,
Реал.Дата,
"Реализация",
Реал.СуммаДокумента
ИЗ
Документ.РеализацияТоваровУслуг КАК Реал
ГДЕ
Реал.Контрагент = &Контрагент
И Реал.Дата МЕЖДУ &НачалоПериода И &КонецПериода
И Реал.Проведен
УПОРЯДОЧИТЬ ПО
Дата
Имена и типы колонок берутся из первого запроса, поэтому псевдонимы задают только там. ОБЪЕДИНИТЬ ВСЕ работает быстрее, чем ОБЪЕДИНИТЬ: он не убирает дубли, а между разными видами документов их и нет.
Временная таблица как промежуточный отбор
Задача: реализации покупателям, которые за период не прислали ни одной оплаты.
ВЫБРАТЬ РАЗЛИЧНЫЕ
Оплата.Контрагент КАК Контрагент
ПОМЕСТИТЬ ВТ_Оплатившие
ИЗ
Документ.ПоступлениеНаРасчетныйСчет КАК Оплата
ГДЕ
Оплата.Дата МЕЖДУ &НачалоПериода И &КонецПериода
И Оплата.Проведен
ИНДЕКСИРОВАТЬ ПО
Контрагент
;
////////////////////////////////////////////////////////////
ВЫБРАТЬ
Реал.Ссылка,
Реал.Контрагент,
Реал.СуммаДокумента
ИЗ
Документ.РеализацияТоваровУслуг КАК Реал
ГДЕ
Реал.Дата МЕЖДУ &НачалоПериода И &КонецПериода
И Реал.Проведен
И НЕ Реал.Контрагент В
(ВЫБРАТЬ
ВТ.Контрагент
ИЗ
ВТ_Оплатившие КАК ВТ)
Временная таблица живёт до конца пакета (или до закрытия менеджера временных таблиц, если он подключён). ИНДЕКСИРОВАТЬ ПО ускоряет проверку В (...) на больших объёмах.
Где чаще всего ошибаются при отборе документов
| Ошибка | Что происходит | Как правильно |
|---|---|---|
| Конец периода без времени | Параметр 31.03.2025 0:00:00 отсекает документы, проведённые 31 марта днём | Передавайте КонецДня(Дата) или используйте КонецПериода(&Дата, ДЕНЬ) в запросе |
Соединение с табличной частью без РАЗЛИЧНЫЕ | Документ повторяется столько раз, сколько у него строк | Добавьте РАЗЛИЧНЫЕ или группировку |
| Нет условия по организации | В базе с несколькими фирмами в выборку попадают чужие документы | Добавьте Док.Организация = &Организация |
| Обращение через точку в цикле | Документ.Контрагент.ИНН в цикле по тысячам документов — отдельный запрос на каждую строку | Получайте нужные поля в самом запросе |
| Забытый сохранённый отбор | Пользователь видит неполный список и думает, что документы удалены | Проверьте строку условий над списком, сбросьте настройки |
Запросы на чтение не меняют данные, поэтому их можно запускать в рабочей базе. Тяжёлые выборки за несколько лет лучше выполнять вне пиковых часов: они нагружают сервер и тормозят работу остальных пользователей.
Частые вопросы
Почему поиск в списке не находит документ, хотя он точно есть?
Можно ли выбрать документы сразу всех видов?
ОБЪЕДИНИТЬ ВСЕ или обращение к журналу документов как к таблице.