gifts2017

И снова 1C Visio

Опубликовал GrayT Токарев (GrayT) в раздел Программирование - Практика программирования

Очередное эссе на тему графического представления структуры метаданных. На этот раз - обработка с использованием графической схемы.

Так получилось, что исходники моего предыдущего Визио, видимо, безвозвратно исчезли, а были мысли его немного доработать. Тут удачно подвернулась под руку обработка с примером работы с графической схемой. Так и родилась идея воспроизвести проект в рамках v8

Итак. Обработка предназначена для изучения и графического отображения взаимосвязей объектов в произвольной конфигурации v8.1

Обработка поддерживает два с половиой  :) способа построения графической схемы.

1. Путем перетаскивания объекта метаданных на графическое поле. Т.к. графическая схема не поддерживает в полной мере Drag&Drop, новые элементы распологаются в левом верхнем углу, для последующего позиционирования по месту.

2. Путем ручного указания (двойным кликом в правом столбце дерева метаданных ) объектов, которые нужно будет вывести в графическую схему.  Для вывода на схему используем кнопку "Обновить".

2,5.  Двойным кликом по объекту метаданных вызываем окно ссылок данного объекта. В окне ссылок так же можно указать объекты подлежащие последующему выводу кнопкой обновить (даблкликом в правой колонке). Двойной клик по объекту метаданных, в окне связей, позволит перейди к окну связей выбранного объекта.

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

