Эта тема тут поднималась уже не раз - как посмотреть итоговый запрос отчета на СКД, чтобы понять, что там не так. Понятно, что он лежит в макете компоновки, но тем, кому, как мне, недостаточно почитать текст запроса, а хочется еще, например, покрутить в нём условия, нужно этот текст запроса скопировать в консоль запросов. Всё бы ничего, да только в этот запрос нужно установить какие-то параметры. Если это ваша нетленка, то их обычно не очень много, а вот в типовых бывают десятки.
Нас спасёт тот факт, что во многих консолях запросов есть возможность сохранить запрос из отладки. Например, для универсальных инструментов это такой вызов:
УИ_._От(Запрос)
Для Инфостарт Тулкит такой:
ИТК.Отл(Запрос)
Осталось получить собственно запрос. Текст в макете компоновки есть, параметры тоже, осталось это всё объединить:
Функция ЗапросДляОтладки(МакетКомпоновки, ИмяНабораДанных = "НаборДанных1", ИмяНабораОбъединений = Неопределено) Экспорт
Запрос = Новый Запрос;
Если ИмяНабораОбъединений <> Неопределено Тогда
Запрос.Текст = МакетКомпоновки.НаборыДанных[ИмяНабораОбъединений].Элементы[ИмяНабораДанных].Запрос;
Иначе
Запрос.Текст = МакетКомпоновки.НаборыДанных[ИмяНабораДанных].Запрос;
КонецЕсли;
Для Каждого Параметр Из МакетКомпоновки.ЗначенияПараметров Цикл
Если ТипЗнч(Параметр.Значение) = Тип("ВыражениеКомпоновкиДанных") Тогда
Значение = Вычислить(Параметр.Значение);
Иначе
Значение = Параметр.Значение;
КонецЕсли;
Запрос.УстановитьПараметр(Параметр.Имя, Значение);
КонецЦикла;
Возврат Запрос;
КонецФункции
И теперь просто ставим точку останова сразу после получения макета СКД в процедуре ПриКомпоновкеРезультата() и пишем в табло
УИ_._От(ЗапросДляОтладки(МакетКомпоновки))
Несложно доработать функцию, чтобы она могла добавлять в запрос менеджер временных таблиц, если он у вас используется. Функцию удобно положить в общий модуль, или если это недоступно - просто в сам модуль отчета.
После сохранения запроса просто заходим в консоль отчетов в 1С: Предприятии, открываем запрос, все параметры уже установлены - можно отлаживать!
Думаю, неважно, в какой версии конфигурации и платформы это использовать, лишь бы ваша консоль запросов её поддерживала.
Аналогичная функция для динамического списка (используем ранее написанную функцию):
Функция ЗапросДинамическогоСписка(ЭлементФормыСписок) Экспорт
Схема = ЭлементФормыСписок.ПолучитьИсполняемуюСхемуКомпоновкиДанных();
Настройки = ЭлементФормыСписок.ПолучитьИсполняемыеНастройкиКомпоновкиДанных();
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(Схема, Настройки);
Возврат ЗапросДляОтладки(МакетКомпоновки, "НаборДанныхДинамическогоСписка");
КонецФункции
Вызывать так:
УИ_._От(ЗапросДинамическогоСписка(Элементы.Список))
Напрашивается доработка в виде использования схемы запроса для более аккуратной работы с параметрами и поиск запроса в наборах данных, но пока необходимости не было.