Имя: Пароль:
1C
1С v8
Можно ли в XDTO пакете задать префикс для пространства имен?
0 Molotof
 
15.02.18
21:11
Добрый вечер!

Вопрос в сабже. Можно ли, и как?
Пояснение:
Созданный с помощью ХДТО ХМЛ файл имеет структуру (отрывок):
<d3p1:Chief>
   <d3p1:LastName xmlns:d5p1="http://dol.minstroyrf.ru/v1.2/eqconcom.xsd">ыыыы</d3p1:LastName>;
   <d3p1:FirstName xmlns:d5p1="http://dol.minstroyrf.ru/v1.2/eqconcom.xsd">aaaa</d3p1:FirstName>;
   <d3p1:MiddleName xmlns:d5p1="http://dol.minstroyrf.ru/v1.2/eqconcom.xsd">jjjj</d3p1:MiddleName>;
   <d3p1:Position xmlns:d5p1="http://dol.minstroyrf.ru/v1.2/eqconcom.xsd">ssss</d3p1:Position>;
</d3p1:Chief>

1. Как задать свой префикс вместо: d3p1?
2. Еще тут ошибка, т.к. Chief относится к одному пространству имен, а вложенные тэги к другому, но построено все в одном пространстве. И валидация со схемой дает ошибку. В 1с это выглядит так, что Chief находится в одном пакете ХДТО, а все остальное в другом.

Спасибо за помощь!
1 H A D G E H O G s
 
15.02.18
21:37
ЗаписьXML.ЗаписатьСоответствиеПространстваИмен(ПрефиксПространстваИмен,ПространствоИмен);
например
ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("xsi", "http://www.w3.org/2001/XMLSchema-instance&quot;);
2 Molotof
 
15.02.18
21:44
(1) дело в том, что я использую фабрику ХДТО для создания ХМЛ: ФабрикаXDTO.ЗаписатьXML(ЗаписьXML, Объект_Declaration);
Использование ЗаписатьСоответствиеПространстваИмен вызывает ошибку: "Ошибочный порядок записи XML" в любом месте кода.
3 Cyberhawk
 
15.02.18
21:46
Нужно создать ЗаписьХМЛ и первый (корневой) тэг вручную методом в (1), затем уже фабрикой писать в эту ЗаписьХМЛ - префиксы подхватятся автоматом
4 Cyberhawk
 
15.02.18
21:49
ЗаписьХМЛ = Новый ЗаписьXML;
    ЗаписьХМЛ.УстановитьСтроку();
    ЗаписьХМЛ.ЗаписатьОбъявлениеXML();
    ЗаписьХМЛ.ЗаписатьНачалоЭлемента(ИмяКорневогоСвойства, ПространствоИмен);
    ЗаписьХМЛ.ЗаписатьСоответствиеПространстваИмен(Префикс, ПространствоИмен);

И далее уже сериализатором / фабрикой пишешь вложенные элементы
5 Cyberhawk
 
15.02.18
21:50
Ну и в конце не забыть
    ЗаписьХМЛ.ЗаписатьКонецЭлемента();
6 Cyberhawk
 
15.02.18
21:51
И у метода фабрики пространство имен не забывай указывать так-то
7 Molotof
 
15.02.18
21:54
Cyberhawk спасибо!

Работает
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.