Граф(ин) 7.7.

01.07.09

Разработка - Математика и алгоритмы

Что порождает чудовищ? 1С+Дракон или сны разума?

При обсуждении рекурсивного обхода дерева я как-то высказался, что в семерке есть все, и показал модель дерева на базе СпискаЗначений - вполне известная модель. А как насчет модели ориентированного графа?

Будем строить модель на Справочниках. Поскольку граф содержит узлы (вершины) и дуги (ребра), так эти справочники и назовем.

Элемент справочника Дуги, т.е. дуга графа, характеризуется атрибутами (реквизитами):

  • Начало;
  • Конец;
  • Содержание.

Отложив Содержание в сторону (пока), вполне видим, что первым двум реквизитам можно назначить тип Справочник.Узлы.

У дуги два узла. А вот узел сопрягается с произвольным количеством дуг. Поэтому делаем справочник узлов двухуровневым, причем сами узлы будем представлять группами, а в качестве элементов группы будем указывать входящие/исходящие дуги. Итак, реквизит элемента справочника Узлы Дуга получает тип Справочник.Дуги. В качестве второго реквизита будем использовать флажок Входящая - на всякий случай.

Далее, мы же хотим хранить разные графы. Поэтому заведем реквизит группы справочника Узлы ИмяГрафа с типом Строка, хотя, наверное, можно было обойтись Наименованием. Хочется еще как-то типизировать узлы, поэтому заведем реквизит группы ТипУзла.

Все. Структура хранения модели графа готова (в семерке есть все!).

Ну, а при чем здесь Дракон из анонса?

Алгоритмы на языке Дракон (//infostart.ru/blogs/1017/) представляются ориентированными графами из разнотипных узлов (ТипУзла), один из которых стартовый (специальный тип) и, возможно, несколько финишных (еще один специальный тип). Есть также ветвления, вычисления и т.д. Пожалуй пора к реквизитам группы добавить Алгоритм с типом пока что неопределенным.

Ну и наконец, реквизит Содержание, ранее отложенный в сторону. Переходя от узла к узлу Драконсхемы, мы явно или неявно тащим некий набор данных, который нужен для срабатывания следующего узла (например, чтобы произошло сравнение А>В, А и В должны быть проинициализированы). Вот описание этих данных мы и будем хранить в реквизите Содержание. Суть описания может быть различной, и это тема для Драконопроизводителей, остающаяся за рамками статьи...

 

См. также

Загрузка и выгрузка в Excel Математика и алгоритмы Программист Платформа 1С v7.7 Платформа 1С v8.3 Бесплатно (free)

Статья посвящена распространённому вопросу - как сохранить несколько таблиц (отчетов) в формате MXL, с которым работает 1С, на отдельные листы одного Excel файла. Освещается простой алгоритм решения проблемы штатными средствами, без использования внешних модулей и библиотек (не относящихся к 1С и Excel).

23.11.2015    19283    etmarket    14    

21

Разработка внешних компонент Математика и алгоритмы Программист Платформа 1С v7.7 Платформа 1С v8.3 Бесплатно (free)

Динамическая компиляция класса обертки для использования .Net событий в 1С через ДобавитьОбработчик или ОбработкаВнешнегоСобытия, а так же генерация модулей на C# и 1С для подключения к событиям. Использование DynamicMethod и ILGenerator. Представлены примеры для использовании событий System.IO.FileSystemWatcher (Ожидает уведомления файловой системы об изменениях и инициирует события при изменениях каталога или файла в каталоге.) и SerialPort (обработка сканера штрих кода подключенного к COM порту). Обертка позволяет использовать классы .Net только на языке 1С. Реализация 1C Messenger описанного здесь http://infostart.ru/public/434771/

12.11.2015    51892    Serginio    36    

58

Математика и алгоритмы Программист Платформа 1С v7.7 Платформа 1С v8.3 Абонемент ($m)

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

1 стартмани

25.02.2015    25154    etmarket    46    

18

Математика и алгоритмы Программист Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

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

1 стартмани

26.02.2013    19803    11    Sbelyi78    38    

9

Математика и алгоритмы Системный администратор Программист Бухгалтер Оперативный учет 7.7 Бухгалтерский учет 7.7 Расчет 7.7 Конфигурации 1cv7 Россия Абонемент ($m)

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

1 стартмани

23.05.2012    14902    66    McSeem    3    

8

Математика и алгоритмы Программист Платформа 1С v7.7 Конфигурации 1cv7 Россия Абонемент ($m)

Алгоритм получения значения тригонометрических функций путем разложения их в ряд Тейлора

1 стартмани

04.03.2012    8779    4    nysysimara    10    

5
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Арчибальд 2709 01.07.09 15:04 Сейчас в теме
Поскольку это статья, а не готовое решение, в названии стоИт не Граф, а графин (т.е. граф недоделанный :)))
2. venger 2124 01.07.09 15:22 Сейчас в теме
(1) Главное идея и то, что не типовой заученный пример:-) Поэтому и плюс:)
3. YVolohov 723 01.07.09 15:39 Сейчас в теме
Нечто подобное (только попроще) я пытался создать для изучения иностранных языков. Пусть существует справочник, элемент которого содержит иностранное слово и его перевод на русский а табличная часть - список ссылок на близкие (по ассоциации слова). Первое слово выбирается случайно, а дальше происходит переход по одной из ссылок на слово-ассоциацию. Затем процесс повторяется до тех пор пока его не прервут. Если у слова нет ссылок то опять происходит случайный выбор из базы.
Таким образом пользователь как бы ходит по бесконечной сети где каждый узел ассоциируется со следующим.
4. Арчибальд 2709 01.07.09 17:07 Сейчас в теме
(3) Я так и изучал английский, только пользовался не Справочниками, конечно, а картотекой.

Но хотелось бы комментариев от драконистов...
5. keleg 327 02.07.09 03:45 Сейчас в теме
Ну, я пришел в 1С сразу на 8ку, потому насчет "есть все" - возможно, но считаю что уже не очень актуально :-)
Принцип понятен. Но опять же в 8ке закрытая архитектура и без левых телодвижений Драконом в ней пользоваться не получится, а лишних сложностей не хочется.
Потому дожидаюсь выхода Управляемого Приложения, и уже в его контексте буду искать применимость Дракона и убеждать разработчиков, благо опыт этого убеждения имеется, хоть и не очень большой :-)

6. Арчибальд 2709 02.07.09 08:24 Сейчас в теме
(5) Насчет восьмерки не согласен, хоть я и не являюсь ее поклонником/знатоком. Как раз там все это можно сделать элегантней, особенно "зашить" алгоритмы отработки узлов.
А вообще-то, чем богаче (многообразнее) платформа, тем легче потерять начальную идею (суть). Пример: мне задают вопрос, как это в семерке можно обходить дерево, если объект "Дерево" в семерке отсутствует.
7. fishca 1259 03.07.09 12:31 Сейчас в теме
где методические материалы то?
8. Арчибальд 2709 03.07.09 13:11 Сейчас в теме
(7)Большой энциклопедический словарь:
Метод
Метод - (от греч . methodos - путь исследования, теория, учение), способ достижения какой-либо цели, решения конкретной задачи; совокупность приемов или операций практического или теоретического освоения (познания) действительности. В философии метод - способ построения и обоснования системы философского знания. ;

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

Что, обиделся? ;-)
9. fishca 1259 03.07.09 13:33 Сейчас в теме
(8) Что, обиделся? ;-) ---- нет :), просто мимо проходил.
Оставьте свое сообщение