В арсенале инструментов 1С:Предприятие есть немало функций, которые существенно упрощают работу с данными, но остаются «в тени» для большинства пользователей. Одна из них — менеджер запросов, мощный механизм для выполнения, анализа и отладки SQL-подобных запросов прямо в среде 1С. Если вы когда-либо сталкивались с необходимостью извлечь данные из базы по сложным условиям, оптимизировать производительность отчетов или просто хотели понять, какстроятся запросы в типовой конфигурации — этот инструмент станет вашим незаменимым помощником.

В отличие от стандартного конструктора запросов, который предлагает визуальный интерфейс для создания запросов, менеджер запросов предоставляет расширенные возможности: от сохранения истории выполнения до детального анализа плана выполнения. Он особенно полезен для разработчиков, администраторов баз данных и аналитиков, но может пригодиться даже опытным пользователям, которые хотят глубже понимать, как работают отчеты и обработки в их системе. В этой статье мы разберем, что такое менеджер запросов, где его найти, как им пользоваться и какие задачи он помогает решать эффективнее, чем альтернативные методы.

Что такое менеджер запросов и зачем он нужен

Менеджер запросов — это встроенный инструмент 1С:Предприятие 8, предназначенный для выполнения, сохранения и анализа запросов к базе данных. По сути, это «продвинутая» консоль, которая позволяет:

  • 🔍 Выполнять произвольные запросы на языке 1С:Запросы (аналог SQL) без привязки к конкретным отчетам или обработкам.
  • 📊 Просматривать результаты в удобном табличном виде с возможностью экспорта в Excel, текст или другие форматы.
  • Анализировать планы выполнения, чтобы оптимизировать медленные запросы.
  • 💾 Сохранять историю запросов для повторного использования или сравнения результатов.
  • 🔧 Тестировать запросы перед внедрением их в конфигурацию или отчеты.

Главное преимущество менеджера запросов перед стандартным конструктором — возможность работать с «сырыми» данными базы, не ограничиваясь логикой типовой конфигурации. Например, вы можете написать запрос, который объединит данные из документов ПоступлениеТоваров и РеализацияТоваров по нестандартным условиям, которые невозможно задать в типовом отчете «Ведомость по товарам». Или проверить, как именно строится запрос в сложной обработке, чтобы его под свои нужды.

Кроме того, менеджер запросов незаменим для диагностики производительности. Если отчет или обработка работает слишком долго, вы можете «вытащить» из нее запрос, выполнить его в менеджере и посмотреть, на каком этапе возникают задержки. Это особенно актуально для крупных баз с миллионами записей, где неоптимальные запросы могут тормозить работу всей системы.

📊 Как часто вы используете менеджер запросов в 1С?
Каждый день
Несколько раз в неделю
Редко, только для отладки
Никогда не пользовался
Не знаю, что это

Где найти менеджер запросов в 1С

В зависимости от версии платформы и конфигурации путь к менеджеру запросов может незначительно отличаться. В большинстве случаев его можно открыть двумя способами:

  1. Через главное меню:

    Перейдите в Файл → Открыть → Менеджер запросов (в некоторых конфигурациях путь может быть Сервис → Менеджер запросов).

  2. Через панель инструментов:

    Если менеджер запросов часто используется, его можно добавить на панель инструментов. Для этого кликните правой кнопкой по панели, выберите Настройка → Добавить команду → Менеджер запросов.

В некоторых специализированных конфигурациях (например, 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 или встроенная база ). Например:

  • В SQL Server регистр букв в условиях ГДЕ важен (если не используется коллация CI).
  • Во встроенной базе некоторые функции (например, ВРЕМЯНАЧАЛАДНЯ) могут работать медленнее, чем в 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)?

По умолчанию менеджер запросов предназначен только для чтения данных. Для изменения данных нужно использовать:

  • 🔹 Встроенный язык (например, в обработке или отчете).
  • 🔹 Конфигуратор в режиме