К статье
Практический материал

Разработка и Конфигурация · 12 мин

Консоль запросов 1С: практическое руководство по работе

Как пользоваться консолью запросов в 1С: где скачать, как открыть, написать и отладить запрос, работа с параметрами, временными таблицами и пакетными запросами.

Консоль запросов — внешняя обработка, которая позволяет писать, выполнять и отлаживать запросы на языке запросов 1С без изменения конфигурации и без написания программного кода. Она не входит в типовую поставку, но свободно распространяется: версии есть на диске ИТС, в составе инструментов разработчика (ИР) и в открытых репозиториях. Для разработчика и внедренца это один из самых востребованных инструментов: с его помощью проверяют выборки перед вставкой запроса в отчёт или процедуру, анализируют данные базы и ищут причины ошибок в учёте.

Работать с консолью могут и опытные пользователи без навыков программирования: конструктор запроса собирает текст визуально, а результат сразу виден в таблице. Главное условие — наличие права на открытие внешних обработок и понимание, что консоль только читает данные, если вы не дописываете код обхода результата с записью.

Ниже разобраны практические сценарии: от запуска обработки до отладки пакетных запросов, работы с параметрами и типичных ошибок, которые встречаются почти у каждого, кто начинает пользоваться инструментом.

Где взять консоль запросов и как её запустить

Типовая конфигурация консолью не комплектуется, поэтому обработку получают отдельно. Основные источники: диск информационно-технологического сопровождения (ИТС), портал 1С, бесплатная подсистема «Инструменты разработчика» и различные открытые сборки. Функционально они близки: везде есть редактор текста запроса, конструктор, список параметров и вывод результата. Расширенные версии добавляют отладку пакетных запросов, сравнение с СКД и сохранение списка запросов в файл.

Запуск выполняется в режиме 1С:Предприятие через меню «Файл → Открыть» с выбором файла обработки с расширением .epf. Если файл открывается впервые, платформа может показать предупреждение о безопасности — его подтверждают, только если источник обработки доверенный. В файловых базах дополнительная настройка обычно не требуется; в клиент-серверном варианте обработка выполняется на клиенте или сервере в зависимости от её устройства.

Для регулярной работы удобно добавить обработку в справочник «Дополнительные отчеты и обработки» (в управляемых конфигурациях на БСП) — тогда она появится в интерфейсе и будет доступна коллегам по назначенным правам. Альтернатива — встроенная консоль запросов в конфигураторе: при отладке по запросу можно вызвать её из контекстного меню, но она работает только с уже существующим объектом запроса в коде.

Интерфейс консоли: что где находится

Стандартная консоль разделена на три рабочие зоны. Сверху или слева — список сохранённых запросов: каждый запрос хранится отдельной строкой, что удобно, когда вы ведёте несколько проверок подряд. Центральную часть занимает поле текста запроса с подсветкой синтаксиса, а рядом — закладка параметров, где задаются значения для подстановки в текст. Нижняя область отводится под результат: таблицу выборки, дерево (если включены итоги по группировкам) или сводную таблицу.

На командной панели обычно присутствуют кнопки «Выполнить», «Конструктор запроса», «Сохранить/Загрузить запросы в файл», настройки вывода (таблица, дерево, сводная таблица) и в расширенных версиях — «Выполнить пакет» и просмотр временных таблиц. Перед первым использованием проверьте, какая версия у вас открыта: набор кнопок и расположение закладок заметно отличаются между классической консолью с ИТС и «Инструментами разработчика».

Первый запрос: написание и выполнение

Начните с простого запроса к справочнику, чтобы проверить работу консоли. В поле текста введите классическую конструкцию выборки, например:

ВЫБРАТЬ

Номенклатура.Ссылка КАК Номенклатура,

Номенклатура.Код КАК Код,

Номенклатура.Наименование КАК Наименование

ИЗ

Справочник.Номенклатура КАК Номенклатура

ГДЕ

НЕ Номенклатура.ПометкаУдаления

Нажмите кнопку «Выполнить». Если текст корректен, в нижней области появится таблица с данными. Если платформа вернула ошибку, консоль покажет текст сообщения с указанием позиции: чаще всего это опечатка в имени таблицы или поля, либо обращение к объекту, которого нет в данной конфигурации (например, запрос к документу «РеализацияТоваровУслуг» в базе, где документ называется иначе).

Порядок действий
  1. 1
    Откройте консоль через Файл → Открыть в режиме 1С:Предприятие
  2. 2
    Создайте новый запрос и введите текст выборки или соберите его конструктором
  3. 3
    Заполните параметры на закладке «Параметры», если они есть в тексте
  4. 4
    Нажмите «Выполнить» и проверьте результат в таблице
  5. 5
    Сохраните запрос в файл, если он понадобится повторно

