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

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

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

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

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

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

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

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

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

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

Основные задачи, которые решает консоль запросов

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

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

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

ОтладкаПроверка текста запроса до вставки в модуль

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

АнализБыстрые выборки без отчётов

Остатки, обороты, дубли, неиспользуемые элементы справочников

ДиагностикаПоиск источника ошибки в учёте

Расшифруйте итоговую цифру до конкретных документов и записей регистра

ОбучениеИзучение языка запросов

Экспериментируйте с конструкциями на копии базы и сразу видьте результат

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

Работа в консоли строится по простому циклу: написать текст → заполнить параметры → выполнить → проанализировать результат. Текст запроса пишется на языке запросов 1С. Минимальный пример — выборка элементов справочника: ВЫБРАТЬ Номенклатура.Ссылка, Номенклатура.Наименование ИЗ Справочник.Номенклатура КАК Номенклатура. После нажатия кнопки «Выполнить» результат появляется в табличном поле внизу окна.

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

bsl
ВЫБРАТЬ
	Остатки.Номенклатура КАК Номенклатура,
	Остатки.КоличествоОстаток КАК Остаток
ИЗ
	РегистрНакопления.ТоварыНаСкладах.Остатки(&Период, Склад = &Склад) КАК Остатки
ГДЕ
	Остатки.КоличествоОстаток < 0
Порядок работы с консолью
  1. 1
    Откройте обработку консоли запросов в режиме 1С:Предприятие через меню «Файл → Открыть»
  2. 2
    Введите текст запроса в поле редактора или воспользуйтесь конструктором запроса
  3. 3
    Заполните таблицу параметров: имя, тип, значение для каждого параметра с символом &
  4. 4
    Нажмите «Выполнить» и изучите таблицу результата
  5. 5
    При необходимости сохраните запрос в файл, чтобы повторить анализ позже или в другой базе

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

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

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

Конструктор запроса и типовые приёмы

Большинство консолей включают вызов штатного конструктора запроса — визуального инструмента, где таблицы, поля, связи и группировки выбираются мышкой. Конструктор полезен на этапе изучения языка и при работе со сложными соединениями: он сам формирует корректный синтаксис ЛЕВОЕ СОЕДИНЕНИЕ, условия ГДЕ и итоги ИТОГИ ПО. Готовый текст можно затем доработать вручную.

Среди приёмов, которые чаще всего применяются в консоли: проверка на NULL после левого соединения (функция ЕСТЬNULL), получение среза последних значений периодического регистра сведений, группировка с подсчётом количества для поиска дублей (КОЛИЧЕСТВО с условием ИМЕЮЩИЕ), выборка движений конкретного документа через отбор по регистратору. Освоив эти шаблоны, можно закрыть большую часть повседневных аналитических задач.

Перед сложным запросом к большой таблице добавьте ограничение выборки (например, ВЫБРАТЬ ПЕРВЫЕ 1000 или отбор по короткому периоду). Это убережёт от долгого ожидания, если в запросе ошибка в соединении, из-за которой декартово произведение таблиц порождает миллионы строк.
ПЗ
Практическое замечание

Ограничения и меры предосторожности

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

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

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

Типичные ошибки при работе с консолью

Самая распространённая ошибка — неверный тип параметра. Если в параметр со ссылкой подставить строку, сравнение не сработает, и запрос вернёт пустой результат без какой-либо ошибки. Вторая типичная проблема — забытый ЕСТЬNULL при левом соединении: поля из присоединённой таблицы содержат NULL, и арифметика с ними даёт NULL вместо ожидаемого числа.

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

Типичные ошибки
01
Параметр задан строкой вместо ссылки — запрос возвращает пустой результат без ошибки
02
Отсутствует ЕСТЬNULL после левого соединения — в вычислениях появляются NULL вместо чисел
03
Нет отбора по периоду в виртуальной таблице Обороты — запрос сканирует всю историю и работает медленно
04
Сравнение результата с отчётом, у которого другие отборы и период — ложный вывод об ошибке в запросе
05
Отладка под пользователем с RLS — в привилегированном режиме код получит другие данные

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

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

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

Выбор инструмента под задачу

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

Разовые выборки, отладка текста запроса, анализ данных. Только чтение, быстрый старт, ничего не нужно создавать в конфигурации

Отчёт на СКД

Регулярная аналитика для пользователей с настройками, группировками и оформлением. Требует разработки и обновления конфигурации

Консоль кода

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

Итог

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

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

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

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

Нет. Язык запросов 1С работает только на чтение: в нём нет аналогов UPDATE, DELETE или INSERT. Изменить данные можно только программно на встроенном языке — для этого существуют другие инструменты, например консоль кода или специализированные обработки, которые требуют отдельной осторожности и резервной копии.

Где взять консоль запросов, если в конфигурации её нет?

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

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

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

Нужно ли знать SQL, чтобы пользоваться консолью запросов?

Не обязательно, но знакомство с SQL заметно помогает: язык запросов 1С использует похожие конструкции — ВЫБРАТЬ, ГДЕ, СОЕДИНЕНИЕ, СГРУППИРОВАТЬ ПО. Различия в том, что обращение идёт к объектам метаданных, а не к физическим таблицам, есть виртуальные таблицы регистров и свои функции. Начать можно с конструктора запроса, который формирует текст визуально.

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

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

Как сохранить написанный запрос для повторного использования?

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