И снова 1C Visio

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

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

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

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

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

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

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

56 Comments

  1. Famza

    Обработка только для 1С: Предприятие 8.1? Конвертнуть получится в 8.2?

    Reply
  2. vip76

    хотел бы глянуть, но денег нема =)

    Reply
  3. Angeros

    Я так и не понял причем тут визио? рисуем же в 1с а визио это так с боку?

    Reply
  4. GrayT

    (1)Ну она не под управляемыми формами сделана. А так я ее разрабатывал под 8.2.14.540

    (2)Денег?! я за нее денег не просил! давно, видать, не заходил сюда, что то поменялось.

    (3)Мне всегда было проще представлять структуру БД в виде связанных табличек. Первый вариант автоматизации этого дела был сделан вообще в Екселе. Понятно что все это было очень криво. Потом была попытка привязаться к MS Visio. Но что то мне с этими шейпами нормально подружится не получилось и сколько-нибудь законченного решения не было. А потом был проект на Дельфе и назван он был в отместку Visio1С — вот так и получилось (http://infostart.ru/public/16838/ )

    Reply
  5. romansun

    очень интересно, для документации и аналитики — это супер!

    замечания актуальны? или это скорее как пример работы с.. и дальше дорабатываться особо не будет?

    Reply
  6. romansun

    (1)

    обработка как раз только для 8.2, а вот под 8.1, я так понимаю, нет версий

    Reply
  7. GrayT

    (5)Актуальны. Думаю что дорабатыватся будет, хотя может и не быстро.

    если честно я не программирую на 8 :-[ Только учусь, и сваял с одной стороны инструмент мне необходимый, а с другой — просто привыкал к конфигуратору.

    (6)Нету. она написана на «одном дыхании» за несколько дней

    Reply
  8. romansun

    (7)

    ну там много шероховатостей с отображением,.. если кратко, что бросилось, то вот:

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

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

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

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

    (если я что-то упомянул/упомяну нереализуемого — сорри — со схемами совсем не работал)

    Reply
  9. GrayT

    (8)

    1. Ну а что клика по блоку недостаточно? Проблема в том что маршрут прохождения линии в случае перетаскивания объекта определяется самой графической схемой. Я могу конечно перехватить факт изменения положения объекта и заново перерисовать линии, но это достаточно геморойный алгоритм. Или я не понял сути предложения.

    2. Отличная идея. Соответственно и входящие линии можно перебрасывать по трем точкам шапки. Сделаю

    3. Тоже здравая мысль, если бы не одно «но» — реквизиты группируются в блоки: Данные, Табличная часть, Движения, Измерения и т.д. Переместить внутри блока не проблема, а за пределы? Единственно если не выводить блоки совсем, а реквизитам делать прификс принадлежности блоку, типа «Измерение: Контрагент» или «ТЧ:ДвиженияТоваров:Номенклатура». Можно сделать

    4. Спасибо за наводку, переименую.

    Reply
  10. rare-avis

    Классная задумка!

    Еще давно видел как строили диаграмму метаданных на основе Wingraphviz: http://www.mista.ru/subscribe/56.htm

    но это более интересно и патриотично, плюс интерактивно. Сам знаю, что с графической схемой надо помудохаться. Если бы 1С добавили методы добавления элементов графической схемы, то можно было бы творить чудеса.

    Reply
  11. Killgur

    Колонка выводить в схему непонятно как работает. Если объект добавляется на схему, то признак ставится. При ручном указании ничего не происходит. Или что-то не так делаю?

    Reply
  12. Killgur

    И еще хотелось бы возможность выбора показываемых на схеме реквизитов для их скрытия.

    Reply
  13. GrayT

    (10)Спасибо за слово доброе 🙂

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

    Либо вручную, либо через окно связей набираем необходимый набор метаобъектов и выводим сразу все. На больших конфигурациях обновление схемы занимет некоторое время, при этом если комп не очень шустрый перетаскивать по одному объекту начинает несколько нервировать — сделал вывод группой

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

    Reply
  14. romansun
    GrayT пишет:

    В принципе можно сделать и просто список реквизитов, подлежащих отображению.

    +1. Есть таблицы с огромным количеством реквизитов, а в схеме актуальны только несколько. Типизация отображаемых по виду, имхо, не сильно нужна — в зависимости от смысла схемы мы можем показывать те или иные сочетания ссылочных и числовых полей. Пару ссылок и «Сумма», к примеру. В другой схеме будет тот же регистр, но другая пара ссылок и «СуммаДругая». И т.п.

    Reply
  15. Константин С.

    Хм проблемка.

    Перетащил справочник «Банки», поудалял «лишние» реквизиты, далее добавил «Банковские счета». И обработка добавила еще оди квадратик «Банки», поверх уже существующего, со всеми реквизитами. Итого получился перекос при наложении.

    Reply
  16. GrayT

    (15)Хм. Что за конфигурация? я на бухгалтерии не смог воспроизвести ситуацию — у меня просто обновился квадратик банки, востановив все реквизиты обратно. Размер квадратика, правда, остался прежним (маленьким) соответственно перекос в картинке, но второго квадратика Банки не появилось.

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

    Reply
  17. Константин С.

    (16) Это делал в КА

    1С:Предприятие 8.2 (8.2.14.537)

    попробовал в БП 2

    вот что плучилось

    http://narod.ru/disk/33814707001/%D1%8B%D1%8B%D1%8B.grs.html

    Reply
  18. GrayT

    (17)Ну собственно говоря я об этом и говорил — обновление схемы привело к тому, что «Банки» перезаполнились всеми реквизитами, но размер блока ВыборВарианта остался без изменений. Буду доделывать когда, обработаю эту ситуацию.

    Reply
  19. awk

    То же хотел было написать «visio» для 1С. Вот только после изучения схем бизнес процессов пришел к выводу, что для отображения лучше использовать поле хтмл документа + vml.

    Reply
  20. GrayT

    (20)Очень слабо представляю что такое vml (иными словами — только что гуглил), да и в целом с веб-программированием сильно не дружу — насколько понимаю интерактивность там либо невозможна, либо танцы с бубном редкостные будут. Опять же практически всю графическую работу берет на себя графическая схема и не приходится рассчитывать координаты для каждого реквизита и последующей группировки, построение связей тоже «на плечах» граф схемы. Еще смущает «VML пока поддерживается лишь немногими программами, среди которых Internet Explorer 5.0+ и Microsoft Office 2000+.» © Википедия — информация, судя по всему сильно устарела, но неприятный след оставила 🙂

    Но может, конечно, в силу мелких познаний vml, я кругом и не прав.

    Reply
  21. Victorman

    Интересная задумка.

    Reply
  22. egorious

    а планируется ли дальнейшее развитие?

    Reply
  23. itek.09

    интересная вещица…..хотелось бы проверить на деле…может поможет в чем инбудь

    Reply
  24. GrayT

    (23)Да. Со временем туго, но буду стараться.

    Reply
  25. awk

    (21) VML — это язык разметки. Его свободный аналог SVG. Вот только VML IE поддерживает, а SVG нет. Из-за итеративности я как раз и предпочел его графической схеме. Просто, сейчас реально не до проектов для себя.

    Reply
  26. rdv

    Интересная задумка, попробую на 8.2, хотя сейсас установленна только 8.1.

    Reply
  27. Raminus

    Полезная вещь.

    Reply
  28. echo77

    Хорошая вещь. Опечатки в справке поправьте и было бы неплохо:

    — добавить поиск(при вводе текста) в дереве метаданных

    — чтобы при добавлении нового элемента НЕ перестраивались старые, т.к. в старых блоках может быть что-то удалено

    Reply
  29. curys

    Хорошая разработка

    Reply
  30. GrayT

    (29)Добавил в ТОДО Лист

    Reply
  31. php5

    интересная идея!

    Reply
  32. Ndochp

    А не встречали графическое представление связей по тексту модулей, а не структуре метаданных? типа кто кого дергает, от каких функций/общих модулей зависит и тд?

    Reply
  33. chmod660

    0, сделайте пожалуйста возможность вывода в схему ТОЛЬКО документа/справочника, без реквизитов и прочего.

    Reply
  34. AlexKoso

    зачетная вещица, а то надоели все эти записи на листочках

    Reply
  35. shomo

    Спасибо. Намного проще стало обозревать базу…..

    Reply
  36. shomo

    Да было бы замечательно что бы только объекты выводились (опционально конечно же) без реквизитов…

    Reply
  37. curys

    Поюзал данную обработку. Отличная штука, очень понравилась. Спасибо автору!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

    Reply
  38. lavalava7

    Думал свою сделать, да вот тут на сабж наткнулся

    попробую на 8.2

    Reply
  39. astory

    Набрать бы денег, чтобы стянуть (

    Reply
  40. molchanova

    Интересная программа, пригодится)

    Reply
  41. nanik

    Интересная обработка посмотрим, может и пригодится в работе.

    Reply
  42. ir_en

    Спасибо, полезная штука

    Reply
  43. IgoriKr

    представлять структуру БД в виде связанных табличек — это то, что так не хватало мне для сопровождения сторонних разработок и ‘освежать’ в памяти свои, спасибо

    Reply
  44. Patricul

    Ок… спасибо! Отличная штука!

    Reply
  45. mrApachik

    Огромное спасибо! Однозначно «+».

    Reply
  46. ylyas

    Только я было намылился сделать графическую схему отображения связей объектов… а ты уже .. сделал…. блин((

    ну и ладно))

    однозначно — это весьма полезная вещь с точки зрения анализа физической модели и взаимосвязей..

    в последнее время приходится много возиться в отраслевых решениях.. написанных.. далеко не лучшим образом. как раз с точки зрения связей объектов…. и вспомнилас СУБД аксцесса!!! Ведь куда более простая вещь, в плане конструкторов всяких и тп, но и там можно вывести схему и в ней самому натянуть связи, при чем установив их вид отношений…

    вобщем. зачет).. но скорее всего буду порбовать допиливать под себя.

    Reply
  47. ylyas

    ЗЫ:

    Смотрю код…На мой взгляд, есть весьма отрицательные моменты в том как вы испольуете метаданные…

    Но комментарии готов давать только лишь с вашего позволения ))

    Reply
  48. CeHbKA

    Писец, аффтар ты велик!

    Молимся на тебя о великий и могучий

    Reply
  49. GrayT

    (48) ylyas, вообще то я только учусь программировать 😉 (имею ввиду — проектов на снеговике у меня нет)

    Так что буду рад любым комментариям. Разумеется, если они по теме 🙂

    Итак — что не так я делаю с МД?

    Reply
  50. ylyas

    есть такая тема… что обращение к мд- по времени это самая затратная хрень

    но есть некий компромисс… который нужно помнить…

    если есть возможность, то к метаданным какого либо объекта стоит обращаться не через метаданные.объект…..

    а — ссылкаНаОбъект.Метаданные()- работает значительно быстрее.

    это то что я щас вспомнил…. теперь нужно вновь в код глядеть.. что там я такого нашел ))

    ЗЫ: почти сделал свой вариант дееспособный из вашей обработки, как и хотел…

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

    возможно косяк самой графической схемы…

    Reply
  51. ryago2

    Если пользователь ИТ-специалист, или профессионал в области бизнеса, или любой другой специалист, которому нужно наглядно представлять в виде диаграмм и анализировать сложную информацию, системы и процессы, а также обмениваться такой информацией с коллегами, тогда поможет самоучитель TeachPro Microsoft Visio 2007. Он предназначен для обучения работе с программой Microsoft Office Visio Professional 2007, которая дает возможность все вышеперечисленное осуществить.

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

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

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

    Программный продукт TeachPro Microsoft Office Visio Professional 2007 весной 2008 года в рамках Приоритетного национального проекта «Образование» поставлен во все общеобразовательные учреждения России в составе стандартного (базового) пакета программного обеспечения. В связи с этим данный учебный курс будет полезен широкому кругу учащихся и преподавателей.

    Reply
  52. ylyas

    (52) ryago2,

    а теперь уважаемый, расскажите, как вы будете делать анализ и рисовать диаграммы и связи уже существующей БД реализованной на базе 1С ??? м???

    сдается мне что вы казачок засланый.. под названием -бот!!

    Reply
  53. GrayT

    (51) ylyas, так я там к объектам БД вообще не обращаюсь. Или я не понял в чем мой косяк, что вполне вероятно — пока еще мыслю клюшечными категориями.

    Что касается линий — это не косяк системы. В качестве старотового проекта, была взята разработка рисования структуры подчиненности. И блок рисования линий был практически без переделок взят от туда. Но там алгоритм подразумевал вертикальное расположение объектов и изначально 4 точек для линий было всегда достаточно. Так что это мой косяк

    Reply
  54. ylyas

    (55)

    вот .. нашел.

    в процедурах раздела

    //### Запись конкретных групп Метаобъектов

    ЗаписатьСправочники(),записать…..

    используется неоднократное обращение вида: Метаданные.ВидОбъектаМетаданных

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

    каждый раз.

    еще такой нюанс…

    процедура НачатьЗаписьГруппыМетаОбъектов(ГруппаОбъектов….)

    параметр группа объектов поставляет для процедуры только количество объектов в группе…

    наверно есть смысл сразу передавать только количество а на всю группу метаданных.

    В модуле формы обращаться к элементам данной формы можно не прибегая к конструкции «ЭтаФорма».

    не очень понял, почему мКонстВысотаВарианта для модуля объекта и формы созданы отдельно??

    ну вот такие моменты… может конечно придираюсь…

    Reply
  55. DrAku1a

    не хватает записи/чтения данных из БД (можно в регистре СохраненныеНастройки для конфигураций от 1С хранить) в принципе, реализовать не проблема — сделал, НО… при нажатии «Обновить» — схема очищается…

    Reply
  56. spy-83

    еще бы чтение сохраненной схемы прикрутить, чтобы не очищалась при обновлении

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *