И снова 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 не будет опубликован. Обязательные поля помечены *