Карта книги знаний - вариант алгоритма Ключевые слова: книга знаний, алгоритм, Миста, mista
Предлагаю сделать для книги знаний возможность вывода карты ссылок.
Карта должна выглядеть так:
= Внедрения 1С
==== На заводе РогаИКо
==== На заводе СеверСталь
==== За рубежом
====== В Америке
======== Как в Америке ускорили 1С за счет Дяди Билла
====== В ЮАР
======== http//Ссылка на внешний сайт3
======== http//Ссылка на внешний сайт4
==== По СНГ
= Ускорение 1С
==== Компонента для ускорения перебора идентификаторов
==== Компонента для удаления глюка с 100% зависоном
======== http//Ссылка на внешний сайт1
======== http//Ссылка на внешний сайт2
==== Программные прибабахи
====== Ускорение свертки
====== Полезные приемы для увеличения быстродействия
====== Как в Америке ускорили 1С за счет Дяди Билла
Карта строится по ссылкам, которые есть на странице. Волшебник говорит, что такая информация уже есть в виде отдельной таблицы.
Карта строится или по всей КЗ или по выбранному разделу КЗ.
Пусть есть таблица Ссылки (Откуда, Куда, Внешняя) - с какой страницы на какую идет ссылка и является ли ссылка внешней по отношению к книге знаний.
Итак, алгорим такой:
В СписокСтатей получаем список всех статей из выбранного раздела КЗ или вообще всех статей (в зависимости от выбранного фильтра);
Сортируем СписокСтатей по имени, или по дате обновления, или по автору (в зависимости от выбранного упорядочивания);
В СписокКорней получаем список всех статей, на которые нет ссылок;
Если в СписокКорней нет статей Тогда Заносим в СписокКорней первый элемент списка СписокСтатей.
Заводим пустой список СписокВыведенных;
Для Каждого Статья Из СписокКорней Цикл
Выполняем ВывестиРекурсивно(Статья, 1);
КонецЦикла;
Процедура ВывестиРекурсивно(Статья, Уровень):
Выводим с отступом Уровень статью.
Если статья в списке СписокВыведенных Тогда Возврат;
Заносим в СписокВыведенных статью Статья.
Получаем в список СписокДетей все статьи, которые входят в СписокСтатей, на которые есть ссылка из данной статьи.
Для Каждого Статья Из СписокДетей Цикл
Выполняем ВывестиРекурсивно(Статья, Уровень+1);
КонецЦикла;
Таким образом, одна статья может повториться несколько раз, но зацикливания не будет. Для формирования списков, понятное дело используются запросы SQL.
Предлагаю сделать для книги знаний возможность вывода карты ссылок |