Разработчикам 1С, часто, приходится анализировать результаты сложных запросов в конфигурации с большим количеством параметров. Отлаживать такие запросы проще в консоли запросов в режиме 1С-Предприятия, т.к. при изменении не требуется перезапускать 1С. Но при этом возникают пброблемы с точной имитацией параметров в консоли запросов. Если же тест запроса можно легко выловить в отладчике через свойство запроса — Запрос.Текст, то вот перенести большое количество параметров из конфигуратора в стандартрую консоль запросов можно только вручную, что занимает продолжительное время.
Чтобы облегчить перенос параметров из конфигуратора в консоль запросов, предлагаю заменить стандартную консоль на ту, что что в этой публикации. Плюс выполнять ряд действий для передачи параметров из конфигурации в данную консоль.
Консоль запросов в данной публикации — доработанная типовая консоль, с возможностью принятия параметров запроса через внешний файл, который предварительно сохраняется из конфигуратора в момент отладки.
Для выгрузки параметров запроса во внешний файл следует воспользоваться табло в отладчике: Методом ЗначениеВФайл, который надо выполнить в точке останова перед выполнением запроса, а также получить и скопировать текст запроса. Пример:
ЗначениеВФайл(«C:\_Параметры.txt»,Запрос.Параметры)
Запрос.Текст
Далее уже в режиме 1С-Предприятия в консоли запросов вставить текст запроса и заполнить параметры данного запроса из внешнего файла.
Видим заполненные параметры, после чего можно выполнять запрос в консоли:
Чтобы всегда иметь под рукой вспомогательную строчку сохранения праметров — ЗначениеВФайл(«C:\_Параметры.txt»,Запрос.Параметры)
Можно ее сохранить в шаблоны. Если у кого-то возникли проблемы с созданием собственного Файла шаблонов 1С, то приланаю отдельный файл с шаблонами в котором хранится данная строка.
Как вариант, сериализовывал бы весь запрос в файл, а в консоли и текст и параметры заполнял полностью из файла.
(1) khaoos, спасибо, действительно можно попробовать упростить передачу текста запроса вместе с параметрами.
Доработаю на днях.
«+» за идею
(1) khaoos, сериализовать запрос в окне Табло в момент отладки не получится, поэтому этот вариант отпадает…
(3) blindcat2006, спасибо!
(4) действительно: Запрос не сериализуется. Читал одну публикацию давненько, мне казалось, там автор это делал. Но память меня подвела, там речь шла о результате запроса.
В принципе, многие консоли предоставляют экспортную функцию «Отладить» или что-то типа того, куда передается в качестве параметра сам объект типа «Запрос». Можно также нарисовать функцию, например, «СохранитьДляОтладки», в которую передавать запрос и имя файла (можно короткое), в самой функции сериализовывать структуру, состоящую из текста запроса и таблицы параметров, в файл с указанным именем (если имя короткое — сохранять в папку с обработкой). Но в табло придется тогда вручную писать ВнешниеОбработки.Создать(<ИмяФайлаОбработки>).СохранитьДляОтладки(Запрос, <ИмяФайла>). Такое ощущение, что лучше оставить все как есть, кажется, что без особой надобности все это 🙂
Есть что-то похожее в консоли Чистова. В своей консоле сделал кнопку которая возвращает готовую строку, ее вызываем по shift-f9 далее все выполняется заботливым кодом самой консоли.
(8) Angeros,
Можно ссылку на консоль Чистова?
Не совсем понял что за готовую строку возвращает кнопка в вашей консоли?
Суть этой консоли — отладка запросов, хранящихся в конфигурации.
(9) Готовая строка вот что-то на подобии такой — ВнешниеОбработки.Создать(<ИмяФайлаОбработки>).СохранитьДляОтладки(Запрос)
но только полностью заполнена <ИмяФайлаОбработки> — т.к. он известен. этих параметров достаточно.
Отладка запросов при отладке одна из важнейших функций всех доработанных консолей
(9) вообще поиск рулит.
Один из клонов воттут или тут есть.
Для себя писал консоль сам, и частично заимствовал идеи оттуда.
выгружать параметры отдельно — не удобно, хотя при данной реализации просто. Лучше написать функцию, которая их обрабатывает и передает из отладчика.
(11) Angeros, да есть плюс тех консолях в том что там можно сохраниь запрос с параметрами в файле. В этой консоли плюс — простота использования 🙂
+1 за идею
По моему пора объединяться и сливать все идеи по консоли в одну разработку, которую и обновлять, хотя наврное уже сделали.