Наименование Файл Версия Размер Кол. Скачив.
1C_Visio.epf
.epf 38,56Kb
08.12.11
350
.epf 38,56Kb 350 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Иван Иванов (Famza) 08.12.11 12:03
Обработка только для 1С: Предприятие 8.1? Конвертнуть получится в 8.2?
2. Равиль (vip76) 08.12.11 12:33
хотел бы глянуть, но денег нема =)
3. Доржи Балбаров (Angeros) 08.12.11 12:52
Я так и не понял причем тут визио? рисуем же в 1с а визио это так с боку?
4. GrayT Токарев (GrayT) 08.12.11 13:07
(1)Ну она не под управляемыми формами сделана. А так я ее разрабатывал под 8.2.14.540
(2)Денег?! я за нее денег не просил! давно, видать, не заходил сюда, что то поменялось.
(3)Мне всегда было проще представлять структуру БД в виде связанных табличек. Первый вариант автоматизации этого дела был сделан вообще в Екселе. Понятно что все это было очень криво. Потом была попытка привязаться к MS Visio. Но что то мне с этими шейпами нормально подружится не получилось и сколько-нибудь законченного решения не было. А потом был проект на Дельфе и назван он был в отместку Visio1С - вот так и получилось (http://infostart.ru/public/16838/ )
5. Роман Романов (romansun) 08.12.11 14:30
очень интересно, для документации и аналитики - это супер!

замечания актуальны? или это скорее как пример работы с.. и дальше дорабатываться особо не будет?
6. Роман Романов (romansun) 08.12.11 14:31
(1)
обработка как раз только для 8.2, а вот под 8.1, я так понимаю, нет версий
7. GrayT Токарев (GrayT) 08.12.11 15:31
(5)Актуальны. Думаю что дорабатыватся будет, хотя может и не быстро.
если честно я не программирую на 8 :-[ Только учусь, и сваял с одной стороны инструмент мне необходимый, а с другой - просто привыкал к конфигуратору.
(6)Нету. она написана на "одном дыхании" за несколько дней
8. Роман Романов (romansun) 08.12.11 16:01
(7)
ну там много шероховатостей с отображением,.. если кратко, что бросилось, то вот:

- нужна кнопка "Обновить схему", аналогичная клику по заголовке какого-либо блока. Это помогает, когда сбиваются привязки, появляются обрезки, обрывки и пр.

- хотелось бы, чтобы связи "понимали", когда мы переместили зависимый блок на левую стороны от ведущего - сейчас связь не перескакивает и рисуется загогулина. Схемы "звёздного" вида только так получится нарисовать.

- хотелось бы перемещать реквизиты вверх-вниз внутри объекта с переинициализацией связей - это обеспечит непересекающиеся связи без перетаскивания самих блоков

Да, и там еще функция "РазобратьПутьКОбъектуМетаданных(ПутьКДанным)" может пересечься с такой же функцией глобального модуля, что вызывает ашипку (на бухии 1.5 - точно). Для чистоты лучше б переименовать.

(если я что-то упомянул/упомяну нереализуемого - сорри - со схемами совсем не работал)
9. GrayT Токарев (GrayT) 08.12.11 16:28
(8)
1. Ну а что клика по блоку недостаточно? Проблема в том что маршрут прохождения линии в случае перетаскивания объекта определяется самой графической схемой. Я могу конечно перехватить факт изменения положения объекта и заново перерисовать линии, но это достаточно геморойный алгоритм. Или я не понял сути предложения.
2. Отличная идея. Соответственно и входящие линии можно перебрасывать по трем точкам шапки. Сделаю
3. Тоже здравая мысль, если бы не одно "но" - реквизиты группируются в блоки: Данные, Табличная часть, Движения, Измерения и т.д. Переместить внутри блока не проблема, а за пределы? Единственно если не выводить блоки совсем, а реквизитам делать прификс принадлежности блоку, типа "Измерение: Контрагент" или "ТЧ:ДвиженияТоваров:Номенклатура". Можно сделать
4. Спасибо за наводку, переименую.
10. Сергей Головченко (rare-avis) 09.12.11 01:33
Классная задумка!
Еще давно видел как строили диаграмму метаданных на основе Wingraphviz: http://www.mista.ru/subscribe/56.htm
но это более интересно и патриотично, плюс интерактивно. Сам знаю, что с графической схемой надо помудохаться. Если бы 1С добавили методы добавления элементов графической схемы, то можно было бы творить чудеса.
11. Илья Милованов (Killgur) 09.12.11 09:13
Колонка выводить в схему непонятно как работает. Если объект добавляется на схему, то признак ставится. При ручном указании ничего не происходит. Или что-то не так делаю?
12. Илья Милованов (Killgur) 09.12.11 09:16
И еще хотелось бы возможность выбора показываемых на схеме реквизитов для их скрытия.
13. GrayT Токарев (GrayT) 09.12.11 09:20
(10)Спасибо за слово доброе :)
(11)"2. Путем ручного указания (двойным кликом в правом столбце дерева метаданных ) объектов, которые нужно будет вывести в графическую схему. Для вывода на схему используем кнопку "Обновить"."
Либо вручную, либо через окно связей набираем необходимый набор метаобъектов и выводим сразу все. На больших конфигурациях обновление схемы занимет некоторое время, при этом если комп не очень шустрый перетаскивать по одному объекту начинает несколько нервировать - сделал вывод группой
(12)Да, такое уже есть в планах - настроить для объекта вывод необходимых реквизитов: только ссылочные типы (исключить скалярные), только имеющие активные (выведенные) линии связи для текущей схемы. В принципе можно сделать и просто список реквизитов, подлежащих отображению.
14. Роман Романов (romansun) 09.12.11 11:07
GrayT пишет:
В принципе можно сделать и просто список реквизитов, подлежащих отображению.


+1. Есть таблицы с огромным количеством реквизитов, а в схеме актуальны только несколько. Типизация отображаемых по виду, имхо, не сильно нужна - в зависимости от смысла схемы мы можем показывать те или иные сочетания ссылочных и числовых полей. Пару ссылок и "Сумма", к примеру. В другой схеме будет тот же регистр, но другая пара ссылок и "СуммаДругая". И т.п.
15. Константин Соболевский (Константин С.) 09.12.11 14:02
Хм проблемка.
Перетащил справочник "Банки", поудалял "лишние" реквизиты, далее добавил "Банковские счета". И обработка добавила еще оди квадратик "Банки", поверх уже существующего, со всеми реквизитами. Итого получился перекос при наложении.
16. GrayT Токарев (GrayT) 09.12.11 15:11
(15)Хм. Что за конфигурация? я на бухгалтерии не смог воспроизвести ситуацию - у меня просто обновился квадратик банки, востановив все реквизиты обратно. Размер квадратика, правда, остался прежним (маленьким) соответственно перекос в картинке, но второго квадратика Банки не появилось.
Интерактивное удаление реквизита я не отрабатывал. В принципе, поймать факт удаления ревизита можно. Там выше было предложение, выбирать реквизиты для отображения. Наверное так и зделаю - в случае интерактивного удаления реквизита, будет сниматься отметка необходимости вывода на схему
17. Константин Соболевский (Константин С.) 09.12.11 16:10
(16) Это делал в КА
1С:Предприятие 8.2 (8.2.14.537)

попробовал в БП 2
вот что плучилось

http://narod.ru/disk/33814707001/%D1%8B%D1%8B%D1%8B.grs.html
19. GrayT Токарев (GrayT) 09.12.11 21:58
(17)Ну собственно говоря я об этом и говорил - обновление схемы привело к тому, что "Банки" перезаполнились всеми реквизитами, но размер блока ВыборВарианта остался без изменений. Буду доделывать когда, обработаю эту ситуацию.
20. Василий Казьмин (awk) 10.12.11 00:16
То же хотел было написать "visio" для 1С. Вот только после изучения схем бизнес процессов пришел к выводу, что для отображения лучше использовать поле хтмл документа + vml.
21. GrayT Токарев (GrayT) 10.12.11 01:25
(20)Очень слабо представляю что такое vml (иными словами - только что гуглил), да и в целом с веб-программированием сильно не дружу - насколько понимаю интерактивность там либо невозможна, либо танцы с бубном редкостные будут. Опять же практически всю графическую работу берет на себя графическая схема и не приходится рассчитывать координаты для каждого реквизита и последующей группировки, построение связей тоже "на плечах" граф схемы. Еще смущает "VML пока поддерживается лишь немногими программами, среди которых Internet Explorer 5.0+ и Microsoft Office 2000+." © Википедия - информация, судя по всему сильно устарела, но неприятный след оставила :)
Но может, конечно, в силу мелких познаний vml, я кругом и не прав.
22. Виктор Щербаков (Victorman) 10.12.11 08:33
23. Иванов Иван (egorious) 10.12.11 13:05
а планируется ли дальнейшее развитие?
24. Юрий Иванов (itek.09) 10.12.11 17:03
интересная вещица.....хотелось бы проверить на деле...может поможет в чем инбудь
25. GrayT Токарев (GrayT) 10.12.11 18:59
(23)Да. Со временем туго, но буду стараться.
26. Василий Казьмин (awk) 10.12.11 21:00
(21) GrayT, VML - это язык разметки. Его свободный аналог SVG. Вот только VML IE поддерживает, а SVG нет. Из-за итеративности я как раз и предпочел его графической схеме. Просто, сейчас реально не до проектов для себя.
27. rdv (rdv) 12.12.11 06:56
Интересная задумка, попробую на 8.2, хотя сейсас установленна только 8.1.
28. Роман (Raminus) 12.12.11 17:56
29. Александр Крынецкий (echo77) 13.12.11 08:28
Хорошая вещь. Опечатки в справке поправьте и было бы неплохо:
- добавить поиск(при вводе текста) в дереве метаданных
- чтобы при добавлении нового элемента НЕ перестраивались старые, т.к. в старых блоках может быть что-то удалено
30. denis leonov (curys) 13.12.11 11:49
31. GrayT Токарев (GrayT) 13.12.11 14:07
32. Александр Плюшкин (php5) 13.12.11 17:19
33. Dima Neumoichev (Ndochp) 14.12.11 11:09
А не встречали графическое представление связей по тексту модулей, а не структуре метаданных? типа кто кого дергает, от каких функций/общих модулей зависит и тд?
34. Александр Че (chmod660) 14.12.11 11:12
0, сделайте пожалуйста возможность вывода в схему ТОЛЬКО документа/справочника, без реквизитов и прочего.
35. Alex Koso (AlexKoso) 14.12.11 13:14
зачетная вещица, а то надоели все эти записи на листочках
36. 1 (shomo) 14.12.11 13:47
Спасибо. Намного проще стало обозревать базу.....
37. 1 (shomo) 14.12.11 13:48
Да было бы замечательно что бы только объекты выводились (опционально конечно же) без реквизитов...
38. denis leonov (curys) 14.12.11 22:49
Поюзал данную обработку. Отличная штука, очень понравилась. Спасибо автору!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
39. lavalava7 15.12.11 12:55
Думал свою сделать, да вот тут на сабж наткнулся
попробую на 8.2
40. Astory (astory) 15.12.11 13:47
Набрать бы денег, чтобы стянуть (
41. Елена Молчанова (molchanova) 16.12.11 14:13
Интересная программа, пригодится)
42. nanik nanik (nanik) 23.12.11 10:58
Интересная обработка посмотрим, может и пригодится в работе.
43. Ирина Вшивкова (ir_en) 27.12.11 15:23
Спасибо, полезная штука
44. Igori Krutoi (IgoriKr) 28.12.11 18:13
представлять структуру БД в виде связанных табличек - это то, что так не хватало мне для сопровождения сторонних разработок и 'освежать' в памяти свои, спасибо
45. Пётр Шнепелев (Patricul) 03.01.12 22:33
Ок... спасибо! Отличная штука!
46. Андрей Павлов (mrApachik) 17.01.12 18:48
Огромное спасибо! Однозначно "+".
47. ylyas v (ylyas) 18.01.12 09:42
Только я было намылился сделать графическую схему отображения связей объектов... а ты уже .. сделал.... блин((
ну и ладно))
однозначно - это весьма полезная вещь с точки зрения анализа физической модели и взаимосвязей..
в последнее время приходится много возиться в отраслевых решениях.. написанных.. далеко не лучшим образом. как раз с точки зрения связей объектов.... и вспомнилас СУБД аксцесса!!! Ведь куда более простая вещь, в плане конструкторов всяких и тп, но и там можно вывести схему и в ней самому натянуть связи, при чем установив их вид отношений...
вобщем. зачет).. но скорее всего буду порбовать допиливать под себя.
48. ylyas v (ylyas) 18.01.12 10:49
ЗЫ:
Смотрю код...На мой взгляд, есть весьма отрицательные моменты в том как вы испольуете метаданные...
Но комментарии готов давать только лишь с вашего позволения ))
49. Арсений Прялкин (CeHbKA) 08.02.12 15:22
Писец, аффтар ты велик!
Молимся на тебя о великий и могучий
50. GrayT Токарев (GrayT) 08.02.12 16:16
(48) ylyas, вообще то я только учусь программировать ;) (имею ввиду - проектов на снеговике у меня нет)
Так что буду рад любым комментариям. Разумеется, если они по теме :)
Итак - что не так я делаю с МД?
51. ylyas v (ylyas) 08.02.12 19:32
есть такая тема... что обращение к мд- по времени это самая затратная хрень
но есть некий компромисс... который нужно помнить...
если есть возможность, то к метаданным какого либо объекта стоит обращаться не через метаданные.объект.....
а - ссылкаНаОбъект.Метаданные()- работает значительно быстрее.
это то что я щас вспомнил.... теперь нужно вновь в код глядеть.. что там я такого нашел ))
ЗЫ: почти сделал свой вариант дееспособный из вашей обработки, как и хотел...
не могу решить одну проблему- линии не всегда выходят из точек,а порой "глядят" в противоположную сторону, пока на графическом поле не передернешь само визуальное представление объекта. тогда линия сама встает на место.
возможно косяк самой графической схемы...
52. ryago ra (ryago2) 08.02.12 19:34
Если пользователь ИТ-специалист, или профессионал в области бизнеса, или любой другой специалист, которому нужно наглядно представлять в виде диаграмм и анализировать сложную информацию, системы и процессы, а также обмениваться такой информацией с коллегами, тогда поможет самоучитель TeachPro Microsoft Visio 2007. Он предназначен для обучения работе с программой Microsoft Office Visio Professional 2007, которая дает возможность все вышеперечисленное осуществить.

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

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

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

Программный продукт TeachPro Microsoft Office Visio Professional 2007 весной 2008 года в рамках Приоритетного национального проекта «Образование» поставлен во все общеобразовательные учреждения России в составе стандартного (базового) пакета программного обеспечения. В связи с этим данный учебный курс будет полезен широкому кругу учащихся и преподавателей.
53. ylyas v (ylyas) 09.02.12 00:08
(52) ryago2,
а теперь уважаемый, расскажите, как вы будете делать анализ и рисовать диаграммы и связи уже существующей БД реализованной на базе 1С ??? м???
сдается мне что вы казачок засланый.. под названием -бот!!
55. GrayT Токарев (GrayT) 09.02.12 08:07
(51) ylyas, так я там к объектам БД вообще не обращаюсь. Или я не понял в чем мой косяк, что вполне вероятно - пока еще мыслю клюшечными категориями.
Что касается линий - это не косяк системы. В качестве старотового проекта, была взята разработка рисования структуры подчиненности. И блок рисования линий был практически без переделок взят от туда. Но там алгоритм подразумевал вертикальное расположение объектов и изначально 4 точек для линий было всегда достаточно. Так что это мой косяк
56. ylyas v (ylyas) 09.02.12 11:22
(55) GrayT,
вот .. нашел.
в процедурах раздела
//### Запись конкретных групп Метаобъектов
ЗаписатьСправочники(),записать.....
используется неоднократное обращение вида: Метаданные.ВидОбъектаМетаданных
на мой взгляд правильней было бы в процедуре ввести локальную переменную, чтоб не заниматься разыменовыванием
каждый раз.
еще такой нюанс...
процедура НачатьЗаписьГруппыМетаОбъектов(ГруппаОбъектов....)
параметр группа объектов поставляет для процедуры только количество объектов в группе...
наверно есть смысл сразу передавать только количество а на всю группу метаданных.
В модуле формы обращаться к элементам данной формы можно не прибегая к конструкции "ЭтаФорма".

не очень понял, почему мКонстВысотаВарианта для модуля объекта и формы созданы отдельно??
ну вот такие моменты... может конечно придираюсь...
57. Андрей Акулов (DrAku1a) 04.06.12 10:08
не хватает записи/чтения данных из БД (можно в регистре СохраненныеНастройки для конфигураций от 1С хранить) в принципе, реализовать не проблема - сделал, НО... при нажатии "Обновить" - схема очищается...
59. Юрий Ульянов (spy-83) 26.08.14 08:04
еще бы чтение сохраненной схемы прикрутить, чтобы не очищалась при обновлении
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа