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

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

Как пользоваться консолью запросов 1С 8.3

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

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

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

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

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

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

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

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

Пишем и выполняем первый запрос

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

ВЫБРАТЬ

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

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

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

ИЗ

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

Нажмите кнопку «Выполнить» (в некоторых версиях — F9 или «Выполнить запрос»). Результат появится в табличном поле внизу. Если запрос синтаксически неверен, консоль покажет текст ошибки с указанием позиции — обычно это опечатка в имени таблицы или поля.

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

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

Работа с параметрами запроса

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

ВЫБРАТЬ

Продажи.Номенклатура,

СУММА(Продажи.КоличествоОборот) КАК Количество

ИЗ

РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, , ) КАК Продажи

СГРУППИРОВАТЬ ПО

Продажи.Номенклатура

Перед выполнением заполните таблицу параметров консоли: укажите имя (без символа «&»), тип и значение. Для дат выбирайте тип «Дата», для ссылок — конкретный тип объекта, чтобы платформа корректно сопоставила значение. Если параметр не заполнен или имеет неверный тип, получите ошибку вида «Параметр не определён» или пустой результат.

Отдельный случай — параметры типа «Список значений» или массив для условия «В (&Список)». В большинстве консолей для этого есть отдельный тип значения в таблице параметров. Выберите его и добавьте нужные элементы в список.

Использование конструктора запроса

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

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

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

Отладка пакетных запросов и временных таблиц

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

Чтобы отладить пакет, выполните его целиком, а затем посмотрите содержимое временных таблиц. В большинстве консолей для этого есть отдельная кнопка или вкладка «Временные таблицы» — она показывает список созданных таблиц и их содержимое. Так вы можете проверить, на каком шаге данные «теряются»: например, соединение отсекло часть строк или условие отбора сработало не так, как ожидалось.

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

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

Как проверить результат и не ошибиться в выводах

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

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

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

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

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

Совпадает с числом объектов в списке или с контрольным отчётом

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

Строк больше (дубли от соединения) или меньше (лишний отбор)

Итоговые суммы
Норма

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

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

Расхождение кратное — вероятно, задвоение из-за соединения «один ко многим»

Период виртуальной таблицы
Норма

Границы заданы явно через параметры

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

Период не задан — итоги посчитаны за всё время

Типичные ошибки и их причины

Большинство проблем при работе с консолью запросов сводится к нескольким повторяющимся сценариям. Знание их экономит значительное время при отладке.

Дублирование строк возникает при соединении таблиц, где по ключу связи в одной из таблиц несколько записей. Признак — итоговые суммы кратно завышены. Лечится предварительной группировкой «правой» таблицы или проверкой связи на уникальность.

Пустой результат при корректном тексте обычно означает: не заполнен параметр, неверный тип параметра (например, строка вместо ссылки) или условие отбора исключает все записи. Проверяйте условия по одному, комментируя лишние.

Типичные ошибки
01
Не заполнены параметры перед выполнением — ошибка «параметр не определён» или пустой результат
02
Соединение без проверки уникальности ключа — задвоение строк и завышенные суммы
03
Использование НЕ В с полем, содержащим NULL — условие отсекает больше строк, чем ожидалось
04
Сравнение ссылок разных типов без приведения — условие никогда не выполняется
05
Копирование запроса из конфигуратора с программно формируемыми фрагментами — текст не выполняется без доработки

Ещё одна группа ошибок связана с правами доступа. Консоль работает под текущим пользователем, и если у него нет прав на чтение регистра, запрос завершится ошибкой доступа. Это не сбой консоли — проверьте права или выполните запрос под пользователем с нужными полномочиями.

Когда консоль запросов не подходит: альтернативы

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

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

Сравнение вариантов

Консоль запросов

Быстрая отладка и разовый анализ данных. Требует знания языка запросов, результат нельзя сохранить как отчёт для пользователей

Универсальный отчёт / СКД

Подходит пользователям без навыков запросов, есть настройки и сохранение вариантов. Менее гибок для отладки сложных пакетов

Отладчик конфигуратора

Незаменим, когда запрос формируется динамически в коде. Требует останова выполнения и доступа к конфигуратору

Часто задаваемые вопросы

Можно ли через консоль запросов изменить или удалить данные?

Нет. Язык запросов 1С предназначен только для чтения данных: конструкций INSERT, UPDATE или DELETE в нём нет. Однако некоторые расширенные консоли содержат встроенный «консоль кода», где можно выполнить произвольный код, включая запись объектов. Такие операции выполняйте только в копии базы.

Почему запрос работает в консоли, но не работает в коде модуля?

Чаще всего причина в параметрах: в коде они устанавливаются через УстановитьПараметр, и тип значения может отличаться от того, что вы задали в консоли. Также проверьте, не формируется ли текст запроса динамически и не отличается ли итоговый текст от скопированного в консоль.

Как посмотреть движения конкретного документа через консоль?

Напишите запрос к таблице нужного регистра с отбором по регистратору: ВЫБРАТЬ * ИЗ РегистрНакопления.Продажи ГДЕ Регистратор = &Документ. В параметрах укажите ссылку на документ. Повторите для каждого регистра, по которому документ делает движения.

Консоль выдаёт ошибку «Ошибка доступа к таблице» — что делать?

У текущего пользователя нет права чтения объекта. Проверьте роли пользователя в конфигураторе или выполните запрос под учётной записью с полными правами. В файловой базе без пользователей такая ошибка обычно означает включённый RLS или ограничения внешнего соединения.

Можно ли сохранить написанный запрос, чтобы не вводить его заново?

Да. Большинство консолей умеют сохранять список запросов в файл (обычно с собственным расширением) и загружать его при следующем открытии. Используйте кнопки «Сохранить» / «Загрузить» в панели списка запросов. Как минимум, текст можно скопировать в текстовый файл.

Почему соединение таблиц даёт больше строк, чем в исходных данных?

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

Итог

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

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