Упрощает создание Объектов XDTO.
// Возвращает иерархию/дерево типов свойств для ТипОбъектаXDTO
// Упрощает создание Объектов XDTO.
// Создание объектов XDTO без использования Иерархии свойств:
//////////////////////////////////////////////////////////////////////////////
// ТипДата = Фабрика.Пакеты.Получить("urn://egisso-ru/msg/10.06.S/1.0.6").КорневыеСвойства.Получить("data").Тип;
// data = Фабрика.Создать(ТипДата);
// ТипПакет =ТипДата.Свойства.Получить("package").Тип;
// data.package = Фабрика.Создать(ТипПакет);
// data.package.packageId = XMLСтрока(новый УникальныйИдентификатор);
// ТипЭлемент = ТипПакет.Свойства.Получить("elements").Тип;
// data.package.elements = Фабрика.Создать(ТипЭлемент);
// ТипФакт = ТипЭлемент.Свойства.Получить("fact").Тип;
// data.package.elements.fact = Фабрика.Создать(ТипФакт);
/////////////////////////////////////////////////////////////////////////////
// Создание объектов XDTO с помощью Иерархии свойств:
/////////////////////////////////////////////////////////////////////////////
// КорневойТип = Фабрика.Пакеты.Получить("urn://egisso-ru/msg/10.06.S/1.0.6").КорневыеСвойства.Получить("data").Тип;
// ИерархияТипов = Новый Структура("data", ИерархияТиповXDTO(КорневойТип, 20));
// data = Фабрика.Создать(ИерархияТипов.data.Тип);
// data.package = Фабрика.Создать(ИерархияТипов.data.Package.Тип);
// data.package.packageId = XMLСтрока(новый УникальныйИдентификатор);
// data.package.elements = Фабрика.Создать(ИерархияТипов.data.package.elements.Тип);
/////////////////////////////////////////////////////////////////////////////
// Параметры:
// Тип - ТипОбъектаXDTO
// ПределРекурсии - Число - Максимальная вложенность вызовов этой рекурсивной функции
// Глубина - Число - Служебный - не заполнять. Счетчик вложенности.
//
// Возвращаемое значение:
// Структура - Содержит Тип (ТипОбъектаXDTO) и перечень иерархий структур, соответствующий набору свойства переданного типа
//
// Пример:
// КорневойТип = Фабрика.Пакеты.Получить("urn://egisso-ru/msg/10.06.S/1.0.6").КорневыеСвойства.Получить("data").Тип;
// ИерархияТипов = Новый Структура("data", ИерархияТиповXDTO(КорневойТип, 20));
// data = Фабрика.Создать(ИерархияТипов.data.Тип);
// data.package = Фабрика.Создать(ИерархияТипов.data.Package.Тип);
Функция ИерархияТиповXDTO(Тип, ПределРекурсии = Неопределено, Глубина = 1) Экспорт
Если ПределРекурсии <> Неопределено Тогда
Если Глубина > ПределРекурсии тогда
ВызватьИсключение "Превышен предел на глубину рекурсии: Глубина = " + Глубина + "; Предел = " + ПределРекурсии;
КонецЕсли;
КонецЕсли;
Результат = Новый Структура("Тип", Тип);
Если ТипЗнч(Тип) = Тип("ТипОбъектаXDTO") Тогда
Для каждого Свойство из Тип.Свойства Цикл
Результат.Вставить(Свойство.ЛокальноеИмя, ИерархияТиповXDTO(Свойство.Тип, ПределРекурсии, Глубина + 1));
КонецЦикла;
КонецЕсли;
Возврат Результат;
КонецФункции
Орфографическая ошибка в egisso (найдено 3): egisso
СписокОбъектовМетаданныхИмеющихХранилищеЗначения (БСП)
ОжидаемыеТипыСвойствОписанияПроблемы (БСП)
Функции преобразования ЗаписьJSON