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