Как открыть консоль запросов в 1С 8.3 и проверить в ней свой запрос
Содержание
Консоль запросов в 1С — это внешняя обработка, которая выполняет текст запроса прямо в рабочей базе и показывает результат таблицей. Чтобы ей пользоваться, откройте файл обработки через Главное меню → Файл → Открыть, вставьте текст запроса, заполните параметры и нажмите «Выполнить». В типовую конфигурацию
консоль обычно не встроена, файл берут отдельно.
Частое заблуждение — что консоль может «сломать базу». Запрос на языке 1С только читает данные: в нём нет команд изменения или удаления записей. Риск другой: тяжёлый запрос без отборов нагружает сервер и тормозит работу остальных пользователей. Об этом ниже, в разделе про производительность.
Зачем нужна консоль запросов и что она умеет
Консоль нужна всем, кто пишет или проверяет запросы: программисту, аналитику, продвинутому бухгалтеру. Это самый быстрый способ получить выборку, для которой нет готового отчёта.
Что с её помощью делают на практике:
- 🔍 Отлаживают запрос из модуля: копируют текст из кода, подставляют параметры и смотрят, что вернётся.
- 📊 Строят разовые выборки: например, все документы реализации без счёта-фактуры за квартал.
- 🧮 Сверяют остатки по регистрам напрямую, минуя отчёты и их настройки.
- 🧩 Собирают запрос конструктором, если писать текст вручную непривычно.
- ⏱ Оценивают скорость: сколько секунд идёт запрос и сколько строк он возвращает.
Консоль работает с правами того пользователя, под которым открыта база. Если у пользователя настроены ограничения доступа к данным на уровне записей, часть строк в результат не попадёт. Это не ошибка запроса, а работа прав.
Где взять обработку и какую версию выбрать
Файл консоли распространяется как внешняя обработка с расширением .epf. Его берут из комплекта стандартных обработок на диске ИТС или из дистрибутива инструментов разработчика. Многие специалисты используют и сторонние консоли с расширенными возможностями.
Главное — выбрать версию под режим работы базы:
| Версия консоли | Где работает | Когда выбирать |
|---|---|---|
| На обычных формах | Только толстый клиент, обычное приложение | Старые конфигурации, режим совместимости с 8.2 |
| На управляемых формах | Тонкий клиент, веб-клиент, толстый клиент в режиме управляемого приложения | БП 3.0, ЗУП 3.1, УТ 11 и другие современные конфигурации |
Если открыть версию на обычных формах в тонком клиенте, форма не откроется или откроется пустой. Это частая причина вопроса «консоль не работает ».
Не скачивайте .epf с форумов и файлообменников без проверки. Внешняя обработка выполняет любой код с правами пользователя. Безопаснее взять файл из официального комплекта или у знакомого разработчика.
Как открыть консоль запросов в разных режимах
Тонкий клиент и интерфейс «Такси»
- Запустите базу в режиме 1С:Предприятие под пользователем с полными правами.
- Откройте главное меню (значок с тремя полосками в левом верхнем углу).
- Выберите
Файл → Открытьили нажмитеCtrl+O. - Укажите файл консоли
.epfи подтвердите открытие.
Платформа может показать предупреждение безопасности о внешней обработке. Его выдаёт защита от опасных действий. Если файл ваш и проверенный, откройте его. Если пункта Файл в меню нет, у пользователя не хватает прав на интерактивное открытие внешних обработок.
Толстый клиент для старой консоли
Версию на обычных формах запускают в толстом клиенте. Удобнее всего сделать это параметром командной строки:
"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /RunModeOrdinaryApplication
Второй вариант — в окне запуска нажмите «Изменить» для нужной базы и на последнем шаге выберите основной режим запуска «Толстый клиент». Путь к 1cestart.exe проверьте на своём компьютере: он зависит от разрядности и каталога установки.
Через раздел «Дополнительные отчёты и обработки»
В конфигурациях на БСП консоль можно не открывать каждый раз файлом, а подключить как дополнительную обработку: в БП 3.0 это Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки, в УТ 11 тот же пункт находится в разделе НСИ и администрирование. Это работает, только если в обработке есть регистрационные сведения для БСП. Простые консоли их не содержат, и такой файл открывают через Файл → Открыть.
Как устроено окно консоли запросов
Внешний вид зависит от версии обработки, но базовые части одинаковые:
- 📁 Список запросов — дерево слева или сверху. В одном файле можно хранить десятки запросов и сохранять набор на диск.
- ✏️ Текст запроса — поле редактора с подсветкой синтаксиса.
- 🔧 Параметры — таблица «имя параметра → значение» для всех
&Параметровиз текста. - 📋 Результат — таблица с найденными строками. В большинстве консолей результат можно вывести и деревом, если в запросе есть
ИТОГИ. - ▶️ Кнопка «Выполнить» и кнопка вызова конструктора запроса.
Набор запросов сохраняйте в отдельный файл. Через месяц вы не вспомните, как собирали ту самую выборку по должникам, а файл её сохранит.
Конструктор открывается и из пустого поля, и из уже написанного текста. Он разберёт ваш запрос по вкладкам: таблицы, поля, условия, группировки. Это удобный способ понять чужой запрос.
Основы языка запросов 1С на примерах
Язык запросов 1С похож на SQL, но обращается не к таблицам СУБД, а к объектам конфигурации: справочникам, документам, регистрам. Ключевые слова пишут по-русски или по-английски.
Базовая выборка
ВЫБРАТЬ ПЕРВЫЕ 100
Контрагенты.Ссылка КАК Контрагент,
Контрагенты.ИНН,
Контрагенты.КПП
ИЗ
Справочник.Контрагенты КАК Контрагенты
ГДЕ
НЕ Контрагенты.ПометкаУдаления
УПОРЯДОЧИТЬ ПО
Контрагенты.Наименование
ПЕРВЫЕ 100 ограничивает выборку. Ставьте его, пока проверяете запрос на большой базе.
Основные конструкции
| Конструкция | Что делает |
|---|---|
ГДЕ | Отбор строк до группировки |
СГРУППИРОВАТЬ ПО | Группировка с агрегатами СУММА, КОЛИЧЕСТВО, МАКСИМУМ |
ИМЕЮЩИЕ | Отбор уже по результатам агрегатов |
ЛЕВОЕ СОЕДИНЕНИЕ | Присоединяет вторую таблицу, сохраняя все строки первой |
ОБЪЕДИНИТЬ ВСЕ | Склеивает результаты двух запросов без удаления дублей |
ЕСТЬNULL(Поле, 0) | Подставляет значение вместо NULL после соединения |
ВЫБОР КОГДА … ТОГДА … ИНАЧЕ … КОНЕЦ | Условное поле |
ЗНАЧЕНИЕ(Перечисление.ВидыДоговоров.СПокупателем) | Ссылка на предопределённое значение прямо в тексте |
Виртуальные таблицы регистров
Остатки и обороты удобнее брать не из физической таблицы регистра, а из виртуальной:
ВЫБРАТЬ
Остатки.Номенклатура,
Остатки.КоличествоОстаток
ИЗ
РегистрНакопления.ТоварыНаСкладах.Остатки(&НаДату, Склад = &Склад) КАК Остатки
Условие Склад = &Склад записано внутри скобок виртуальной таблицы, а не в ГДЕ. Так платформа отбирает данные до расчёта остатков, и запрос идёт быстрее. Имена регистров и измерений проверьте в своей конфигурации: в разных решениях они называются по-разному.
Пакет запросов и временные таблицы
Несколько запросов разделяют точкой с запятой. Первый кладёт данные во временную таблицу через ПОМЕСТИТЬ, следующий её читает:
ВЫБРАТЬ
Реализация.Ссылка,
Реализация.Контрагент
ПОМЕСТИТЬ ВТ_Реализации
ИЗ
Документ.РеализацияТоваровУслуг КАК Реализация
ГДЕ
Реализация.Дата МЕЖДУ &НачалоПериода И &КонецПериода
И Реализация.Проведен
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТ.Контрагент,
КОЛИЧЕСТВО(ВТ.Ссылка) КАК ЧислоДокументов
ИЗ
ВТ_Реализации КАК ВТ
СГРУППИРОВАТЬ ПО
ВТ.Контрагент
Многие консоли умеют показывать содержимое каждой временной таблицы пакета. Это главный приём отладки: вы видите, на каком шаге пропали или задвоились строки.
Параметры запроса: как задавать даты, ссылки и списки
Всё, что в тексте начинается с &, — параметр. Консоль находит их сама: при выполнении или по отдельной команде заполнения параметров. Остаётся указать тип и значение.
| Тип параметра | Как задать | Пример в тексте |
|---|---|---|
| Дата | Выбрать тип «Дата», ввести дату и время | Реализация.Дата >= &НачалоПериода |
| Ссылка | Выбрать тип, например СправочникСсылка.Организации, и элемент из списка | Реализация.Организация = &Организация |
| Список значений | Тип «Список значений», добавить несколько элементов | Реализация.Контрагент В (&Контрагенты) |
| Число, строка, булево | Ввести значение | Остатки.КоличествоОстаток > &Порог |
Подводный камень с датой окончания периода
Если &КонецПериода = 31.03 без времени, в отбор попадёт только начало суток, то есть 31.03 00:00:00. Документы за последний день выпадут. Задайте время 23:59:59 или пишите в тексте КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ).
С остатками похожая история. Виртуальная таблица Остатки(&НаДату) считает остаток на начало указанного момента. Движения, сделанные ровно в эту секунду, в остаток не войдут. Чтобы их учесть, передают значение типа Граница с видом «Включая» или берут следующую секунду.
Для параметра-даты в тексте можно сразу написать константу: ДАТАВРЕМЯ(2025, 3, 31, 23, 59, 59). Удобно для разовой выборки, но в коде модуля так не делают.
Скорость запроса и план выполнения
Консоль показывает, сколько строк вернулось, а многие версии — и время выполнения. Если запрос идёт дольше нескольких секунд, ищите причину до того, как переносить его в код.
Что обычно тормозит
- 🐢 Отбор в
ГДЕвместо параметров виртуальной таблицы. Платформа сначала считает все остатки, потом фильтрует. - 🐢 Разыменование составных полей через точку. Выражение
Регистратор.Контрагентпревращается в соединение со всеми документами, которые могут быть регистратором. - 🐢
ИЛИв условиях соединения и подзапросы вГДЕ. Часто их выгоднее заменить временной таблицей сИНДЕКСИРОВАТЬ ПО. - 🐢
ОБЪЕДИНИТЬбезВСЕ. Без словаВСЕСУБД ищет и удаляет дубли, это лишняя сортировка. - 🐢 Выборка без ограничений на рабочей базе с миллионами записей.
Как получить план запроса
Сама платформа план СУБД в консоль не выводит, если в вашей обработке нет такой функции. Рабочий путь администратора — технологический журнал:
- В каталоге
confплатформы создайте или дополните файлlogcfg.xml. - Включите в нём сбор событий обращения к СУБД (
DBMSSQLдля MS SQL,DBPOSTGRSдля PostgreSQL) и элемент<plansql/>. - Выполните запрос в консоли и найдите его в журнале по тексту или времени.
- Отключите сбор плана сразу после замера.
На MS SQL план также смотрят в SQL Server Management Studio, на PostgreSQL — командой EXPLAIN ANALYZE для текста запроса, взятого из журнала.
Технологический журнал с планами быстро растёт и сам нагружает сервер. Включайте его на короткое время и с отбором, а не на весь день.
Тяжёлые запросы проверяйте на копии базы или вне рабочего времени. Долгий запрос к большим регистрам может держать блокировки и замедлять проведение документов у коллег.
Ошибки в консоли запросов и как их исправить
Сообщение об ошибке консоль показывает с номером строки и позицией. Начинайте разбор с этого места.
ИЗ или нет точки с запятой между запросами пакета. Смотрите строку и позицию из сообщения.Запрос из кода не выполняется в консоли
Текст, скопированный из модуля, содержит лишние символы: кавычки строки и вертикальные черты | в начале каждой строки. Их нужно убрать. Быстрый способ — в конфигураторе поставить курсор внутрь строки с запросом и вызвать конструктор запроса из контекстного меню. Конструктор сам разберёт текст, а затем его можно скопировать уже чистым.
Если в коде параметр подставлялся через Запрос.УстановитьПараметр, в консоли его придётся заполнить вручную. Иначе запрос выдаст ошибку о незаполненном параметре или пустой результат.