Через объект XDTO достаточно просто со схемой работать. По крайней мере, достаточно наглядно код выглядит. При этом главное добавить точки, их расположение и координаты линий, а всякие цвета/шрифты можно и непосредственно в графической схеме задавать. Зато можно шестиугольные точки действия делать, например, если линий более 4 в point добавить 🙂
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
СхемаXDTO = СериализаторXDTO.ЗаписатьXDTO(Новый ГрафическаяСхема); СхемаXDTO.gridVerticalStep = 10; СхемаXDTO.gridHorizontalStep = 10; СхемаXDTO.enableGrid = Истина; ЭлементСхемы = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://v8.1c.ru/8.2/data/graphscheme", "GraphSchemeItem")); ЭлементСхемы.itemId = 1; ЭлементСхемы.itemType = 5; //Действие ЭлементСхемы.itemCode = "ТочкаСтарта"; ЭлементСхемы.itemTabOrder = ЭлементСхемы.itemId; ЭлементСхемы.pointUUID = Строка(Новый УникальныйИдентификатор()); СтрокаXDTO = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://v8.1c.ru/8.1/data/core", "LocalStringType")); Строка = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://v8.1c.ru/8.1/data/core", "LocalStringItemType")); Строка.lang = "#"; Строка.content = "Представление действия"; СтрокаXDTO.item.Добавить(Строка); ЭлементСхемы.itemTitle = СтрокаXDTO; ЭлементСхемы.backColor = "auto"; // Прямоугольник точки ЭлементСхемы.rectLeft = 10; ЭлементСхемы.rectRight = 100; ЭлементСхемы.rectTop = 10; ЭлементСхемы.rectBottom = 100; // Координаты линий точки Координата = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://v8.1c.ru/8.2/data/graphscheme", "Point")); Координата.x = ЭлементСхемы.rectLeft; Координата.y = ЭлементСхемы.rectTop; ЭлементСхемы.point.Добавить(Координата); Координата = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://v8.1c.ru/8.2/data/graphscheme", "Point")); Координата.x = ЭлементСхемы.rectRight - 1; Координата.y = ЭлементСхемы.rectTop; ЭлементСхемы.point.Добавить(Координата); Координата = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://v8.1c.ru/8.2/data/graphscheme", "Point")); Координата.x = ЭлементСхемы.rectRight - 1; Координата.y = ЭлементСхемы.rectBottom - 1; ЭлементСхемы.point.Добавить(Координата); Координата = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://v8.1c.ru/8.2/data/graphscheme", "Point")); Координата.x = ЭлементСхемы.rectLeft; Координата.y = ЭлементСхемы.rectBottom - 1; ЭлементСхемы.point.Добавить(Координата); СхемаXDTO.item.Добавить(ЭлементСхемы); ГрафическаяСхема = СериализаторXDTO.ПрочитатьXDTO(СхемаXDTO); Сообщить(ГрафическаяСхема.ЭлементыГрафическойСхемы.Количество()); Имя = ПолучитьИмяВременногоФайла("grs"); ГрафическаяСхема.Записать(Имя); Сообщить(Имя); ОбъектСхемы = РедактированиеГрафическойСхемы.ПолучитьОбъектXDTO(); РедактированиеГрафическойСхемы.ДобавитьЭлемент(ОбъектСхемы, "Действие"); РедактированиеГрафическойСхемы.ДобавитьЭлемент(ОбъектСхемы, "Старт"); РедактированиеГрафическойСхемы.ДобавитьЭлемент(ОбъектСхемы, "Завершение"); ГрафическаяСхема = РедактированиеГрафическойСхемы.ПолучитьСхему(ОбъектСхемы); |