Диаграмма объектов 1С 🏗 на Plant UML

0. a_plastinin 229 23.08.22 11:10 Сейчас в теме
Внешняя обработка, которая генерирует диаграмму объектов 1С 🏗 на языке PlantUML. Использует библиотеку для построения диаграммы объектов в нотациях метаданных 1С.

Перейти к публикации

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Serg O. 208 23.08.22 13:20 Сейчас в теме
Супер! БОЛЬШОЕ спасибо автору!

как раз что-то подобное хотел
в EDT есть что-то подобное ... построение схемы метаданных и их отношений
(но без реквизитов)

неплохо бы ещё общие модули как-то подтянуть...
(и экспортные процедуры и функции вместо реквизитов)

какой модуль из какого объекта тянется - было бы вообще огонь!
gortol; Alish009; a_plastinin; +3 Ответить
2. quazare 3184 23.08.22 14:46 Сейчас в теме
(1) интересно вы про ЕДТ написали - это как построить "отношения метаданных", но без реквизитов. а "цепляться" за что?)
3. malikov_pro 1237 23.08.22 19:49 Сейчас в теме
Посмотрел, полезно, сам пользуюсь без доп. модулей. Позволяет концентрироваться на объектах и связях на не линиях.

Если не хочется отдавать свои схемы наружу, а запускать jar локально не получается, то вариант развернуть в docker.
https://github.com/plantuml/plantuml-server

По удобству/быстроте в IDE реализация лучше в PyCharm (по ощущениям кеширует jar).

(2) "а "цепляться" за что?"
два варианта указания ссылок
Товар --РасходнаяНакладная
и
Товар --РасходнаяНакладная::Номенклаутра


(1) "неплохо бы ещё общие модули как-то подтянуть"
Наверно через распаковку поиском по файлам *.bsl, на сколько помню называется семантическое дерево, в https://1c-syntax.github.io/bsl-language-server/ активно используется.

(0)
Как храните и версионируете?
Сам использовал в составе redmine, модуль старый (не поддерживается автором), diff из коробки, как подключить доп. модули без обращения к внешним ресурсам отдельный вопрос. Есть поддержка в gitlab, но ломается при использовании кирилицы.

Возможно полезно будет описать как подключать ваш репо через git submodule, для того чтобы сообщество начало использовать нужна простая инструкция https://git-scm.com/book/ru/v2/%D0%98%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BC%D0­%B5%D0%BD%D1%82%D1%8B-Git-%D0%9F%D0%BE%D0%B4%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D0%B8
a_plastinin; Serg O.; +2 Ответить
4. kalyaka 880 23.08.22 20:16 Сейчас в теме
Прекрасное решение! Для документирования и исследования - самое то!

Предполагается выложить проект на github?

Если вывод заменить в поле HTML, то можно добавить функциональности: панорамирование, зуммирование и т.д.
a_plastinin; Disorder777; Serg O.; +3 Ответить
5. Serg O. 208 24.08.22 07:47 Сейчас в теме
Хороший доклад был от Андрея Овсянкина
."Донесение здравого смысла до заказчика"
Infostart Event2021
в том числе там и про PlantUML было
https://youtu.be/Cr6R3LXKw9o
twiny; a_plastinin; +2 Ответить
6. malikov_pro 1237 24.08.22 10:58 Сейчас в теме
(4) "Предполагается выложить проект на github?" - выложено, ссылка явно в статье не дана https://github.com/plastinin/diagramobject
"о можно добавить функциональности: панорамирование, зуммирование и т.д." - в какой статье описано как сделать?
twiny; 300_po_vstrechke; a_plastinin; +3 Ответить
9. kalyaka 880 24.08.22 21:33 Сейчас в теме
(6)
панорамирование, зуммирование и т.д.
В поле HTML открываются практически безграничные возможности по работе с отображением. В данном случае можно использовать библиотеку js, например одну из популярных svg-pan-zoom. Решение следующее: на форме размещаем Поле HTML документа. Для поля формируем html, где подключаем нашу библиотеку в разделе
<sc ript src=""" + ПутьКФайлуJS + """></sc ript>
внутри заголовка <head>, встраиваем картинку в какой-нибудь контейнер
	|<div id = 'container'>
	|" + svg + "
	|</div> 
в формате svg. Особенность этого формата в том, что он векторный и описывается в тексте декларативно, как html. Далее внутри <body> в конце располагаем скрипт по инициализации. В скрипте вешаем функцию инициализации на событие onload. В функции делаем следующие вещи: находим нашу картинку, устанавливаем атрибут id, который затем мы передадим в функцию библиотеки для подключения.
Ниже приведен рабочий пример кода, который я использовал в своем инструменте анализа зависимостей параметров и элементов формы (предмет следующей моей публикации):
	"<ht ml>
	|<head>
	|	<st yle>svg {width: 100%; height: 100%;}</style>
	|	<sc ript src=""" + АдресСкриптаJS + """></sc ript>
	|</head>
	|<body>
	|<div id = 'container'>
	|" + svg + "
	|</div> 
	|<sc ript>
	|	// Don't use window.onLoad like this in production, because it can only listen to one function.
	|	window.on load = function () {
	|		const svg = document.querySelector('svg');
	|		svg.setAttribute('id', 'graphviz');
	|		svgPanZoom('#graphviz', {
	|			zoomEnabled: true,
	|			controlIconsEnabled: true,
	|			fit: true,
	|			center: true,
	|		});
	|	};
	|	</sc ript>
	|</body>
	|</html>";
Показать

Подключение библиотеки следующее: 1. скачать из последнего релиза файл svg-pan-zoom.js, 2. поместить в текстовый макет обработки, 3. в форме при создании извлечь из макета и поместить в хранилище, 4. при открытии извлечь из хранилища и записать во временный файл на клиенте, а путь использовать для подключения к html
10. kalyaka 880 24.08.22 22:14 Сейчас в теме
(9)Это еще не все, на элементы графической схемы можно навешать свои обработчики, например по клику.
PS: Да, вставка примера кода с тегами html - та еще задачка :)
7. 300_po_vstrechke 1261 24.08.22 16:09 Сейчас в теме
Плюсую предыдущему оратору, где есть подобное описание?
Ещё бы для неуправляемых форм...
mell0rn; a_plastinin; +2 Ответить
8. a_plastinin 229 24.08.22 17:39 Сейчас в теме
(7)
Плюсую предыдущему оратору, где есть подобное описание.


А что бы вы хотели видеть в "подобном" описании?
11. malikov_pro 1237 25.08.22 08:18 Сейчас в теме
(10) Добавлю что можно формировать не только PNG но и SVG.
Нотация поддерживает ссылки https://plantuml.com/ru/link, на http://www.plantuml.com/plantuml/uml и в PyCharm они работают.
12. malikov_pro 1237 25.08.22 08:22 Сейчас в теме
(8) предположу что опечатка, имелось ввиду "подробное", проблема в отсутствии умений у коллег применять схемы для решения задач. Сформировать схему обработкой классно, но как её отформатировать для решения прикладной задачи не всегда понятно и не хватает знания семантики и применимости диаграмм. Недавно проходил "Заблуждения о роли BPMN при автоматизации бизнес-процессов и цифровой трансформации" одной из основных мыслей было "Применяйте BPMN для описания БП, для остального используйте другие нотации".
a_plastinin; mell0rn; +2 Ответить
13. Lemmonbri 6 25.08.22 09:54 Сейчас в теме
Нашел несколько ошибок. Открываю обработку в предприятии. Выбираю документ заказ клиента и все регистры сведений и получаю ошибку на первом скрине (с регистрами накоплений все работает нормально). Второй момент. Если я так сделаю с регистрами накоплений, то картинка некорректно отображается (обрезается) 2 скрин. Приходится копировать код, идти на сайт, там формировать картинку и в SVG она отображается корректно (сразу SVG в 1С отображать же можно). Так же третий момент. Формирование по всем регистрам накоплений с реквизитами и связями не представляется возможным, сервер обработки изображений просто forbidden возвращает.
Прикрепленные файлы:
14. a_plastinin 229 25.08.22 10:38 Сейчас в теме
(13)
о картинка не


Привет, спасибо за фидбек.

Можно попросить вас зарегистрировать ошибку в Issues? Идеально если приложите сгенерированный код для отладки.
18. Lemmonbri 6 25.08.22 11:58 Сейчас в теме
(14) Зарегистрировал, развлекайтесь :)
19. a_plastinin 229 25.08.22 11:58 Сейчас в теме
15. Lancelot-2M 115 25.08.22 11:29 Сейчас в теме
Делал я такую штуку (или подобную) на graphviz. Эта красивее и лучше, если работает без ошибок.
Добавить бы статистику по количеству объектов и связей, 2 ползунка - фильтра по количеству объектов и связей - и годный stand-alone инструмент будет. Я б скачал)))
16. a_plastinin 229 25.08.22 11:35 Сейчас в теме
(15) PlantUML как раз под капотом graphviz юзает.

Добавить бы статистику по количеству объектов и связей, 2 ползунка - фильтра по количеству объектов и связей - и годный stand-alone инструмент будет. Я б скачал)))


Да все это можно сделать. Не хотите стать контрибьютером?
20. Lancelot-2M 115 25.08.22 12:19 Сейчас в теме
(16)
Не хотите стать контрибьютером?

могу исходники поискать, почистить от чуждого контекста и передать вам, но не ранее чем через пару недель - у меня просто не будет выходных до этого)
17. Dimanchik00 25.08.22 11:56 Сейчас в теме
Подал челобитную:
предлагаю сделать опциональное включение типовых реквизитов в справочниках и документах при выводе в диаграмму
a_plastinin; +1 Ответить
21. twiny 13 26.08.22 10:49 Сейчас в теме
Коллеги, а вот такую ошибку дает постоянно:

Во время выполнения действия была потеряна связь с сервером.
Сейчас соединение восстановлено. При необходимости повторите вызванное ранее действий.


Это на стороне сервиса проблемы или у меня?
kuznetsov1c; +1 Ответить
22. kuznetsov1c 17 02.09.22 10:03 Сейчас в теме
(21) Приветствую! Выбрал слишком много объектов
23. kuznetsov1c 17 02.09.22 10:24 Сейчас в теме
Разработка впечатляющая и интересная. Выражаю благодарность и уважение.

P.S. Хотелось бы иметь возможность отображения табличных частей на диаграмме
24. Lemmonbri 6 28.10.22 15:55 Сейчас в теме
Я так и не понял как свои иконки сделать, а именно: как png перевести в спрайты. Прочитал доки на plantuml, но так и не разобрался. Хотел добавить значки форм и реализовать диаграммку форм. Если по человечески объясните - буду благодарен.
25. a_plastinin 229 28.10.22 15:59 Сейчас в теме
(24) привет!

а глянь плиз https://www.youtube.com/watch?v=psK2fZUtbf4&t=467s
там постарался четко рассказать, если не получается, то пиши пожалуйста.
26. a_plastinin 229 28.10.22 16:05 Сейчас в теме
(24) правильная ссылка - https://www.youtube.com/watch?v=psK2fZUtbf4&t=4389s

01:13:09 - Готовим спрайты для пиктограмм объектов метаданных, ресурсов и измерений
27. Lemmonbri 6 28.10.22 16:51 Сейчас в теме
(26) вроде получилось, pull request создал, а там посмотрим
28. a_plastinin 229 01.11.22 17:07 Сейчас в теме
(27) привет! не вижу твоего пул-реквеста)
29. Lemmonbri 6 01.11.22 19:15 Сейчас в теме
(28) Я гитхабом раз в жизни пользовался, так что не уверен куда я ещё должен нажать)
Прикрепленные файлы:
30. a_plastinin 229 01.11.22 20:00 Сейчас в теме
(29) ааа, это я не туда смотрю)) пардон
32. Lemmonbri 6 02.11.22 07:56 Сейчас в теме
(30) Я там возможно опечатку сделал, сделайте merge :)
a_plastinin; +1 Ответить
31. Lemmonbri 6 02.11.22 07:52 Сейчас в теме
(30) Ну файлики он увидел, но картинки формы нет :(
33. Rafaraf 31 03.04.23 18:26 Сейчас в теме
подскажите как получить значок справочника или документа ? <$?????>


<$d> - это понятно dimension
<$r> - ресурс
-- Товары -- заголовок с линией
---- просто строка

- красный квадрат
* черная точка
+ зеленая точка
35. Serg O. 208 04.05.23 15:26 Сейчас в теме
(33) я нашел не совсем то, но похоже
_Справочник(Виды, ВидыНоменклатуры)

'>>> библиотека 1ce-icons-for-plantuml (ext)
!define v8_PUML https://raw.githubusercontent.com/plastinin/1ce-icons-for-plantuml/extended/dist/
!include v8_PUML/common.puml
!include v8_PUML/v8_AccRg.puml
!include v8_PUML/v8_Document.puml
!include v8_PUML/v8_Catalog.puml
!include v8_PUML/v8_InfoRg.puml
!include v8_PUML/v8_ChartsOfCharacteristicTypes.puml
!include v8_PUML/v8_DefinedTypes.puml
!include v8_PUML/v8_Enum.puml
'<<<

_РегистрСведений(ABCXYZКлассификацияКлиентов, "ABC/XYZ классификация клиентов") {
	 {static} Период
	 <$d> Партнер
	 <$d> ТипПараметраКлассификации
	 <$d> ТипКлассификации
	 <$r> Класс
	 <$r> ЗначениеПараметраКлассификации
       _Справочник(Виды,ВидыНоменклатуры)
}
Показать


добавляет слово object перед <знаком типа>
Прикрепленные файлы:
34. Serg O. 208 04.05.23 15:11 Сейчас в теме
обработка не видит Табличных частей ?
то есть любой документ, например Реализация...получается не связан с Номенклатурой ?!
это мне кажется недоработка ...
а табличных частей у документа (да и у справочников) может быть несколько !

вручную можно добавить в текст схемы - отдельную группу типа тчТоварыДокРеализация
и настроить связи вручную, но это крайне не удобно

'>>> 

'>>> библиотека 1ce-icons-for-plantuml (ext)
!define v8_PUML https://raw.githubusercontent.com/plastinin/1ce-icons-for-plantuml/extended/dist/
!include v8_PUML/common.puml
!include v8_PUML/v8_AccRg.puml
!include v8_PUML/v8_Document.puml
!include v8_PUML/v8_Catalog.puml
!include v8_PUML/v8_InfoRg.puml
!include v8_PUML/v8_ChartsOfCharacteristicTypes.puml
!include v8_PUML/v8_DefinedTypes.puml
!include v8_PUML/v8_Enum.puml
'<<<

_Справочник(Номенклатура, "Номенклатура")
_Документ(РеализацияТоваровУслуг, "Реализация товаров и услуг")
_ПВХ(тчТоварыДокРеализация, "Товары")
Номенклатура --> тчТоварыДокРеализация
тчТоварыДокРеализация  --> РеализацияТоваровУслуг
Показать


картинку для ТЧ - взял из ПВХ
Прикрепленные файлы:
Оставьте свое сообщение
Вакансии
Системный архитектор 1С
Москва
зарплата от 250 000 руб.
Полный день

Руководитель группы 1С
Екатеринбург
зарплата от 200 000 руб.
Полный день

Функциональный архитектор
Москва
зарплата от 200 000 руб. до 300 000 руб.
Полный день

Консультант 1С
Москва
зарплата от 80 000 руб. до 150 000 руб.
Полный день

Консультант 1С / Специалист поддержки 1C
Екатеринбург
зарплата от 70 000 руб.
Полный день