Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Волшебство программирования на 1С:Предприятие 7.7 и 8.0 . Выпуск 56


Информационный Канал Subscribe.Ru

Волшебство программирования на 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. Структура файла очень простая, например,

Graph G{
Узел1 -> Узел2;
Узел1 -> Узел3;
Узел2 -> Узел3;
}

Программа Dot сама распознает все связи графа и упорядочит его таким образом, чтобы было наименьшее количество пересечений.

DOT позволяет изменять внешний вид графа. Например, можно изменять форму фигур (прямоугольники, овалы, круги, параллелограммы, многоугольники), цвет и шрифт текста, цвет фона фигур, стиль стрелок и рамок фигур, подписи стрелок и т.д. Это позволяет формировать множество графов, отображающих любую информацию в графическом виде. Это делается путем указания во входном файле инструкций.

В следующем примере изменяется формат стрелки и формат одного узла:

digraph G {
Узел1->Узел2 [style=""bold”," arrowhead=”invdot”, label=”Связь1", fontsize=12];
Узел1 [shape="ellipse", label="Узел1"];
}

Сначала описываются взаимосвязи между узлами, а затем описывается формат узлов.

Ниже дано описание некоторых атрибутов:

  • 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 вызывается следующим образом:

1С:Предприятие 7.7:

Dot=СоздатьОбъект("Wingraphviz.dot");
ИсхСтрока =AnsiToOem(ИсхСтрока);
Dot.CodePage=866;
Img=Dot.ToPNG(ИсхСтрока);
Img.Save(ПолныйПутьКФайлуPNG);

1С:Предприятие 8.0:

В версии 8.0 нет замечательной функции AnsiToOem, а все строки хранятся в кодировке Unicode. В результате экспериментов был найден следующий способ использования программы Wingraphviz:

Текст = Новый ТекстовыйДокумент;
Текст.УстановитьТекст(ИсхСтрока);
Текст.Записать("c:\temp.txt",КодировкаТекста.OEM);
Текст.Прочитать("c:\temp.txt",КодировкаТекста.ANSI);

dot = ПолучитьCOMОбъект("","Wingraphviz.dot");
ПолныйПутьКФайлуPNG = "c:\file.png";
dot.Codepage = 866;
Img = dot.ToPNG(Стр);
Img.Save(ПолныйПутьКФайлуPNG);

ЭлементыФормы.КартинкаНаФорме.Картинка =
                                Новый Картинка (ПолныйПутьКФайлуPNG);


Последняя строка в приведенном выше примере отображает получившийся граф в экранной форме 1С:Предприятия 8.0 в элементе управления «Картинка».

Обработки для 1С:Предприятия 7.7 и 8.0

Таким образом, построитель графов DOT и программа Wingraphviz позволяют полностью автоматизированно рисовать графы. Одним из самых замечательных применений данных программ является автоматизированное построение структуры любой конфигурации на 1С:Предприятие 7.7 и 8.0. Для этого нужно пройтись по метаданным и сформировать текстовый файл определенной структуры (на DOT-языке, который был описан выше).

Следующие обработки позволяют выводить структуру конфигурации в подобный файл:

Обе обработки позволяют сформировать входной файл для DOT, содержащий взаимосвязи между объектами конфигурации по реквизитам и по подчиненным справочникам. Кроме того, обе обработки позволяют установить фильтр по объектам, т.е. перечислить объекты конфигурации, которые обязательно должны быть отражены на диаграмме. В обработке для версии 8.0 есть возможность указать фильтр по подсистеме и тогда в диаграмму войдут все объекты, принадлежащие данной подсистеме.

Ссылки

Сводная страница на www.mista.ru по программе DOT:
http://www.mista.ru/dot

Домашняя страница проекта DOT
http://www.research.att.com/sw/tools/graphviz/

Здесь можно скачать саму программу и исходники к ней:
http://www.research.att.com/sw/tools/graphviz/download.html

Зеркало: http://www.graphviz.org/pub/graphviz/

Руководство пользователя по DOT (PDF-формат):
http://www.research.att.com/sw/tools/graphviz/dotguide.pdf

Справочное руководство по DOT:
http://www.research.att.com/sw/tools/graphviz/refs.html

Руководство пользователя по WinGraphviz (PDF-формат):
http://www.research.att.com/sw/tools/graphviz/libguide.pdf

Описание программы WinGraphviz
http://home.so-net.net.tw/oodtsen/wingraphviz/index.htm

Обработка «Анализ метаданных» для 7.7 (Кренделев Алексей) - 500К, включая библиотеки WinGraphviz.dll и GComp.dll
http://www.mista.ru/dot/amv7.htm

Обработка «Структура конфигурации» для 8.0 (Митичкин Станислав) - 400К, включая библиотеку WinGraphviz.dll
http://www.mista.ru/dot/amv8.htm


Волшебный форум - www.forum.mista.ru

Составлено полное описание возможностей форума http://www.forum.mista.ru/about.htm.

Базовые функции Сервисные функции
  • Добавлена возможность поиска по форуму через Яндекс. В этом случае запрос переадресуется Яндексу и вы переходите на сайт Яндекса. Этот режим работает заметно быстрее и позволяет использовать мощный язык запросов Яндекса, учитывать морфологию русского языка, искать по словосочетаниям, искать в найденном. Но нужно понимать, что через Яндекс можно не найти какое-то сообщение (особенно новое), поскольку оно еще не было проиндексировано поисковым роботом (пауком). Более того, даже если оно было проиндексировано, то оно также может быть не найдено, поскольку поисковая машина включает в свою базу не всю информацию, а только выборочную в соответствии со своим алгоритмом.
       
  • Возможен экспорт веток форума и самих сообщений в различные форматы: RSS, XML, HTML, TXT. Здесь вы можете увидеть список параметров экспорта веток, а здесь список параметров экспорта сообщений. Это пригодится для тех пользователей, которые жаждут альтернативного просмотра списка тем, или для встраивания форума в свои сайты или программные продукты. Например, данный механизм используется для показа последних обновленных веток на главной странице сайта www.mista.ru.

RSS - формат, предназначенный для публикации новостей. Устанавливаете любой RSS-клиент, создаете новый информационный канал и указываете этот адрес. RSS-клиент может болтаться в systray и периодически проверять обновления на форуме, отображая список новых веток и начальных сообщений. Лично я использую RSS-клиент Abilon для того, чтобы всегда быть в курсе о новых темах на форуме. Подробнее об RSS - на сайтах Spectator и Webmascon.

Всего на форуме около 4300 тем, 50 000 cообщений, 1438 зарегистрированных пользователей.
Форум обновляется каждый день и рекомендуется для ежедневного посещения.

Раздел форума по 1С имеет собственный адрес: http://www.forum.mista.ru/index.php?forum=1c
Вы можете взять его в Избранное и увидите только сообщения, посвященные 1С


См. также:
1С:Предприятие 7.7: учебник, курс лекций, статьи, ссылки
Книга "Разработка в системе 1С:Предприятие 8.0" - http://www.v8.1c.ru/book/v8develop.htm

Официальный сайт рассылки - www.mista.ru
Волшебный форум -
www.forum.mista.ru,
Форум по 1С - http://www.forum.mista.ru/index.php?forum=1c
Архив выпусков этой рассылки - http://www.mista.ru/subscribe

С уважением,
Станислав Митичкин (aka Волшебник)
stasmit@mail.ru




http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу


В избранное