Использование yEd для понимания картины запроса

Опубликовал Dima Neumoichev (Ndochp) в раздел Программирование - Инструментарий

Как увидеть структуру запроса, если даже надписи на вкладках пакетника не видны.

Про yEd тут уже писали, но применительно к модулям. Я же вспомнил про него, когда понадобилось слегка переработать отчет ЗУП "Анализ начисленных налогов и взносов". Надо было вытащить некоторые промежуточные данные.
Основной набор данных этого запроса содержит 34 запроса в пакете. Понять, что с этим делать было слабо реально, но на помощь пришли проверенные инструменты (разработчика в мобильной версии) Консоль запросов с GOLD Parser'ом поскрипев разложила эту жуть в дерево ВТ, подзапросов и объединений. Однако в этот раз все оказалось хуже, чем обычно: ВТшек оказалось слишком много. Поэтому возникла идея получить более наглядную картину чем последовательность их создания. На помощь пришел диаграмме yEd с возможностью импорта данных графа из экселя.

В итоге родилась следующая последовательность действий, приводящая к красивой картинке:

1. Гружу запрос в консоль с ГолдПарсером (консоль запросов из комплекта мобильных инструментов разработчика в моем случае)

2. Вывожу список дерева запроса в текстовый документ интересует колонка "дерево запроса" "тип узла".  можно больше, но эти - обязательно.

 

3. Копипащу результат в спец обработку: в моем варианте она готовит данные о том какая таблица для какой используется объединения и внутренние запросы игнорируются

4. Результат работы обработки копипащу в эксель файл сохраняю и открываю yEd'ом

5. В диалоге настройки заполняю:

5.1 в Edge list Data - выделяем первый блок эксельки где несколько колонок Target - колонка A источник – B. Галку снимаем

5.2 в Node list - колонка А после списка связей. галку снимаем

 

5.3 На соседней странице (Presentation) из выпадушки Label Text выбираем Node data1 Layout – Hierarchical

 

 Получаем следующий красивый результат (чтобы не ломать глаза и не равть экран вот ссылка на 100% масштаб картинки):

 

Вот собственно и все. Для пущей красоты можно сделать автогруппировку. Natural Cluster дает ИМХО лучшую картинку. В приложенных файлах в последнем показан результат после исправления нескольких ошибок группировки. Как оно было изначально можно понять по цвету узла.

Ссылки:

1. yEd

2. Мобильные инструменты разработчика

3. Инструменты разработчика

 

 

Скачать файлы

Наименование Файл Версия Размер
Обработка
.epf 6,44Kb
17.12.15
16
.epf 1.1.1 6,44Kb 16 Скачать
Пример обработки запроса
.zip 39,69Kb
27.12.13
8
.zip 39,69Kb 8 Скачать
Общий архив
.zip 126,21Kb
17.12.15
46
.zip 1.1.1 126,21Kb 46 Скачать

См. также

Добавить вознаграждение
Комментарии
1. Андрей Акулов (DrAku1a) 1185 22.01.14 05:00 Сейчас в теме
2. Dima Neumoichev (Ndochp) 97 22.01.14 06:28 Сейчас в теме
У Вас насколько я понимаю строится дерево, аналогично голд парсеровскому? (только не интерактивное вроде, а картинкой)
Это несколько не та задача. Мне надо было, например, вывести пользователю базу с начала года. По Yed'овской структуре более менее видно, что надо подкрутить ДоходыЗаГодыИтого и ВТБазаНарастающимИтогом подключить в ПоляОтчета и Запрос1. Из дерева это видно гораздо хуже.
А вот то, что если хочешь отрезать пособия от запроса , то можно грохнуть ВТУчетнаяПолитикаНалоговыйУчет, но нельзя ВТНалоговый учет из дерева не видно совсем.
3. Сергей Старых (tormozit) 4105 22.01.14 09:18 Сейчас в теме
yEd - мощная штука, хотя и глючная. Жаль у него нет COM интерфейса, а то можно было бы сделать полностью автоматическую генерацию графа.
4. Сергей Старых (tormozit) 4105 22.01.14 09:21 Сейчас в теме
Кстати пользуясь случаем хочу отметить, что в конструкторе запросов ИР приведенный в статье запрос выглядел бы заметно более читабельно. Если кинешь текст запроса, я сделаю скриншот. А вообще лучше текст запроса включить в статью.
5. Dima Neumoichev (Ndochp) 97 22.01.14 12:02 Сейчас в теме
Запрос - типовой ЗУПовский "Анализ начисленных налогов и взносов". Не включил его в статью из соображений соблюдения авторских прав.
Кстати, конструктор запросов ИР в комплект мобильных ИР где-то включен? А то кнопка "Конструктор" в консоли запросов ИР вызывает вроде обычный конструктор.
6. Сергей Старых (tormozit) 4105 22.01.14 13:02 Сейчас в теме
7. Анатолий Бритько (headMade) 130 23.01.14 15:13 Сейчас в теме
(5) Ndochp,
можно вас попросить выслать текст запроса tormozit (по почте или в личку если так важно соблюдение авторских прав).
а то мне хотелось бы взглянуть на то как он выглядит в конструкторе запросов ИР
8. Dima Neumoichev (Ndochp) 97 24.01.14 00:51 Сейчас в теме
Уже отправил. Самому интересно.
9. Юрий Осипов (yuraos) 843 24.01.14 05:50 Сейчас в теме
Очень интересно!
Правда построенная диаграмма тоже достаточно необъятна.
;)
10. Nathan Rothschild (Rothschild) 24.01.14 05:51 Сейчас в теме
Нда,
конструктор запросов порой просто убивает
своей неадекватностью решаемым задачам.

