Случилось страшное, и мне пришлось заглянуть в функцию РасчетСебестоимости.РассчитатьСебестоимость(Период, Организация, Ссылка, Режим = "Запасы") из выше означенной конфигурации.
В ней в свою очередь вызывается несколько однотипных процедур, в которые передается ссылка на МенеджерВременныхТаблиц, и они в нем добавляют (удаляют, меняют) временные таблицы. Иногда хочется посмотреть эти промежуточные результаты во время отладки.
Выходом из ситуации стала функция:
Функция ВыполнитьЗапросДляОтладчика(ИсходныйЗапрос,МенеджерВременныхТаблиц) Экспорт
МногоТЗ = Новый Массив;
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Запрос.Текст = ИсходныйЗапрос.Текст;
Для Каждого Элемент Из ИсходныйЗапрос.Параметры Цикл
Запрос.УстановитьПараметр(Элемент.Ключ,Элемент.Значение);
КонецЦикла;
Табл = Новый ТаблицаЗначений;
Табл.Колонки.Добавить("ИмяВРТаблицы");
Табл.Колонки.Добавить("Колво");
regExp = Новый COMОбъект("VBScript.RegExp");
RegExp.Pattern = "(ПОМЕСТИТЬ [А-Яа-я0-9_]+)";
RegExp.Global = Истина;
RegExp.Multiline = Истина;
Matches = RegExp.Execute(ИсходныйЗапрос.Текст);
Для Счетчик = 0 По Matches.Count - 1 Цикл
Match = Matches.Item(Счетчик);
Стр = Табл.Добавить();
Стр.ИмяВРТаблицы = СокрЛП(СтрЗаменить(Match.Value,"ПОМЕСТИТЬ ",""));
Стр.Колво = 1;
КонецЦикла;
RegExp.Pattern = "(УНИЧТОЖИТЬ [А-Яа-я0-9_]+)";
RegExp.Global = Истина;
RegExp.Multiline = Истина;
Matches = RegExp.Execute(ИсходныйЗапрос.Текст);
Для Счетчик = 0 По Matches.Count - 1 Цикл
Match = Matches.Item(Счетчик);
Стр = Табл.Добавить();
Стр.ИмяВРТаблицы = СокрЛП(СтрЗаменить(Match.Value,"УНИЧТОЖИТЬ ",""));
Стр.Колво = -1;
КонецЦикла;
Попытка
Запрос.Текст = ИсходныйЗапрос.Текст;
Табл.Свернуть("ИмяВРТаблицы","КолВо");
Для Каждого Стр Из Табл Цикл
Если Стр.Колво = 1 Тогда
Запрос.Текст = СтрЗаменить(Запрос.Текст," "+Стр.ИмяВРТаблицы," ТЕСТТЕСТ_" + Стр.ИмяВРТаблицы);
Запрос.Текст = Запрос.Текст + Символ(10) + Символ(13) + "; ВЫБРАТЬ * ИЗ ТЕСТТЕСТ_" + Стр.ИмяВРТаблицы;
Запрос.Текст = Запрос.Текст + Символ(10) + Символ(13) + "; УНИЧТОЖИТЬ ТЕСТТЕСТ_" + Стр.ИмяВРТаблицы;
КонецЕсли;
КонецЦикла;
МногоТЗ = Запрос.ВыполнитьПакет();
Для Индекс = 0 по МногоТЗ.ВГраница() Цикл
Если ТипЗнч(МногоТЗ[Индекс]) = Тип("РезультатЗапроса") Тогда
МногоТЗ[Индекс] = МногоТЗ[Индекс].Выгрузить(ОбходРезультатаЗапроса.Прямой);
КонецЕсли;
КонецЦикла;
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
Возврат МногоТЗ;
КонецФункции
Как использовать ее, наверное, понятно. На всякий случай ...
Вот, собственно, и все!