Консоль запросов в 1С 8.3: запуск, параметры, отладка и выгрузка
Содержание
Консоль запросов в 1С 8.3 — это внешняя обработка (файл .epf), которую открывают через Главное меню → Файл → Открыть. Пользоваться ей просто: пишете текст запроса или собираете его конструктором, заполняете параметры, жмёте «Выполнить» и смотрите результат в таблице. Данные она только читает: язык запросов 1С не умеет изменять или удалять записи.
Консоль нужна, когда отчёт показывает «не то», когда надо найти дубли, сверить остатки или быстро выгрузить список, которого нет ни в одном стандартном отчёте. Ниже — как работать с ней от запуска до плана выполнения.
1. Где взять консоль запросов и как запустить её в 1С 8.3
В типовых конфигурациях консоли в интерфейсе обычно нет. Её берут из комплекта универсальных обработок ИТС: там есть версия для управляемых форм (для 8.3 и тонкого клиента ) и старая — для обычных форм.
Открытие внешней обработки
- Сохраните файл консоли в папку, куда у вас есть доступ, например
C:\1C\Tools\. - Запустите базу в режиме «1С:Предприятие».
- Откройте
Главное меню (☰) → Файл → Открытьили нажмитеCtrl+O. - Выберите файл
.epf. - Платформа покажет предупреждение безопасности. Если файл из надёжного источника — подтвердите открытие.
Открывать внешние обработки может только пользователь с правом на интерактивное открытие внешних обработок. Обычно оно есть у роли «Администратор». Если пункта Файл → Открыть нет или появляется ошибка прав — дело в ролях пользователя, а не в файле.
Как подключить консоль, чтобы не искать файл каждый раз
Если консоль нужна регулярно, добавьте её в справочник дополнительных обработок: Администрирование → Печатные формы, отчёты и обработки → Дополнительные отчёты и обработки. Тогда она будет открываться из раздела, и права на неё можно выдать точечно.
Что есть в окне консоли
| Область | Зачем нужна |
|---|---|
| Поле текста запроса | Здесь пишут или вставляют запрос |
| Кнопка конструктора | Открывает конструктор запроса — тот же, что в Конфигураторе |
| Таблица параметров | Значения для &Параметров из текста |
| Область результата | Таблица (или дерево при ИТОГИ) с выбранными строками |
| Список запросов | Можно держать несколько запросов и переключаться между ними |
💡 Если вы не помните имена таблиц и полей, начните с конструктора. Он показывает все объекты метаданных базы и сам расставит синонимы и соединения.
2. Язык запросов 1С: структура и синтаксис
Запрос 1С похож на SQL, но пишется по-русски (английские ключевые слова тоже допустимы). Обращаются не к таблицам СУБД, а к объектам конфигурации: Справочник.Номенклатура, Документ.РеализацияТоваровУслуг, РегистрБухгалтерии.Хозрасчетный.
Порядок предложений
ВЫБРАТЬ ПЕРВЫЕ 100
Номенклатура.Ссылка КАК Номенклатура,
Номенклатура.Артикул КАК Артикул
ИЗ
Справочник.Номенклатура КАК Номенклатура
ГДЕ
НЕ Номенклатура.ПометкаУдаления
И НЕ Номенклатура.ЭтоГруппа
УПОРЯДОЧИТЬ ПО
Номенклатура.Наименование
Полный порядок такой:
ВЫБРАТЬ— поля (сРАЗЛИЧНЫЕ,ПЕРВЫЕ N,РАЗРЕШЕННЫЕ).ПОМЕСТИТЬ— если результат идёт во временную таблицу.ИЗ— источники и соединения.ГДЕ— отбор строк.СГРУППИРОВАТЬ ПОиИМЕЮЩИЕ— группировка и отбор по агрегатам.ОБЪЕДИНИТЬ [ВСЕ]— склейка с другим запросом.УПОРЯДОЧИТЬ ПО, затемИТОГИ ПО.
Что полезно знать с первого дня
- 🔹
ПЕРВЫЕ 100спасает от выгрузки миллиона строк при первой пробе запроса. - 🔹
РАЗРЕШЕННЫЕнужно, если у пользователя настроены ограничения на уровне записей. Без него запрос под таким пользователем упадёт с ошибкой прав. - 🔹 Через точку можно читать реквизиты ссылок:
Реализация.Контрагент.ИНН. Удобно, но каждая точка — это скрытое соединение. - 🔹 Комментарии пишут через
//, как в модулях. - 🔹 Строки берут в кавычки, даты — в функцию
ДАТАВРЕМЯ(2026, 3, 31).
Виртуальные таблицы регистров
У регистров есть виртуальные таблицы: Остатки, Обороты, ОстаткиИОбороты, СрезПоследних. Остаток по счёту 41.01 в Бухгалтерии предприятия 3.0 берут так:
ВЫБРАТЬ
Остатки.Субконто1 КАК Номенклатура,
Остатки.КоличествоОстаток КАК Количество,
Остатки.СуммаОстаток КАК Сумма
ИЗ
РегистрБухгалтерии.Хозрасчетный.Остатки(&Дата, Счет = &Счет, , ) КАК Остатки
Условие пишите в параметрах виртуальной таблицы, а не в ГДЕ. Тогда отбор делается до расчёта остатков, и запрос работает в разы быстрее.
3. Параметры и временные таблицы в консоли
Как задать параметры
Всё, что начинается с &, — параметр: &Дата, &Счет, &Организация. Консоль находит их в тексте и выводит списком.
- Нажмите кнопку заполнения параметров из текста (в большинстве консолей она в шапке таблицы параметров).
- Для каждого параметра выберите тип: дата, число, строка или ссылка (например,
ПланСчетовСсылка.Хозрасчетный). - Задайте значение. Для ссылки откроется форма выбора — выберите счёт 41.01 или нужную организацию.
- Если нужен список значений (для условия
В (&Склады)), выберите тип «Список значений» и добавьте несколько элементов.
Параметр-дата «31.03.2026» означает 31 марта, 00:00:00. Условие Дата МЕЖДУ &Начало И &Конец потеряет почти весь последний день. Пишите КОНЕЦПЕРИОДА(&Конец, ДЕНЬ).
Пакетный запрос и временные таблицы
Сложную задачу удобно разбить на шаги. Каждый шаг складывает результат во временную таблицу через ПОМЕСТИТЬ, следующий её читает. Запросы пакета разделяют точкой с запятой.
ВЫБРАТЬ
Реализация.Ссылка КАК Документ,
Реализация.Контрагент КАК Контрагент
ПОМЕСТИТЬ ВТ_Реализации
ИЗ
Документ.РеализацияТоваровУслуг КАК Реализация
ГДЕ
Реализация.Проведен
И Реализация.Дата МЕЖДУ НАЧАЛОПЕРИОДА(&Начало, ДЕНЬ) И КОНЕЦПЕРИОДА(&Конец, ДЕНЬ)
ИНДЕКСИРОВАТЬ ПО
Контрагент
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТ.Контрагент КАК Контрагент,
КОЛИЧЕСТВО(ВТ.Документ) КАК ЧислоДокументов
ИЗ
ВТ_Реализации КАК ВТ
СГРУППИРОВАТЬ ПО
ВТ.Контрагент
УПОРЯДОЧИТЬ ПО
ЧислоДокументов УБЫВ
Временная таблица живёт, пока выполняется пакет. После выполнения её нет, поэтому отдельно «посмотреть ВТ_Реализации» потом не получится.
💡 Чтобы проверить промежуточный шаг, временно уберите строку ПОМЕСТИТЬ у нужного запроса и сотрите всё, что ниже. Консоль покажет результат этого шага. Многие консоли умеют показывать результат любого запроса пакета без правки текста — посмотрите, есть ли у вашей версии выбор номера запроса рядом с результатом.
4. Отладка соединений и объединений: откуда берутся дубли и пропуски
Самые частые «чудеса» в консоли — лишние строки после соединения и пропавшие строки там, где их ждали.
Строки размножились после ЛЕВОГО СОЕДИНЕНИЯ
Если в правой таблице на одну строку левой приходится три записи, в результате будет три строки. Суммы из левой таблицы утроятся.
Проверка за минуту:
ВЫБРАТЬ
КОЛИЧЕСТВО(*) КАК ВсегоСтрок,
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Т.Документ) КАК УникальныхДокументов
ИЗ
ВТ_Итог КАК Т
Если числа разные — соединение размножает строки. Уточните условие связи или сначала сгруппируйте правую таблицу во временную.
Левое соединение работает как внутреннее
Типичная причина — условие на поле правой таблицы стоит в ГДЕ. Строки, у которых справа ничего не нашлось, получают NULL и отсекаются.
- ❌
ГДЕ Цены.ВидЦены = &ВидЦены - ✅ перенесите условие в
ПО:ПО Товары.Номенклатура = Цены.Номенклатура И Цены.ВидЦены = &ВидЦены
Для полей правой таблицы используйте ЕСТЬNULL(Цены.Цена, 0), иначе суммы и сравнения с NULL дадут пустоту.
ОБЪЕДИНИТЬ и ОБЪЕДИНИТЬ ВСЕ
| Вариант | Что делает | Когда брать |
|---|---|---|
ОБЪЕДИНИТЬ ВСЕ | Склеивает все строки как есть | Почти всегда: быстрее и честно показывает данные |
ОБЪЕДИНИТЬ | Убирает полностью одинаковые строки | Когда дубли точно не нужны и это осознанно |
Поля склеиваются по порядку, а не по именам. Имена и типы колонок берутся из первого запроса. Если во втором запросе поля переставлены, суммы попадут не в ту колонку, и ошибки консоль не покажет.
💡 При отладке выполняйте каждую часть объединения отдельно и сравнивайте число строк. Сумма частей при ОБЪЕДИНИТЬ ВСЕ должна совпасть с итогом.
5. Скорость запроса: замер времени и план выполнения
Простой замер
Большинство консолей показывают время выполнения рядом с результатом. Выполните запрос два раза подряд: первый прогон часто медленнее из-за холодного кэша СУБД, ориентируйтесь на второй.
Тяжёлый запрос к рабочей базе нагружает сервер для всех пользователей. Запросы без ПЕРВЫЕ и без отбора по периоду гоняйте на копии базы или в нерабочее время.
Что чаще всего тормозит
- 🐢 Условие в
ГДЕвместо параметров виртуальной таблицы. - 🐢 Соединение с подзапросом. Вынесите подзапрос во временную таблицу с
ИНДЕКСИРОВАТЬ ПО. - 🐢 Длинные цепочки через точку, особенно у полей составного типа (например,
Регистратор). ИспользуйтеВЫРАЗИТЬ(Т.Регистратор КАК Документ.РеализацияТоваровУслуг). - 🐢
ИЛИв условиях соединения. Часто быстрее два запроса, склеенных черезОБЪЕДИНИТЬ ВСЕ. - 🐢 Функции над полем в условии (
ГОД(Дата) = 2026) мешают использовать индекс. Пишите диапазон дат.
Как увидеть план выполнения
В клиент-серверной базе план запроса пишет технологический журнал. Создайте файл 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:\techlog" history="2">
<event>
<eq property="name" value="DBMSSQL"/>
</event>
<property name="all"/>
</log>
<plansql/>
</config>
Выполните запрос в консоли. В логах появится событие с текстом SQL-запроса и свойством planSQLText — это план от СУБД. В нём ищите полное сканирование больших таблиц (Table Scan, Seq Scan) и неожиданные вложенные циклы.
Удалите logcfg.xml сразу после замера. С планами журнал за час может вырасти на гигабайты и забить диск сервера.
Для файловой базы план СУБД не получить. Там помогает замер производительности в Конфигураторе при отладке и сравнение вариантов запроса по времени.
6. Как сохранить запросы и выгрузить результат в Excel
Сохранение текстов запросов
Консоль хранит набор запросов вместе с параметрами в отдельном файле. Сохраните его через команду записи в файл на панели консоли — и при следующем открытии загрузите обратно. Удобно держать один файл на задачу: «сверка 62», «дубли контрагентов».
💡 Готовый текст можно просто скопировать в блокнот. При вставке консоль сама найдёт параметры, останется заполнить значения.
Выгрузка результата
- Выполните запрос.
- В таблице результата нажмите
Ещё → Вывести список…. - Отметьте нужные колонки и выберите вывод в табличный документ.
- В открывшемся документе:
Главное меню → Файл → Сохранить как. - Тип файла — «Лист Excel 2007-… (*.xlsx)».
Для больших выборок (десятки тысяч строк) выгрузка через табличный документ идёт долго. Сузьте период или уберите лишние поля — ссылочные колонки с представлениями тяжелее простых.
Результат запроса — это данные базы, включая персональные данные сотрудников и контрагентов. Не оставляйте выгрузки на общих дисках.
7. Ошибки в консоли запросов и что с ними делать
Платформа указывает место ошибки: строку, позицию и маркер <<?>> перед проблемным словом. Начинайте разбор с него.
Ошибки, которые консоль не покажет
- 🔸 Суммы задвоились из-за соединения — запрос отработал «без ошибок».
- 🔸 Перепутан порядок полей в
ОБЪЕДИНИТЬ ВСЕ. - 🔸 Отбор по
ПометкаУдалениязабыт, и в выборку попали удалённые элементы. - 🔸 Взяты непроведённые документы: нет условия
Проведен.
Сверяйте итог запроса хотя бы с одним стандартным отчётом, например с оборотно-сальдовой ведомостью по тому же счёту и периоду.