Работа с запросами в 1С:Предприятие — одна из самых востребованных задач как для обычных пользователей, так и для разработчиков. Нужно ли вам отладить медленный отчёт, понять логику работы типовой конфигурации или просто узнать, какие данные извлекает система — умение просматривать запросы экономит часы времени. В этой статье мы разберём все актуальные способы: от встроенных инструментов платформы до внешних утилит и программного кода.
Важно понимать, что запросы в 1С бывают двух типов: текстовые (на встроенном языке) и SQL-запросы к базе данных. Первые пишутся разработчиками в модулях, вторые генерируются платформой автоматически. Мы покажем, как увидеть и те, и другие — с учётом вашего уровня доступа к системе. Если вы обычный пользователь без прав администратора, начните с первых способов. Разработчикам пригодятся разделы про отладчик и внешние инструменты.
Все инструкции актуальны для 1С:Предприятие 8.3 (включая последние релизы 2026 года) и частично для 8.2. Отдельно отметим особенности работы в разных режимах: тонкий клиент, толстый клиент и веб-клиент.
1. Просмотр текста запроса в отчётах и обработках
Самый простой способ — использовать встроенные механизмы 1С для просмотра текста запросов в отчётах, обработках или печатных формах. Этот метод не требует прав администратора и работает даже в тонком клиенте.
Чтобы увидеть текст запроса:
- 📊 Откройте нужный отчёт (например,
Оборотно-сальдовая ведомостьилиАнализ счёта). - 🔧 В панели инструментов отчёта найдите кнопку "Настройки" (шестерёнка) и выберите
Показать настройки. - 🔍 Перейдите на закладку
"Прочее"и установите флажок"Показывать текст запроса"(в некоторых конфигурациях этот пункт может называться"Отладочная информация"). - 🖱️ Запустите формирование отчёта. После выполнения в нижней части окна появится вкладка
"Текст запроса"с полным кодом.
Если такой опции нет, попробуйте альтернативный путь:
- Сформируйте отчёт как обычно.
- Нажмите правой кнопкой мыши на область отчёта и выберите
Сохранить как...→Текстовый документ (*.txt). - Откройте сохранённый файл в блокноте — иногда текст запроса записывается в конце файла.
Если отчёт формируется долго, перед включением отладочной информации уменьшите период данных — это ускорит получение текста запроса.
Ограничение метода: так можно увидеть только основной запрос отчёта, но не вспомогательные запросы, которые выполняются в модулях обработки результата.
2. Использование журнала регистрации (для администраторов)
Журнал регистрации 1С фиксирует все SQL-запросы к базе данных, если включён соответствующий уровень детализации. Это мощный инструмент для анализа производительности и отладки, но требует прав администратора.
Как настроить и использовать журнал:
- 🔧 Зайдите в
Администрирование → Журналы регистрации(путь может отличаться в зависимости от конфигурации). - 📋 Создайте новый журнал или отредактируйте существующий, установив флажки:
- 🗃️
Регистрировать запросы к СУБД - ⏱️
Регистрировать длительные запросы(укажите порог, например, 1 секунда) - 🔍
Регистрировать текст запроса
- 🗃️
- 🖥️ Перезапустите клиентское приложение 1С, чтобы изменения вступили в силу.
- 📊 После выполнения нужного действия (формирования отчёта, открытия документа) вернитесь в журнал и отфильтруйте записи по типу
"Запрос к СУБД".
| Параметр журнала | Рекомендуемое значение | Пояснение |
|---|---|---|
| Уровень детализации | Максимальный |
Фиксирует все запросы, включая параметры |
| Регистрировать текст запроса | Да |
Без этого будет видна только статистика, но не сам SQL |
| Хранить журнал (дней) | 7 |
Достаточно для большинства задач отладки |
| Регистрировать длительные запросы | Да (порог 1с) |
Помогает найти "узкие места" |
В журнале регистрации отображаются реальные SQL-запросы, которые платформа 1С отправляет в базу данных (например, PostgreSQL или MS SQL). Это полезно для оптимизации, но требует знаний SQL.
3. Отладчик запросов в конфигураторе (для разработчиков)
Если у вас есть доступ к конфигуратору 1С, самый эффективный способ — использовать встроенный отладчик. Он позволяет увидеть не только текст запроса, но и значения переменных, план выполнения и время обработки.
Пошаговая инструкция:
- 🛠️ Откройте конфигуратор в режиме
1С:Предприятие(не путать с режимомКонфигуратор!). - 🔍 Включите отладку:
Сервис → Параметры → Отладка → Использовать отладчик. - 📍 Установите точку останова:
- Для отчётов: в модуле объекта отчёта на строке с
Запрос.Выполнить(). - Для документов: в модуле объекта на процедуре
ПриЗаписи()илиОбработкаПроведения().
- Для отчётов: в модуле объекта отчёта на строке с
"Запросы" — здесь будет полный текст запроса с подставленными параметрами.Преимущества отладчика:
- ⚡ Видны динамические параметры запроса (значения переменных).
- 📈 Можно анализировать план выполнения запроса (на закладке
"План"). - ⏱️ Измеряется время выполнения каждого этапа.
Убедиться, что у вас есть права на конфигуратор|
Включить режим отладки в параметрах|
Найти модуль с нужным запросом|
Установить точку останова на строке выполнения запроса|
Подготовить тестовые данные для воспроизведения ситуации-->
Если запрос выполняется в фоновом задании или расписании, используйте Журнал регистрации (раздел 2) или технологический журнал (раздел 5).
4. Внешние утилиты для мониторинга SQL-запросов
Для глубокого анализа производительности базы данных 1С используют специализированные инструменты, подключаемые напрямую к СУБД. Это актуально для администраторов и разработчиков, работающих с крупными базами.
Популярные утилиты:
- 🔧 SQL Server Profiler (для MS SQL) — входит в состав Microsoft SQL Server Management Studio.
- 🐘 pgAdmin (для PostgreSQL) — бесплатный инструмент с графическим интерфейсом.
- 📊 Plan Explorer (от SentryOne) — плагин для SSMS с расширенным анализом планов выполнения.
- 🔍 1С:Линк — отечественное решение для мониторинга запросов 1С в реальном времени.
Пример настройки SQL Server Profiler:
- Откройте SQL Server Profiler и создайте новый след (
File → New Trace). - Подключитесь к серверу, где размещена база 1С.
- На закладке
"Events Selection"отметьте события:SQL:BatchCompletedSP:StmtCompleted
DatabaseName).Как найти медленные запросы в pgAdmin
В pgAdmin откройте инструмент Dashboard → Activity. Отсортируйте запросы по столбцу Duration (продолжительность). Запросы от 1С обычно содержат в тексте конструкции вроде v8users или v8catalog.
Предупреждение: длительный мониторинг через внешние утилиты может замедлить работу сервера. Используйте их только для диагностики проблем, а не постоянно.
5. Технологический журнал (для опытных пользователей)
Технологический журнал (techlog) — это низкоуровневый лог платформы 1С, который фиксирует все события, включая SQL-запросы. Его настройка требует доступа к серверу 1С и права на редактирование конфигурационных файлов.
Как включить и прочитать techlog:
- 📂 Откройте файл конфигурации сервера 1С (обычно расположен по пути:
C:\Program Files\1cv8\conf\conf.cfg - 📝 Добавьте или раскомментируйте строки:
enable-tech-log = truetech-log-path = C:\1C_logs\techlog
- 🔄 Перезапустите службу сервера 1С (
services.msc→1C:Enterprise 8.3 Server Agent). - 🖱️ Выполните в 1С действия, которые нужно проанализировать.
- 📖 Откройте сгенерированные файлы лога в папке
C:\1C_logs\techlogс помощью программы 1С:Технологический журнал (входит в поставку платформы). - 🕒 Времени выполнения (
duration). - 🗃️ Имени базы данных (
db). - 🔍 Тексту запроса (
text). - 🌐 Используйте журнал регистрации на сервере (раздел 2). Веб-клиент не имеет доступа к локальным инструментам отладки.
- 🔧 Настройте технологический журнал (раздел 5) на сервере 1С.
- 📊 В некоторых конфигурациях (например, 1С:ERP) в веб-клиенте доступны
Отчёты → Настройки → Показать текст запроса. - 📱 Включите режим отладки в настройках мобильного клиента (если поддерживается конфигурацией).
- 🔗 Подключитесь к базе через тонкий клиент на ПК и используйте стандартные методы (разделы 1–3).
- 📡 Для анализа сетевого трафика используйте Fiddler или Charles Proxy (требует настройки прокси на устройстве).
- 🔄 Проверьте, что в запросе указан актуальный период (параметры
&Начало,&Конец). - 🗃️ Убедитесь, что данные не кэшируются (в некоторых отчётах есть опция
"Использовать кэш"). - 🔍 Используйте
Сообщить(ТекстЗапросаСПараметрами()), чтобы увидеть подставленные значения. - ⏱️ Посмотрите план выполнения (
Запрос.ПолучитьПланВыполнения()). Ищите операцииFULL SCAN(полное сканирование таблиц). - 📊 Добавьте индексы на поля, используемые в условиях
ГДЕиСГРУППИРОВАТЬ ПО. - 🗑️ Разбейте сложный запрос на несколько простых с использованием временных таблиц.
- 🔧 Проверьте настройки отчёта: иногда опция
"Показывать текст запроса"скрыта вДополнительных параметрах. - 🔄 Обновите конфигурацию — в новых релизах могут появляться дополнительные опции отладки.
- 📋 Используйте журнал регистрации (раздел 2) как альтернативу.
- В управляемых формах используйте отладчик (раздел 3). Установите точку останова на процедуре
ПриСозданииНаСервере()илиПриОткрытии(). - В обычных формах ищите запрос в модуле формы (процедуры
ПриАктивизацииСтроки()илиОбновлениеДанных()). - Для SQL-запросов используйте журнал регистрации (раздел 2) или SQL Profiler (раздел 4).
- Через отладчик:
ТекстЗапроса = Запрос.ТекстЗапросаСПараметрами();ЗаписатьТекст(ТекстЗапроса, "C:\temp\query.txt");
где
ЗаписатьТекст()— процедура для записи в файл. - Через журнал регистрации:
- Настройте журнал (раздел 2).
- Экспортируйте записи в
ExcelилиCSV.
- Через SQL Profiler:
- Запустите трассировку (раздел 4).
- Сохраните результаты в файл
.trc.
В логе ищите записи с типом "SQL" или "DBMS". Для удобства используйте фильтры по:
Технологический журнал — самый полный источник информации о запросах, но его настройка требует осторожности. Не включайте его на постоянной основе, чтобы не перегружать дисковое пространство.
Для анализа больших логов используйте утилиту loganalyzer от 1С, которая автоматически группирует повторяющиеся запросы и сортирует их по времени выполнения.
6. Программный просмотр запросов (для разработчиков)
Если вам нужно динамически отслеживать запросы в коде, используйте встроенные механизмы платформы 1С. Это полезно для создания собственных инструментов мониторинга или отладки.
Примеры кода:
1. Вывод текста запроса в сообщение:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Наименование КАК Товар,
| СУММА(Документ.Количество) КАК Количество
|ИЗ
| Документ.РеализацияТоваровУслуг КАК Документ
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура
| ПО Документ.Номенклатура = Номенклатура.Ссылка
|ГДЕ
| Документ.Дата МЕЖДУ &НачалоПериода И &КонецПериода
|СГРУППИРОВАТЬ ПО
| Номенклатура.Наименование";
Сообщить(Запрос.ТекстЗапроса()); // Покажет текст ДО подстановки параметров
Запрос.УстановитьПараметр("НачалоПериода", НачалоДня(ТекущаяДата()));
Запрос.УстановитьПараметр("КонецПериода", КонецДня(ТекущаяДата()));
Сообщить(Запрос.ТекстЗапросаСПараметрами()); // Покажет текст ПОСЛЕ подстановки параметров
2. Логирование всех запросов в модуле:
Процедура ВыполнитьЗапросСЛогированием(Запрос)
Начало = ТекущаяДатаВремя();
Результат = Запрос.Выполнить();
Конец = ТекущаяДатаВремя();
// Запись в лог
ТекстЛога = СтрШаблон("Запрос выполнен за %1 мс:
%2",
(Конец - Начало) * 1000,
Запрос.ТекстЗапросаСПараметрами());
ЗаписатьЛог(ТекстЛога); // Ваша процедура записи в файл или регистр сведений
Возврат Результат;
КонецПроцедуры
Для анализа производительности используйте менеджер временных таблиц:
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ ... ВРЕМЕННАЯТАБЛИЦА ...";
Запрос.ВременныеТаблицы.Добавить(НоваяВременнаяТаблица);
ПланЗапроса = Запрос.ПолучитьПланВыполнения();
Сообщить(ПланЗапроса.ПолучитьТекст());
Эти методы позволяют интегрировать мониторинг прямо в бизнес-логику прикладного решения, что удобно для поддержки крупных систем.
7. Просмотр запросов в веб-клиенте и мобильном приложении
Работа с запросами в веб-клиенте и мобильном приложении 1С имеет ограничения из-за архитектуры этих решений. Однако есть обходные пути:
Для веб-клиента:
Для мобильного приложения:
В мобильном приложении 1С запросы часто оптимизированы для медленных соединений. Если отчёт работает медленно на телефоне, проверьте его производительность в десктопной версии — проблема может быть в сети, а не в коде.
Обратите внимание: в облачных решениях (например, 1С:Fresh) доступ к SQL-запросам ограничен политикой безопасности. Используйте встроенные инструменты отчётности или обратитесь в поддержку.
Частые ошибки и как их избежать
При работе с запросами в 1С пользователи часто сталкиваются с типичными проблемами. Вот самые распространённые из них и способы решения:
1. Запрос не показывает актуальные данные
2. Запрос выполняется слишком долго
3. Не видно текст запроса в отчёте
Почему в журнале регистрации не видно текста запроса?
Если в журнале регистрации включён флажок "Регистрировать текст запроса", но текст всё равно не отображается, проверьте:
1. Права пользователя — должен быть флажок "Администрирование" или "Просмотр журнала регистрации".
2. Уровень детализации — должен быть "Максимальный" или "Высокий".
3. Версию СУБД — в PostgreSQL иногда требуется дополнительная настройка параметра log_statement = 'all' в postgresql.conf.
Если проблема сохраняется, проверьте, не отключена ли регистрация запросов в файле конфигурации сервера 1С (conf.cfg или srvinfo).
FAQ: Ответы на популярные вопросы
Можно ли увидеть запрос, который выполняется при открытии формы документа?
Да, но способ зависит от конфигурации:
Если форма открывается быстро, а запрос выполняется при изменении реквизитов, установите точку останова на процедуре ПриИзменении() нужного поля.
Как сохранить текст запроса в файл для дальнейшего анализа?
Есть несколько способов:
Для автоматического логирования всех запросов в базе создайте подписку на событие ПриНачалеВыполненияЗапроса в глобальном модуле.
Почему в техжурнале видно не все запросы?
Причины могут быть следующими:
- 🔧 Недостаточный уровень детализации — проверьте параметры в
conf.cfg(раздел 5). - 🗃️ Фильтрация по базе данных — убедитесь, что в настройках журнала указана нужная база.
- ⏱️ Ротация логов — старые записи могут автоматически удаляться. Увеличьте параметр
tech-log-keep-days. - 🔒 Ограничения прав — пользователь, под которым работает сервис 1С, должен иметь права на запись в папку лога.
- 📡 Сетевые запросы — если база находится на удалённом сервере, запросы могут не логироваться локально.
Для диагностики добавьте в conf.cfg строку:
tech-log-include = dbms;sql;perf
и перезапустите сервер.
Как узнать, какой запрос тормозит систему?
Алгоритм поиска:
- 📊 Включите журнал регистрации с фильтром по длительным запросам (раздел 2).
- 🔍 В SQL Profiler отсортируйте запросы по столбцу
Duration(раздел 4). - 📈 В технологическом журнале ищите записи с
duration > 1000(раздел 5). - 🔧 В отладчике анализируйте план выполнения запроса (
Запрос.ПолучитьПланВыполнения()).
Типичные "узкие места":
- Запросы с
ПОЛНОЕ СОЕДИНЕНИЕ(FULL JOIN) больших таблиц. - Конструкции
ГДЕ ПОДСТРОКА(Поле, ...) = ...(не используют индексы). - Вложенные запросы с
В(ВЫБОРКА)вместо временных таблиц.
Можно ли увидеть запросы, которые выполняет фоновое задание?
Да, но с ограничениями:
- 🔄 В журнале регистрации фильтруйте записи по пользователю
"Фоновые задания"или"Регламентные задания". - 📡 В технологическом журнале ищите события с
usrid = "BackgroundJobs". - 🔧 В SQL Profiler настройте фильтр по
ApplicationName(обычно содержит"1C:Enterprise"и ID задания).
Для фоновых заданий в 1С:ERP или 1С:УТ текст запроса можно увидеть в журнале регламентных операций (Администрирование → Поддержка и обслуживание → Регламентные операции).
Если задание выполняется на сервере кластера, подключитесь к нему через консоль администрирования сервера 1С и посмотрите лог конкретного рабочего процесса.