ФабрикаXDTO из пакетов XDTO конфигурации

1. juntatalor 63 10.10.12 14:19 Сейчас в теме
Во многих руководствах (http://infostart.ru/public/98019/, http://pro1c.org.ua/index.php?showtopic=214) по использованию фабрики XDTO фигурируют структуры создания объекта типа

структурныйТип = ФабрикаXDTO.Тип("http://www.1c.ru/demos/products1", "Номенклатура1"); 
номенклатура = ФабрикаXDTO.Создать(структурныйТип);


- если пакет уже в конфигурации.

Либо создание фабрики из *.xsd файлов:

ФайлыXSD = Новый Массив(); 
ФайлыXSD.Добавить("D:\Temp\adderss.xsd"); 
МояФабрикаXDTO = СоздатьФабрикуXDTO(ФайлыXSD); 
адресТип = МояФабрикаXDTO.Тип("http://www.1c.ru/demos/products2", "КлассификаторАдреса"); 
адрес = МояФабрикаXDTO.Создать(адресТип); 


У меня есть схема *.xsd во внешнем файле, при этом оформлена она не в виде типов объектов, а виде одного большого свойства (см. скриншот). Я ее импортирую в конфигруацию, как мне теперь создать на ее основе фабрику? То есть, по сути, если я не могу получить тип объекта (все в свойствах), как мне его создать?
Прикрепленные файлы:
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
3. cotnar 01.11.12 15:28 Сейчас в теме
Ответ тут http://elvis.kz/xdto/
Процедура СоздатьXMLФайлНаСервере(ПолноеИмяФайла)
 
    // Создание типа, который будет использоваться для создания объекта
    // При создании типа указывается пространство имен XDTO-пакета и имя элемента <books>
    КнигиТип = ФабрикаXDTO.Тип("http://www.elvis.kz", "books");
 
    // Создание объекта <books> на основе описание типа
    Книги = ФабрикаXDTO.Создать(КнигиТип);
 
    // Заполняем количество книг
    Книги.count = 2;
 
    // Создаем первую книгу <book>
    Книга = ФабрикаXDTO.Создать(КнигиТип.Свойства.Получить("book").Тип);
    // Заполняем узел <author>. Узел принадлежит первой книге <book>
    Книга.author = "Вадим Панов";
    // Заполняем узел <title>. Узел принадлежит первой книге <book>
    Книга.title = "Анклавы";
    // Добавляем в список книг <books>, первую книгу <book>
    Книги.book.Добавить(Книга);
 
    // Создаем вторую книгу <book>
    Книга = ФабрикаXDTO.Создать(КнигиТип.Свойства.Получить("book").Тип);
    // Заполняем узел <author>. Узел принадлежит второй книге <book>
    Книга.author = "Дуглас Адамс";
    // Заполняем узел <title>. Узел принадлежит второй книге <book>
    Книга.title = "Автостопом по галактике";
    // Добавляем в список книг <books>, вторую книгу <book>
    Книги.book.Добавить(Книга); 
 
    // Создаем объект ЗаписьXML, который необходим для создания XML файла
    ЗаписьXML = Новый ЗаписьXML;
    // Открываем файл для записи XML
    ЗаписьXML.ОткрытьФайл(ПолноеИмяФайла, "UTF-8");
    // Записываем объект Книги, с пмощью объекта ЗаписьXML
    ФабрикаXDTO.ЗаписатьXML(ЗаписьXML, Книги);
    // Закрываем и сохраняем записанный объект
    ЗаписьXML.Закрыть(); 
 
КонецПроцедуры
Показать


для доступа к корневому свойству нужно заменить
    КнигиТип = ФабрикаXDTO.Тип("http://www.elvis.kz", "books");


на
	пакет=ФабрикаXDTO.Пакеты.Получить("http://www.elvis.kz");
	КнигиТип=пакет.КорневыеСвойства.Получить("root").Тип;

удачи..
yzimin; myoker; Eskimos; kitaevay; Chif13; sidorov8; MaxiMkaUA; llegoo; +8 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. juntatalor 63 10.10.12 14:32 Сейчас в теме
Пожалуй даже переформулирую вопрос. Как работать со свойствами в пакете XDTO? Буду благодарен за ссылки в том числе.
Eskimos; bionicle; +2 Ответить
3. cotnar 01.11.12 15:28 Сейчас в теме
Ответ тут http://elvis.kz/xdto/
Процедура СоздатьXMLФайлНаСервере(ПолноеИмяФайла)
 
    // Создание типа, который будет использоваться для создания объекта
    // При создании типа указывается пространство имен XDTO-пакета и имя элемента <books>
    КнигиТип = ФабрикаXDTO.Тип("http://www.elvis.kz", "books");
 
    // Создание объекта <books> на основе описание типа
    Книги = ФабрикаXDTO.Создать(КнигиТип);
 
    // Заполняем количество книг
    Книги.count = 2;
 
    // Создаем первую книгу <book>
    Книга = ФабрикаXDTO.Создать(КнигиТип.Свойства.Получить("book").Тип);
    // Заполняем узел <author>. Узел принадлежит первой книге <book>
    Книга.author = "Вадим Панов";
    // Заполняем узел <title>. Узел принадлежит первой книге <book>
    Книга.title = "Анклавы";
    // Добавляем в список книг <books>, первую книгу <book>
    Книги.book.Добавить(Книга);
 
    // Создаем вторую книгу <book>
    Книга = ФабрикаXDTO.Создать(КнигиТип.Свойства.Получить("book").Тип);
    // Заполняем узел <author>. Узел принадлежит второй книге <book>
    Книга.author = "Дуглас Адамс";
    // Заполняем узел <title>. Узел принадлежит второй книге <book>
    Книга.title = "Автостопом по галактике";
    // Добавляем в список книг <books>, вторую книгу <book>
    Книги.book.Добавить(Книга); 
 
    // Создаем объект ЗаписьXML, который необходим для создания XML файла
    ЗаписьXML = Новый ЗаписьXML;
    // Открываем файл для записи XML
    ЗаписьXML.ОткрытьФайл(ПолноеИмяФайла, "UTF-8");
    // Записываем объект Книги, с пмощью объекта ЗаписьXML
    ФабрикаXDTO.ЗаписатьXML(ЗаписьXML, Книги);
    // Закрываем и сохраняем записанный объект
    ЗаписьXML.Закрыть(); 
 
КонецПроцедуры
Показать


для доступа к корневому свойству нужно заменить
    КнигиТип = ФабрикаXDTO.Тип("http://www.elvis.kz", "books");


на
	пакет=ФабрикаXDTO.Пакеты.Получить("http://www.elvis.kz");
	КнигиТип=пакет.КорневыеСвойства.Получить("root").Тип;

удачи..
yzimin; myoker; Eskimos; kitaevay; Chif13; sidorov8; MaxiMkaUA; llegoo; +8 Ответить
4. juntatalor 63 01.11.12 15:48 Сейчас в теме
В общем-то уже разобрался - моей проблемой было именно то, что не знал о конструкции типа КнигиТип.Свойства.Получить("book").Тип

Поскольку других сообщений нет, отдаю вам СМ.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот