Снегопат https://snegopat.ru/forum/ |
|
Как обойти все метаданные и получить модули объектов ? https://snegopat.ru/forum/viewtopic.php?f=3&t=605 |
Страница 3 из 3 |
Автор: | artbear [ 25 апр 2014, 11:57 ] |
Заголовок сообщения: | Re: Как обойти все метаданные и получить модули объектов ? |
Очередной вопрос: как получить тип реквизита/измерения/ресурса метаданного? Задача - нужно найти все реквизиты с типом ЛюбаяСсылка, чтобы подготовиться к возможной реструктуризации. Как? |
Автор: | advali [ 28 апр 2014, 06:40 ] |
Заголовок сообщения: | Re: Как обойти все метаданные и получить модули объектов ? |
artbear писал(а): как получить тип реквизита/измерения/ресурса метаданного? Сам не смотрел, но может тут чего есть? https://snegopat.ru/forum/viewtopic.php?p=6800&sid=68f48caedf9b4d1244b931630ce25beb#p6800 |
Автор: | orefkov [ 28 апр 2014, 09:20 ] |
Заголовок сообщения: | Re: Как обойти все метаданные и получить модули объектов ? |
Если коротко, то пример получения типа объекта метаданного можно посмотреть в scripts\code_gen\gen_mgr.js, класс TypeFinder, использование - в create_doc.js Конкретно на тип "ЛюбаяСсылка" можно проверить, что Код: var types = new VBArray(mdObj.types()).toArray()
if(types[0]== '{280F5F0E-9C8A-49CC-BF6D-4D296CC17A63}') { // Это тип "ЛюбаяСсылка" } |
Автор: | orefkov [ 28 апр 2014, 12:03 ] |
Заголовок сообщения: | Re: Как обойти все метаданные и получить модули объектов ? |
Вот готовый пример вывода всех объектов с типом "ЛюбаяСсылка" Код: function fullName(mdObj)
{ var names = [] while(true) { names.unshift(mdObj.name) if(!mdObj.parent) break names.unshift(mdObj.mdclass.name(1)) mdObj = mdObj.parent } return names.join('.') } stdlib.forAllMdObjects(metadata.current.rootObject, function(mdObj){ if(new VBArray(mdObj.types()).toArray().join('').indexOf('{280F5F0E-9C8A-49CC-BF6D-4D296CC17A63}') >= 0) { Message(fullName(mdObj)) } }) Message("Конец") |
Страница 3 из 3 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |