Вычисление дочерних записей всех уровней вложенности


В Comindware Platform существует возможность построения взаимных связей как между шаблонами записи, так и внутри одного шаблона записи, например, для выстраивания древовидной структуры (работы, подразделения и т. д.). Данная статья применима как раз в случае реализации древовидной структуры связей и предоставляет пример выражения для получения всех дочерних записей какой-либо записи с учетом всех уровней вложенности.

@prefix object: <http://comindware.com/ontology/object#>.

@prefix assert: <http://comindware.com/logics/assert#>.

{

    ("Rabotypoproektu" "Dochernieraboty") object:findProperty ?dochprop.

    ("Rabotypoproektu" "Vsedochernie") object:findProperty ?vsedochprop.

   

    (

               {?item ?dochprop ?value.}

        {

            ?item ?dochprop ?docki.

            ?docki ?vsedochprop ?value.

        }

    )assert:union true

}

где:

Rabotypoproektu — системное имя шаблона записи, где реализована древовидная структура связей (в данном примере это «Работы по проекту»);

Dochernieraboty — системное имя атрибута с типом данных «Запись», который находится в указанном шаблоне записи, ссылается на него же, и который хранит связь для дочерних записей;

Vsedochernie — системное имя атрибута с типом данных «Запись», который находится в указанном шаблоне записи, и в котором происходит данное вычисление (т. е. переиспользуем вычисляемый атрибут, в котором происходит данное вычисление).



Номер Статьи: 4940
Размещено: Fri, Nov 11, 2022
Последнее обновление: Mon, Jan 13, 2025

Online URL: https://kb.comindware.ru/article/vychislenie-dochernih-zapisej-vseh-urovnej-vlozhennosti-4940.html