Иногда он может в буквальном смысле убить сеанс 1С,
когда в запросе вроде того, что на скриншоте выше,
переименовать какой-нибудь подзапрос в выше стоящих батчах пакета запросов.
11. Dima Neumoichev (Ndochp) 97 24.01.14 08:58 Сейчас в теме
(9) Я не виноват, это типовая ЗУП :)
И боюсь нагляднее этот запрос уже не нарисовать.
12. Антон gendal (gendal) 2 24.01.14 10:58 Сейчас в теме
Интересно, почему 1С штатно такой механизм визуализации запросов не имеет в конфигураторе. Иной раз об их "трехэтажные" голову разбить можно.
13. Сергей Старых (tormozit) 4105 25.01.14 10:14 Сейчас в теме
Вот текст этого запроса в конструкторе запроса ИР. Благодаря ему исправил несколько ошибок в своем конструкторе. Т.е. в предпоследней версии 3.02 он не открывается из-за них. В свежей версии 3.03 они уже исправлены.
(картинка может не показываться из-за глюка сайта)
Прикрепленные файлы:
14. Сергей (Che) Коцюра (CheBurator) 3367 05.02.14 13:05 Сейчас в теме
(12) потому что они дятлы. у них мозги не в ту сторону повернуты. по живому не работали. пишут сферических коней на свой мкс...
wolfsoft; +1 Ответить
15. Денис Васильев (Denis_Viktorovich) 138 06.02.14 20:11 Сейчас в теме
Да не то чтобы дятлы, просто у них наверное на каждый запрос нанята одна штатная единицы с двумя высшими математическими образованиями и они не понимают что люди которые разбирают их код работают со всеми их ними запроса ми и конфами в одиночку.
16. Антон gendal (gendal) 2 08.02.14 14:33 Сейчас в теме
Иногда стыдно за поделки 1С перед пользователями. Начинали работать с УПП в 2006 году, так там блок ЗУП вообще никакой был. Штатные программисты, написавшие старую ЗП на ФоксПро, вместо которой должно было встать УПП, смеялись, глядя на это чудо. "Почему это так сделано?" - спрашивали они
17. Гусен Халилуллаев (Afandi) 10.02.14 13:00 Сейчас в теме
При загрузке файлы оказываются не полными. В чем проблема?
18. Dima Neumoichev (Ndochp) 97 10.02.14 13:46 Сейчас в теме
Предположительно в Инфостарте глюк произошел. Я когда скачал в начале файла был HTML код заголовка инфостарта.
Я с техподдержкой связался, чтобы не ждать ответа пришли мыло, скину напрямую.
19. Dima Neumoichev (Ndochp) 97 10.02.14 17:42 Сейчас в теме
Ответ от техподдержки
>======================= СООБЩЕНИЕ ===================================

Добрый день!
Проблема исправлена, попробуйте скачать файл повторно, загрузка будет бесплатной.

>===========================================================­==========

Относилась ли бесплатность ко мне как автору обращения, или к любому пользователю, скачавшему файл я ХЗ.
20. Анатолий Бритько (headMade) 130 26.02.14 15:00 Сейчас в теме
"сновной набор данных этого запроса содержит 34 запроса в пакете."

подскажите как вы пакеты вытягиваете в один общий запрос?
21. Dima Neumoichev (Ndochp) 97 26.02.14 15:52 Сейчас в теме
(20) headMade, в данном случае никак. Просто беру текст запроса для набора данных и копипащу в консоль запросов из Инструментов Разработчика. Там 33 команды "поместить в".
22. Dima Neumoichev (Ndochp) 97 17.12.15 16:23 Сейчас в теме
Обновлена обработка и общий архив.
Парсер теперь вместо имени подчиненного узла "<ChooseTable>" стал отдавать "<TableWithName>"
Соответственно, если вы качали прошлую версию, то надо заменить строку 19:
Если Найти(строка, "<ChooseTable>") > 0  тогда

на
Если Найти(строка, "<ChooseTable>") > 0 
Или Найти(строка, "<TableWithName>") > 0 Тогда