Консоль запросов в 1С 8.3: где взять обработку, как открыть и проверить запрос

· 9 мин

Содержание

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

Порядок одинаковый для Бухгалтерии 3.0, ЗУП 3.1, УТ 11 и других конфигураций на платформе 8.3: консоль работает на уровне платформы и от конкретного решения почти не зависит. Различаются только настройки безопасности, о них ниже.

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

Встроенной консоли запросов в типовых конфигурациях нет. В разделе Все функции → Обработки её искать бесполезно, там только обработки самой конфигурации.

Варианты, из которых выбирают на практике:

ИсточникЧто этоКогда подходит
📦 Обработка с портала ИТСНабор универсальных обработок от фирмы 1С, среди них консоль запросов для управляемых формЕсть подписка ИТС, нужен «официальный» инструмент
🧰 «Инструменты разработчика» (ИР)Сторонний бесплатный набор, своя консоль запросов с расширенными функциямиНужны дерево результата, история, удобный разбор пакетов
🗂 Старая консоль для обычных формФайл вида КонсольЗапросов.epf из времён 8.1–8.2Только толстый клиент и обычное приложение

Для современной базы в интерфейсе «Такси» берите версию для управляемых форм. Обработка для обычных форм в тонком клиенте и веб-клиенте не откроется.

Не скачивайте .epf со случайных файлообменников. Внешняя обработка исполняет код с правами пользователя и может изменить или выгрузить данные. Берите файл из ИТС или с официальной страницы автора набора.

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

Шаг 1. Сохраните файл обработки

Положите QueryConsole.epf в постоянную папку, например C:\1C\Tools\. Если база клиент-серверная, файл достаточно держать на компьютере пользователя: при открытии клиент сам передаёт его на сервер.

Шаг 2. Откройте базу в режиме 1С:Предприятие

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

Шаг 3. Откройте обработку через меню «Файл»

  1. Нажмите кнопку главного меню — значок с тремя полосками в левом верхнем углу окна.
  2. Выберите Файл → Открыть (или нажмите Ctrl+O).
  3. Укажите файл QueryConsole.epf.
  4. Если появилось предупреждение безопасности — подтвердите открытие (см. раздел про права).

Форма консоли откроется в отдельной вкладке. Чтобы не искать файл каждый раз, используйте список последних файлов в том же меню Файл.

Шаг 4. Проверьте работу коротким запросом

Вставьте в поле текста запроса простой запрос и нажмите кнопку выполнения:

ВЫБРАТЬ ПЕРВЫЕ 10
    Контрагенты.Ссылка,
    Контрагенты.ИНН
ИЗ
    Справочник.Контрагенты КАК Контрагенты

Если внизу появилась таблица из 10 строк — консоль запросов включена и работает.

💡 Для БП 3.0 и УТ 11 справочник называется Контрагенты, в ЗУП 3.1 его нет — для проверки возьмите Справочник.Сотрудники.

Права и настройки безопасности для открытия консоли

Чаще всего консоль «не включается» не из-за файла, а из-за прав. Проверьте три уровня.

Право на внешние обработки

Открыть .epf может пользователь, у роли которого есть право «Интерактивное открытие внешних обработок». В типовых конфигурациях оно входит в полные права. У бухгалтера с урезанным профилем его обычно нет.

Кто может выдать доступ:

  • 👤 администратор базы — через профиль группы доступа в разделе Администрирование → Настройки пользователей и прав;
  • 🛠 разработчик — через роль в Конфигураторе, если профили не используются.

Защита от опасных действий

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

Как снять флажок:

  1. Откройте базу в Конфигураторе.
  2. Перейдите в Администрирование → Пользователи.
  3. Откройте карточку пользователя и снимите флажок «Защита от опасных действий».
  4. Сохраните. Пользователю нужно перезайти в базу.

Снимайте защиту только у администраторов и разработчиков, а не у всех пользователей подряд.

