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

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

Консоль запросов 1С: как пользоваться на практике

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

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

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

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

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

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

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

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

Интерфейс консоли: основные элементы

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

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

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

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

Начните с простого запроса к справочнику. В поле текста запроса введите выборку, например, список контрагентов или номенклатуры. Язык запросов 1С похож на SQL, но работает с объектными именами метаданных: Справочник.Номенклатура, Документ.РеализацияТоваровУслуг, РегистрНакопления.ТоварыНаСкладах.Остатки.

bsl
ВЫБРАТЬ
	Товары.Ссылка КАК Номенклатура,
	Товары.Артикул КАК Артикул
ИЗ
	Справочник.Номенклатура КАК Товары
ГДЕ
	НЕ Товары.ПометкаУдаления

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

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

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

Параметры запроса: зачем нужны и как задавать

Параметры — это значения, которые подставляются в запрос при выполнении. В тексте они обозначаются символом «&», например: ГДЕ Реализация.Дата МЕЖДУ &НачалоПериода И &КонецПериода. Параметры делают запрос универсальным: один и тот же текст можно выполнять для разных периодов, организаций или складов.

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

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

Типичные ошибки при работе с параметрами
01
Параметр не заполнен — запрос возвращает пустой результат без ошибки, и это принимают за отсутствие данных
02
Неверный тип параметра: строка вместо даты или ссылки приводит к ошибке либо к пустой выборке
03
Параметр объявлен в тексте, но не добавлен в таблицу параметров — консоль выдаёт ошибку при выполнении
04
В параметр-список передано одиночное значение, из-за чего условие В (&Список) не срабатывает

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

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

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

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

Самая частая причина «потери» строк в сложном запросе — внутреннее соединение (СОЕДИНЕНИЕ без ЛЕВОЕ). Если в присоединяемой таблице нет подходящей записи, строка исчезает из результата. При отладке временно замените соединение на ЛЕВОЕ и посмотрите, появятся ли пропавшие строки с пустыми значениями в присоединённых полях.
ПЗ
Практическое замечание

Типичные сценарии использования консоли

Проверка данных перед написанием отчёта

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

Анализ остатков и оборотов по регистрам

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

Поиск проблемных данных

Через консоль удобно искать документы без проведения, записи с пустыми ключевыми реквизитами, дубли в справочниках. Например, запрос с группировкой по наименованию и условием КОЛИЧЕСТВО > 1 покажет дубли контрагентов или номенклатуры.

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

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

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

Проверьте граничные случаи: пустые параметры, период без данных, помеченные на удаление объекты. Запрос, корректно работающий «на гладких» данных, может давать сбои на реальной базе с незаполненными реквизитами — используйте ЕСТЬNULL для полей, которые могут быть не заполнены.

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

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

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

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

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

Строк резко больше (дубли от соединения) или ноль при наличии данных

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

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

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

Расхождение — ошибка в соединениях, отборах или виде движения

Поля из присоединённых таблиц
Норма

Заполнены там, где данные существуют

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

Массовые NULL — соединение не находит записей, проверьте условие связи

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

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

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

Минуты — нет индексированного отбора, запрос опасен для рабочей базы

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

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

Второе ограничение — права доступа. Консоль выполняет запрос под вашим пользователем, поэтому RLS (ограничение доступа на уровне записей) и запреты на объекты действуют в полной мере. Если в коде конфигурации запрос работает в привилегированном модуле и видит все данные, а в консоли возвращает меньше строк — дело именно в правах, а не в тексте запроса.

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

Итог

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

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

Частые вопросы о консоли запросов 1С

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

Нет. Консоль выполняет только запросы на выборку — конструкций ИЗМЕНИТЬ или УДАЛИТЬ в языке запросов 1С не существует. Для пакетного изменения данных используются отдельные обработки (например, «Групповое изменение реквизитов»), которые работают по другому принципу и требуют большей осторожности.

Почему запрос в консоли возвращает меньше строк, чем тот же запрос в отчёте?

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

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

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

Консоль не открывается — появляется ошибка. Что делать?

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

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

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

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

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