Консоль запросов в 1С:Предприятие 8.3 — это мощный инструмент, который позволяет разработчикам и опытным пользователям выполнять SQL-подобные запросы к базе данных напрямую из интерфейса программы. С её помощью можно быстро получать нужные данные, тестировать сложные выборки и отлаживать код без необходимости писать полноценные обработки. Однако многие начинающие специалисты сталкиваются с трудностями при первом запуске этого инструмента — особенно если речь идёт о тонкостях настройки или ограничениях в зависимости от режима работы (управляемое приложение vs обычное приложение).
В этой статье мы разберём все способы запуска консоли запросов в актуальных версиях 1С 8.3, включая скрытые возможности и типичные ошибки. Вы узнаете, как открыть консоль через меню, горячие клавиши или программно, а также как настроить её под свои задачи. Особое внимание уделим различиям между конфигуратором и пользовательским режимом — это критично для корректной работы с данными. Если вы никогда раньше не работали с запросами в 1С, после прочтения вы сможете уверенно использовать этот инструмент для аналитики, отладки и даже автоматизации рутинных операций.
Что такое консоль запросов в 1С 8.3 и зачем она нужна
Консоль запросов — это встроенный инструмент 1С:Предприятия, который позволяет выполнять запросы на языке 1С:Запросы (аналог SQL, адаптированный под специфику платформы). Она незаменима для:
- 🔍 Аналитики данных — быстрый поиск информации по сложным условиям (например,"найти все документы за прошлый год с суммой больше 100 000 руб.").
- 🐞 Отладки — проверка корректности запросов перед внедрением их в код обработок или отчётов.
- 📊 Тестирования производительности — оценка времени выполнения запросов и оптимизация индексов.
- 🔄 Миграции данных — подготовка данных для переноса между базами или системами.
В отличие от стандартных отчётов, консоль даёт полный контроль над тем, какие именно данные и в каком формате будут извлечены из базы. Например, вы можете получить таблицу с полями, которых нет в типовой конфигурации, или объединить данные из нескольких справочников в одном запросе. Это особенно ценно для интеграций с внешними системами или создания кастомных решений.
Важно понимать, что консоль запросов доступна как в конфигураторе (для разработчиков), так и в пользовательском режиме (при наличии соответствующих прав). Однако функциональность в этих режимах отличается: в конфигураторе можно работать с метаданными и системными таблицами, а в пользовательском режиме — только с теми данными, к которым у текущего пользователя есть доступ.
Способы запуска консоли запросов в 1С 8.3
Существует несколько способов открыть консоль запросов, и выбор зависит от вашей роли (разработчик или пользователь) и текущего режима работы 1С:Предприятия. Рассмотрим все варианты подробно.
1. Через меню конфигуратора (для разработчиков)
Если вы работаете в конфигураторе, самый простой способ — использовать стандартное меню:
- Откройте 1С:Предприятие в режиме
Конфигуратор. - Перейдите в меню
Сервис → Консоль запросов(илиОтладка → Консоль запросовв некоторых версиях). - Готово! Перед вами откроется окно для ввода и выполнения запросов.
Этот метод работает во всех актуальных версиях платформы, включая 8.3.20+. Обратите внимание, что в конфигураторе консоль имеет расширенные возможности: например, здесь можно выполнять запросы к системным таблицам (например, ИнформационнаяБаза или ПланыОбмена).
2. Горячие клавиши (быстрый доступ)
Для ускорения работы используйте комбинации клавиш:
- 🔹
Ctrl + Alt + Q— открыть консоль запросов в конфигураторе. - 🔹
Ctrl + Shift + Q— открыть консоль в пользовательском режиме (если права позволяют).
Если горячие клавиши не срабатывают, проверьте настройки 1С:
- В конфигураторе перейдите в
Сервис → Параметры. - На вкладке
Горячие клавишиубедитесь, что для консоли запросов назначены нужные комбинации.
Если вы часто работаете с запросами, добавьте кнопку вызова консоли на панель инструментов. Для этого в конфигураторе перейдите в Сервис → Настройка панели инструментов и найдите команду"Консоль запросов".
3. Программный запуск (для автоматизации)
Консоль запросов можно открыть и из кода на встроенном языке 1С. Это полезно, если вы пишете обработку для тестирования запросов или хотите интегрировать консоль в собственное решение. Пример кода:
Процедура ОткрытьКонсольЗапросов
Запрос = Новый Запрос;
ОткрытьФормуМодально("Запрос.ФормаЗапроса", Запрос);
КонецПроцедуры
Этот код откроет стандартную форму консоли запросов. Если вам нужно передать в неё начальный текст запроса, используйте параметры:
Процедура ОткрытьКонсольСТекстом
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Справочник.Номенклатура.Наименование КАК Наименование,
| Справочник.Номенклатура.Артикул КАК Артикул
|ИЗ
| Справочник.Номенклатура КАК Справочник.Номенклатура";
ОткрытьФормуМодально("Запрос.ФормаЗапроса", Запрос);
КонецПроцедуры
Такой подход удобен для создания"заготовок" часто используемых запросов.
4. Запуск в пользовательском режиме (для аналитиков)
Если вы работаете в режиме 1С:Предприятие (не конфигуратор), то доступ к консоли запросов зависит от прав вашей роли. Чтобы открыть её:
- Убедитесь, что ваша роль имеет право на выполнение произвольных запросов (обычно это роль
АдминистраторилиПолные права). - Используйте горячие клавиши
Ctrl + Shift + Qили найдите команду в менюВсе функции → Стандартные → Консоль запросов(если меню включено).
В пользовательском режиме функциональность консоли ограничена: вы не сможете выполнять запросы к системным таблицам или изменять данные напрямую (только чтение). Однако этого достаточно для аналитики и проверки гипотез.
Убедиться, что роль имеет право"Выполнение произвольных запросов"|Проверить, что база не заблокирована другими пользователями|Сохранить все открытые документы (на случай сбоя)|Отключить автообновление конфигурации (если оно мешает работе)-->
Настройка консоли запросов: параметры и возможности
После запуска консоли вы увидите окно с полем для ввода запроса, кнопками выполнения и дополнительными вкладками. Давайте разберёмся, как настроить её под свои задачи.
Основные элементы интерфейса
Интерфейс консоли запросов в 1С 8.3 включает следующие ключевые элементы:
- 📝 Поле ввода запроса — здесь пишется текст запроса на языке 1С:Запросы.
- ▶️ Кнопка"Выполнить" — запускает выполнение запроса (горячая клавиша
F5). - 📊 Вкладка"Результаты" — отображает данные, возвращённые запросом.
- ⚙️ Панель параметров — позволяет задавать дополнительные настройки (например, ограничение по времени выполнения).
- 🔍 Журнал запросов — история выполненных запросов (доступна через кнопку"Журнал").
На вкладке Параметры можно настроить:
| Параметр | Описание | Рекомендуемое значение |
|---|---|---|
| Ограничение времени выполнения (мс) | Максимальное время выполнения запроса. Если запрос выполняется дольше, он будет прерван. | 30000 (30 секунд) для тестовых запросов, 60000 (1 минута) для сложных |
| Использовать временные таблицы | Разрешает использование временных таблиц в запросе (ускоряет работу со сложными данными). | Включено |
| Показывать план выполнения | Отображает детальный план выполнения запроса (полезно для оптимизации). | Включено (для отладки) |
| Режим совместимости | Указывает версию синтаксиса запросов (например, 8.3.8 или 8.3.15). |
Текущая версия платформы |
Обратите внимание на параметр "Режим совместимости". Если вы работаете с базой, которая обновлялась с старых версий 1С, возможно, потребуется указать более раннюю версию синтаксиса (например, 8.2). В противном случае некоторые запросы могут не выполняться.
Журнал запросов: как сохранить и повторно использовать
Консоль запросов ведёт журнал всех выполненных запросов, что удобно для повторного использования или анализа истории. Чтобы открыть журнал:
- Нажмите кнопку
Журналв правом верхнем углу окна консоли. - В открывшемся окне вы увидите список ранее выполненных запросов с указанием даты, времени выполнения и статуса.
- Дважды кликните по нужному запросу, чтобы загрузить его в поле ввода.
Журнал хранится в базе данных и доступен всем пользователям, которые имеют права на работу с консолью. Это значит, что вы можете использовать запросы, сохранённые вашими коллегами (если они не очищали журнал).
Как очистить журнал запросов?
Чтобы очистить журнал, откройте его и нажмите кнопку"Очистить" в нижней части окна. Учтите, что это действие необратимо и удалит все записи для всех пользователей базы.
План выполнения запроса: оптимизация производительности
Если запрос выполняется слишком долго, используйте план выполнения, чтобы найти узкие места. Для этого:
- Включите опцию
Показывать план выполненияна вкладкеПараметры. - Выполните запрос.
- Перейдите на вкладку
План, где отобразится дерево операций с указанием времени выполнения каждого шага.
Анализируя план, обращайте внимание на:
- 🔴 Полное сканирование таблиц (TableScan) — означает, что запрос не использует индексы.
- 🟡 Вложенные циклы (NestedLoops) — могут указывать на неоптимальные соединения таблиц.
- 🟢 Индексное сканирование (IndexScan) — признак того, что запрос использует индексы эффективно.
Если вы видите TableScan для больших таблиц, попробуйте добавить условия отбора по индексированным полям или пересмотреть структуру запроса.
Использование плана выполнения — обязательный шаг при отладке медленных запросов. Даже небольшие изменения в тексте запроса (например, порядок соединений таблиц) могут сократить время выполнения в десятки раз.
Примеры запросов для начинающих
Если вы только начинаете осваивать консоль запросов, начните с простых примеров. Ниже приведеныные запросы, которые пригодятся в повседневной работе.
1. Простой запрос выборки данных
Допустим, вам нужно получить список всех номенклатурных позиций с их артикулами и ценами. Используйте следующий запрос:
ВЫБРАТЬ
Номенклатура.Наименование КАК Наименование,
Номенклатура.Артикул КАК Артикул,
Номенклатура.Цена КАК Цена
ИЗ
Справочник.Номенклатура КАК Номенклатура
Этот запрос вернёт таблицу со всеми позициями из справочника Номенклатура. Если нужно отфильтровать данные, добавьте условие ГДЕ:
ВЫБРАТЬ
Номенклатура.Наименование КАК Наименование,
Номенклатура.Артикул КАК Артикул
ИЗ
Справочник.Номенклатура КАК Номенклатура
ГДЕ
Номенклатура.Цена > 1000
2. Запрос с соединением таблиц (JOIN)
Часто требуется получить данные из нескольких справочников или документов. Например, вывести список документов РеализацияТоваровУслуг с указанием контрагента и суммы:
ВЫБРАТЬ
Реализация.Номер КАК НомерДокумента,
Реализация.Дата КАК Дата,
Контрагент.Наименование КАК Контрагент,
Реализация.СуммаДокумента КАК Сумма
ИЗ
Документ.РеализацияТоваровУслуг КАК Реализация
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагент
ПО Реализация.Контрагент = Контрагент.Ссылка
Обратите внимание на оператор ЛЕВОЕ СОЕДИНЕНИЕ — он гарантирует, что в результат попадут все документы реализации, даже если для некоторых не найдётся соответствующий контрагент (например, если ссылка повреждена).
3. Запрос с группировкой и агрегатными функциями
Для анализа данных часто используются группировка и функции вроде СУММА, КОЛИЧЕСТВО, МАКСИМУМ. Например, посчитаем общую сумму продаж по каждому контрагенту:
ВЫБРАТЬ
Контрагент.Наименование КАК Контрагент,
СУММА(Реализация.СуммаДокумента) КАК ОбщаяСумма,
КОЛИЧЕСТВО(Реализация.Ссылка) КАК КоличествоДокументов
ИЗ
Документ.РеализацияТоваровУслуг КАК Реализация
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагент
ПО Реализация.Контрагент = Контрагент.Ссылка
СГРУППИРОВАТЬ ПО
Контрагент.Наименование
Этот запрос вернёт таблицу, где каждой строкой будет контрагент, а в столбцах — сумма всех его заказов и количество документов.
4. Запрос с параметрами
Если вам нужно выполнить запрос с динамическими условиями (например, выбрать данные за определённый период), используйте параметры. Пример:
ВЫБРАТЬ
Документ.Номер КАК Номер,
Документ.Дата КАК Дата,
Документ.СуммаДокумента КАК Сумма
ИЗ
Документ.ПоступлениеТоваровУслуг КАК Документ
ГДЕ
Документ.Дата МЕЖДУ &НачалоПериода И &КонецПериода
При выполнении такого запроса консоль запросит у вас значения для параметров &НачалоПериода и &КонецПериода. Это удобно для интерактивной работы.
Чтобы не вводить параметры вручную при каждом выполнении, сохраните запрос в текстовый файл и подставляйте значения программно через обработку.
Типичные ошибки и как их избежать
Работа с консолью запросов может сопровождаться ошибками, особенно у новичков. Разберём наиболее распространённые проблемы и способы их решения.
1. Ошибка"Недостаточно прав для выполнения запроса"
Эта ошибка возникает, если текущая роль пользователя не имеет права на выполнение произвольных запросов. Решения:
- 🔑 Для пользовательского режима: попросите администратора выдать вам роль с правом
ВыполнениеПроизвольныхЗапросов. - 🛠️ Для конфигуратора: убедитесь, что вы вошли под пользователем с полными правами (обычно
Администратор).
Если вы администратор, проверьте настройки ролей в конфигураторе:
- Откройте конфигуратор и перейдите в
Администрирование → Пользователи. - Выберите нужного пользователя и нажмите
Изменить. - На вкладке
Прочиеубедитесь, что флажокВыполнение произвольных запросовустановлен.
2. Ошибка синтаксиса:"Ошибка в тексте запроса"
Ошибки синтаксиса — самая частая проблема. Например, вы могли забыть запятую между полями или неправильно указать имя таблицы. Консоль подсветит строку с ошибкой, но иногда сообщение бывает неявным. Чек-лист для проверки:
Убедиться, что все ключевые слова (ВЫБРАТЬ, ИЗ, ГДЕ) написаны заглавными буквами|Проверить, что после каждого поля в SELECT стоит запятая (кроме последнего)|Убедиться, что имена таблиц и полей указаны корректно (с учётом регистра)|Проверить, что все скобки и кавычки закрыты-->
Пример типичной ошибки:
ВЫБРАТЬ
Наименование, // Забыта запятая после этого поля
Артикул
Цена
ИЗ
Справочник.Номенклатура
Исправленный вариант:
ВЫБРАТЬ
Наименование,
Артикул,
Цена
ИЗ
Справочник.Номенклатура
3. Запрос выполняется слишком долго или"зависает"
Если запрос выполняется более 30 секунд, скорее всего, проблема в:
- 🐢 Отсутствии индексов — запрос сканирует всю таблицу (
TableScan). - 🔄 Слишком сложных соединениях — например, соединение пяти таблиц по неиндексированным полям.
- 🗃️ Большом объёме данных — запрос пытается обработать миллионы строк.
Решения:
- Используйте план выполнения, чтобы найти узкие места.
- Добавьте условия отбора по индексированным полям (например, по дате или ссылке).
- Разбейте сложный запрос на несколько простых и объедините результаты в коде.
Пример неоптимального запроса:
ВЫБРАТЬ *
ИЗ Документ.РеализацияТоваровУслуг
Этот запрос вернёт все поля всех документов реализации, что может занять минуты. Оптимизированный вариант:
ВЫБРАТЬ
Номер,
Дата,
Контрагент,
СуммаДокумента
ИЗ
Документ.РеализацияТоваровУслуг
ГДЕ
Дата > ДобавитьМесяц(ТекущаяДата, -1) // Только за последний месяц
4. Ошибка"Объект не найден" (неверное имя таблицы)
Эта ошибка возникает, если вы указали несуществующий справочник, документ или поле. Например:
ВЫБРАТЬ
Наименование
ИЗ
Справочник.Товары // Ошибка: справочник называется"Номенклатура"
Решения:
- 🔍 Проверьте точное имя объекта в конфигураторе: откройте нужный справочник или документ и посмотрите его имя в дереве метаданных.
- 📝 Используйте синтаксис-помощник: в консоли запросов нажмите
Ctrl + Пробел, чтобы открыть подсказки по именам таблиц и полей.
Если вы не уверены в имени поля, воспользуйтесь конструктором запросов:
- В консоли запросов нажмите кнопку
Конструктор. - В открывшемся окне выберите нужные таблицы и поля мышкой.
- Нажмите
ОК— консоль сгенерирует корректный запрос.
Всегда проверяйте имена объектов в метаданных, особенно если работаете с незнакомой конфигурацией. В разных типовых решениях (УТ, БП, ЗУП) одни и те же данные могут храниться в справочниках с разными именами.
Расширенные возможности консоли запросов
Консоль запросов в 1С 8.3 поддерживает не только простые выборки, но и ряд продвинутых функций, которые могут значительно упростить работу с данными. Рассмотрим некоторые из них.
1. Использование временных таблиц
Временные таблицы позволяют сохранять промежуточные результаты и использовать их в последующих запросах. Это удобно для сложных многоэтапных выборок. Пример:
// Сначала создаём временную таблицу с данными
ВЫБРАТЬ
Контрагент.Ссылка КАК Ссылка,
СУММА(Документ.СуммаДокумента) КАК ОбщаяСумма
ПОМЕСТИТЬ ВТ_СуммыПоКонтрагентам
ИЗ
Документ.РеализацияТоваровУслуг КАК Документ
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагент
ПО Документ.Контрагент = Контрагент.Ссылка
СГРУППИРОВАТЬ ПО
Контрагент.Ссылка
ИНДЕКСИРОВАТЬ ПО
Ссылка
//////////////////////////////////////////////////
// Затем используем её в другом запросе
ВЫБРАТЬ
Контрагент.Наименование КАК Контрагент,
ВТ_СуммыПоКонтрагентам.ОбщаяСумма КАК Сумма
ИЗ
Справочник.Контрагенты КАК Контрагент
ЛЕВОЕ СОЕДИНЕНИЕ ВТ_СуммыПоКонтрагентам КАК ВТ_СуммыПоКонтрагентам
ПО Контрагент.Ссылка = ВТ_СуммыПоКонтрагентам.Ссылка
Временные таблицы существуют только в течение сеанса работы с консолью. После закрытия консоли они автоматически удаляются.
2. Пакетные запросы
Вы можете выполнять несколько запросов последовательно, разделяя их точкой с запятой (;). Это удобно для создания сложных отчётов или миграции данных. Пример:
// Запрос 1: получаем список активных номенклатурных позиций
ВЫБРАТЬ
Номенклатура.Ссылка КАК Ссылка,
Номенклатура.Наименование КАК Наименование
ИЗ
Справочник.Номенклатура КАК Номенклатура
ГДЕ
Номенклатура.ПометкаУдаления = ЛОЖЬ
ПОМЕСТИТЬ ВТ_АктивнаяНоменклатура
//////////////////////////////////////////////////
// Запрос 2: получаем остатки по этим позициям
ВЫБРАТЬ
ВТ_АктивнаяНоменклатура.Наименование КАК Номенклатура,
РегистрНакопленияОстаткиТоваровОстатки.КоличествоОстаток КАК Остаток
ИЗ
ВТ_АктивнаяНоменклатура КАК ВТ_АктивнаяНоменклатура
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТоваров.Остатки(
Номенклатура В (ВЫБРАТЬ ВТ_АктивнаяНоменклатура.Ссылка)
) КАК РегистрНакопленияОстаткиТоваровОстатки
ПО ВТ_АктивнаяНоменклатура.Ссылка = РегистрНакопленияОстаткиТоваровОстатки.Номенклатура
Пакетные запросы выполняются последовательно. Если в одном из запросов пакета возникает ошибка, выполнение прерывается.
3. Работа с регистрами накопления и сведений
Консоль запросов позволяет получать данные не только из справочников и документов, но и из регистров накопления и регистров сведений. Это особенно полезно для работы с остатками, оборотами и другой аналитической информацией.
Пример запроса к регистру остатков товаров:
ВЫБРАТЬ
ОстаткиТоваровОстатки.Номенклатура КАК Номенклатура,
ОстаткиТоваровОстатки.КоличествоОстаток КАК Остаток,
ОстаткиТоваровОстатки.СуммаОстаток КАК СуммаОстаток
ИЗ
РегистрНакопления.ОстаткиТоваров.Остатки(
&ДатаОтчета, // Параметр: дата, на которую нужно получить остатки
Номенклатура В (
ВЫБРАТЬ
Номенклатура.Ссылка
ИЗ
Справочник.Номен