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