Имя: Пароль:
1C
 
Программное получение схемы XML
0 Valadis
 
08.05.15
14:20
Здравствуйте!
Выгружаю таблицу значений в ОбъектXDTO через СериализаторXDTO и далее в XML.
Если ли возможность получить из объектаXDTO его схему для выгрузки вместе с файлом с данными.
Таблица значений может иметь произвольную структуру.
1 DrShad
 
08.05.15
14:36
через фабрику и вытаскивай че хочешь хоть схему, хоть пространство имен, хоть сам XML
2 Valadis
 
08.05.15
14:39
ОбъектXDTO = СериализаторXDTO.ЗаписатьXDTO(ТЗ);    
ЗаписьXML         = Новый ЗаписьXML;
ЗаписьXML.УстановитьСтроку();
ФабрикаXDTO.ЗаписатьXML(ЗаписьXML, ОбъектXDTO,,);    
Текст             = ЗаписьXML.Закрыть();
3 Valadis
 
08.05.15
14:40
(2) ка из объекта XDTO вытащить схему ?
4 DrShad
 
08.05.15
14:42
СериализаторXDTO (XDTOSerializer)
Фабрика (Factory)
Использование:

Только чтение.
Описание:

Тип: ФабрикаXDTO.
Фабрика типов XDTO.

Доступность:

Тонкий клиент, сервер, толстый клиент, внешнее соединение.
5 DrShad
 
08.05.15
14:42
ФабрикаXDTO (XDTOFactory)
ЭкспортСхемыXML (ExportXMLSchema)
Синтаксис:

ЭкспортСхемыXML(<URIПространствИмен>)
Параметры:

<URIПространствИмен> (обязательный)

Тип: Строка; Массив.
Массив строк или строка, соответствующая URI пространства имен экспортируемых пакетов.
Возвращаемое значение:

Тип: НаборСхемXML.

Описание:

Выполняет экспорт пакетов XDTO, имеющих указанные URI пространства имен в набор схем XML.

Доступность:

Тонкий клиент, сервер, толстый клиент, внешнее соединение.
6 DrShad
 
08.05.15
14:42
что не понятно?
7 Valadis
 
08.05.15
14:44
(6) ЭкспортСхемыXML   - не работает, возвращает НЕОПРЕДЕЛЕНО
8 DrShad
 
08.05.15
14:45
а какое пространство имен вы там указали?
9 DrShad
 
08.05.15
14:47
можно вопрос? а нафейхоа вам сдалась эта схема?
10 Valadis
 
08.05.15
14:49
(8) задавал произвольное, хотя может какое-то конкретное нужно
11 DrShad
 
08.05.15
14:50
(10) естественно что конкретное *рукалицо*
12 Valadis
 
08.05.15
14:54
http://www.w3.org/2001/ - с таким тоже не работает
13 Valadis
 
08.05.15
14:54
с любыми другими тоже
14 DrShad
 
08.05.15
15:01
ок, а почему вы решили что это пространство имен?
15 DrShad
 
08.05.15
15:03
ПакетXDTO (XDTOPackage)
URIПространстваИмен (NamespaceURI)
Использование:

Только чтение.
Описание:

Тип: Строка.
URI пространства имен пакета типов.

Доступность:

Тонкий клиент, сервер, толстый клиент, внешнее соединение.
16 Serginio1
 
08.05.15
15:03
Процедура ЗпаисатьПакетыПоФабрике(Фабрика,ИмяФайла) Экспорт

    Для Каждого Пакет из Фабрика.Пакеты Цикл
        Если Пакет.URIПространстваИмен = "http://www.w3.org/2001/XMLSchema"; Тогда
            Продолжить;
        КонецЕсли;  
        ИмяПакета=Пакет.URIПространстваИмен;
        ИмяПакета=СтрЗаменить(ИмяПакета,"http://","";);
        ИмяПакета=СтрЗаменить(ИмяПакета,"/","_");
        НаборСхем = Фабрика.ЭкспортСхемыXML(Пакет.URIПространстваИмен);
        Для Счетчик = 0 по НаборСхем.Количество() - 1 Цикл
            Схема = НаборСхем.Получить(Счетчик);
            Схема.ОбновитьЭлементDOM();
            ЗаписьDOM = Новый ЗаписьDOM;
            ЗаписьXMLСтрока = Новый ЗаписьXML;
            ЗаписьXMLСтрока.УстановитьСтроку();
            ЗаписьXMLФайл = Новый ЗаписьXML;
            ЗаписьDOM.Записать(Схема.ДокументDOM, ЗаписьXMLСтрока);
            ЗаписьXMLФайл.ОткрытьФайл(ИмяФайла + ИмяПакета+"[" + Формат(Счетчик,"ЧЦ=10;ЧГ=0;ЧН=") + "].xsd");
            ЗаписьXMLФайл.ЗаписатьБезОбработки(ЗаписьXMLСтрока.Закрыть());
            ЗаписьXMLФайл.Закрыть()
        КонецЦикла;    
    КонецЦикла;

КонецПроцедуры
17 DrShad
 
08.05.15
15:03
там в фабрике вообще есть пакеты? если нет, то и схем нет
18 Valadis
 
08.05.15
15:05
когда записываю в XML указываю некоторое произвольное пространство имен, затем его же указываю при экспорте
В итоге получаю пустой массив схем.
Пространства имен указывал как произвольные, так и определенные в конфигурации, а также http://www.w3.org/2001/XMLSchema
19 Serginio1
 
08.05.15
15:06
(17) Таблица Значений

Данный объект может быть сериализован в/из XDTO. Тип XDTO, соответствующий данному объекту, определяется в пространстве имен {http://v8.1c.ru/8.1/data/core}. Имя типа XDTO: ValueTable.
20 DrShad
 
08.05.15
15:08
(19) это надо не мне писать, а пост (17) был для ТС для наведения на нужную мысль, мог бы конечно как вы дать готовый текст, но так поступаю очень редко - ибо не запоминается, когда без мучений
21 Serginio1
 
08.05.15
15:09
Основная теорема систематики: Новые системы плодят новые проблемы.