Имя: Пароль:
1C
1C 7.7
v7: выгрузка в xml: туплю, нужна помощь
,
0 Lazy Stranger
 
12.01.16
16:43
нужно выгрузить накладную в файл в соответствии с образцом

там есть примерно такие фрагменты

- <Consignor>
  <OrganizationName xmlns="urn:customs.ru:CommonAggregateTypes:5.8.0">Общество с ограниченной ответственностью "***"</OrganizationName>
- <RFOrganizationFeatures xmlns="urn:customs.ru:CommonAggregateTypes:5.8.0">
  <OGRN>113774643***</OGRN>
  <INN>7714906***</INN>
  <KPP>77*******</KPP>
  </RFOrganizationFeatures>
- <Address xmlns="urn:customs.ru:CommonAggregateTypes:5.8.0">
  <PostalCode>123290</PostalCode>

выгружаю с помощью v7plus, пытаясь копипастить куски из типовых
не соображу как вставить после названия узла строку "xmlns="urn:customs.ru:CommonAggregateTypes:5.8.0"
1 Злопчинский
 
12.01.16
16:44
а я не морочусь, пишу обычно как текстовый файл на вывод и все...
2 Lazy Stranger
 
12.01.16
16:46
(1) вариант, но хочется уметь и так и эдак
3 Рэйв
 
12.01.16
16:50
(1)Простенькие да. А что посложнее- башку свихнеш в тексте теги закрывать в нужном месте.
4 Злопчинский
 
12.01.16
16:51
это ж вроде не просто "строка" - это ж вроде атрибут..?
5 Злопчинский
 
12.01.16
16:52
(3) посложнее - это Исакий построить...
а так - вывод открывающего тега - вызов процедуры для вложенного тега - закрытие тега - я уже наблатыкался...
6 Рэйв
 
12.01.16
16:52
(4)Это не "вроде" это атрибут
(0)Это надо внутри тега делать
7 Рэйв
 
12.01.16
16:53
(5)думаю начиная с уровня 4-5 начнет сбоить твоя набултыканность:-)
8 Lazy Stranger
 
12.01.16
16:58
(6) вот я и не соображу как внутрь тега атрибут засунуть, насколько я понял "xmlns" - это служебная хрень какая-то,
.УстановитьАтрибут("xmlns"
выдает ошибку
9 NikVars
 
12.01.16
17:03
(2) Этак уже сделал?!
10 NikVars
 
12.01.16
17:04
(8) Это пространство имен.
Рубай через так:
xmlКорень.УстановитьПространствоИмен("туттвояфиговина", "xmlns");
11 Lazy Stranger
 
12.01.16
17:18
(10) ругается
The namespace prefix is not allowed to start with the reserved string "xml"
если xmlКорень.УстановитьПространствоИмен("туттвояфиговина");
тогда ошибка
Установка пространства имен возможна ТОЛЬКО для элементов, имеющих префикс, отличный от префикса данного элемента
12 ДенисЧ
 
12.01.16
17:20
насколько я помню, v7plus не любит подобные намеспейсы...
я в своё время выводил без них, а потом тупо СтрЗаменить...
13 NikVars
 
12.01.16
17:20
(11) И где у тебя тот же префикс установлен? Отсюда не видно.
14 NikVars
 
12.01.16
17:20
(12) Мсье идет по собственному пути. Ему вспотеть нужно.
15 Lazy Stranger
 
12.01.16
17:32
(13) это я попытался вообще второй параметр не указывать
(12) получилось - написал .УстановитьПространствоИмен("туттвояфиговина","STR") - на выходе получил
xmlns:STR="urn:customs.ru:CommonAggregateTypes
потом выкину эти :STR
16 Злопчинский
 
12.01.16
18:34
(7) фигушки...
17 MadDAD
 
15.01.16
12:09
(0)
>выгружаю с помощью v7plus

Значительно удобнее с помощью: СоздатьОбъект("MSXML2.DOMDocument.6.0")
18 MadDAD
 
15.01.16
12:35
Как-то так:

    Кодировка = "windows-1251";
    ИмяФайлаXML = "Example.xml";
    NameSpace = "urn:customs.ru:CommonAggregateTypes:5.8.0";
    
    XML_DOM =  СоздатьОбъект("MSXML2.DOMDocument.6.0");
    //прописываем заголовок с необходимыми параметрами
    Header = XML_DOM.createProcessingInstruction("xml", "version=""1.0"" encoding=""" + Кодировка + """");
    
    //Относим его к верхнему уровню структуры
    XML_DOM.appendChild(Header);  
    Consignor = XML_DOM.createElement("Consignor");
    
    OrganizationName = XML_DOM.createNode(1,"OrganizationName",NameSpace);
    OrganizationName.text = "Общество с ограниченной ответственностью ""***""";
    
    Consignor.appendChild(OrganizationName);
    
    RFOrganizationFeatures = XML_DOM.createNode(1,"RFOrganizationFeatures",NameSpace);
    RFOrganizationFeatures.appendChild(XML_DOM.createElement("OGRN")).text = "113774643***";
    RFOrganizationFeatures.appendChild(XML_DOM.createElement("INN")).text = "7714906***";
    RFOrganizationFeatures.appendChild(XML_DOM.createElement("KPP")).text = "77*******";
    
    Consignor.appendChild(RFOrganizationFeatures);
    
    Address = XML_DOM.createNode(1,"Address",NameSpace);
    Address.appendChild(XML_DOM.createElement("PostalCode")).text = "123290";
    
    Consignor.appendChild(Address);
    
    //***********Результирующая структура XML***********
    //<Consignor>
    //    <OrganizationName xmlns="urn:customs.ru:CommonAggregateTypes:5.8.0">Общество с ограниченной ответственностью "***"</OrganizationName>
    //    <RFOrganizationFeatures xmlns="urn:customs.ru:CommonAggregateTypes:5.8.0">
    //        <OGRN>113774643***</OGRN>
    //        <INN>7714906***</INN>
    //        <KPP>77*******</KPP>
    //    </RFOrganizationFeatures>
    //    <Address xmlns="urn:customs.ru:CommonAggregateTypes:5.8.0">
    //        <PostalCode>123290</PostalCode>
    //    </Address>
    //</Consignor>
    //***************************************************
    
    XML_DOM.appendChild(Consignor);
    
    XML_DOM.Save(ИмяФайлаXML);
19 NikVars
 
15.01.16
13:29
(17) Удобнее и быстрее на коньках по льду, если умеешь бегать на коньках и по льду. Будет ли удобнее в первый раз?! Это еще вопрос.
(18) Круто! Респект!