Пакетные запросы для чайников
Когда мой запрос стал таким сложным, что превысил пределы моего понимания, я решил использовать пакетные запросы.
Но столкнулся с фактом, что ничего о них не знаю. Оказалось, все очень просто. Через 5 минут вы будете уметь пользоваться пакетными запросами. Начинайте читать.
Как оказалось все очень просто. Нужно просто написать несколько запросов, разделенных точкой с запятой. Результат вернется в последнем запросе.
Пакетные запросы появились только в версии 8.1.11.67.4.
Вот текст запроса:
ВЫБРАТЬ Т1.Зн ПОМЕСТИТЬ ВТБуквы ИЗ (ВЫБРАТЬ "А" КАК Зн ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Б") КАК Т1;
ВЫБРАТЬ Т1.Зн ПОМЕСТИТЬ ВТЦифры ИЗ (ВЫБРАТЬ "1" КАК Зн ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "2") КАК Т1;
ВЫБРАТЬ ТБ.Зн, ТЦ.Зн, ТБ.Зн+ТЦ.Зн ИЗ ВТБуквы КАК ТБ, ВТЦифры КАК ТЦ
Пакетные запросы поддерживаются в любой обычной консоли запросов.
На рисунке представлен образец выполнения запроса:

А теперь немного из опыта. Зачем нужны пакетные запросы.
Дело в том, что во временную таблицу можно вложить какой-то промежуточный результат, который потом может понадобиться в нескольких последующих запросах.
Раньше, когда не было временных таблиц, пришлось бы дублировать текст запроса.
Можно конечно, обойтись без пакетного запроса, последовательно выполняя несколько запросов и манипулируя вложенными таблицами. Но с пакетными запросами удобнее. Просто пишешь запрос, и не думаешь о размещении временных таблиц. Все происходит само.
Кроме того, если используется система компоновки данных (СКД), она грамотно отбирает нужные поля и минимизирует весь пакет запросов.
Если у запросов был метод Запрос.Выполнить() то теперь появился метод Запрос.ВыполнитьПакет(), который возвращает все таблицы из пакета, в виде массива.
Анонс пакетных запросов на сайте 1с находится здесь: http://v8.1c.ru/overview/release_8_1_11/#Functional
История из жизни
Объясню, что меня подвигло на пакетные запросы.
Значит, представьте есть документ, у него табличная часть. В колонке «Ошибка» признак, есть ли ошибка при заполнении документа. В колонке «ТекстОшибки» может быть одно или несколько предложений с текстами ошибок. Виды ошибок, содержащиеся в предложениях известны заранее.
Так вот, мы заносим список всех ошибок в таблицу КодыОшибок – там содержится код ошибки и подстрока поиска.
Далее соединяем табличную часть с кодами ошибок.
Получаем для каждой строки одну, две или больше ошибок. Т.к. в одной строке может быть несколько ошибок.
Но ошибка может быть и не распознана, т.е. флаг «Ошибка» стоит, а текст ошибки не выдал нам код ошибки.
Делаем левое соединение, там где код ошибки есть NULL, даем код ошибки «Прочие ошибки» .
Но проблема была в том, что кодов ошибок было около 200, поэтому левое соединение работало очень долго. Пришлось заменить его на внутреннее соединение, которое летало. Но при этом терялись строки, для которых ошибка была не найдена. Я так и не смог понять, как вытащить эти строки в результат.
Запрос писался для системы компоновки, т.е. никаких таблиц значений или временных таблиц применять нельзя в принципе. Тут и пригодились пакетные запросы.
Я просто еще раз соединил все строки с ошибками со всеми строками, для которых были найдены ошибки, и добавил все-таки вид ошибки «Прочие ошибки».
Вступайте в нашу телеграмм-группу Инфостарт
Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
См. также
Инструментарий разработчика Роли и права Запросы СКД Разработчик Руководитель проекта 1С:Предприятие 8 Платные (руб)
Инструменты для разработчиков 1С 8.3 и 8.5: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.
16500 руб.
02.09.2020 285558 1606 423
Инструментарий разработчика Запросы Разработчик 1С 8.3 1С:Бухгалтерия 3.0 1С:Зарплата и Управление Персоналом 3.x Абонемент ($m)
Структура запроса. Обработка визуально показывает, из какого количества подзапросов состоит запрос.
2 стартмани
06.07.2026 4944 65 XSlava 20
Запросы Разработчик 1С 8.3 Россия Бесплатно (free)
Визуальный «Конструктор запроса» 1С, встроенный прямо в VS Code, — аналог конструктора из Конфигуратора и EDT, но без запуска платформы. Расширение читает конфигурацию, выгруженную в файлы, позволяет собрать запрос мышью и генерирует корректный текст на языке запросов 1С (SDBL). Открывает уже существующий текст запроса из кода для правки и — что особенно ценно — сохраняет комментарии при цикле «открыть - править - сохранить». Подходит тем, кто пишет код 1С в VS Code, держит под рукой множество проектов и не хочет ради одного запроса запускать тяжёлый Конфигуратор или EDT.
26.06.2026 10660 Alex_YAM 7
Нейросети Инструментарий разработчика Запросы Разработчик 1С:Предприятие 8 Абонемент ($m)
Консоль запросов 1.0: добавлен ИИ-помощник (запрос в DeepSeek), который помогает быстрее получать каркас Запроса 1С Сформулируйте простое описание; нажмите кнопку – получите результат прямо в консоли. Где дальше его можно дорабатывать и тестировать. 28.5.2026 Добавил "Консоль запросов 2.0" (запрос в DeepSeek + Claude) 4.10.2026 Обновил "Консоль запросов 2.0"
3 стартмани
20.05.2026 9562 46 German4739 72
WEB-интеграция Запросы Разработчик 1С 8.3 Абонемент ($m)
Post1C - это внешняя обработка, которая превращает 1С в полноценный инструмент для тестирования REST API. Всё управление сосредоточено в одном окне: настройка запроса, выполнение, просмотр ответа и генерация кода - без переключения между формами. Аналог Postman, но работающий в привычной среде 1С.
1 стартмани
02.04.2026 4638 105 priem_nv 27
Запросы Механизмы типовых конфигураций Разработчик 1С:Предприятие 8 1С:Управление торговлей 11 Россия Бесплатно (free)
Предлагается обзор работы с объектной моделью запроса по схемам запросов типовым функционалом УТ 11.5.
09.10.2025 13397 aximo 18
Инструментарий разработчика Запросы Разработчик 1С:Предприятие 8 1С:Зарплата и кадры государственного учреждения 3 1С:Зарплата и Управление Персоналом 3.x Абонемент ($m)
QueryConsole1C — расширение, включающее консоль запросов с поддержкой исполняемых представлений — аналогов виртуальных таблиц, основанных на методах программного интерфейса ЗУП. Оно позволяет выполнять запросы с учётом встроенной бизнес-логики, отлаживать алгоритмы получения данных и автоматически генерировать код на встроенном языке 1С.
1 стартмани
16.05.2025 13657 168 zup_dev 32
Инструментарий разработчика Запросы Разработчик 1С:Предприятие 8 1С:ERP Управление предприятием 2 Абонемент ($m)
В данной публикации рассказывается о решении, которое позволяет находить сразу все ошибки в тексте запроса за раз, а не только самую первую.
2 стартмани
05.03.2025 7714 25 XilDen 12
1. В заглавие добавить что-то типа "как написать свой первый пакетный запрос"
2. Найти статью Чистова и дать на неё ссылку.
полегче.
будешь высказываться в подобном стиле, отдохнешь от комментариев месяц.
А ссылку на Чистова дайте уж пожалуйста. И вообще странный народ, какой смысл писать фразу про Чистова, если вы не даёте ссылку? Если знаете нечто по существу, так дайте развернутый ответ.
Еще есть обтекаемая фраза "естественно что система при каждом вложенном запросе заново обращается к базе данных для получения данных." - а при использовании вместо вложенного запроса пакетный не обращается? Т.е. запросы выполняется последовательно и все соединения потом отрабатываются с готовыми выборками?
Является ли 1с-ное "поместить... ;" в данном случае аналогом скульного with ... as?
Будем надеяться, что у автора не пропадет желание что-то ещё писать и делать.
При составлении инструкции всем угодить нельзя, очень редко бывает, чтобы угодить хотябы половине...
Стоит добавить: пакетные запросы удобны если надо делать запрос к таблице значений или еще не записанному документу
Запрос.Текст =
"Выбрать ТабЧастьТовары.Номенклатура,ТабЧастьТовары.Количество
|Поместить ТабЧасть из &ТабЧать как ТабЧастьТовары;
|Выбрать * из ТабЧасть";
Запрос.УстановитьПараметр("ТабЧать",Док.Товары);
(тоже боян)
Это почему?
Пакетные запросы позволили мне сэкономить почти на порядок времени при выполнении огромного запроса с кучей вложенных подзапросов всего лишь грамотным их разнесением. Также можно обращаться в разных пакетах к однажды выполненному запросу, а не выполнять его многократно.
Ну и если данное руководство кому-то поможет, то почему нет? Вдруг кто-то да научится, почитает статью Чистова и начнёт правильно писать, чтобы потом другому человеку не переписывать данный кусок при принятии конфигурации на поддержку?
ВЫБРАТЬ Т1.Зн ПОМЕСТИТЬ ВТБуквы ИЗ (ВЫБРАТЬ "А" КАК Зн ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Б") КАК Т1;вместо <список источников> два объединенных запроса опять же без источников. Может это чисто абстрактный пример, но мой мозг разорван в клочья и не воспринимает дальнейшую информацию. Если бы вы привели полностью весь код запроса - было бы понятнее для чайника ,имхо.
И еще два вопроса по существу, ответа на которые, кстати в желтых книгах тоже нет:
1. при использовании пакетных запросов реально можно не создавать менеджер временных таблиц?
2. если юзать пакетный запрос без временных таблиц, то как обращаться к результатам предыдущего запроса?
1. Да, можно не создавать менеджера, если вам не надо потом получать данные из промежуточных временных таблиц, а достаточно результата
2. А смысл? Результаты промежуточных запросов никуда не сохраняются и к ним доступ не получить. Так что временные таблицы!
[QUOTE=fixin]вложенный запрос просто выдает таблицу из одной колонки Зн в которой в первой строке А, во второй строке Б. [/IS-QUOTE] нигде не встречал ранее, запомню.
по вопросу 2 - я имел ввиду следующий запрос в пакете. или о чем вы здесь говорите (33):
Закинул в консоль, просмотрел вложенные запросы, временные таблицы, попробовал свой маленький пример сделать и получилось.
Большое спасибо автору, не пожалел времени и потрудился для меня и таких как я, учтите, что ему это уже не нужно было!
Почему нельзя, можно, советую Хрусталеву почитать.
После чего ты никак не можешь понять, почему ты не понимал этого раньше.
Спасибо тем, кто еще помнит, что мешало разобраться с темой, и тратят свое личное время на то, чтобы помочь другим преодолеть этот шаг.
В то же время господа-профессионалы любят стебаться над чужими статьями, сами при этом ничего не пишут, или пишут на таком марсианском языке, что новичкам и чайникам проще искать решение в другом месте, чем выпрашивать совет мелкими крошками, как милостыню.
От меня лично - большое спасибо, вроде не чайник, но ранее не пересекался с темой, натолкнула на новые мысли.
хотя кмк автору следовало бы более подробнее расписать для "чайников" смысл запроса...
читателю сначала надо врубиться в суть примера, и только потом понять "простоту" пакетного запроса
Вы можете заказать платную консультацию или разработку у автора. Будет создан приватный заказ на «Бирже заказов» для автора.
№ 115907
Создание 06.02.12 20:50
Обновление 07.02.12 13:56
Просмотры 74572
Загрузки 0
Рейтинг
47
Комментарии 49
Код открыт Не указано
Рубрики Запросы
Кому Разработчик
Тип файла Нет файла
Платформа 1С:Предприятие 8
Конфигурация 1C:Бухгалтерия
Операционная система Не имеет значения
Страна Россия
Отрасль Не имеет значения
Налоги Не имеет значения
Вид учета Не имеет значения
Доступ к файлу Бесплатно (free)