Как получить XSD программный путем из ЗаписьXML

1. ZhakeKZ 09.01.18 09:21 Сейчас в теме
Здравствуйте,

Выгружаю файл XML с помощью обработки, код:
    ХМЛ_данные=Новый ЗаписьXML;
    ХМЛ_данные.ОткрытьФайл("C:\TEMP\Test.xml");
    ХМЛ_данные.ЗаписатьНачалоЭлемента("Root");
    ВыборкаСпр=Справочники.Организации.Выбрать();
    Пока ВыборкаСпр.Следующий() Цикл 
        Если ВыборкаСпр.ЭтоГруппа Тогда Продолжить; КонецЕсли;
        ТекОбъект = ВыборкаСпр.ПолучитьОбъект();
        ФабТек = СериализаторXDTO.ЗаписатьXDTO(ТекОбъект);
        ФабрикаXDTO.ЗаписатьXML(ХМЛ_данные, ФабТек,,,,НазначениеТипаXML.Явное);
    КонецЦикла;
    ХМЛ_данные.ЗаписатьКонецЭлемента(); // Root
    ХМЛ_данные.Закрыть();

Показать


Теперь нужно выгрузить в отдельный файл XSD схему.
Как его можно сделать ?
По теме из базы знаний
Найденные решения
6. ZhakeKZ 10.01.18 12:18 Сейчас в теме
Примерно вот так получилось:
    Для Каждого Пакет из ФабрикаXDTO.Пакеты Цикл
                Если Пакет.URIПространстваИмен <> "http://v8.1c.ru/8.1/data/enterprise/current-config" Тогда
                     Продолжить;
                КонецЕсли;
        НаборСхем = ФабрикаXDTO.ЭкспортСхемыXML(Пакет.URIПространстваИмен);
        Для Счетчик = 0 по НаборСхем.Количество() - 1 Цикл
            Схема = НаборСхем.Получить(Счетчик);
            Схема.ОбновитьЭлементDOM();
            ЗаписьDOM = Новый ЗаписьDOM;
            ЗаписьXMLСтрока = Новый ЗаписьXML;
            ЗаписьXMLСтрока.УстановитьСтроку();
            ЗаписьXMLФайл = Новый ЗаписьXML;
            СписокЭл=Схема.ДокументDOM.ПолучитьЭлементыПоИмени("xs:complexType");
            Для каждого элементXML из СписокЭл Цикл
                Если элементXML.ПолучитьАтрибут("name")="CatalogObject.Организации" Тогда
                    ЗаписьDOM.Записать(элементXML, ЗаписьXMLСтрока);
                КонецЕсли;
            КонецЦикла;
            ЗаписьXMLФайл.ОткрытьФайл("C:\TEMP\Config2_" + ".xsd");
            ЗаписьXMLФайл.ЗаписатьБезОбработки(ЗаписьXMLСтрока.Закрыть());
            ЗаписьXMLФайл.Закрыть()
        КонецЦикла;        
    КонецЦикла;


Показать


Но думаю было бы оптимально, если программно создать пакет XDTO и его выгрузить.
Пока не знаю как это сделать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. UtSpar 137 09.01.18 09:48 Сейчас в теме
(1) XML же с одной структурой, в визуал студио можно на основе файла сделать схему и все.
3. ZhakeKZ 09.01.18 10:16 Сейчас в теме
(2) Требование такое, что надо через обработку всегда выгружать XML и XSD.
4. UtSpar 137 09.01.18 10:40 Сейчас в теме
(3) Тогда хз, но надо рыть фабрику xdto
5. ZhakeKZ 10.01.18 08:18 Сейчас в теме
Как можно объект метаданных выгрузить в XSD ?
Например надо получить XSD схему для справочника Организации.
6. ZhakeKZ 10.01.18 12:18 Сейчас в теме
Примерно вот так получилось:
    Для Каждого Пакет из ФабрикаXDTO.Пакеты Цикл
                Если Пакет.URIПространстваИмен <> "http://v8.1c.ru/8.1/data/enterprise/current-config" Тогда
                     Продолжить;
                КонецЕсли;
        НаборСхем = ФабрикаXDTO.ЭкспортСхемыXML(Пакет.URIПространстваИмен);
        Для Счетчик = 0 по НаборСхем.Количество() - 1 Цикл
            Схема = НаборСхем.Получить(Счетчик);
            Схема.ОбновитьЭлементDOM();
            ЗаписьDOM = Новый ЗаписьDOM;
            ЗаписьXMLСтрока = Новый ЗаписьXML;
            ЗаписьXMLСтрока.УстановитьСтроку();
            ЗаписьXMLФайл = Новый ЗаписьXML;
            СписокЭл=Схема.ДокументDOM.ПолучитьЭлементыПоИмени("xs:complexType");
            Для каждого элементXML из СписокЭл Цикл
                Если элементXML.ПолучитьАтрибут("name")="CatalogObject.Организации" Тогда
                    ЗаписьDOM.Записать(элементXML, ЗаписьXMLСтрока);
                КонецЕсли;
            КонецЦикла;
            ЗаписьXMLФайл.ОткрытьФайл("C:\TEMP\Config2_" + ".xsd");
            ЗаписьXMLФайл.ЗаписатьБезОбработки(ЗаписьXMLСтрока.Закрыть());
            ЗаписьXMLФайл.Закрыть()
        КонецЦикла;        
    КонецЦикла;


Показать


Но думаю было бы оптимально, если программно создать пакет XDTO и его выгрузить.
Пока не знаю как это сделать
Оставьте свое сообщение

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