Ограничение доступа на уровне записей

Консоль выполняет запрос с правами текущего пользователя. Если в базе включено ограничение доступа на уровне записей (RLS), запрос к закрытой таблице упадёт с ошибкой нехватки прав. Добавьте в текст слово РАЗРЕШЕННЫЕ: ВЫБРАТЬ РАЗРЕШЕННЫЕ ... — тогда вернутся только доступные строки.

Что умеет консоль запросов: интерфейс и возможности

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

Что можно делать:

  • 📝 Писать и править текст запроса на языке запросов 1С с подсветкой.
  • 🧩 Открывать конструктор запроса — тот же, что в Конфигураторе. Удобно, если не помните имена полей.
  • 📊 Выполнять пакетные запросы и смотреть результат каждого пакета отдельно.
  • 🗃 Работать с временными таблицами: смотреть их содержимое и передавать в запрос заранее подготовленные таблицы.
  • ⏱ Видеть время выполнения — основа для сравнения двух вариантов запроса.
  • 💾 Сохранять набор запросов в файл и открывать его позже на другой базе.
  • 📤 Выводить результат в табличный документ и выгружать в Excel через стандартное сохранение таблицы.

Консоль запросов только читает данные. Язык запросов 1С не содержит команд изменения: аналогов INSERT, UPDATE, DELETE в нём нет. Исключение — УНИЧТОЖИТЬ для временных таблиц внутри пакета. Исправлять данные через консоль запросов нельзя.

Отсюда частая путаница: консоль запросов — это не SQL-клиент. Запрос пишется к объектам метаданных (Справочник.Номенклатура, РегистрНакопления.ТоварыНаСкладах), а не к таблицам СУБД. Перевод в SQL платформа делает сама.

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

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

ВЫБРАТЬ
    Номенклатура.Ссылка КАК Номенклатура
ПОМЕСТИТЬ ВТ_Товары
ИЗ
    Справочник.Номенклатура КАК Номенклатура
ГДЕ
    НЕ Номенклатура.ЭтоГруппа
;
ВЫБРАТЬ ПЕРВЫЕ 20
    ВТ_Товары.Номенклатура
ИЗ
    ВТ_Товары КАК ВТ_Товары

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

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

Типичная задача — понять, почему отчёт или документ выдаёт не то. Запрос проще всего взять прямо из отладчика:

  1. Откройте Конфигуратор и запустите отладку (F5).
  2. Найдите в модуле строку Запрос.Выполнить() и поставьте на неё точку останова (F9).
  3. Выполните действие в пользовательском режиме, чтобы сработала остановка.
  4. Выделите Запрос.Текст и вычислите выражение (Shift+F9), скопируйте текст.
  5. Там же раскройте Запрос.Параметры и выпишите значения параметров.
  6. Вставьте текст в консоль, заполните параметры и выполняйте по частям.

Параметры запроса: как задать даты, ссылки и списки

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

Пример с параметрами:

ВЫБРАТЬ
    Остатки.Номенклатура,
    Остатки.КоличествоОстаток
ИЗ
    РегистрНакопления.ТоварыНаСкладах.Остатки(&Дата, Склад = &Склад) КАК Остатки
ГДЕ
    Остатки.КоличествоОстаток > 0

Как заполнить:

  1. Перейдите на вкладку или в таблицу параметров консоли.
  2. Нажмите команду заполнения параметров из текста — консоль сама найдёт &Дата и &Склад.
  3. Для каждого параметра выберите тип: Дата, СправочникСсылка.Склады и т. д.
  4. Укажите значение. Для ссылки откроется форма выбора элемента справочника.
  5. Выполните запрос.

