Как посмотреть фактический запрос СКД в консоли компоновки данных на управляемых формах

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При разработке сложных отчетов на базе Системы компоновки данных (СКД) программисты часто сталкиваются с ситуацией, когда итоговый результат в отчете не соответствует ожиданиям. Это происходит потому, что СКД — это не просто «выполнитель запроса», а мощный генератор, который динамически изменяет исходный текст запроса: добавляет условия ГДЕ, присоединяет новые таблицы для получения полей, обрабатывает параметры и учитывает права доступа (RLS). Разберемся, как увидеть тот самый финальный текст запроса, который платформа 1С отправляет на СУБД.

Способ 1: Анализ макета компоновки через XML

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

  1. Загрузите вашу схему компоновки (файл .dcs или текст XML) в консоль.
  2. Выполните настройку параметров и отборов, которые вас интересуют.
  3. Нажмите кнопку формирования отчета.
  4. Найдите в интерфейсе консоли закладку с техническими данными. Часто она называется «Макет для табличного документа XML» или просто «XML макет».
  5. Перед вами откроется большой объем структурированного текста в формате XML. Не пугайтесь его объема — это сериализованный макет компоновки, который система подготовила перед выполнением.
  6. Используйте поиск (Ctrl+F) и введите ключевое слово ВЫБРАТЬ (или SELECT, если конфигурация на английском).
  7. Пролистайте документ вниз до раздела, где описываются наборы данных. Именно там вы увидите свой запрос, но уже в модифицированном виде: со всеми подставленными таблицами и условиями, которые добавила СКД на основе ваших настроек.

Способ 2: Использование продвинутых инструментов разработчика

Для более комфортной работы рекомендуется использовать специализированные расширения или обработки. Одним из наиболее мощных инструментов является комплекс «Инструменты разработчика». Проанализируем возможности современных версий этого инструментария:

Ранее считалось, что подобные инструменты работают только в толстом клиенте (обычные формы). Однако современные версии полностью адаптированы под управляемое приложение. Рассмотрим преимущества использования профессиональной консоли СКД:

Способ 3: Программный метод получения запроса

Иногда требуется программно «отловить» запрос непосредственно в коде вашего отчета или обработки. Для этого мы можем воспользоваться объектами платформы. Разберем пример кода, который позволяет получить текст запроса из макета компоновки:


// Создаем компоновщик макета
КомпоновщикМакета = Новый ГенераторМакетаКомпоновкиДанных;

// Формируем макет компоновки
// СхемаКомпоновкиДанных - ваша схема, Настройки - текущие настройки отчета
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);

// Проходим по наборам данных в полученном макете
Для Каждого НаборДанных Из МакетКомпоновки.НаборыДанных Цикл
    Если ТипЗнч(НаборДанных) = Тип("НаборДанныхЗапросМакетаКомпоновкиДанных") Тогда
        // Выводим итоговый текст запроса в консоль сообщений
        Сообщить("Фактический запрос:");
        Сообщить(НаборДанных.Запрос);
    КонецЕсли;
КонецЦикла;

Этот метод является самым точным, так как объект НаборДанныхЗапросМакетаКомпоновкиДанных содержит именно ту строку, которая будет передана в СУБД после обработки всеми механизмами платформы 1С.

Особенности работы в управляемых формах

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

Многие старые обработки требуют запуска в толстом клиенте. Если вы работаете в тонком клиенте (через веб-сервер или обычное подключение), такие консоли могут не запуститься или выдавать ошибки доступа к файловой системе. Рекомендуем использовать консоли, реализованные в виде Расширений конфигурации. Они бесшовно интегрируются в интерфейс и имеют доступ ко всем серверным процедурам без необходимости переключения режима запуска платформы.

Дополнительные возможности для отладки

Помимо самого текста запроса, в современных консолях (например, входящих в состав БСП — Библиотеки стандартных подсистем) можно проанализировать следующие аспекты:

Резюме: Для быстрого анализа достаточно посмотреть XML-макет в любой доступной консоли. Для глубокой разработки и оптимизации запросов (особенно с временными таблицами) лучше один раз настроить «Инструменты разработчика» или использовать качественную консоль с портала Infostart, адаптированную под управляемое приложение.

← На главную