Работа с запросами в 1С:Предприятие — одна из самых востребованных задач как для обычных пользователей, так и для разработчиков. Нужно ли вам отладить медленный отчёт, понять логику работы типовой конфигурации или просто узнать, какие данные извлекает система — умение просматривать запросы экономит часы времени. В этой статье мы разберём все актуальные способы: от встроенных инструментов платформы до внешних утилит и программного кода.

Важно понимать, что запросы в 1С бывают двух типов: текстовые (на встроенном языке) и SQL-запросы к базе данных. Первые пишутся разработчиками в модулях, вторые генерируются платформой автоматически. Мы покажем, как увидеть и те, и другие — с учётом вашего уровня доступа к системе. Если вы обычный пользователь без прав администратора, начните с первых способов. Разработчикам пригодятся разделы про отладчик и внешние инструменты.

Все инструкции актуальны для 1С:Предприятие 8.3 (включая последние релизы 2026 года) и частично для 8.2. Отдельно отметим особенности работы в разных режимах: тонкий клиент, толстый клиент и веб-клиент.

1. Просмотр текста запроса в отчётах и обработках

Самый простой способ — использовать встроенные механизмы для просмотра текста запросов в отчётах, обработках или печатных формах. Этот метод не требует прав администратора и работает даже в тонком клиенте.

Чтобы увидеть текст запроса:

  • 📊 Откройте нужный отчёт (например, Оборотно-сальдовая ведомость или Анализ счёта).
  • 🔧 В панели инструментов отчёта найдите кнопку "Настройки" (шестерёнка) и выберите Показать настройки.
  • 🔍 Перейдите на закладку "Прочее" и установите флажок "Показывать текст запроса" (в некоторых конфигурациях этот пункт может называться "Отладочная информация").
  • 🖱️ Запустите формирование отчёта. После выполнения в нижней части окна появится вкладка "Текст запроса" с полным кодом.

Если такой опции нет, попробуйте альтернативный путь:

  1. Сформируйте отчёт как обычно.
  2. Нажмите правой кнопкой мыши на область отчёта и выберите Сохранить как...Текстовый документ (*.txt).
  3. Откройте сохранённый файл в блокноте — иногда текст запроса записывается в конце файла.
💡

Если отчёт формируется долго, перед включением отладочной информации уменьшите период данных — это ускорит получение текста запроса.

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

2. Использование журнала регистрации (для администраторов)

Журнал регистрации фиксирует все SQL-запросы к базе данных, если включён соответствующий уровень детализации. Это мощный инструмент для анализа производительности и отладки, но требует прав администратора.

Как настроить и использовать журнал:

  • 🔧 Зайдите в Администрирование → Журналы регистрации (путь может отличаться в зависимости от конфигурации).
  • 📋 Создайте новый журнал или отредактируйте существующий, установив флажки:
    • 🗃️ Регистрировать запросы к СУБД
    • ⏱️ Регистрировать длительные запросы (укажите порог, например, 1 секунда)
    • 🔍 Регистрировать текст запроса
  • 🖥️ Перезапустите клиентское приложение , чтобы изменения вступили в силу.
  • 📊 После выполнения нужного действия (формирования отчёта, открытия документа) вернитесь в журнал и отфильтруйте записи по типу "Запрос к СУБД".
Параметр журнала Рекомендуемое значение Пояснение
Уровень детализации Максимальный Фиксирует все запросы, включая параметры
Регистрировать текст запроса Да Без этого будет видна только статистика, но не сам SQL
Хранить журнал (дней) 7 Достаточно для большинства задач отладки
Регистрировать длительные запросы Да (порог 1с) Помогает найти "узкие места"

В журнале регистрации отображаются реальные SQL-запросы, которые платформа 1С отправляет в базу данных (например, PostgreSQL или MS SQL). Это полезно для оптимизации, но требует знаний SQL.

📊 Какой СУБД вы используете с 1С?
PostgreSQL
Microsoft SQL Server
IBM DB2
Oracle
Не знаю

3. Отладчик запросов в конфигураторе (для разработчиков)

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