Что учесть при выборе значений:

  • 📅 Дата для остатков. &Дата = 31.03.2025 00:00:00 даёт остатки на начало дня 31 марта. Нужен конец дня — укажите 31.03.2025 23:59:59 или передайте Новый Граница(...) в коде.
  • 📋 Списки. Для условия В (&Список) выберите тип «Список значений» и добавьте несколько элементов.
  • 🔗 Пустая ссылка. Если оставить ссылочный параметр пустым, запрос отберёт записи с пустым значением, а не «все подряд».

💡 Регистры в БП 3.0 и УТ 11 называются по-разному. Если имя регистра не подходит — откройте конструктор запроса и посмотрите дерево доступных таблиц.

Как оценить скорость запроса и посмотреть план выполнения

Время выполнения в консоли — первая метрика. Запустите запрос два-три раза: первый прогон часто медленнее из-за холодного кэша СУБД. Сравнивайте варианты запроса по повторным прогонам.

Что ускоряет запрос чаще всего

  • ✂️ отбор в параметрах виртуальной таблицы (Остатки(&Дата, Склад = &Склад)), а не в ГДЕ;
  • 🔗 отказ от разыменования через точку по составным полям (Регистратор.Дата) — каждая точка даёт лишнее соединение;
  • 🗃 вынос подзапросов во временную таблицу с индексом: ПОМЕСТИТЬ ВТ ... ИНДЕКСИРОВАТЬ ПО Номенклатура;
  • 🔢 ВЫБРАТЬ ПЕРВЫЕ N на время отладки, чтобы не тянуть миллион строк в форму.

Как получить план запроса

Сама консоль показывает текст запроса 1С, но не SQL-план. Для плана используют технологический журнал платформы. Создайте файл logcfg.xml в каталоге conf установленной платформы (обычно C:\Program Files\1cv8\conf\) на компьютере, где выполняется запрос: в клиент-серверном варианте — на сервере 1С.

<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
  <log location="C:\v8logs" history="2">
    <event>
      <eq property="name" value="DBMSSQL"/>
    </event>
    <property name="all"/>
  </log>
  <plansql/>
</config>

После сохранения файла платформа подхватит настройку в течение минуты. Выполните запрос в консоли и откройте свежий лог в C:\v8logs: в событии DBMSSQL будут текст SQL-запроса, длительность и план. Для PostgreSQL событие называется DBPOSTGRS. В файловой базе плана СУБД нет.

Технологический журнал с <plansql/> быстро растёт и нагружает сервер. Включайте его на 10–15 минут в спокойное время, затем удаляйте logcfg.xml. Сеансы пользователей при этом не обрываются.

Ещё один способ без журнала — замер производительности в Конфигураторе: Отладка → Замер производительности. Он покажет, сколько времени заняла строка кода с Запрос.Выполнить(), но не план.

Частые ошибки при запуске и выполнении

Диагностика: выберите симптом

Ещё одна ловушка: консоль нельзя просто подключить в Дополнительные отчеты и обработки в БП 3.0 или УТ 11. Обработка не содержит описания для регистрации в справочнике, поэтому программа откажется её добавить. Открывайте её через Файл → Открыть.

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

Можно ли запустить консоль запросов в облачной 1С (1cfresh)?
Обычно нет. В сервисе пользователь работает в безопасном режиме, и открывать произвольные внешние обработки запрещено.
Работает ли консоль запросов в файловой базе?
Да, так же, как в клиент-серверной. Отличается только способ снять план: в файловой базе плана СУБД нет.
Нужна ли монопольная блокировка базы?
Нет. Консоль работает параллельно с пользователями. Но тяжёлый запрос без отборов может замедлить их работу, поэтому большие выборки запускайте вне рабочего времени.
Чем консоль запросов отличается от консоли отчётов?
Консоль запросов выводит сырую таблицу результата. Консоль отчётов строит отчёт на системе компоновки данных: с группировками, итогами и оформлением.
Можно ли скопировать запрос из консоли в код?
Да. Текст копируется как есть, параметры затем задают методом Запрос.УстановитьПараметр("Дата", ...).