Консоль запросов в 1С 8.3: где взять, как открыть и что в ней проверять
Содержание
Консоль запросов в 1С — это внешняя обработка, в которой пишут запрос на языке запросов 1С, задают параметры и сразу видят результат в виде таблицы. Её открывают через Главное меню → Файл → Открыть, выбирают файл .epf и работают с данными базы без программирования форм и отчётов.
Консоль нужна, когда типовой отчёт не отвечает на вопрос. Найти дубли контрагентов по ИНН, проверить остаток по счёту на дату, отыскать документы с битыми ссылками, отладить запрос перед вставкой в код. Работает она и в файловой, и в клиент-серверной базе, в любой конфигурации на платформе 8.3.
Консоль запросов: что это за инструмент и кому он нужен
Консоль — не часть конфигурации. Это отдельный файл, который запускают поверх любой базы. Поэтому она одинаково подходит для Бухгалтерии, ЗУП, Управления торговлей и самописных решений.
Кто ей пользуется:
- 👨💻 Программисты 1С — отлаживают запросы перед переносом в модуль, проверяют пакеты с временными таблицами.
- 🧾 Опытные бухгалтеры — достают выборки, которых нет в отчётах: все поступления от одного поставщика за год, документы без ответственного, контрагенты без КПП.
- 🛠️ Администраторы и внедренцы — ищут битые ссылки, считают объём данных в таблицах, проверяют результат обмена.
Главное свойство консоли: язык запросов 1С умеет только читать данные. Конструкций для изменения или удаления записей в нём нет. Запрос из консоли не испортит базу, даже если написан с ошибкой.
Безопасно не значит бесплатно для сервера. Тяжёлый запрос без отборов по таблице проводок за несколько лет нагружает СУБД и тормозит работу других пользователей. Такие выборки запускайте вне рабочего времени или сначала с ПЕРВЫЕ 100.
Консоль не обходит права доступа . Запрос выполняется от имени текущего пользователя, поэтому ограничения на уровне записей действуют и в ней. Пользователь, которому закрыт склад или организация, этих данных в консоли тоже не увидит.
Где взять консоль запросов и как открыть её в 1С 8.3
Официальная версия консоли распространяется в составе материалов ИТС, в разделе универсальных отчётов и обработок. Для 8.3 нужна версия под управляемые формы: она работает в тонком клиенте и в веб-клиенте. Старая консоль на обычных формах запускается только в толстом клиенте.
Существуют и сторонние консоли, в том числе в составе наборов инструментов разработчика. Они удобнее в деталях, но запускать чужой .epf в рабочей базе стоит только из проверенного источника: внешняя обработка может содержать любой код, а не только запрос.
Как открыть консоль
- Сохраните файл обработки на диск, например в
C:\1C\Tools\. - Запустите базу в режиме 1С:Предприятие под пользователем с правами администратора.
- Нажмите кнопку главного меню (три полоски в левом верхнем углу) и выберите
Файл → Открыть. - Укажите файл
.epf. - Если платформа покажет предупреждение о безопасности при открытии внешнего файла, подтвердите открытие — только если уверены в источнике обработки.
Если команда открытия файла недоступна или после выбора файла появляется сообщение о нехватке прав, дело в роли пользователя.
Права на открытие внешних обработок
Открыть консоль может только пользователь, у роли которого есть право «Интерактивное открытие внешних обработок». У полных прав и у администратора оно есть всегда. У рядового бухгалтера в типовых конфигурациях на БСП его обычно нет.
Варианты решения:
| Ситуация | Что сделать | Риск |
|---|---|---|
| Нужно разово | Выполнить запрос под администратором | Нет |
| Бухгалтер работает с консолью регулярно | Добавить пользователю профиль или группу доступа с правом открытия внешних обработок | Пользователь сможет запускать любые .epf |
| Права выдавать нельзя | Оформить запрос как отчёт на СКД и подключить как дополнительный отчёт | Нужен программист |
Консоль из ИТС не оформлена как дополнительная обработка БСП, поэтому через Администрирование → Печатные формы, отчёты и обработки → Дополнительные отчёты и обработки её обычно не подключают. Открывайте через меню Файл.
Из чего состоит окно консоли запросов
Интерфейс разных консолей отличается, но основные области одинаковы:
- 🗂️ Список запросов — дерево, в котором хранится несколько запросов. Удобно держать набор «на все случаи» и сохранять его в файл.
- ✍️ Текст запроса — поле редактора с подсветкой синтаксиса.
- 🧩 Конструктор запроса — открывается из контекстного меню поля текста или кнопкой на панели. Таблицы и поля выбираются мышью, текст собирается сам.
- 🔢 Параметры — таблица имён и значений для всех
&Параметровиз текста. - 📊 Результат — таблица или дерево с итогами. Ссылки в результате открываются двойным щелчком.
Порядок работы всегда одинаков. Пишете или собираете текст, заполняете параметры, выполняете запрос, смотрите результат. При синтаксической ошибке консоль показывает сообщение с номером строки и колонки, где парсер споткнулся.
Параметры: на что смотреть
Параметр в тексте начинается с амперсанда: &НачалоПериода. В таблице параметров для него выбирают тип и значение. Для дат обращайте внимание на время.
Значение 31.03.2026 0:00:00 — это самое начало дня. Условие Дата <= &КонецПериода с таким значением отсечёт все документы, проведённые 31 марта днём. Ставьте 31.03.2026 23:59:59 или оборачивайте параметр в запросе: КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ).
Язык запросов в консоли: минимальный набор конструкций
Язык запросов 1С похож на SQL, но с русскими ключевыми словами и обращением к объектам метаданных, а не к физическим таблицам.
| Конструкция | Что делает | Пример |
|---|---|---|
ВЫБРАТЬ … ИЗ | Задаёт поля и источник | ИЗ Справочник.Контрагенты КАК Контрагенты |
ПЕРВЫЕ N | Ограничивает число строк | ВЫБРАТЬ ПЕРВЫЕ 100 |
ГДЕ | Отбор строк | ГДЕ НЕ Контрагенты.ПометкаУдаления |
СГРУППИРОВАТЬ ПО | Группировка с агрегатами | СУММА, КОЛИЧЕСТВО, МАКСИМУМ |
ИМЕЮЩИЕ | Отбор по агрегату | ИМЕЮЩИЕ КОЛИЧЕСТВО(…) > 1 |
ЛЕВОЕ СОЕДИНЕНИЕ | Связь таблиц | … ПО Т1.Ссылка = Т2.Владелец |
ОБЪЕДИНИТЬ ВСЕ | Склеивает результаты | Приход и расход в одной таблице |
ПОМЕСТИТЬ | Создаёт временную таблицу | Основа пакетного запроса |
УПОРЯДОЧИТЬ ПО | Сортировка | … УБЫВ |
Особенности, которых нет в SQL:
- 🔗 Обращение через точку.
Реализация.Контрагент.ИНН— платформа сама добавит соединение со справочником. - 📦 Виртуальные таблицы регистров.
Остатки,Обороты,ОстаткиИОборотыс параметрами в скобках. - 🎯
ЗНАЧЕНИЕ()для предопределённых элементов, перечислений и пустых ссылок:ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка). - 🔒
ВЫБРАТЬ РАЗРЕШЕННЫЕ— вернёт только записи, доступные пользователю, вместо ошибки доступа.
Пакетный запрос — это несколько запросов, разделённых точкой с запятой. Временные таблицы, созданные через ПОМЕСТИТЬ, живут до конца пакета. Консоль обычно показывает результат последнего запроса пакета, а многие версии позволяют посмотреть и промежуточные.
Практические примеры: пять задач для консоли запросов
Примеры написаны для 1С:Бухгалтерии предприятия 3.0. В других конфигурациях имена объектов могут отличаться — их проще всего подсмотреть в конструкторе запроса.
1. Дубли контрагентов по ИНН
ВЫБРАТЬ
Контрагенты.ИНН КАК ИНН,
КОЛИЧЕСТВО(Контрагенты.Ссылка) КАК Количество
ИЗ
Справочник.Контрагенты КАК Контрагенты
ГДЕ
Контрагенты.ИНН <> ""
И НЕ Контрагенты.ПометкаУдаления
СГРУППИРОВАТЬ ПО
Контрагенты.ИНН
ИМЕЮЩИЕ
КОЛИЧЕСТВО(Контрагенты.Ссылка) > 1
У филиалов одной компании ИНН совпадает, а КПП разный. Если нужны настоящие дубли, добавьте Контрагенты.КПП в выборку и в группировку.
2. Выручка по покупателям за период
ВЫБРАТЬ
Реализация.Контрагент КАК Контрагент,
Реализация.СуммаДокумента КАК Сумма
ПОМЕСТИТЬ ВТ_Продажи
ИЗ
Документ.РеализацияТоваровУслуг КАК Реализация
ГДЕ
Реализация.Проведен
И Реализация.Дата МЕЖДУ &НачалоПериода И КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ)
;
ВЫБРАТЬ
ВТ_Продажи.Контрагент КАК Контрагент,
СУММА(ВТ_Продажи.Сумма) КАК Выручка
ИЗ
ВТ_Продажи КАК ВТ_Продажи
СГРУППИРОВАТЬ ПО
ВТ_Продажи.Контрагент
УПОРЯДОЧИТЬ ПО
Выручка УБЫВ
Здесь два запроса в одном пакете. Первый собирает проведённые реализации во временную таблицу, второй сворачивает её по покупателям.
3. Остатки по счёту на дату
ВЫБРАТЬ
Остатки.Субконто1 КАК Контрагент,
Остатки.СуммаОстатокДт КАК Дебет,
Остатки.СуммаОстатокКт КАК Кредит
ИЗ
РегистрБухгалтерии.Хозрасчетный.Остатки(&НаДату, Счет В ИЕРАРХИИ (&Счет), , ) КАК Остатки
В параметр &Счет выберите счёт 60 из плана счетов — подсчета попадут в выборку благодаря В ИЕРАРХИИ. Остатки считаются на начало переданного момента. Чтобы получить остаток на конец 31 марта, передайте 01.04.2026 0:00:00.
4. Документы с битыми ссылками
ВЫБРАТЬ
Реализация.Ссылка КАК Документ
ИЗ
Документ.РеализацияТоваровУслуг КАК Реализация
ГДЕ
Реализация.Контрагент <> ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
И Реализация.Контрагент.Наименование ЕСТЬ NULL
Ссылка заполнена, но элемента справочника за ней нет — при разыменовании платформа вернёт NULL. Так находят последствия неудачного обмена или удаления без контроля ссылок.
5. Отладка запроса из кода
Скопируйте текст запроса из модуля в консоль. Уберите символы | в начале строк и кавычки, задайте параметры вручную и выполните. Если запрос пакетный, проверяйте каждую временную таблицу отдельно: допишите в конец пакета ВЫБРАТЬ * ИЗ ВТ_Имя и смотрите, на каком шаге пропадают строки.
Почему запрос в консоли не выполняется
Сообщение об ошибке в консоли указывает позицию в тексте в формате {(строка, колонка)}. Начинайте разбор с этого места.
ИЗ, незакрытая скобка или забытая точка с запятой между запросами пакета.РАЗРЕШЕННЫЕ после ВЫБРАТЬ.Проведен для непроведённых документов.Как ускорить запрос в консоли запросов
Медленный запрос в консоли — сигнал, что он будет тормозить и в отчёте. Приёмы, которые дают заметный эффект:
- Отборы в параметрах виртуальной таблицы. Пишите
Остатки(&НаДату, Счет В ИЕРАРХИИ (&Счет)), а не фильтр по счёту вГДЕпосле выборки. Отбор в скобках применяется до расчёта остатков, а условие вГДЕ— после. - Без лишних полей.
ВЫБРАТЬ *тащит все реквизиты, включая длинные строки и хранилища значений. Перечисляйте только нужное. - Осторожно с точкой у составных полей.
Движения.Регистратор.Номерпорождает соединение с каждой таблицей документов, которые могут быть регистратором. Если нужен только номер реализаций, используйтеВЫРАЗИТЬ(Движения.Регистратор КАК Документ.РеализацияТоваровУслуг).Номер. - Временные таблицы вместо вложенных запросов в соединении. Подзапрос в
ЛЕВОЕ СОЕДИНЕНИЕоптимизатор СУБД часто обрабатывает плохо. Вынесите его вПОМЕСТИТЬи при большом объёме добавьтеИНДЕКСИРОВАТЬ ПОпо полю связи. ОБЪЕДИНИТЬ ВСЕвместоОБЪЕДИНИТЬ. БезВСЕплатформа удаляет дубли строк, а это лишняя сортировка. Если дублей быть не может, она не нужна.- Пробный прогон на
ПЕРВЫЕ 1000. Убедитесь, что логика верна, и только потом снимайте ограничение.
Сравнивайте время на одних и тех же параметрах. Первое выполнение после перерыва почти всегда дольше: СУБД ещё не держит данные в кэше. Ориентируйтесь на второй и третий прогон.
Если запрос всё равно идёт минутами, причина может быть не в тексте, а в устаревшей статистике СУБД или отсутствии регламентного обслуживания. Это уже задача администратора базы данных.