Несколько лет назад мне довелось проектировать один достаточно сложный заказной модуль в DIRECTUM. Был написан краткий техпроект, описывающий в текстовой форме структуру справочников модуля, их взаимосвязи, взаимодействие друг с другом. На первый взгляд,
все казалось логичным. Однако, когда модуль был реализован и начал использоваться, обнаружилось, что некоторые сущности дублируют друг друга, отличаясь лишь местом и незначительными особенностями использования. Не то чтобы с этим нельзя было работать, но меня,
как проектировщика, такая ситуация огорчила.
Тогда я задумался - какие инструменты могли бы мне помочь найти подобные ошибки на этапе проектирования или хотя бы на ранних стадиях разработки. Проанализировав возможные причины ошибки при проектировании, в моем случае я остановился на двух:
- недостаточная наглядность проекта;
- изменяющиеся по ходу разработки требования.
Каким образом избавиться от влияния этих причин? Конечно, очень много зависит и от опыта проектировщика, и от качественного рецензирования, но представим, что разработчик проекта предоставлен самому себе и он не настолько гуру, чтобы держать весь проект
в голове.
Очевидно, что графическая схема сущностей
сильно бы помогла. Она позволила бы повысить наглядность, но, во-первых, создание такой схемы трудоемкая (и, по-моему, достаточно скучная) задача, а во-вторых, изменяющиеся требования заставляют эту схему еще и постоянно актуализировать. Разумеется, хорошо
бы было получать такую схему каким-либо автоматическим способом.
Первое что пришло на ум и было под рукой - MS Visio 2007. Позволяет строить схемы и, что очень важно, имеет собственный механизм оптимизации расположения блоков. Удалось набросать следующий сценарий - у пользователя запрашивается список интересующих его
справочников, по ним строится схема взаимосвязей в Visio. Что включает в себя схема проще всего понять из способа ее построения:
- На схеме размещаются выбранные пользователем справочники.
- На схему добавляются все справочники, в которых используются справочники, находящиеся на схеме, и все справочники, которые используются справочниками, находящимися на схеме.
- Пункт 2 повторяется до тех пор, пока все связанные справочники не попадают на схему или пока не будет достигнут требуемый уровень вложенности (задается при старте сценария).
Таким образом, получается своего рода рекурсия, способная вытащить на схему все справочники, напрямую или косвенно связанные с выбранными.
Вот как это выглядит, например, для справочника "Подразделения" с уровнем вложенности 1 (т.е. только те справочники, которые используются справочником "Подразделения" и те, которые используют данный справочник). Синие стрелки - связь 1 к нескольким, зеленые
стрелки 1 ко многим (табличная часть).

Кстати, можете попробовать выгрузить все справочники DIRECTUM и получить полную схему. Картина получится впечатляющая.
Примерно то же самое произойдет, если запустить сценарий
для любого справочника с максимальной глубиной вложенности. На схему попадут практически все справочники DIRECTUM, т.к. большинство справочников так или иначе взаимосвязаны.
Это лишь концепт, демонстрирующий возможности работы с Visio из DIRECTUM. В данном сценарии, например, места для развития хоть отбавляй - механизм анализирует только реквизиты, а мог бы еще и события, иногда полезно строить схему и по использованию какой-то
функции в различных сущностях. Да и много еще чего полезного можно придумать. На основании тех же принципов можно написать сценарии построения схем не метаданных, а самих данных (например, древовидную структуру предприятия).
P.S. Работает в Visio 2007, 2010.
Сценарий для DIRECTUM 4.5 и старше (импорт через компоненту "Сценарии"): VisioSchemeBuilderExample.xml (11,78 Кб)