Работа с графической схемой в объектной модели DOM

Публикация № 1071785

Программирование - Универсальные функции

графическая схема DOM пример кода

36
Пример кода для работы с графической схемой в объектной модели DOM, платформа 8.3.12.

За основу взята статья Виталия Барилко //infostart.ru/public/336564/

Изучая возможность создания универсального конструктора процессов в самописной конфигурации, естественно первой же мыслью было использовать родные бизнес процессы платформы с подменой карты маршрута. И самая первая сложность - как при создании карты маршрута на стороне клиента суметь понять ее состав и связи.

Привожу полный код модуля, отвечающий за логику работы, и пример его использования.

 
 Общий модуль "УниверсальныеКартыМаршрутовКлиентСервер"

 

Хранить карту маршрута будем в справочнике БизнесПроцессы в реквизите КартаМаршрутаXML.

 

Форма элемента справочника имеет следующую структуру: 

 
Модуль формы элемента справочника

 

Пример работы:

 

В файлах приложил демо конфигурацию примера.

36

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

Наименование Файл Версия Размер
Пример конфигурации
.cf 21,63Kb
04.06.19
3
.cf 1 21,63Kb 3 Скачать

См. также

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. Yashazz 2384 04.06.19 14:20 Сейчас в теме
Можно подробнее? Вы динамически строите граф.схему с помощью DOM?
2. botokash 77 04.06.19 14:31 Сейчас в теме
(1) Построение схемы происходит штатными командами платформы для работы с графической схемой. С помощью DOM я лишь анализирую состав схемы, могу получать все ее элементы и связи, а так же сохранять графическую схему в XML строку и в обратную сторону получать объект графической схемы из XML строки.
3. Yashazz 2384 04.06.19 17:01 Сейчас в теме
1. Ценность идеи исходной статьи - в возможности модифицировать схему. Платформа просто не имеет штатных команд такого рода. Какие команды вы имеете в виду?
2. Зачем использовать DOM для чтения состава, если как раз это платформа позволяет сделать удобно и просто? Изврата ради?
4. botokash 77 04.06.19 18:55 Сейчас в теме
(3) По первому вопросу конкретизируйте, о каких командах вы говорите? Я говорил о стандартной командной панели, которая генерируется платформой для элемента формы графической схемы. Модифицируйте ими схему как хотите.
По второму вопросу, DOM позволяет как и читать, так и менять схему программно, причем одновременно и без переключения на другой объект. При этом прочитать данных об элементах схемы в DOM можно гораздо больше. Никакого изврата тут не вижу.
7. Yashazz 2384 05.06.19 11:05 Сейчас в теме
(4) Насчёт команд понял, ценность этого фрагмента стремится к нулю, т.к. это штатный инструмент платформы и вставить его куда надо - минутное дело. Что умеет DOM, я прекрасно знаю; я вот пытаюсь понять - вы-то его применяете для модификации схемы или только для чтения?
8. botokash 77 05.06.19 11:24 Сейчас в теме
(7) Пример модификации есть, обратите внимание на приложенный код. Я показываю пример работы с графической схемой полностью через DOM, как чтения, так и модификации. Как программно добавить элементы на схему - ссылка указана, разобраться в коде на пол часа работы.
10. Yashazz 2384 05.06.19 13:05 Сейчас в теме
(8) Уважаемый, я о том, как добавлять программно, задолго до вас несколько готовых разработок сделал)) Которые кстати сказать на ИС лежат.

В приложенном документе я вижу 2 вызова функций из неведомого модуля, а что там и как - я не телепат, чтоб понять. Ну хорошо, значит, меняете схему через DOM. Ну что ж, как вариант. Я в каком-то из решений года 2-3 назад тоже так делал, и должен сказать, что бывают случаи, когда обратное построение схемы из xml, валидного с точки зрения DOM, не прокатывает. Не жрёт его сериализатор 1С почему-то. Поэтому будьте внимательны и не позиционируйте решение как универсальное, там случаются подводные камни, особенно с элементом "Точка выбора варианта".
11. botokash 77 05.06.19 13:42 Сейчас в теме
(10) "Неведомый" модуль так же приложен в статье кодом, без скачивания) Ни в коем разе не позиционирую свою статью как готовое решение. По факту есть лишь заготовка общего модуля и пару примеров работы с ним. Как мне кажется, тому кто ищет конкретный ответ на вопрос как, этого должно хватить что бы понять принцип и уже самому создавать свои нетленки)
9. botokash 77 05.06.19 11:35 Сейчас в теме
(8) Конкретизирую про модификацию, имеем исходную графическую схему "ГрафическаяСхема"
// 1. Получили ДокументDOM
ДокументDOM = УниверсальныеКартыМаршрутовКлиентСервер.ПолучитьDOMГрафическойСхемы(ГрафическаяСхема); // 
// 2. ...
// свой код чтения и модификации
// 3. получаем обратно графическую схему из ДокументDOM, PROFIT!!!
ГрафическаяСхема = УниверсальныеКартыМаршрутовКлиентСервер.ПолучитьГрафическуюСхемуИзDOM(ДокументDOM);
5. arsvlg 05.06.19 10:10 Сейчас в теме
Интересно. Спасибо за статью. Попробую.
Единственное, нужно поправить скриншот структуры справочника. В табличной части отображены не все реквизиты.
6. botokash 77 05.06.19 10:38 Сейчас в теме
(5) "ТипЭлементаПредставление" и "Наименование" являются реквизитами формы, добавлены к табличной части. Обратите внимание на их цвет в дереве реквизитов формы. Так что скриншот структуры справочника верный)
12. xioxao 05.06.19 21:48 Сейчас в теме
(6) Блин супер интересная разработка... Жаль что не хватает стартмани скачать) как наколочу обязательно зацеплю и потестю) Автору респект, за нестандартные решения, механизмами 1с)
13. botokash 77 06.06.19 03:26 Сейчас в теме
(12) В публикации весь код приведен полностью, даже скачивать не надо. Но если так нужна конфигурация, напишите в личку, отправлю на почту.
14. ntemny 47 06.06.19 14:53 Сейчас в теме
Тему с подменой карты маршрута БП не разовьете? Не совсем понял, как это можно сделать у стандартных БП платформы.
15. botokash 77 06.06.19 16:58 Сейчас в теме
(14) Когда получится что-то рабочее - обязательно поделюсь, конечно.
16. ntemny 47 06.06.19 18:13 Сейчас в теме
(15)Ну хотя бы в каком направлении копать напишите. Как у БП можно поменять карту маршрута не в конфигураторе?
17. botokash 77 07.06.19 12:40 Сейчас в теме
(16) В том то и дело, что нельзя. Буду пытаться делать некий имитатор, который будет создавать БП, но переход по карте маршрута обрабатывать самостоятельно.
18. Бубузяка 62 09.06.19 16:50 Сейчас в теме
Автору, спасибо. Это то, что мне давно было нужно! Видимо, фантазии и знаний о ДокументеДОМ не хватало. Много информации для применения на практике. Материал статьи (картинки и код) достаточен для повторения и последующего изучения.
19. botokash 77 09.06.19 16:58 Сейчас в теме
(18) Большое спасибо, рад что кому-то полезно.
Оставьте свое сообщение