В арсенале инструментов 1С:Предприятие есть немало функций, которые существенно упрощают работу с данными, но остаются «в тени» для большинства пользователей. Одна из них — менеджер запросов, мощный механизм для выполнения, анализа и отладки SQL-подобных запросов прямо в среде 1С. Если вы когда-либо сталкивались с необходимостью извлечь данные из базы по сложным условиям, оптимизировать производительность отчетов или просто хотели понять, какстроятся запросы в типовой конфигурации — этот инструмент станет вашим незаменимым помощником.
В отличие от стандартного конструктора запросов, который предлагает визуальный интерфейс для создания запросов, менеджер запросов предоставляет расширенные возможности: от сохранения истории выполнения до детального анализа плана выполнения. Он особенно полезен для разработчиков, администраторов баз данных и аналитиков, но может пригодиться даже опытным пользователям, которые хотят глубже понимать, как работают отчеты и обработки в их системе. В этой статье мы разберем, что такое менеджер запросов, где его найти, как им пользоваться и какие задачи он помогает решать эффективнее, чем альтернативные методы.
Что такое менеджер запросов и зачем он нужен
Менеджер запросов — это встроенный инструмент 1С:Предприятие 8, предназначенный для выполнения, сохранения и анализа запросов к базе данных. По сути, это «продвинутая» консоль, которая позволяет:
- 🔍 Выполнять произвольные запросы на языке 1С:Запросы (аналог SQL) без привязки к конкретным отчетам или обработкам.
- 📊 Просматривать результаты в удобном табличном виде с возможностью экспорта в Excel, текст или другие форматы.
- ⚡ Анализировать планы выполнения, чтобы оптимизировать медленные запросы.
- 💾 Сохранять историю запросов для повторного использования или сравнения результатов.
- 🔧 Тестировать запросы перед внедрением их в конфигурацию или отчеты.
Главное преимущество менеджера запросов перед стандартным конструктором — возможность работать с «сырыми» данными базы, не ограничиваясь логикой типовой конфигурации. Например, вы можете написать запрос, который объединит данные из документов ПоступлениеТоваров и РеализацияТоваров по нестандартным условиям, которые невозможно задать в типовом отчете «Ведомость по товарам». Или проверить, как именно строится запрос в сложной обработке, чтобы его под свои нужды.
Кроме того, менеджер запросов незаменим для диагностики производительности. Если отчет или обработка работает слишком долго, вы можете «вытащить» из нее запрос, выполнить его в менеджере и посмотреть, на каком этапе возникают задержки. Это особенно актуально для крупных баз с миллионами записей, где неоптимальные запросы могут тормозить работу всей системы.
Где найти менеджер запросов в 1С
В зависимости от версии платформы и конфигурации путь к менеджеру запросов может незначительно отличаться. В большинстве случаев его можно открыть двумя способами:
- Через главное меню:
Перейдите в
Файл → Открыть → Менеджер запросов(в некоторых конфигурациях путь может бытьСервис → Менеджер запросов). - Через панель инструментов:
Если менеджер запросов часто используется, его можно добавить на панель инструментов. Для этого кликните правой кнопкой по панели, выберите
Настройка → Добавить команду → Менеджер запросов.
В некоторых специализированных конфигурациях (например, 1С:ERP или 1С:Управление холдингом) менеджер запросов может быть скрыт по умолчанию. В этом случае его можно открыть через режим «Отладка» (Сервис → Параметры → Запуск 1С:Предприятия → Режим отладки) или добавить в интерфейс вручную через конфигуратор.
Если в вашей конфигурации нет пункта «Менеджер запросов» в меню, попробуйте открыть его комбинацией клавиш Ctrl+Shift+Q (работает в большинстве версий платформы 8.3).
Важно отметить, что доступ к менеджеру запросов может быть ограничен правами пользователя. Если у вас нет прав на выполнение произвольных запросов, обратитесь к администратору базы.
⚠️ Внимание: В облачных версиях 1С (например, 1С:Фреш) функциональность менеджера запросов может быть ограничена по сравнению с локальными установками. Уточняйте возможности в документации вашего тарифа.
Интерфейс менеджера запросов: разбор основных элементов
Интерфейс менеджера запросов условно можно разделить на несколько ключевых зон, каждая из которых выполняет свою роль:
| Элемент интерфейса | Назначение | Пример использования |
|---|---|---|
| Панель запросов | Поле для ввода текста запроса на языке 1С:Запросы. Поддерживает подсветку синтаксиса и автодополнение. | Ввод запроса:ВЫБРАТЬ |
| Кнопка «Выполнить» | Запускает выполнение текущего запроса. Рядом может быть кнопка «Объяснить» для анализа плана выполнения. | Нажатие F5 или кнопки с изображением молнии. |
| Область результатов | Таблица с данными, возвращенными запросом. Поддерживает сортировку, фильтрацию и экспорт. | Двойной клик по ячейке открывает детальную информацию о записи (если доступно). |
| Журнал запросов | История выполненных запросов с возможностью быстрого повторного выполнения. | Просмотр и повторный запуск запроса от месячной давности. |
| Панель плана выполнения | Визуализация того, как 1С выполняет запрос: какие таблицы сканируются, какие индексы используются. | Оптимизация запроса, который работает более 10 секунд. |
Один из самых полезных элементов — панель плана выполнения. Она показывает, какие операции выполняются «под капотом» при обработке запроса. Например, если вы видите в плане строку Полное сканирование таблицы, это сигнал о том, что запрос можно оптимизировать, добавив условия отбора или используя индексы.
Еще одна полезная функция — журнал запросов. Он сохраняет все выполненные запросы, что позволяет:
- 🔄 Быстро повторять часто используемые запросы.
- 📈 Сравнивать результаты до и после изменений в базе.
- 📋 Документировать запросы для коллег или для себя (например, если вы разрабатываете сложный отчет).
Как включить подсветку синтаксиса в менеджере запросов?
Подсветка синтаксиса включается автоматически в большинстве версий платформы 8.3. Если она не работает:
1. Проверьте, что в параметрах запуска 1С не отключен режим совместимости с устаревшими версиями.
2. Обновите платформу до последней версии (в старых версиях подсветка может отсутствовать).
3. Если подсветка есть, но некорректно работает, попробуйте сбросить настройки интерфейса через Сервис → Параметры → Сбросить настройки.
Как пользоваться менеджером запросов: пошаговая инструкция
Рассмотрим базовый алгоритм работы с менеджером запросов на примере простой задачи: получить список товаров, по которым были продажи за последний месяц, с указанием суммы продаж.
Написать текст запроса в панели запросов|
Проверить синтаксис (кнопка «Проверить» или F7)|
Выполнить запрос (кнопка «Выполнить» или F5)|
Проанализировать результаты в таблице|
При необходимости экспортировать данные (кнопка «Сохранить результаты»)
-->
Шаг 1. Формируем запрос
Открываем менеджер запросов и вводим следующий текст (пример для конфигурации 1С:Управление торговлей):
ВЫБРАТЬ
Товары.Наименование КАК Товар,
СУММА(ДвиженияТоваров.Количество) КАК Количество,
СУММА(ДвиженияТоваров.Сумма) КАК СуммаПродаж
ИЗ
Документ.РеализацияТоваровУслуг.ДвиженияТоваров КАК ДвиженияТоваров
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Товары КАК Товары
ПО ДвиженияТоваров.Товар = Товары.Ссылка
ГДЕ
ДвиженияТоваров.Документ.Дата МЕЖДУ &НачалоПериода И &КонецПериода
СГРУППИРОВАТЬ ПО
Товары.Наименование
Шаг 2. Задаем параметры
В запросе используются параметры &НачалоПериода и &КонецПериода. При выполнении менеджер запросов предложит ввести их значения. Укажите, например, 01.06.2026 и 30.06.2026.
Шаг 3. Анализируем результаты
После выполнения запроса в области результатов появится таблица с товарами, количеством и суммой продаж. Здесь можно:
- 📌 Отсортировать данные по столбцу (клик по заголовку).
- 🔎 Применить фильтр (правая кнопка по заголовку столбца → «Фильтр»).
- 📄 Экспортировать в Excel (
Файл → Сохранить результаты).
Шаг 4. Оптимизируем запрос (при необходимости)
Если запрос выполняется долго, нажмите кнопку «Объяснить». В открывшемся окне вы увидите план выполнения. Обратите внимание на:
- 🔴 Полные сканирования таблиц (значит, нет подходящих индексов).
- 🟡 Вложенные циклы (может указывать на неоптимальные соединения).
- 🟢 Использование индексов (хороший знак, запрос оптимизирован).
Всегда проверяйте план выполнения для запросов, которые работают более 5 секунд. Даже небольшие изменения (например, добавление условия ГДЕ по индексированному полю) могут сократить время выполнения в десятки раз.
Практические примеры использования менеджера запросов
Менеджер запросов полезен не только для разовых задач, но и для решения типовых проблем. Рассмотрим несколько реальных сценариев.
Пример 1: Поиск дублей в справочнике
Допустим, в справочнике Контрагенты появились дублирующиеся записи (например, «ООО Ромашка» и «ООО Ромашка-1»). Чтобы их найти, выполните запрос:
ВЫБРАТЬ
Наименование,
КОЛИЧЕСТВО(*) КАК Количество
ИЗ
Справочник.Контрагенты
СГРУППИРОВАТЬ ПО
Наименование
ИМЕЮЩИЕ
КОЛИЧЕСТВО(*) > 1
Результат покажет все наименования контрагентов, которые встречаются более одного раза.
Пример 2: Анализ остатков товаров на складах
Чтобы увидеть остатки товаров на всех складах с разбивкой по характеристикам (например, цвет, размер), используйте запрос:
ВЫБРАТЬ
Товары.Наименование КАК Товар,
Характеристики.Наименование КАК Характеристика,
Склады.Наименование КАК Склад,
СУММА(ОстаткиТоваров.КоличествоОстаток) КАК Остаток
ИЗ
РегистрНакопления.ОстаткиТоваров.Остатки КАК ОстаткиТоваров
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Товары КАК Товары
ПО ОстаткиТоваров.Товар = Товары.Ссылка
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ТоварыХарактеристики КАК Характеристики
ПО ОстаткиТоваров.Характеристика = Характеристики.Ссылка
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Склады КАК Склады
ПО ОстаткиТоваров.Склад = Склады.Ссылка
ГДЕ
ОстаткиТоваров.КоличествоОстаток > 0
СГРУППИРОВАТЬ ПО
Товары.Наименование,
Характеристики.Наименование,
Склады.Наименование
Пример 3: Проверка целостности данных
Если вы подозреваете, что в базе есть «битые» ссылки (например, документы, ссылающиеся на несуществующие элементы справочников), выполните запрос:
ВЫБРАТЬ
Документы.Ссылка КАК Документ,
Документы.Контрагент КАК СсылкаНаКонтрагента
ИЗ
Документ.ЗаказПокупателя КАК Документы
ГДЕ
НЕ Документы.Контрагент ЕСТЬ NULL
И НЕ Документы.Контрагент.ЭтоГруппа
Этот запрос вернет все заказы покупателей, у которых не указан контрагент или указан несуществующий.
⚠️ Внимание: При работе с регистрами накопления (например, ОстаткиТоваров) учитывайте, что их структура может отличаться в разных конфигурациях. Всегда сверяйтесь с метаданными вашей базы, чтобы правильно указать имена полей.
Оптимизация запросов с помощью менеджера
Одна из ключевых задач менеджера запросов — помощь в оптимизации медленных запросов. Рассмотрим, как это делать на практике.
1. Анализ плана выполнения
После выполнения запроса нажмите кнопку «Объяснить». В открывшемся окне обратите внимание на:
- 🔴 Полное сканирование таблиц (
TableScan): означает, что 1С просматривает все записи таблицы, а не использует индексы. Решение: добавьте условия отбора по индексированным полям. - 🟡 Вложенные циклы (
NestedLoops): может указывать на неэффективные соединения. Решение: попробуйте переписать запрос с использованием временных таблиц. - 🟢 Индексное сканирование (
IndexScan): хороший знак, запрос использует индексы.
2. Использование временных таблиц
Если запрос содержит сложные соединения или подзапросы, его можно оптимизировать с помощью временных таблиц. Например:
ВЫБРАТЬ
Товары.Наименование,
Продажи.Количество
В
ВременнаяТаблицаПродажи
ИЗ
(ВЫБРАТЬ
ДвиженияТоваров.Товар КАК Товар,
СУММА(ДвиженияТоваров.Количество) КАК Количество
ИЗ
Документ.РеализацияТоваровУслуг.ДвиженияТоваров КАК ДвиженияТоваров
ГДЕ
ДвиженияТоваров.Документ.Дата МЕЖДУ &НачалоПериода И &КонецПериода
СГРУППИРОВАТЬ ПО
ДвиженияТоваров.Товар) КАК Продажи
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Товары КАК Товары
ПО Продажи.Товар = Товары.Ссылка
ИНДЕКСИРОВАТЬ ПО
Товар
ВЫБРАТЬ
ВременнаяТаблицаПродажи.Наименование КАК Товар,
ВременнаяТаблицаПродажи.Количество
ИЗ
ВременнаяТаблицаПродажи КАК ВременнаяТаблицаПродажи
УПОРЯДОЧИТЬ ПО
Количество УБЫВ
3. Оптимизация условий отбора
Избегайте условий, которые не могут использовать индексы. Например:
- ❌ Плохо:
ГДЕ ПОДСТРОКА(Наименование, 1, 3) ="АБВ"(не использует индексы). - ✅ Хорошо:
ГДЕ Наименование ПОДОБНО"АБВ%"(может использовать индекс).
Оптимизация запросов — это не разовая задача, а процесс. После изменений всегда проверяйте план выполнения заново: иногда «очевидные» оптимизации могут ухудшить производительность.
Распространенные ошибки и как их избежать
Даже опытные пользователи иногда допускают ошибки при работе с менеджером запросов. Рассмотрим самые частые из них.
1. Игнорирование прав доступа
Менеджер запросов выполняет запросы от имени текущего пользователя. Если у вас нет прав на чтение определенных таблиц (например, РегистрНакопления.Зарплата), запрос вернет ошибку. Решение: запрашивайте нужные права у администратора или используйте режимы с повышенными правами (например, Запуск от имени в конфигураторе).
2. Запросы без условий отбора
Запрос вида ВЫБРАТЬ * ИЗ Документ.ПоступлениеТоваров может вернуть миллионы записей и «подвесить» базу. Всегда ограничивайте выборку по дате, статусу или другим критериям.
⚠️ Внимание: В больших базах (более 100 ГБ) выполнение запросов без условий отбора может привести к блокировке других пользователей. Всегда проверяйте такие запросы в тестовой базе.
3. Неправильное использование соединений
Частая ошибка — использование ПОЛНОЕ СОЕДИНЕНИЕ вместо ЛЕВОЕ СОЕДИНЕНИЕ или ВНУТРЕННЕЕ СОЕДИНЕНИЕ. Это может привести к дублированию данных или потере записей. Например:
- ❌ Ошибка:
ПОЛНОЕ СОЕДИНЕНИЕмеждуДокумент.РеализацияиСправочник.Контрагентысоздаст записи для всех контрагентов, даже если у них не было реализаций. - ✅ Правильно:
ЛЕВОЕ СОЕДИНЕНИЕ, если нужно сохранить все реализации, илиВНУТРЕННЕЕ СОЕДИНЕНИЕ, если нужны только реализации с существующими контрагентами.
4. Забывают про кэширование
1С кэширует результаты запросов. Если вы изменили данные в базе, но запрос возвращает старые данные, попробуйте:
- 🔄 Обновить кэш (
Сервис → Обновить кэш метаданных). - 🚫 Отключить кэширование для текущего запроса, добавив директиву
//{МенеджерЗапросов.ИгнорироватьКэш}в начале запроса.
5. Не учитывают особенности СУБД
Поведение запросов может отличаться в зависимости от используемой СУБД (Microsoft SQL Server, PostgreSQL, IBM DB2 или встроенная база 1С). Например:
- В SQL Server регистр букв в условиях
ГДЕважен (если не используется коллацияCI). - Во встроенной базе 1С некоторые функции (например,
ВРЕМЯНАЧАЛАДНЯ) могут работать медленнее, чем в SQL Server.
Чтобы избежать проблем, тестируйте запросы на той же СУБД, которая используется в рабочей базе.
Сравнение менеджера запросов с альтернативными инструментами
Менеджер запросов — не единственный способ работать с данными в 1С. Рассмотрим, как он соотносится с другими инструментами.
| Инструмент | Преимущества | Недостатки | Когда использовать |
|---|---|---|---|
| Менеджер запросов |
✅ Быстрое выполнение произвольных запросов ✅ Анализ плана выполнения ✅ История запросов ✅ Экспорт результатов |
❌ Требует знания языка запросов ❌ Нет визуального конструктора ❌ Ограничен правами пользователя |
Для разработчиков, администраторов, сложных аналитических задач |
| Конструктор запросов |
✅ Визуальное построение запросов ✅ Подходит для новичков ✅ Интеграция с отчетами |
❌ Ограниченные возможности для сложных запросов ❌ Нет анализа плана выполнения ❌ Медленнее, чем ручной ввод |
Для пользователей без опыта, простых отчетов |
| Внешние отчеты и обработки |
✅ Гибкость (можно писать на встроенном языке) ✅ Возможность создать сложный интерфейс ✅ Автоматизация задач |
❌ Требует навыков программирования ❌ Дольше разрабатывать ❌ Нужно обновлять при изменении конфигурации |
Для повторяющихся задач, интеграции с другими системами |
| Прямые SQL-запросы |
✅ Максимальная производительность ✅ Полный контроль над запросом ✅ Возможность использовать специфические функции СУБД |
❌ Риск нарушить целостность данных ❌ Зависимость от СУБД ❌ Требует глубоких знаний SQL |
Для опытных администраторов, критичных по производительности задач |
Как видно из таблицы, менеджер запросов занимает промежуточное положение между простыми инструментами (конструктор запросов) и сложными решениями (внешние обработки, SQL). Он идеален для задач, где нужна гибкость и скорость, но нет необходимости разрабатывать полноценную обработку.
FAQ: Ответы на частые вопросы о менеджере запросов
Можно ли в менеджере запросов выполнять запросы к внешним базам данных?
Нет, менеджер запросов работает только с текущей базой 1С:Предприятие. Для работы с внешними базами (например, MySQL или Oracle) нужно использовать другие инструменты, такие как ADO или HTTP-Сервисы в конфигураторе.
Как сохранить результаты запроса в Excel?
После выполнения запроса в менеджере нажмите кнопку Сохранить результаты (или Файл → Сохранить) и выберите формат Excel. Альтернативно можно скопировать данные из таблицы результатов (Ctrl+C) и вставить в Excel.
Почему мой запрос выполняется долго, хотя в плане выполнения нет ошибок?
Причин может быть несколько:
- 🔹 Большой объем данных (попробуйте ограничить период или добавить условия отбора).
- 🔹 Блокировки в базе (проверьте через
Администрирование → Активные пользователи). - 🔹 Нехватка ресурсов сервера (CPU, RAM, дисковая подсистема).
- 🔹 Особенности СУБД (например, PostgreSQL может медленнее обрабатывать некоторые функции, чем SQL Server).
Для диагностики используйте Журнал регистрации (Администрирование → Журнал регистрации) и инструменты мониторинга СУБД.
Можно ли в менеджере запросов изменять данные (INSERT, UPDATE, DELETE)?
По умолчанию менеджер запросов предназначен только для чтения данных. Для изменения данных нужно использовать:
- 🔹 Встроенный язык (например, в обработке или отчете).
- 🔹 Конфигуратор в режиме