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