GetTreeElementsResult GetTreeElements(TreeId tTree, GetTreeElementsArg tArg)
tTree. Моникёр объекта, для которого выполняется операция.
tArg. Параметры получения дерева метаданных.
Операция GetTreeElements извлекает дерево метаданных объекта репозитория.
Данная операция позволяет получить информацию о каком-либо объекте репозитория в виде дерева элементов. Информация, хранящаяся в элементах, в дальнейшем может использоваться для составления формул. В текущей реализации операция поддерживает работу с экспресс-отчётом и объектами в задаче ETL.
Для выполнения операции необходимо в tTree указать сформированный моникёр дерева, а в tArg указать параметры извлечения элементов с метаданными.
Моникёр формируется в одном из следующих форматов:
«моникёр экспресс-отчёта»!Sheets!«ключ листа»!MtdTree - для получения информации о структуре источников, лежащих в основе экспресс-отчета;
«моникёр задачи ETL»!Objects!«индекс объекта в задаче ETL»!MtdTree - для получения информации о связях объекта с другими объектами в задаче ETL.
«моникёр вычисляемого куба»!Params!MtdTree - для получения информации о параметрах, которые могут использоваться в формулах вычисляемого куба.
«моникёр из поля cachedDatasetId»!MtdTree - для получения полей, которые могут использоваться при настройке фильтрации данных какого-либо реляционного объекта.
Полученные элементы с метаданными будут доступны в результате выполнения операции в поле els.
Ниже приведен пример использования операции GetTreeElements для получения дерева метаданных для указанного листа экспресс-отчета. В запросе передаются моникёр экспресс-отчета и ключ листа. В ответе приходит набор элементов с метаданными.
{
"GetTreeElements" :
{
"tTree" :
{
"id" : "S1!M!S!E1!Sheets!189!MtdTree"
},
"tArg" :
{
"parent" :
{
"key" : ""
},
"filter" :
{
"text" :
{
"text" : "Элемент",
"searchName" : "true",
"searchId" : "false"
},
"includeParents" : "false"
},
"pattern" :
{
"getParentKey" : "true",
"getHasChildren" : "true",
"getLevel" : "true",
"getChildIndex" : "true",
"getChildrenCount" : "true",
"getTerm" : "true",
"getClsIdDataType" : "true"
},
"range" :
{
"start" : "0",
"count" : "100"
},
"filteredCount" : "true"
}
}
}
{
"GetTreeElementsResult" :
{
"els" :
{
"e" :
[
{
"@c" : "1",
"@h" : "0",
"@i" : "0",
"@hc" : "1",
"@l" : "1",
"k" : "3",
"n" : "Куб (элементы)",
"id" : "OBJ183",
"p" : "2",
"classId" : "1287",
"tag" : "eax.src"
},
{
"@c" : "2",
"@h" : "2",
"@i" : "0",
"@hc" : "1",
"@l" : "4",
"k" : "7",
"n" : "Элементы",
"id" : "",
"p" : "5",
"tag" : "eax.des"
},
{
"@c" : "1",
"@h" : "1",
"@i" : "0",
"@hc" : "1",
"@l" : "5",
"k" : "13",
"n" : "Первый элемент",
"id" : "1",
"p" : "7",
"tag" : "eax.de",
"term" :
{
"it" :
[
{
"n" : "tag",
"v" : "eax.de"
},
{
"n" : "key",
"v" : "116"
},
{
"n" : "elKey",
"v" : "1"
}
]
}
},
{
"@c" : "1",
"@h" : "1",
"@i" : "0",
"@hc" : "1",
"@l" : "6",
"k" : "15",
"n" : "Второй элемент",
"id" : "2",
"p" : "13",
"tag" : "eax.de",
"term" :
{
"it" :
[
{
"n" : "tag",
"v" : "eax.de"
},
{
"n" : "key",
"v" : "116"
},
{
"n" : "elKey",
"v" : "2"
}
]
}
},
{
"@c" : "0",
"@h" : "0",
"@i" : "0",
"@hc" : "0",
"@l" : "7",
"k" : "16",
"n" : "Третий элемент",
"id" : "3",
"p" : "15",
"tag" : "eax.de",
"term" :
{
"it" :
[
{
"n" : "tag",
"v" : "eax.de"
},
{
"n" : "key",
"v" : "116"
},
{
"n" : "elKey",
"v" : "3"
}
]
}
},
{
"@c" : "0",
"@h" : "0",
"@i" : "1",
"@hc" : "0",
"@l" : "5",
"k" : "14",
"n" : "Четвертый элемент",
"id" : "4",
"p" : "7",
"tag" : "eax.de",
"term" :
{
"it" :
[
{
"n" : "tag",
"v" : "eax.de"
},
{
"n" : "key",
"v" : "116"
},
{
"n" : "elKey",
"v" : "4"
}
]
}
}
]
},
"filteredCount" : "6",
"id" :
{
"id" : "S1!M!S!E1!Sheets!189!MtdTree"
}
}
}
public static GetTreeElementsResult GetSheetMetadata(EaxId moniker, ulong sheetKey)
{
var somClient = new SomPortTypeClient(); //Прокси-объект для выполнения операций
//Параметры выполнения операции
var tGet = new GetTreeElements()
{
tArg = new GetTreeElementsArg()
{
parent = new ElKey() { key = "" },
filter = new TreeElsFilter()
{
includeParents = false,
text = new TreeTextFilter()
{
searchId = false,
searchName = true,
text = "Элемент"
}
},
filteredCount = true,
pattern = new TreeElsPattern()
{
getChildIndex = true,
getChildrenCount = true,
getClsIdDataType = true,
getHasChildren = true,
getLevel = true,
getParentKey = true,
getTerm = true
},
range = new ListRange()
{
start = 0,
count = 100
}
},
tTree = new TreeId() { id = moniker.id + "!Sheets!" + sheetKey.ToString() + "!MtdTree" }
};
//Получение информации
var result = somClient.GetTreeElements(tGet);
return result;
}
См. также: