1с посмотреть временные таблицы запроса в отладчике
Конфигурации 1С становятся все сложнее часто используются временные таблицы. Данные можно получать непосредственно из отладки.
Для обычных форм вопрос решался через экспортную функцию в модуле консоли, которая получает данные и открывает форму консоли (подобный функционал есть во многих консолях запросов).
Ниже описан метод которой решает ту же проблему для управляемых форм:
В управляемых формах нельзя открыть форму в контексте сервера, но можно получить данные и сохранить я называю это отложенной отладкой.
Этот способ удобно реализован в Управляемой консоли отчетов она позволяет сохранять данные в файле или настройках (ХранилищеСистемныхНастроек).
Сохранение в настройках более удобно т.к. не нужно иметь папку которая доступна клиенту и серверу.
Вызов отладки правильнее получать из Консоль - Инструменты - Конструктор строки отладки
Используется экспортная функция: УКО_Запрос.СохранитьВНастройки(Запрос, ИмяНастройки = "Запрос (из отладки)") Возвращает "Сохранено успешно" - все хорошо, если произойдет ошибка вернет строку с текстом ошибки.
Есть аналогичная функция для сохранения в файл: УКО_Запрос.СохранитьВФайлНаСервере (Запрос, Путь, ИмяБезРасширения = "Запрос (из отладки)")
Пример
0. Используем конструктор строки отладки при необходимости
1. В конфигураторе ставим точку останова перед выполнением интересующего нас запроса
В табло вставляем УКО_Запрос.СохранитьВНастройки(Запрос)
2. Открываем консоль в последних открытых данных должна появится строка Запрос (из отладки).
3. Открываем данные и работаем
Специальные предложения
Чувствую подвох, но никак не пойму где.
1) "управляемая консоль отчетов 2.5.2" входит в состав демонстрационной конфигурации "управляемое приложение" ? если нет, то вот в упор не вижу кнопки "скачать".
была мысль, что это продолжение статьи про консоль запросов по ссылке. но ведь в этой статье используется подобное решение.
опять таки, если это подобное решение, где ссылочка на текущее решение?
(6) Здесь описана методика отладки запроса на УФ.
Управляемая консоль отчетов это продукт поставляется в основном в виде расширения, но есть и внешняя обработка. Реализация описана из УКО. Уберу "Подобное рещени. " чтобы не путать.
Подскажите, как я поняла, значения параметров не передаются?
Но в них вся соль, к тому же бывает что они - таблицы!
Может подскажите какой-нибудь вариант?
(11) А мы сделали так, что в отладке в конфигураторе параметры запроса преобразовываем в строку, а в консоли запросов 2.0 читаем из строки и вуаля, все параметры в том же виде загружены ))
пишет значение -
Переменная не определена (УКО_Сервер)
и в меню файл Запрос (из отладки) не появляется
хотя вроде как расширение встало нормально и раздел новый появился "Упр. консоль отчетов"
Может я вызываю его из слишком специфичного места? Вызываю из обработки Модуль_ДиадокУФ, которая вставлена в конфигурацию, которая в свою очередь запускает модуль, который лежит в в виде внешней обработки на диске в указанной папке.
//Там сложные запросы в которых черт ногу сломит никак не могу разобраться.
(16) Из предоставленной информации: Возможно вы запускаете не на сервере.
Необходимо поставить точку останова на Запрос.Выполнить() ну или когда уже все заполнено далее в табло вычисляемого выражении Shift+F9 вставить текст.
Текст можно получить через консоль - Инструменты - Конструктор строки отладки.
УКО_Сервер - серверный модуль. нужно вызывать в контексте сервера
(17)
да, по точке останова останавливаюсь на Запрос.Выполнить()
значит нахожусь на сервере.
через инструменты тоже не получается, видимо по той же причине: раз в табло написало мне "Переменная не определена (УКО_Сервер) "
значит вызов не прошел
А понял вместо УКО_Сервер используйте УКО_Запрос
Правильнее текст можно получить через консоль - Инструменты - Конструктор строки отладки
Статью поправлю
(19)Спасибо, что помогаете!
Оно продолжает ругаться, но теперь по новому:
Хотя бы "УКО_Запрос" видит
(20) Рад помочь, там просто многое переработал, а статью не поправил. Мои извинения за неудобства
Используйте УКО_Запрос.СохранитьВНастройки
Проверьте конструктором отладки (инструмент в консоли)
Точно! Там написано совсем иначе:
УКО_Запрос.СохранитьВНастройки(Запрос)
Теперь еще по 3-му ругается:
Видимо ошибка
Попробуйте
В указанной строке 470 (УКО_Запрос)
" Если ЗначениеЗаполнено(Объект.МенеджерВременныхТаблиц) Тогда"
заменить на
" Если Объект.МенеджерВременныхТаблиц <> Неопределено Тогда"
(23)Поменяла.
О_О
OMG Все получилось!
И параметры видно заполненные и результат запроса в консоле!
Сейчас умру от счастья!
Извиняюсь что отвлекаю, может подскажите куда копать?
При попытке загрузки в консоль второго запроса, через Данные - Запрос (из отладки) получаю ошибку:
А как дела с производительностью? Например, 10 временных таблиц, в каждой по 10 колонок и 10 тыс. строк. Сколько по времени будут сохраняться данные, и сколько будет запрос открываться в консоли?
(27) Есть лимит (моя проверка) ячеек 500000 на одну ТЗ.
При больших объемах конечно будут проблемы. Не решал и не анализировал данный вопрос.
Расширение добавил в ЗУП3, безопасный режим убрал галку. В конфигураторе видно расширение. В программе консоли нет ((, подскажите , что может быть не так
(30) Спасибо. Появилась консоль. В зупе3 при тестировании расшифровкки РСВ1 (база 5500 сотрудников) говорит, что превышен размер ВТ
Вот пример когда работает без расширений и без лишних телодвижений - https://infostart.ru/public/617990/ .
Нажали кнопку "Сформировать скрипт выгрузки", вставили текст скрипта в отладчик, нажали "Загрузить данные запроса"
И все данные запроса загрузились, и текст и параметры и таблицы из менеджера.
Ну и бонусом, граф запроса отрисовался.
(34) В консоли есть вариант в виде внешней обработки и работает также как вы привели.
Граф отрисовывается здорово, только есть множество других неудобных моментов проект не развивается очень давно.
Приложил файл сравнения функциональности
(35)Не, ну каждый может под себя такую табличку подогнать. Всегда можно расставить баллы так, что ты красавчик, а остальные так себе). Если б это было какое то исследование независимой организацией, можно было бы такие таблички всерьез рассматривать.
По поводу - "много неудобных моментов", ну это очень субъективно. В комментариях особо жалоб я не вижу.
А по поводу того, что проект не развивается, неправда. Последнее обновление было полгода назад. Готовится новое очень серьезное обновление. То что это не быстро, так извините и проект не из самых простых.
(36) оценка субъективная. Можете мне написать что вы считаете неправильным. Можем продолжить общение в личке.
(37)Да дело не в том что я считаю неправильным, просто для одного один функционал важнее, для другого другой. Было бы интересно, если бы например инфостарт делал бы что то типа сравнительных обзоров по основным однотипным продуктам. А так это все очень предвзятая оценка.
Добрый день!
Идея из статьи получения запроса со всеми параметрами из отладчика очень порадовала. Помимо прочих плюшек, в виде параметров из кода на встроенном языке и пр.
Решил применить к отладке и просмотру запросов из ЗУП 3.1, которые используют представления, соответственно их текст просто так в консоль ручками не копируется.
Взял обычный отчет ЗУП 3, например, ОтчетыПоСотрудникам. Там запрос с представлениями - в СКД, как в общем-то в основном в остальных отчетах ЗУП 3.1. Заполнение представлений происходит в функции ЗаполнитьОбщиеИсточникиДанныхОтчета() общего модуля ЗарплатаКадрыОбщиеНаборыДанных.
Поставил точку останова в конце этой процедуры и попытался при отладке выполнить:
УКО_Запрос.СохранитьВНастройки(Объект.СхемаКомпоновкиДанных.НаборыДанных.Данные) - тип НаборДанныхЗапросСхемыКомпоновкиДанных
и
УКО_Запрос.СохранитьВНастройки(Объект.СхемаКомпоновкиДанных.НаборыДанных.Данные.Запрос) - Тип Строка (текст запроса)
получил ошибку:
"Неверный тип параметра, ожидаются типы Запрос, МакетКомпоновкиДанных, ДинамическийСписок, ПостроительЗапроса, ПостроительОтчета, "
Подскажите, как можно применить вашу функцию для сохранения Запроса из отладчика в случае, если этот запрос из СКД?
(40) тип НаборДанныхЗапросСхемы. не обрабатывается необходимо прописывать его обработку (там есть проблемы нет параметров)
Посмотрите как там организовано получение данных из отладки там не сложно
(40) Добавите в новой версии консоли?
Можно еще кстати добавить и обработку параметра строка (текст запроса), просто для удобства переноса одного текста без параметров сразу в консоль. Можно конечно и в отладчике открыть текст, скопировать и перенести
(42) НаборДанныхЗапросСхемы - жаль, а было бы очень полезно для использования в ЗУП 3.1
Идеально, если бы такая консоль существовала там в качестве штатной.
при получении данных из отладки выходит ошибка
Поле объекта не обнаружено (Type)
как побороть? вроде делал по описанию, в отладке был текст Успешно сохранено
еще ошибка вышла, при выполнении части запроса, конструктор Новый (тип) - выходит исключение если Тип - НеизвестныйОбъект
может что-то поменять в коде, чтобы обработался этот случай?
(52) Рекомендую использовать расширение
там наверное какая то проблема с методом Создать внешней обработки
Разберусь отвечу детальнее
"вашу консоль только ради этой функции" поизучайте много полезных функций
"В итоге, разочарован." жаль, советую поизучать
(52) Подумал попробовал в чем могут быть проблемы
Проверьте корректно ли отрабатывает метод создать - он должен возвращать внешнию обработку
Когда все хорошо должно быть как на картинке
Все данные запроса сохраняются возможно там много данных и он не успевает сохранить
И еще момент если в транзакции происходит ошибка что вызывает * транзакции то данные не записываются т.к. сохранение в настройки это запись в базу. В этом случае нужно использовать сохранение в файл
Здравствутйе,при отладке ВОтчета выходит ошибка
: Ошибка при вызове метода контекста (Записать)
Что делаю не так?
(57) Приветствую, нужно больше информации. Может какой то особый тип в полях.
Пройдись отладкой нужно больше информации
(59) Разобрался, у меня такая же ошибка была, Вам нужно убрать галки в свойствах Расширения - Безопасный режим и Защита от опасных действий
(59) Информации недостаточно
поставте останавливатся при ошибке и более детально разберитесь что там
Предполагаю:
Что тз есть какой то неподдерживаемый тип или просто ошибка вам надо разобраться самостоятельно
что еще подсказать не знаю
Подскажите как пользоваться через обработку, а не расширение? в отладчике - пишет "успешно", но во время работы отладчика - в обработке не получится работать в режиме 1с-пред-е, а если перезапустить, то в обработке не появляется "Данные-Запрос из отладки".
Для этого есть конструктор строки отладки он вызывается из Инструменты - Констр.
Гораздо удобнее расширение
Проблема может быть в следующем
- Запись производится в транзакции которая отменена. Например, разбор ошибки при проведении документа - если документ не проводится транзакция отменяется и сохранение в настройки тоже. Как вариант использовать сохранение в файл
- Открыта консоль, в этом случае пункт в меню не появится сразу. Необходимо переоткрыть консоль.
- остальное нужно разбираться
разбор ошибки при проведении документа - если документ не проводится транзакция отменяется и сохранение в настройки тоже
именно так - ошибка документа, а мне надо подтянуть весь мудреный запрос из отладчика.
*жалко, что в Конструкторе строки не обновляется вся формула. приходится в текстовом файлике самостоятельно прописывать путь к обработке и файлику.
версия с обработкой(не расширением) -не получается сохранить в файл, ошибка на скрине.
п.с. сейчас буду пробывать расширением
при использовании расширения: УКО_Запрос.СохранитьВНастройки(Запрос) регистрируется в выражениях.
Далее нужно прекратить отладку, т.к. никак не попасть иначе в пользовательский режим.
После прекращения отладки и перезапуска пользовательского режима в толстом клиенте(на всякий случай) - запускаю расширение, а в кнопке "Данные" не появляет "из запроса в отладке". прошу, подскажите, что не так делаю - нужно разобрать сложный запрос срочно.
п.с. попробывала еще вариант При подключенном расширении - Сохранить в файл - не работает(см.скрин)
п.с.2. Конечно, в настройках расширения - снимала галку "Безопасный режим".
Ура. спасибо, получилось запустить обработку (и расширение) - запрос из отладчика!
Оказывается, что если клиент-серверная база, то нужно папку для сохранения в файл создавать на сервере, а не на локальной машине.
Спасибо огромное за помощь разработчику!
А перенос уже сохраненных данных из настроек в файл с передачей на клиент есть в этой консоли?
т.к. не всегда есть возможность получить доступ к файловой системе сервера и отладку на разных базах копиях было бы удобно проводить.
дописать, конечно, недолго, может и сами сделаем
(72) Открываете из настройки и жмете сохранить как файл. Сохранение в настройки как раз избавляет от проблем с файлами
(73) а ЛимитЯчеекВнешнихИсточников() поставить больше текущего значения к каким-то проблемам может привести? Например 100*6, сейчас 0.5*6
(75) может очень долго срхранение/загрузка проходить.
Большая оптимизация по работе с большими таблицами произведена в Infostart Toolkit
После выполнения запроса с созданием временной таблицы ставим точку останова и открываем для просмотра объект Запрос (Shift+F9).
Меняем Текст запроса на "Выбрать * ИЗ ", где - это имя временной таблицы, которую необходимо просмотреть (в моём случае это ВТСотрудникиДляПечатиТрудовыхДоговоров).
Далее в диалоговом окне "Выражение" пишем "Запрос.Выполнить().Выгрузить()" (без кавычек) и жмем Рассчитать - получаем таблицу значений с данными временной таблицы.
Для просмотра содержимого таблицы значений нужно выделить саму таблицу и нажать F2.
Вот и всё! Надеюсь, кому-нибудь пригодится:)
Специальные предложения
Вообще-то для этого есть Консоль запросов в которой отлаживаешь запрос как хочешь, а потом переносиш в код
(2) Ну- Ну, попробуй в ЗУПе консоль запроса использовать, когда тысяча и одна временная таблица формируют промежуточный итог, а тебе нужно посмотреть, только этот маленький промежуточный итог.
Ktyfa; user712426; AloneWolf; user1485342; 13KrAs; ZOMI; eLeMeNtaLe; 24rus; user1092594; nnnnnndfge; TigerAdmin; user717534; user1027191; yuri_an; user721122; maxst22; doda666; TeMochkiN; Алексей Воробьев; petenko; user693240_abramovskaya; oleganatolievich; user1170869; nata008; collider; armeec; ilyaleontyev; Chai Nic; chembulatov76; Wersia; Ulfhedhinn; Lacrimosa0000; user1058210; wowik; Anthon; + 35 – Ответить
Где индекс это порядковый номер временной таблицы
One_Assembler; graphbuh; yohan19; ilnazio; Yurushev; rusha77; user712426; Ktyfa; wuff; i132; OksanaM; a_a_burlakov; natal_tihom; user1496703; aegoncharov; officeRebot; pilotfitz; user820492; Romario_; user1485342; AskezaMax; nnnnnndfge; _1c_coder; jun-ko; user1593228; ErshKUS; eLeMeNtaLe; Andrei_Ivanov; surr; mpvrus21; Antonov.AV; igor_L; user602678_maxipunchik; 24rus; vshish; shtinalex; TigerAdmin; user717534; NO_FEAR; Ovkay; Roman_Go; pro100; mos_apit; lolozhiga; Tash.B; user721122; jafariuse; Zwek; zoikins; JohnConnor; shapoval; adhocprog; doda666; FatPanzer; TeMochkiN; abkam; Jeka44; Nefrit88; oleganatolievich; SirStefan; Dizel; Лис Р; Andy_NTG; Kazaams; fokses; CratosX; user_2010; VooDOOPRo; user1145086; vyak13; KolBbl4; DrinkMaster; armeec; Matveev_VS; stepani4; eeeio; CepeLLlka; link_l; ResetAtreides; Batman; Dima_; Dimeron; vita8383; chembulatov76; Wersia; Ulfhedhinn; Darlok; kuzyara; korppinen; monopolij; user811769; dablack; fvr2000; EVKash; Painted; cdromscsi; wowik; Sevt_RND; m_aster; MarinaLed; Wilka; TaTaPuH-Magic; asoft-is; APTEM_SLV; FarhadIlyazov; BruSeV; Meson; bforce; ProgrammistC; manlak; suepifanov; mike1970; Danila-Master; veretennikoff; gucci76; Krio2; Brawler; PetrPan; Ziggurat; abadonna83; kuntashov; zarankony; Artem-B; artfa; vvr908; PVG_73; antz; stoptime; DmitrySinichnikov; AlexGroovy; LeXXuS_ju; andron77777; elvira17; fxmike; rpgshnik; HAMMER_59; rusmil; madonov; SerVer1C; Shaldryn; kiruha; vladismi; Art1387; A_Max; user705522_constantin_h; CyberCerber; + 146 – Ответить
Индекс временной таблицы может меняться, а вот имя никогда.
graphbuh; rusha77; user712426; alul; aegoncharov; user1485342; 13KrAs; Alister; Andrei_Ivanov; mpvrus21; realEvgenius; A1ex_2; TigerAdmin; consplus_pavlov; yuri_an; tormozit; shalupov61; Tash.B; user721122; AnddnA; maxst22; mikl79; shapoval; adhocprog; FatPanzer; oleganatolievich; bohdan-k; hcooh; CratosX; Alien_RS_Forever; schslava; elizarovs; tiro; armeec; Aspire1C; stepani4; eeeio; Wersia; Painted; wowik; user705522_constantin_h; romankoav; spezc; manlak; mike1970; Danila-Master; brr; Krio2; abadonna83; fxmike; kiruha; + 51 – Ответить
(5) Как угодно, все зависит от ситуации. Мне проще посмотреть Запрос.МенеджерВременныхТаблиц.Таблицы и посмотреть индекс. Это удобство.
ВыполнитьПакетСПромежуточнымиДанными() - когда хочется посмотреть все таблицы и проанализировать. Все находится перед глазами. Особенно хорошо, когда временных таблиц не много, иначе все равно приходится копаться в них. В таком случае в табло отладки интересующие таблицы удобнее вставить.
Запрос.МенеджерВременныхТаблиц.Таблицы.Найти().ПолучитьДанные().Выгрузить() - когда видишь текст запроса, видишь имя таблицы, а индекс понять сложно.
Своя функция в общем модуле или метод автора - Если 8.2 и ранние 8.3, то метод автора или своя процедура в общем модуле. С появлением расширений в 8.3.6 можно обойтись экспортной функцией в обработке.
Хорошо знать инструменты и использовать их в нужный момент.
P.S. Лично я не догадывался, что можно хитрить с текстом запроса. Буду использовать в других случаях.
One_Assembler; user712426; Kreitr; buddha667; wuff; Kostik_; _Ramzes; bondaleksey; 24rus; TigerAdmin; user711584_y475; Ponommax; shalupov61; fristaller; Andy_NTG; Designer1C; vyak13; RodinMax; tiro; Nucleus; &rew; BruSeV; molodoi1sneg; + 23 – Ответить
Cодержимое указанного ниже веб-сайта в этом приложении блокируется. Aboutsecurity_1cv8c.exe 1
Проблема: После обновления на 1С:Бухгалтерию предприятия 3-й версии, при нажатии на закладку командного интерфейса 1С:предприятие, выскакивает ошибка: Aboutsecurity_1cv8c.exe или Aboutsecurity_1cv8.exe «Содержимое указанного ниже веб-узла в э Google maps, поиск оптимального маршрута 5
В данном посте хочу коснуться основных аспектов построения оптимального маршрута с использованием API Google maps. Исходные данные для построения маршрута: * Географические координаты объектов, которые хранятся в базе; * Координаты начальной и коне База 1С при запуске уходит в дамп и вылетает 1
В последнее время частенько обращаются пользователи у которых после замены или ремонта компьютера 1С не запускается, а точнее при открытии уходит в dump и вылетает. Как правило, решение одно: Отключить аппаратное ускорение видеокарты В Window Внешние источники данных 0
Почему данная возможность вызывает такой интерес? Любой человек, который программировал в 1С при этом достаточно неплохо знаком с SQL и хотя бы в общих чертах знаком с архитектурой и принципами разработки других технологических платформ для бизнес пр Выгрузка из 1С на SFTP 4
Думаю, что все знают, как работает 1с с FTP сервером, но вот как работать с sFTP или FTPs сервером? Первое что Вам нужно сделать - это установить бесплатную программу WinSCP, скачать ее Вы сможете здесь, также там есть вся необходимая литература п Посмотреть все результаты поиска похожих
Еще в этой же категории
17 правил для составления оптимального ЗАПРОСа к данным базы 1С 44
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ Нарастающий итог в запросе 23
Необходимо использовать левое соединение таблицы с самой собой. ВЫБРАТЬ Обороты.Период, Обороты.Номенклатура, Обороты.Количество ПОМЕСТИТЬ ВТдвижения ИЗ РегистрНакопления.Обороты КАК Обороты ; //////////////////////////////////////////////// Полезные сведения о языке запросов 1С 8.х 22
В статье приведены полезные приемы при работе с запросами 1С v.8.2, а также сведения, которые не так хорошо известны о языке запросов. Я не стремлюсь дать полное описание языка запросов, а хочу остановиться лишь на некоторых моментах, которые для ко Оператор ПОДОБНО 19
ПОДОБНО - Оператор проверки строки на подобие шаблону. Аналог LIKE в SQL. Оператор ПОДОБНО позволяет сравнить значение выражения, указанного слева от него, со строкой шаблона, указанной справа. Значение выражения должно иметь тип строка. Если з Оператор ВЫРАЗИТЬ, аналог методов Лев, Прав, СокрЛП в Запросе? 11
Использовать конструкцию « ВЫРАЗИТЬ »: Запрос.Текст = " … |ГДЕ | (ВЫРАЗИТЬ(ЕдиницыХранения.Владелец.Наименование КАК СТРОКА(4))) Груз" ; Запрос.УстановитьПараметр(" Груз" ," Тонн" ); С целью приведения строк неограниченной длины к строкам Посмотреть все в категории Запросы
После достаточно долгого отсутствия по причине полной занятости все таки решил написать очередной пост.
Отладка
Недавно узнал что некоторые не знают что в платформу 1С 8.3 есть встроенный инструмент по отладке временных таблиц. Появился он относительно недавно, в одном из релизов редакции 1С 8.3.8 — «ПолучитьДанные» () применительно к МенеджеруВременныхТаблиц .
Между тем данный инструмент значительно облегчает возможности при исследовании проблем, например при разборе типовых механизмов.
Все достаточно просто.
1. Получаем временные таблицы запроса
Во время использования отладки для начала вычисляем список временных таблиц, Запрос.МенеджерВременныхТаблиц.Таблицы. Таким образом мы можем получить список таблиц, сформированный выполняемым запросом:
2. Получаем временную таблицу для отладки
Затем мы обращаемся к нужной нам для отладки временной таблице, добавляя Получить()
3. Получаем непосредственно данные
Использование метода ПолучитьДанные() позволяет получить коллекцию РезультатЗапроса непосредственно для выбранной временной таблицы.
Далее, применяя метод Выгрузить() — получаем таблицу значений, содержащую непосредственно отлаживаемые данные.
В случае отладки непосредственно таблицы с индексом 0 (как известно, индексы и нумерация в 1С начинается с нуля) получение данных выполняется с помощью вычисления следующей строки:
Запрос.МенеджерВременныхТаблиц.Таблицы.Получить(0).ПолучитьДанные().Выгрузить()
Отладка таким образом займет меньше времени, чем используя разные «костыли» 😀
На этом все, хороших Вам разработок и с прошедшими праздниками!
PS. А для тех кто занимается поддержкой расчета зарплаты на предприятии (не только программисты), напоминаю что по этой тематике выделен отдельный ресурс Pro-Zup.info.
Сразу оговорюсь, эта статья не про отладку больших пакетных запросов. На эту тему есть много хороших статей, например эта или эта.
Эта статья именно про удобный просмотр содержимого большого пакетного запроса в режиме отладки. Когда нужно видеть, что получилось в одной ВТ, что в другой, в третьей, потом опять вернуться в первую, ну в общем, вы понимаете, о чем я. Работать с запросами, содержащими большое количество временных таблиц, приходится очень часто. Например в механизмах расчета зарплаты в ЗУП, в подборе видов запасов или расчете себестоимости в ЕРП или УТ и во многих других.
Статья очень короткая, и, наверно, не заслуживает того, чтобы быть размещенной на INFOSTART . Но мне просто очень понравилась совсем незначительная доработка, которая позволила экономить много времени. По этому, спешу поделиться.
И так, ближе к делу.
Не для кого не секрет, что начиная с платформы 1С 8.3.8 появился очень удобный механизм для просмотра результата выполнения пакетного запроса.
Во-первых , у объекта встроенного языка «Запрос» появился новый метод «ВыполнитьПакетСПромежуточнымиДанными», который позволяет получить результат с промежуточными результатами временных таблиц:
Напомню, существующий ранее метод «ВыполнитьПакет» возвращает в результате выполнения только данные о количестве строк временных таблиц.
Во-вторых , у объекта встроенного языка «МенеджерВременныхТаблиц» появилось новое свойство «Таблицы», которое содержит коллекцию временных таблиц хранящуюся в менеджере:
Для каждой временной таблицы можно выполнить метод «ПолучитьДанные», который содержит результат запроса этой таблицы. Затем можно выгрузить данные в таблицу значений. Полный синтаксис ниже:
В результате, можно получить данные каждой таблицы менеджера ВТ в виде таблицы значений:
Пользоваться объектом «МенеджерВременныхТаблиц» более удобно, так как можно посмотреть все таблицы, сформированные для менеджера. Таблицы могут формироваться отдельно, в разных процедурах. Также можно увидеть имена временных таблиц в свойстве таблицы менеджера «ПолноеИмя». Это очень помогает при большом их количестве.
Все это, без условно, очень удобно. Раньше для этих же целей приходилось использовать специальные процедуры общих модулей «ПоказатьВременнуюТаблицу» для просмотра содержимого пакетного запроса или изворачиваться, как описано здесь. Теперь всего этого делать не нужно.
Все бы хорошо, но есть один нюанс. Если временных таблиц много, а часто их бывает действительно много, очень не удобно постоянно возвращаться в отладчике к списку таблиц менеджера ВТ, чтобы посмотреть номер интересующей таблицы:
А потом подставлять этот номер в выражение:
Хотелось бы быстро перемещаться между таблицами менеджера и просматривать их содержимое.
Такая возможность есть. Для этого нужно разместить экспортную функцию с очень простым кодом в любом серверном общем модуле. Если конфигурация на замке, можно добавить расширение.
Код функции следующий:
Данная функция создает структуру, в которую добавляет все временный таблицы менеджера ВТ. Ключ структуры – имя таблицы, значение – данные этой таблицы, выгруженные в таблицу значений.
Теперь в режиме отладки, в форме расчета выражения можно вставить следующую строку:
Если менеджер ВТ называется по другому, соответственно, нужно изменить имя переменной.
В результате мы получаем структуру с данными, которую можно удобно и быстро просматривать:
Согласитесь, это значительно удобнее, чем запоминать номера таблиц и получать отдельно данные для каждой таблицы.
Расширение с общим модулем и приведенной в статье экспортной функцией можно скачать ниже.
Расширение можно использовать для любой конфигурации 1С, работающей в режиме совместимости 8.3.12.
Читайте также: