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