Снегопат
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/