Пошаговая инструкция:

  1. 🛠️ Откройте конфигуратор в режиме 1С:Предприятие (не путать с режимом Конфигуратор!).
  2. 🔍 Включите отладку: Сервис → Параметры → Отладка → Использовать отладчик.
  3. 📍 Установите точку останова:
    • Для отчётов: в модуле объекта отчёта на строке с Запрос.Выполнить().
    • Для документов: в модуле объекта на процедуре ПриЗаписи() или ОбработкаПроведения().
  • 🖱️ Запустите нужное действие (формирование отчёта, проведение документа).
  • 🔎 В окне отладчика перейдите на закладку "Запросы" — здесь будет полный текст запроса с подставленными параметрами.
  • Преимущества отладчика:

    • ⚡ Видны динамические параметры запроса (значения переменных).
    • 📈 Можно анализировать план выполнения запроса (на закладке "План").
    • ⏱️ Измеряется время выполнения каждого этапа.

    Убедиться, что у вас есть права на конфигуратор|

    Включить режим отладки в параметрах|

    Найти модуль с нужным запросом|

    Установить точку останова на строке выполнения запроса|

    Подготовить тестовые данные для воспроизведения ситуации-->

    Если запрос выполняется в фоновом задании или расписании, используйте Журнал регистрации (раздел 2) или технологический журнал (раздел 5).

    4. Внешние утилиты для мониторинга SQL-запросов

    Для глубокого анализа производительности базы данных используют специализированные инструменты, подключаемые напрямую к СУБД. Это актуально для администраторов и разработчиков, работающих с крупными базами.

    Популярные утилиты:

    • 🔧 SQL Server Profiler (для MS SQL) — входит в состав Microsoft SQL Server Management Studio.
    • 🐘 pgAdmin (для PostgreSQL) — бесплатный инструмент с графическим интерфейсом.
    • 📊 Plan Explorer (от SentryOne) — плагин для SSMS с расширенным анализом планов выполнения.
    • 🔍 1С:Линк — отечественное решение для мониторинга запросов в реальном времени.

    Пример настройки SQL Server Profiler:

    1. Откройте SQL Server Profiler и создайте новый след (File → New Trace).
    2. Подключитесь к серверу, где размещена база .
    3. На закладке "Events Selection" отметьте события:
      • SQL:BatchCompleted
      • SP:StmtCompleted
  • Добавьте фильтр по имени базы данных (DatabaseName).
  • Запустите трассировку и выполните нужное действие в .
  • Как найти медленные запросы в pgAdmin

    В pgAdmin откройте инструмент DashboardActivity. Отсортируйте запросы по столбцу Duration (продолжительность). Запросы от 1С обычно содержат в тексте конструкции вроде v8users или v8catalog.

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

    5. Технологический журнал (для опытных пользователей)

    Технологический журнал (techlog) — это низкоуровневый лог платформы , который фиксирует все события, включая SQL-запросы. Его настройка требует доступа к серверу и права на редактирование конфигурационных файлов.

    Как включить и прочитать techlog:

    1. 📂 Откройте файл конфигурации сервера (обычно расположен по пути:
      C:\Program Files\1cv8\conf\conf.cfg
    2. 📝 Добавьте или раскомментируйте строки:
      enable-tech-log = true
      

      tech-log-path = C:\1C_logs\techlog

    3. 🔄 Перезапустите службу сервера (services.msc1C:Enterprise 8.3 Server Agent).
    4. 🖱️ Выполните в действия, которые нужно проанализировать.
    5. 📖 Откройте сгенерированные файлы лога в папке C:\1C_logs\techlog с помощью программы 1С:Технологический журнал (входит в поставку платформы).
    6. В логе ищите записи с типом "SQL" или "DBMS". Для удобства используйте фильтры по:

      • 🕒 Времени выполнения (duration).
      • 🗃️ Имени базы данных (db).
      • 🔍 Тексту запроса (text).
      💡

      Технологический журнал — самый полный источник информации о запросах, но его настройка требует осторожности. Не включайте его на постоянной основе, чтобы не перегружать дисковое пространство.

      Для анализа больших логов используйте утилиту loganalyzer от , которая автоматически группирует повторяющиеся запросы и сортирует их по времени выполнения.

      6. Программный просмотр запросов (для разработчиков)

      Если вам нужно динамически отслеживать запросы в коде, используйте встроенные механизмы платформы . Это полезно для создания собственных инструментов мониторинга или отладки.

      Примеры кода:

      1. Вывод текста запроса в сообщение:

      Запрос = Новый Запрос;
      

      Запрос.Текст =

      "ВЫБРАТЬ

      | Номенклатура.Наименование КАК Товар,

      | СУММА(Документ.Количество) КАК Количество

      |ИЗ

      | Документ.РеализацияТоваровУслуг КАК Документ

      | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура

      | ПО Документ.Номенклатура = Номенклатура.Ссылка

      |ГДЕ

      | Документ.Дата МЕЖДУ &НачалоПериода И &КонецПериода

      |СГРУППИРОВАТЬ ПО

      | Номенклатура.Наименование";

      Сообщить(Запрос.ТекстЗапроса()); // Покажет текст ДО подстановки параметров

      Запрос.УстановитьПараметр("НачалоПериода", НачалоДня(ТекущаяДата()));

      Запрос.УстановитьПараметр("КонецПериода", КонецДня(ТекущаяДата()));

      Сообщить(Запрос.ТекстЗапросаСПараметрами()); // Покажет текст ПОСЛЕ подстановки параметров

      2. Логирование всех запросов в модуле:

      Процедура ВыполнитьЗапросСЛогированием(Запрос)
      

      Начало = ТекущаяДатаВремя();

      Результат = Запрос.Выполнить();

      Конец = ТекущаяДатаВремя();

      // Запись в лог

      ТекстЛога = СтрШаблон("Запрос выполнен за %1 мс:

      %2",

      (Конец - Начало) * 1000,

      Запрос.ТекстЗапросаСПараметрами());

      ЗаписатьЛог(ТекстЛога); // Ваша процедура записи в файл или регистр сведений

      Возврат Результат;

      КонецПроцедуры

      Для анализа производительности используйте менеджер временных таблиц:

      Запрос = Новый Запрос;
      

      Запрос.Текст = "ВЫБРАТЬ ... ВРЕМЕННАЯТАБЛИЦА ...";

      Запрос.ВременныеТаблицы.Добавить(НоваяВременнаяТаблица);

      ПланЗапроса = Запрос.ПолучитьПланВыполнения();

      Сообщить(ПланЗапроса.ПолучитьТекст());

      Эти методы позволяют интегрировать мониторинг прямо в бизнес-логику прикладного решения, что удобно для поддержки крупных систем.

      7. Просмотр запросов в веб-клиенте и мобильном приложении

      Работа с запросами в веб-клиенте и мобильном приложении 1С имеет ограничения из-за архитектуры этих решений. Однако есть обходные пути:

      Для веб-клиента:

      • 🌐 Используйте журнал регистрации на сервере (раздел 2). Веб-клиент не имеет доступа к локальным инструментам отладки.
      • 🔧 Настройте технологический журнал (раздел 5) на сервере .
      • 📊 В некоторых конфигурациях (например, 1С:ERP) в веб-клиенте доступны Отчёты → Настройки → Показать текст запроса.

      Для мобильного приложения:

      • 📱 Включите режим отладки в настройках мобильного клиента (если поддерживается конфигурацией).
      • 🔗 Подключитесь к базе через тонкий клиент на ПК и используйте стандартные методы (разделы 1–3).
      • 📡 Для анализа сетевого трафика используйте Fiddler или Charles Proxy (требует настройки прокси на устройстве).
      💡

      В мобильном приложении 1С запросы часто оптимизированы для медленных соединений. Если отчёт работает медленно на телефоне, проверьте его производительность в десктопной версии — проблема может быть в сети, а не в коде.

      Обратите внимание: в облачных решениях (например, 1С:Fresh) доступ к SQL-запросам ограничен политикой безопасности. Используйте встроенные инструменты отчётности или обратитесь в поддержку.

      Частые ошибки и как их избежать

      При работе с запросами в пользователи часто сталкиваются с типичными проблемами. Вот самые распространённые из них и способы решения:

      1. Запрос не показывает актуальные данные

      • 🔄 Проверьте, что в запросе указан актуальный период (параметры &Начало, &Конец).
      • 🗃️ Убедитесь, что данные не кэшируются (в некоторых отчётах есть опция "Использовать кэш").
      • 🔍 Используйте Сообщить(ТекстЗапросаСПараметрами()), чтобы увидеть подставленные значения.

      2. Запрос выполняется слишком долго

      • ⏱️ Посмотрите план выполнения (Запрос.ПолучитьПланВыполнения()). Ищите операции FULL SCAN (полное сканирование таблиц).
      • 📊 Добавьте индексы на поля, используемые в условиях ГДЕ и СГРУППИРОВАТЬ ПО.
      • 🗑️ Разбейте сложный запрос на несколько простых с использованием временных таблиц.

      3. Не видно текст запроса в отчёте

      • 🔧 Проверьте настройки отчёта: иногда опция "Показывать текст запроса" скрыта в Дополнительных параметрах.
      • 🔄 Обновите конфигурацию — в новых релизах могут появляться дополнительные опции отладки.
      • 📋 Используйте журнал регистрации (раздел 2) как альтернативу.
      Почему в журнале регистрации не видно текста запроса?

      Если в журнале регистрации включён флажок "Регистрировать текст запроса", но текст всё равно не отображается, проверьте:

      1. Права пользователя — должен быть флажок "Администрирование" или "Просмотр журнала регистрации".

      2. Уровень детализации — должен быть "Максимальный" или "Высокий".

      3. Версию СУБД — в PostgreSQL иногда требуется дополнительная настройка параметра log_statement = 'all' в postgresql.conf.

      Если проблема сохраняется, проверьте, не отключена ли регистрация запросов в файле конфигурации сервера (conf.cfg или srvinfo).

      FAQ: Ответы на популярные вопросы

      Можно ли увидеть запрос, который выполняется при открытии формы документа?

      Да, но способ зависит от конфигурации:

      • В управляемых формах используйте отладчик (раздел 3). Установите точку останова на процедуре ПриСозданииНаСервере() или ПриОткрытии().
      • В обычных формах ищите запрос в модуле формы (процедуры ПриАктивизацииСтроки() или ОбновлениеДанных()).
      • Для SQL-запросов используйте журнал регистрации (раздел 2) или SQL Profiler (раздел 4).

      Если форма открывается быстро, а запрос выполняется при изменении реквизитов, установите точку останова на процедуре ПриИзменении() нужного поля.

      Как сохранить текст запроса в файл для дальнейшего анализа?

      Есть несколько способов:

      1. Через отладчик:
        ТекстЗапроса = Запрос.ТекстЗапросаСПараметрами();
        

        ЗаписатьТекст(ТекстЗапроса, "C:\temp\query.txt");

        где ЗаписатьТекст() — процедура для записи в файл.

      2. Через журнал регистрации:
        • Настройте журнал (раздел 2).
        • Экспортируйте записи в Excel или CSV.
    7. Через SQL Profiler:
      • Запустите трассировку (раздел 4).
      • Сохраните результаты в файл .trc.

    Для автоматического логирования всех запросов в базе создайте подписку на событие ПриНачалеВыполненияЗапроса в глобальном модуле.

    Почему в техжурнале видно не все запросы?

    Причины могут быть следующими:

    • 🔧 Недостаточный уровень детализации — проверьте параметры в conf.cfg (раздел 5).
    • 🗃️ Фильтрация по базе данных — убедитесь, что в настройках журнала указана нужная база.
    • ⏱️ Ротация логов — старые записи могут автоматически удаляться. Увеличьте параметр tech-log-keep-days.
    • 🔒 Ограничения прав — пользователь, под которым работает сервис , должен иметь права на запись в папку лога.
    • 📡 Сетевые запросы — если база находится на удалённом сервере, запросы могут не логироваться локально.

    Для диагностики добавьте в conf.cfg строку:

    tech-log-include = dbms;sql;perf

    и перезапустите сервер.

    Как узнать, какой запрос тормозит систему?

    Алгоритм поиска:

    1. 📊 Включите журнал регистрации с фильтром по длительным запросам (раздел 2).
    2. 🔍 В SQL Profiler отсортируйте запросы по столбцу Duration (раздел 4).
    3. 📈 В технологическом журнале ищите записи с duration > 1000 (раздел 5).
    4. 🔧 В отладчике анализируйте план выполнения запроса (Запрос.ПолучитьПланВыполнения()).

    Типичные "узкие места":

    • Запросы с ПОЛНОЕ СОЕДИНЕНИЕ (FULL JOIN) больших таблиц.
    • Конструкции ГДЕ ПОДСТРОКА(Поле, ...) = ... (не используют индексы).
    • Вложенные запросы с В(ВЫБОРКА) вместо временных таблиц.
    Можно ли увидеть запросы, которые выполняет фоновое задание?

    Да, но с ограничениями:

    • 🔄 В журнале регистрации фильтруйте записи по пользователю "Фоновые задания" или "Регламентные задания".
    • 📡 В технологическом журнале ищите события с usrid = "BackgroundJobs".
    • 🔧 В SQL Profiler настройте фильтр по ApplicationName (обычно содержит "1C:Enterprise" и ID задания).

    Для фоновых заданий в 1С:ERP или 1С:УТ текст запроса можно увидеть в журнале регламентных операций (Администрирование → Поддержка и обслуживание → Регламентные операции).

    Если задание выполняется на сервере кластера, подключитесь к нему через консоль администрирования сервера 1С и посмотрите лог конкретного рабочего процесса.