Волшебство
программирования на 1С:Предприятие 7.7 и 8.0 Выпуск
56 / 23.05.2004
Построитель
графов DOT
Здравствуйте. В этом выпуске рассмотрен универсальный
механизм для построения графов на основе входного текстового
файла. Этот механизм очень удобно применять для анализа структуры
любой конфигурации для 1С:Предприятия 7.7 и 8.0.
Часто возникает необходимость разобраться в
сложной конфигурации, разобраться как она устроена, каковы
взаимосвязи между объектами конфигурации. Например, такая
задача особенно актуальна для новых конфигураций на платформе
8.0. Структуру конфигурации желательно вывести в графическом
виде, поскольку это наиболее быстрый способ понимания, потому
что картинка стоит тысячи слов.
Теперь можно уверенно сказать, что такая возможность есть!
Для этого можно применить программу под названием «DOT», которая
принимает на вход текстовый файл со структурой графа, а на
выходе формирует граф в виде графического, векторного или
текстового файла.
Примеры графов
Ниже приведены примеры построенных графов для различных типовых
конфигураций от фирмы 1С. Для упрощения диаграмм в граф включены
только определенные подсистемы конфигурации.
Программа «DOT» написана на С специалистами лаборатории AT&T
и распространяется в открытых исходниках. Программа работает
на всех операционных системах, включая Windows, Linux/Unix,
Mac OS. В конце этой статьи приведены ссылки для скачивания
всех необходимых файлов.
Входной dot-файл
Входной файл для программы DOT является обычным текстовым
файлом на специальном языке разметки графа – dot. Структура
файла очень простая, например,
Программа Dot сама распознает все связи графа и упорядочит
его таким образом, чтобы было наименьшее количество пересечений.
DOT позволяет изменять внешний вид графа. Например, можно
изменять форму фигур (прямоугольники, овалы, круги, параллелограммы,
многоугольники), цвет и шрифт текста, цвет фона фигур, стиль
стрелок и рамок фигур, подписи стрелок и т.д. Это позволяет
формировать множество графов, отображающих любую информацию
в графическом виде. Это делается путем указания во входном
файле инструкций.
В следующем примере изменяется формат стрелки и формат одного
узла:
Сначала описываются взаимосвязи между узлами, а затем описывается
формат узлов.
Ниже дано описание некоторых атрибутов:
style – вид стрелки – обычная (solid), жирная (bold),
пунктирная (dotted, dashed) и т.д.
arrowhead – форма конца (головы) стрелки.
arrowtail – форма начала (хвоста) стрелки.
label – подпись стрелки или узла
shape – форма фигур: прямоугольник, эллипс и т.д.
fontname, fontsize, fontcolor – имя, размер и цвет шрифта
fillcolor – цвет заливки
Программа DOT позволяет использовать и другие формы вывода
схем, например, в виде кластеров и в виде записей (структур).
Полный формат этих инструкций приведен в руководстве пользователя
(PDF-файл) – см. ссылку в конце статьи.
Можно выводить граф в двух режимах: иерархический (dot) и
окрестный (neato). В первом режиме узлы, не имеющие входных
стрелок, располагаются преимущественно сверху. Таким образом,
схему можно читать сверху вниз, что очень удобно для восприятия,
но графы получаются очень широкими. Во втором режиме граф
выстраивается на всю ширину и высоту страницы, но иерархия
не соблюдается. Режим построения графа задается выбором движка:
dot или neato.
Русификация DOT
При использовании программы возникает проблема русификации,
чтобы в выходном графическом файле отображались русские буквы,
а не закорючки. Для решения этой проблемы нужно на вход программы
подавать файл в кодировке UNICODE (UTF-8). Но самое главное,
что в этом файле не должно быть первых трех байтов, обозначающих
формат Unicode. Эти байты добавляются некоторыми программами
при сохранении файла в формате Unicode, в частности платформой
1С:Предприятие 8.0 или Блокнотом. Убрать эти байты можно любой
программой, позволяющей редактировать файлы в 16-ричном формате.
Кодировка UTF-8 отличается от UTF-16 тем, что стандартные
английские символы кодируются одним байтом, а не двумя.
Выходной файл
Программа DOT поддерживает следующие форматы выходного файла:
PNG,
GIF,
JPEG,
SVG(xml),
DOT (txt),
imap (html),
VRML,
PostScript
и другие.
Обратите внимание на векторный формат SVG, который по сути
является XML-файлом. Этот формат набирает всю большую популярность
и поддерживается многими графическими программами, в том числе
Microsoft Visio 2003, Adobe Illustrator 10 и специализированными
SVG-редакторами. Для просмотра файла в формате SVG нужно скачать
плагин к браузеру Internet Explorer с сайта www.adobe.com/svg
Теоретически, обработав получившийся файл, можно
добавить ему интерактивности. Например, можно выводить более
подробную информацию об объекте
конфигурации. Если у вас получится заставить работать SVG
в интерактивном режиме в программе 1С:Предприятие 7.7 или
8.0, обязательно расскажите, как вы это сделали и напишите
мне по адресу stasmit@mail.ru или на форум www.forum.mista.ru.
Библиотека Wingraphviz.dll
Есть возможность строить такие же графы полностью программно
через технологию COM. Для этого используется программа Wingraphviz,
содержащая в себе движок DOT. Эта программа оформлена в виде
DLL и позволяет вызывать себя из других программ, в том числе
из 1С:Предприятия 7.7 и 8.0 (только не в качестве внешней
компоненты, а в качестве COM-объекта).
Для использования библиотеки Wingraphviz.dll ее необходимо
зарегистрировать в реестре c помощью команды:
regsvr32.exe <постоянный путь к dll> (для Windows
2000/XP)
regserver.exe <постоянный путь к dll> (для
Windows 95/98/Me)
Для этого нужно иметь права локального администратора на
данной машине. После регистрации перемещать DLL в другой каталог
нельзя, поскольку придется заново регистрировать программу
в реестре.
В программном коде Wingraphviz вызывается следующим образом:
В версии 8.0 нет замечательной функции AnsiToOem, а все строки
хранятся в кодировке Unicode. В результате экспериментов был
найден следующий способ использования программы Wingraphviz:
Текст = Новый ТекстовыйДокумент;
Текст.УстановитьТекст(ИсхСтрока);
Текст.Записать("c:\temp.txt",КодировкаТекста.OEM);
Текст.Прочитать("c:\temp.txt",КодировкаТекста.ANSI);
ЭлементыФормы.КартинкаНаФорме.Картинка =
Новый
Картинка (ПолныйПутьКФайлуPNG);
Последняя строка в приведенном выше примере отображает получившийся граф в
экранной форме 1С:Предприятия 8.0 в элементе управления «Картинка».
Обработки для 1С:Предприятия 7.7 и 8.0
Таким образом, построитель графов DOT и программа Wingraphviz
позволяют полностью автоматизированно рисовать графы. Одним
из самых замечательных применений данных программ является
автоматизированное построение структуры любой конфигурации
на 1С:Предприятие 7.7 и 8.0. Для этого нужно пройтись по метаданным
и сформировать текстовый файл определенной структуры (на DOT-языке,
который был описан выше).
Следующие обработки позволяют выводить структуру конфигурации
в подобный файл:
Обе обработки позволяют сформировать входной файл для DOT,
содержащий взаимосвязи между объектами конфигурации по реквизитам
и по подчиненным справочникам. Кроме того, обе обработки позволяют
установить фильтр по объектам, т.е. перечислить объекты конфигурации,
которые обязательно должны быть отражены на диаграмме. В обработке
для версии 8.0 есть возможность указать фильтр по подсистеме
и тогда в диаграмму войдут все объекты, принадлежащие данной
подсистеме.
Добавлена возможность поиска
по форуму через Яндекс. В этом случае
запрос переадресуется Яндексу и вы переходите на сайт Яндекса.
Этот режим работает заметно быстрее
и позволяет использовать мощный язык запросов Яндекса, учитывать морфологию
русского
языка, искать
по
словосочетаниям, искать в найденном. Но нужно понимать, что через Яндекс
можно не найти какое-то сообщение (особенно новое), поскольку оно еще
не было проиндексировано поисковым роботом (пауком). Более того, даже
если оно было проиндексировано, то оно также может быть не найдено,
поскольку поисковая машина включает в свою базу не всю информацию,
а только выборочную
в соответствии со своим алгоритмом.
Возможен экспорт веток форума и самих сообщений в различные
форматы: RSS, XML, HTML, TXT.
Здесь вы можете увидеть список параметров
экспорта веток, а здесь список параметров
экспорта сообщений. Это пригодится для тех пользователей, которые
жаждут альтернативного просмотра списка тем, или для встраивания
форума в свои сайты или
программные продукты. Например, данный механизм используется
для показа последних обновленных веток на главной странице сайта
www.mista.ru.
RSS
- формат,
предназначенный для публикации новостей. Устанавливаете любой RSS-клиент,
создаете
новый информационный канал и указываете этот адрес.
RSS-клиент может болтаться в systray и периодически проверять
обновления на форуме, отображая список новых веток и начальных
сообщений. Лично
я использую RSS-клиент Abilon для
того, чтобы всегда быть в курсе о новых темах на форуме. Подробнее
об RSS - на сайтах
Spectator и Webmascon.
Всего
на форуме
около 4300 тем, 50 000 cообщений, 1438 зарегистрированных
пользователей.
Форум
обновляется каждый день и рекомендуется для ежедневного
посещения.