Количество строк результата в больших базах может быть огромным. Чтобы не выгружать миллионы записей, используйте конструкцию ВЫБРАТЬ ПЕРВЫЕ 1000 на этапе отладки, а полную выборку запускайте только после проверки логики. Это особенно важно в клиент-серверных базах, где тяжёлый запрос нагружает СУБД и мешает другим пользователям.

Конструктор запроса: сборка без ручного набора текста

Конструктор вызывается кнопкой «Конструктор запроса» и позволяет собрать текст мышью: слева выбираются таблицы (справочники, документы, регистры), в центре — поля, на закладках задаются соединения, условия, группировки, итоги и порядок сортировки. После нажатия «ОК» конструктор перезаписывает текст в редакторе синтаксически корректным запросом.

Конструктор незаменим, когда нужно быстро найти правильное имя виртуальной таблицы регистра или поля: в дереве метаданных видны все доступные объекты с их представлениями. Например, остатки по складу проще собрать через виртуальную таблицу РегистрНакопления.ТоварыНаСкладах.Остатки, указав параметры виртуальной таблицы в соответствующем окне конструктора, чем вспоминать точный синтаксис.

Ограничение конструктора — он перезаписывает весь текст. Если вы вручную дописали хитрое условие или комментарий, повторный вызов конструктора их потеряет. Поэтому сложные доработки вносят после окончательной сборки, а сам конструктор используют как генератор каркаса.

Параметры запроса и виртуальные таблицы

Параметры в тексте обозначаются символом «&», например ГДЕ Номенклатура.Родитель = &Группа. Консоль автоматически собирает все параметры из текста на отдельную закладку, где для каждого задаётся тип и значение. Для ссылочных типов значение выбирается из соответствующего справочника или документа, для дат — календарём, для списков — через «Список значений».

Типичная ошибка — оставить параметр незаполненным. В этом случае сравнение идёт с пустым значением, и результат либо пустой, либо искажённый, причём платформа не всегда сообщает об этом явно. Перед выполнением проверяйте, что у всех параметров из текста заданы осмысленные значения.

Отдельный случай — параметры виртуальных таблиц регистров: период, условие, список складов или организаций. Они задаются в круглых скобках после имени виртуальной таблицы, например Остатки(&Период, Склад = &Склад). Правильное использование параметров виртуальной таблицы критично для производительности: отбор на уровне СУБД выполняется в разы быстрее, чем выборка всех записей с последующей фильтрацией в условии ГДЕ.

Типичные ошибки
01
Не задан параметр — выборка пустая или неверная, а причина не очевидна
02
Отбор в условии ГДЕ вместо параметров виртуальной таблицы — запрос выполняется в десятки раз медленнее
03
Соединение по полю с разными типами данных — дубли строк или потеря части данных
04
Выполнение тяжёлого запроса без ПЕРВЫЕ N в рабочей базе в разгар дня — нагрузка на сервер и блокировки
05
Отладка в рабочей базе вместо копии — риск ошибочных выводов по «живым» данным

Временные таблицы и пакетные запросы

Реальные задачи редко укладываются в одну выборку. Пакетный запрос — это несколько запросов в одном тексте, разделённые точкой с запятой, где промежуточные результаты помещаются во временные таблицы конструкцией ПОМЕСТИТЬ ВТ_Имя. Например, сначала отбираются нужные документы во временную таблицу, затем она соединяется с регистром — так запрос работает быстрее и читается проще.

В расширенных консолях (например, в «Инструментах разработчика») пакет выполняется целиком, а содержимое каждой временной таблицы можно посмотреть отдельно — это главный способ отладки: вы видите, на каком шаге данные «теряются» или дублируются. В простых версиях консоли временные таблицы не показываются, поэтому пакет отлаживают по частям: комментируют всё, кроме первого запроса, заменяя ПОМЕСТИТЬ на обычную выборку.

Маршрут решения

Как выбрать действие

Запрос простой, одна выборка из одной-двух таблицИспользуйте любую консоль, включая классическую с диска ИТС
Нужна отладка пакетного запроса с временными таблицамиБерите консоль с просмотром временных таблиц, например Инструменты разработчика
Запрос нужно перенести в отчёт на СКДОтлаживайте текст в консоли, затем вставляйте в набор данных схемы компоновки
Запрос выполняется дольше минутыПеренесите отборы в параметры виртуальных таблиц и проверьте индексы по полям соединений

Перенос запроса в конфигурацию и проверка результата

Отлаженный запрос обычно переносится в модуль объекта, отчёта или в схему компоновки данных. Перед переносом уберите отладочные ограничения вроде ПЕРВЫЕ 100, проверьте псевдонимы полей (в СКД они становятся именами полей набора данных) и убедитесь, что все параметры будут заполняться в коде или настройках отчёта.

Контроль правильности — сопоставление результата с эталоном. Для учётных данных эталоном служит типовой отчёт: например, запрос остатков по регистру сверяют с отчётом «Остатки товаров на складах» на ту же дату с теми же отборами. Совпадение итогов по количеству и сумме — признак корректного запроса; расхождение означает, что отличается отбор, период или состав соединений.

Контрольные точки

Как проверить результат

Количество строк выборки
Норма

Совпадает с ожиданием или типовым отчётом

Тревожный признак

Строк больше из-за дублей соединения или меньше из-за лишнего отбора

Итоговые суммы и количества
Норма

Сходятся с типовым отчётом на ту же дату и отборы

Тревожный признак

Расхождение — разные параметры виртуальных таблиц или период

Время выполнения
Норма

Секунды на рабочем объёме данных

Тревожный признак

Минуты — отборы не в параметрах виртуальной таблицы, нет индекса по полю соединения

Содержимое временных таблиц
Норма

Каждая ВТ содержит ожидаемый набор строк

Тревожный признак

Промежуточная таблица пуста или содержит дубли — ошибка в условии на этом шаге

Ограничения и безопасная работа

Консоль запросов сама по себе не изменяет данные: язык запросов в 1С предназначен только для чтения. Однако многие версии консоли позволяют выполнять произвольный код встроенного языка — например, обход результата с записью объектов. Такие возможности используйте только в копии базы и только понимая, что делает код: исправление данных напрямую в обход бизнес-логики способно нарушить целостность учёта.

Второе ограничение — производительность. Запрос, выполняемый в консоли, создаёт ту же нагрузку, что и запрос из кода: тяжёлые соединения и сканирования регистров в рабочие часы тормозят сеансы пользователей. Правило простое: отладка — на копии, в рабочей базе — только проверенные и быстрые запросы.

Итог

Что важно запомнить

Консоль запросов открывается как внешняя обработка и позволяет писать, отлаживать и выполнять запросы без изменения конфигурации. Собирайте каркас конструктором, заполняйте все параметры, отлаживайте пакеты через просмотр временных таблиц и сверяйте итоги с типовыми отчётами. Тяжёлые запросы и любой код записи выполняйте только на копии базы.

Частые вопросы

Можно ли пользоваться консолью запросов без прав администратора?

Да, если у пользователя есть право на открытие внешних обработок и права чтения на те объекты, к которым обращается запрос. Сам запрос выполняется под правами текущего пользователя: данные, к которым нет доступа, просто не будут прочитаны или вызовут ошибку нарушения прав.

Чем консоль запросов отличается от консоли кода?

Консоль запросов работает только с языком запросов: выборка данных, параметры, временные таблицы. Консоль кода выполняет произвольные фрагменты встроенного языка 1С, включая запись объектов. Для анализа данных достаточно консоли запросов; консоль кода нужна для отладки алгоритмов и пакетных исправлений.

Почему запрос в консоли работает, а в отчёте на СКД выдаёт ошибку?

Чаще всего причина в параметрах: в СКД период и отборы передаются через настройки компоновки, а не как обычные параметры запроса. Также проверьте, что псевдонимы полей не содержат точек и совпадают с именами полей набора данных, а служебные конструкции вроде ПЕРВЫЕ N удалены.

Как посмотреть содержимое временной таблицы?

В консолях с поддержкой пакетных запросов (например, «Инструменты разработчика») после выполнения пакета доступен список временных таблиц с их содержимым. В простых версиях такой функции нет: временно замените ПОМЕСТИТЬ ВТ на обычную выборку и выполните фрагмент отдельно.

Опасно ли запускать консоль в рабочей базе?

Чтение данных безопасно для самих данных, но тяжёлый запрос может замедлить работу всех пользователей из-за нагрузки на СУБД. Реальный риск появляется, только если консоль поддерживает выполнение произвольного кода и вы запускаете запись — такие операции делайте на копии.

Запрос выполняется очень долго, что проверить в первую очередь?

Убедитесь, что отборы по периоду и измерениям заданы в параметрах виртуальной таблицы, а не в условии ГДЕ. Затем проверьте, что соединения идут по индексированным полям (ссылка, измерения регистра), и ограничьте выборку конструкцией ПЕРВЫЕ N на время отладки.