Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Выгрузка в xml

v7: Выгрузка в xml
Я
   AleksChek
 
17.09.21 - 12:05
Взял за основу одну обработку по выгрузке в xml из 1С 7.7. Сделал выгрузку УПД (счетов-фактур) из конфигурации Производство+Услуги+Бухгалтерия для электронного документооборота (в нашем случае Диадок Контур-а). Все поля выгружаются и загружаются замечательно. Кроме одного: "без акциза".
Если открыть мой файл выгрузки в редакторе, то получается это в таком виде:
        <Акциз>
          <БезАкциз>
          без акциза
        </БезАкциз>
      </Акциз>
А правильно должно быть (файл выгруженный из Диадок-а):
        <Акциз>
          <БезАкциз>без акциза</БезАкциз>
      </Акциз>
Исходя из вышесказанного получается при загрузке ошибка на это поле (БезАкциз).
"Кусок" кода, в котором прописано это прилагаю:
//Записывает начало элемента (тега XML). Имя можно указывать в угловых скобках.
Процедура xml_ЗаписатьНачалоЭлемента(прм_ИмяТега)
    перем стр;
    
    Если xml_ТегОткрыт=1 Тогда
        xml_ТегОткрыт=0;
        xml_file.WriteLine(">");
        xml_Отступы=xml_Отступы+"  ";
    КонецЕсли;
    
    стр=прм_ИмяТега;
    стр=СтрЗаменить(стр, "<", "");
    стр=СтрЗаменить(стр, ">", "");
    
    xml_СтекТегов.ДобавитьЗначение(стр);
    xml_file.Write(xml_Отступы+"<"+стр);
    xml_ТегОткрыт=1;
КонецПроцедуры    

///////////////////////////////////////////////////////////////////////
//Записывает атрибут (параметр) тега XML.
Процедура xml_ЗаписатьАтрибут(прм_ИмяАтрибута, прм_ЗначениеАтрибута)
    Если xml_ТегОткрыт=0 Тогда                                                                          
       Сообщить("Перед записью атрибута необходимо записать начало элемента!","!"); а=10/0;                                  
    КонецЕсли;                                                                                                
    
    стр=прм_ЗначениеАтрибута;
    стр=СтрЗаменить(стр, "&", "&amp;");
    стр=СтрЗаменить(стр, """", "&quot;");
    стр=СтрЗаменить(стр, "<", "&lt;");
    стр=СтрЗаменить(стр, ">", "&gt;");
    стр=СтрЗаменить(стр, "'", "&apos;");
    xml_file.Write(" "+прм_ИмяАтрибута+"="+""""+стр+"""");
КонецПроцедуры    // xml_ЗаписатьЗаписатьАтрибут


Процедура xml_ЗаписатьТекст(прм_Текст)
    Если xml_ТегОткрыт=0 Тогда                                                                          
       Сообщить("Перед записью атрибута необходимо записать начало элемента!","!"); а=10/0;                                  
    КонецЕсли;                                                                                                
    стр=прм_Текст;
    стр=СтрЗаменить(стр, "&", "&amp;");
    стр=СтрЗаменить(стр, """", "&quot;");
    стр=СтрЗаменить(стр, "<", "&lt;");
    стр=СтрЗаменить(стр, ">", "&gt;");
    стр=СтрЗаменить(стр, "'", "&apos;");
    xml_file.WriteLine(">");
    xml_Отступы=лев(xml_Отступы, СтрДлина(xml_Отступы)+2);
    xml_file.WriteLine(xml_Отступы+прм_Текст);
КонецПроцедуры    // xml_ЗаписатьТекст  


Процедура xml_ЗаписатьКонецЭлементаТекст(прм_ОжидаемоеИмяТега="")
    перем стрИмяТега, а;
    Если xml_СтекТегов.РазмерСписка()<1 Тогда
        Сообщить("Попытка закрыть неоткрытый элемент!","!"); а=10/0;                                      
    КонецЕсли;
    
    стрИмяТега=xml_СтекТегов.ПолучитьЗначение(xml_СтекТегов.РазмерСписка());
    
    Если ПустаяСтрока(прм_ОжидаемоеИмяТега)=0 Тогда
        стр=прм_ОжидаемоеИмяТега;
        стр=СтрЗаменить(стр, "<", "");
        стр=СтрЗаменить(стр, ">", "");
        стр=СтрЗаменить(стр, "/", "");
        
        Если стр<>стрИмяТега Тогда
            Сообщить("Ожидается имя тега "+стр+", а закрыто "+стрИмяТега,"!"); а=10/0;                                      
        КонецЕсли;
    КонецЕсли;
    
    
    xml_СтекТегов.УдалитьЗначение(xml_СтекТегов.РазмерСписка());
    Если xml_ТегОткрыт=1 Тогда
        xml_ТегОткрыт=0;
        xml_Отступы=лев(xml_Отступы, СтрДлина(xml_Отступы)-2);
        xml_file.WriteLine(xml_Отступы+"</"+стрИмяТега+">");
        Возврат;
    КонецЕсли;
    xml_Отступы=лев(xml_Отступы, СтрДлина(xml_Отступы)-2);
    xml_file.WriteLine(xml_Отступы+"</"+стрИмяТега+">");
    
КонецПроцедуры    // xml_ЗаписатьКонецЭлементаТекст


///////////////////////////////////////////////////////////////////////
//Записывает конец элемента (тега XML). Имя закрываемого тега можно указывать в угловых скобках,
//а можно - не указывать вовсе.

Процедура xml_ЗаписатьКонецЭлемента(прм_ОжидаемоеИмяТега="")
    перем стрИмяТега, а;
    Если xml_СтекТегов.РазмерСписка()<1 Тогда
        Сообщить("Попытка закрыть неоткрытый элемент!","!"); а=10/0;                                      
    КонецЕсли;
    
    стрИмяТега=xml_СтекТегов.ПолучитьЗначение(xml_СтекТегов.РазмерСписка());
    
    Если ПустаяСтрока(прм_ОжидаемоеИмяТега)=0 Тогда
        стр=прм_ОжидаемоеИмяТега;
        стр=СтрЗаменить(стр, "<", "");
        стр=СтрЗаменить(стр, ">", "");
        стр=СтрЗаменить(стр, "/", "");
        
        Если стр<>стрИмяТега Тогда
            Сообщить("Ожидается имя тега "+стр+", а закрыто "+стрИмяТега,"!"); а=10/0;                                      
        КонецЕсли;
    КонецЕсли;
    
    xml_СтекТегов.УдалитьЗначение(xml_СтекТегов.РазмерСписка());
    Если xml_ТегОткрыт=1 Тогда
        xml_ТегОткрыт=0;
        xml_file.WriteLine("/>");
        Возврат;
    КонецЕсли;
    xml_Отступы=лев(xml_Отступы, СтрДлина(xml_Отступы)-2);
    xml_file.WriteLine(xml_Отступы+"</"+стрИмяТега+">");
    
КонецПроцедуры    // xml_ЗаписатьКонецЭлемента


///////////////////////////////////////////////////////////////////////
//Закрывает открытый файл XML. После окончания работы с файлом его необходимо закрыть.
Функция xml_Закрыть()
    xml_file.Close();
    Если xml_СтекТегов.РазмерСписка()<>0 Тогда
        Сообщить("Имеются незакрытые элементы XML!","!"); а=10/0;                                      
    КонецЕсли;
КонецФункции    // xml_Закрыть

.....................
                                xml_ЗаписатьНачалоЭлемента("<Акциз>");  
                                    xml_ЗаписатьНачалоЭлемента("<БезАкциз>");
                                    xml_ЗаписатьТекст("без акциза");
                                    xml_ЗаписатьКонецЭлементаТекст("<БезАкциз>");
                                xml_ЗаписатьКонецЭлемента("</Акциз>");

Помогите!!!! Уже два месяца не могу понять где мой косяк......
   ДенисЧ
 
1 - 17.09.21 - 12:07
Если ты смотришь только на форматирование - то забей. XML в принципе не предназначен для чтения глазами.
   youalex
 
2 - 17.09.21 - 12:08
xml_ЗаписатьНачалоЭлемента("Акциз"); //если я правильно понял
   Злопчинский
 
3 - 17.09.21 - 12:09
Чтото я не понял - в твоем варианте сто неправильно?
   Злопчинский
 
4 - 17.09.21 - 12:10
А это с моей точки зрения нелогично
xml_ЗаписатьКонецЭлементаТекст("<БезАкциз>")
   Злопчинский
 
5 - 17.09.21 - 12:13
Почему тег Акциз закрывается КонецЭлемента
А тег БезАкциз - КонецЭлементаТекст
?
   Bigbro
 
6 - 17.09.21 - 12:14
никакого косяка
xml_file.WriteLine - выводит строку.
открытие тэга, данные, закрытие, каждый раз.
если надо чтобы все это вместе выводилось в одну строку - надо сломать и переписать.
но в (1) правда. XML не для людей.
   AleksChek
 
7 - 17.09.21 - 12:18
(1) если отредактировать и убрать эти пробелы, т.е. сделать в таком виде:
<БезАкциз>без акциза</БезАкциз> 
то загружается идеально. Т.е. все должно быть в "одну" строку
   AleksChek
 
8 - 17.09.21 - 12:19
(6) Пробовал этот вариант, но что-то не "прокатило". Сейчас еще раз попробую....
   AleksChek
 
9 - 17.09.21 - 12:20
(6) т.е. примерно такой вид кода должен быть:
xml_file.WriteLine("<БезАкциз>без акциза<БезАкциз>");
   AleksChek
 
10 - 17.09.21 - 12:23
(9) тогда получилось вот как:
        <Акциз<БезАкциз>без акциза<БезАкциз>
/>
(это уже в выгруженном файле)
   youalex
 
11 - 17.09.21 - 12:24
А почему ты считаешь что вариант
  <БезАкциз>
     без акциза
  </БезАкциз>
неправильный, а в одну строку - правильный?
   AleksChek
 
12 - 17.09.21 - 12:24
т.е. вот такой код:
                                xml_ЗаписатьНачалоЭлемента("<Акциз>");  
                                    xml_file.WriteLine("<БезАкциз>без акциза<БезАкциз>");
                                xml_ЗаписатьКонецЭлемента("</Акциз>");
   AleksChek
 
13 - 17.09.21 - 12:25
(11) а потому что в таком случае (когда "в разных строках) не корректно воспринимает Диадок. Ругается на это поле. А если "в одну строку" - то все ОК.
   Злопчинский
 
14 - 17.09.21 - 12:25
(9) слэш в закрывающем забыл
   AleksChek
 
15 - 17.09.21 - 12:27
(14) можно подробнее?
   Злопчинский
 
16 - 17.09.21 - 12:29
Ну если все вышивжаются нормально с переводами строк, а в этом узле проблема то посмотри хексредактором может там затесался символ невидимый
   Злопчинский
 
17 - 17.09.21 - 12:30
БА и /БА
А у тебя 
Ба текст ба
   Злопчинский
 
18 - 17.09.21 - 12:32
Открой свой первоначальный вариант который типа неправильный браузером и смотри что получится
   AleksChek
 
19 - 17.09.21 - 12:34
(18) когда смотришь браузером, то оба варианта отображаются "тремя строками".... А когда в редакторе открываешь, то правильный вариант - одной строкой, а мой (не правильный) опять же тремя....
   AleksChek
 
20 - 17.09.21 - 12:34
как здесь можно вложить файлы? Я бы прикрепил оба варианта...
   Kassern
 
21 - 17.09.21 - 12:36
(0) я в свое время на клюшка юзал XML_DOM=CreateObject("MSXML2.DOMDocument.4.0");  ну или по младше версию, таких проблем не испытвал...
   Злопчинский
 
22 - 17.09.21 - 12:37
Да пофиг в одну строку или в несколько. Браузер сам построено по узлам выводит
   Kassern
 
23 - 17.09.21 - 12:37
(21) без проблем создаются  элементы с нужной структурой
   Злопчинский
 
24 - 17.09.21 - 12:37
(21) я всегда вывожу тупо текстом если формирование линейное.
   AleksChek
 
25 - 17.09.21 - 12:39
(24) подскажи как вывести эти три строки в одну линейно? (ну совсем я глюканул... хоть запинайте)
   Злопчинский
 
26 - 17.09.21 - 12:40
(25) хексредактором в проблемном варианте мусора не видно?
   Kassern
 
27 - 17.09.21 - 12:40
(24) мне после 8ки удобнее так было удобнее. Это как аналог ЗаписьXML с примерно таким же функционалом
   AleksChek
 
28 - 17.09.21 - 12:41
Вот это мой файл, в котором акциз "не правильно":

  <?xml version="1.0" encoding="WINDOWS-1251" ?> 
- <Файл ИдФайл="ON_NSCHFDOPPR_2BM-2434000335-2013022203311441365710000000000_2BM-6627017300-2012052807500941167360000000000_20210917" ВерсФорм="5.01" ВерсПрог="Diadoc 1.0">
  <СвУчДокОбор ИдОтпр="2BM-6627017300-2012052807500941167360000000000" ИдПол="2BM-2434000335-2013022203311441365710000000000" СвОЭДОтпр="" ИННЮЛ="6627017300" ИдЭДО="2BM" НаимОрг="" /> 
- <Документ КНД="1115131" ВремИнфПр="09.38.27" ДатаИнфПр="17.09.2021" НаимЭконСубСост="Общество с ограниченной ответственностью "Уральское карьероуправление", ИНН/КПП: 6627017300/667001001" Функция="СЧФДОП" ПоФактХЖ="Документ об отгрузке товаров (выполнении работ), передаче имущественных прав (документ об оказании услуг)" НаимДокОпр="Счет-фактура и документ об отгрузке товаров (выполнении работ), передаче имущественных прав (документ об оказании услуг)">
- <СвСчФакт КодОКВ="643" ДатаСчФ="11.09.2021" НомерСчФ="784">
- <СвПрод>
- <ИдСв>
  <СвЮЛУч НаимОрг="Общество с ограниченной ответственностью "Уральское карьероуправление"" ИННЮЛ="6627017300" КПП="667001001" /> 
  </ИдСв>
- <Адрес>
  <АдрИнф АдрТекст="620033, Свердловская обл, Екатеринбург г, Норильская ул, 77; оф. 317" КодСтр="643" /> 
  </Адрес>
  </СвПрод>
- <ГрузОт>
- <ГрузОтпр>
- <ИдСв>
  <СвЮЛУч НаимОрг="Общество с ограниченной ответственностью "Уральское карьероуправление"" ИННЮЛ="6627017300" КПП="667001001" /> 
  </ИдСв>
- <Адрес>
  <АдрИнф АдрТекст="623270 Свердловская обл. г.Дегтярск ул.Вязовая, 1а" КодСтр="643" /> 
  </Адрес>
  </ГрузОтпр>
  </ГрузОт>
- <ГрузПолуч>
- <ИдСв>
  <СвЮЛУч НаимОрг="АО "Полюс Красноярск"" ИННЮЛ="2434000335" КПП="997550001" /> 
  </ИдСв>
- <Адрес>
  <АдрИнф АдрТекст="Россия,663282, Красноярский край, Северо-Енисейский район, г.п. Северо-Енисейский, ул. Белинского, 2-Б" КодСтр="643" /> 
  </Адрес>
  </ГрузПолуч>
- <СвПокуп>
- <ИдСв>
  <СвЮЛУч НаимОрг="АО "Полюс Красноярск"" ИННЮЛ="2434000335" КПП="997550001" /> 
  </ИдСв>
- <Адрес>
  <АдрИнф АдрТекст="Россия,663282, Красноярский край, Северо-Енисейский район, г.п. Северо-Енисейский, ул. Белинского, 2-Б" КодСтр="643" /> 
  </Адрес>
  </СвПокуп>
  <ДопСвФХЖ1 НаимОКВ="Российский рубль" /> 
  <ДокПодтвОтгр НаимДокОтгр="№ п/п 1 - 1" НомДокОтгр="п/п 1 - 1, № 784" ДатаДокОтгр="11.09.2021" /> 
  </СвСчФакт>
- <ТаблСчФакт>
- <СведТов НомСтр="1" НаимТов="Известь строительная,негашеная,кальциевая,комовая, сорт 2 в МКР" ОКЕИ_Тов="168" КолТов="664.550" ЦенаТов="5860.00" СтТовБезНДС="3894263.00" НалСт="20%" СтТовУчНал="4673115.60">
- <Акциз>
  <БезАкциз>без акциза</БезАкциз> 
  </Акциз>
- <СумНал>
  <СумНал>778852.60</СумНал> 
  </СумНал>
  <ДопСведТов НаимЕдИзм="т" /> 
  </СведТов>
- <ВсегоОпл СтТовБезНДСВсего="3894263.00" СтТовУчНалВсего="4673115.60">
- <СумНалВсего>
  <СумНал>778852.60</СумНал> 
  </СумНалВсего>
  </ВсегоОпл>
  </ТаблСчФакт>
- <СвПродПер>
- <СвПер СодОпер="Товары переданы, работы сданы, услуги оказаны">
  <ОснПер НаимОсн="Договор поставки № ПКМ 02-21" ДатаОсн="24.03.2021" /> 
  <ТранГруз СвТранГруз="Ж/д квитанции № ЭГ750266,ЭГ696889,ЭГ825406,ЭГ813683,ЭГ750841,ЭГ625124,ЭГ623069,ЭГ622811,ЭГ624227,ЭГ697388" /> 
- <СвЛицПер>
- <РабОргПрод Должность="Генеральный директор" ОснПолн="Должностные обязанности">
  <ФИО Фамилия="Бездноздрев" Имя="Сергей" Отчество="Валерьевич" /> 
  </РабОргПрод>
  </СвЛицПер>
  </СвПер>
  </СвПродПер>
- <Подписант Статус="1" ОблПолн="5" ОснПолн="Должностные обязанности">
- <ЮЛ Должн="Генеральный директор" ИННЮЛ="6627017300">
  <ФИО Фамилия="Бездноздрев" Имя="Сергей" Отчество="Валерьевич" /> 
  </ЮЛ>
  </Подписант>
  </Документ>
  </Файл>

а вот правильный вариант:

  <?xml version="1.0" encoding="windows-1251" ?> 
- <Файл ИдФайл="ON_NSCHFDOPPR_2BM-6670358057-667001001-201601210520349443635_2BM-6646001507-2012052808103911622630000000000_20210916_91d2b83c-1a72-4273-ac70-aac6d5bfdabb" ВерсФорм="5.01" ВерсПрог="Diadoc 1.0">
- <СвУчДокОбор ИдОтпр="2BM-6646001507-2012052808103911622630000000000" ИдПол="2BM-6670358057-667001001-201601210520349443635">
  <СвОЭДОтпр ИННЮЛ="6663003127" ИдЭДО="2BM" НаимОрг="АО "ПФ "СКБ Контур"" /> 
  </СвУчДокОбор>
- <Документ КНД="1115131" ВремИнфПр="13.44.29" ДатаИнфПр="16.09.2021" НаимЭконСубСост="Общество с ограниченной ответственностью "Уральское карьероуправление", ИНН/КПП: 6627017300/667001001" Функция="СЧФДОП" ПоФактХЖ="Документ об отгрузке товаров (выполнении работ), передаче имущественных прав (документ об оказании услуг)" НаимДокОпр="Счет-фактура и документ об отгрузке товаров (выполнении работ), передаче имущественных прав (документ об оказании услуг)">
- <СвСчФакт НомерСчФ="781" ДатаСчФ="06.09.2021" КодОКВ="643">
- <СвПрод>
- <ИдСв>
  <СвЮЛУч НаимОрг="Общество с ограниченной ответственностью "Уральское карьероуправление"" ИННЮЛ="6627017300" КПП="667001001" /> 
  </ИдСв>
- <Адрес>
  <АдрИнф КодСтр="643" АдрТекст="620033, Свердловская обл, Екатеринбург г, Норильская ул, 77; оф. 317" /> 
  </Адрес>
  </СвПрод>
- <ГрузОт>
- <ГрузОтпр>
- <ИдСв>
  <СвЮЛУч НаимОрг="Общество с ограниченной ответственностью "Уральское карьероуправление"" ИННЮЛ="6627017300" КПП="667001001" /> 
  </ИдСв>
- <Адрес>
  <АдрИнф КодСтр="643" АдрТекст="623270 Свердловская обл. г.Дегтярск ул.Вязовая, 1а" /> 
  </Адрес>
  </ГрузОтпр>
  </ГрузОт>
- <ГрузПолуч>
- <ИдСв>
  <СвЮЛУч НаимОрг="ООО "ТД "Урализвесть"" ИННЮЛ="6670358057" КПП="667001001" /> 
  </ИдСв>
- <Адрес>
  <АдрИнф КодСтр="643" АдрТекст="620033, Свердловская обл, Екатеринбург г, Норильская ул, д. 77, оф. 212" /> 
  </Адрес>
  </ГрузПолуч>
- <СвПокуп>
- <ИдСв>
  <СвЮЛУч НаимОрг="ООО "ТД "Урализвесть"" ИННЮЛ="6670358057" КПП="667001001" /> 
  </ИдСв>
- <Адрес>
  <АдрИнф КодСтр="643" АдрТекст="620033, Свердловская обл, Екатеринбург г, Норильская ул, д. 77, оф. 212" /> 
  </Адрес>
  </СвПокуп>
  <ДопСвФХЖ1 НаимОКВ="Российский рубль" /> 
  </СвСчФакт>
- <ТаблСчФакт>
- <СведТов НомСтр="1" НаимТов="Известь 1 сорт" ОКЕИ_Тов="168" КолТов="24.16" ЦенаТов="2250.00" СтТовБезНДС="54360.00" НалСт="20%" СтТовУчНал="65232.00">
- <Акциз>
  <БезАкциз>без акциза</БезАкциз> 
  </Акциз>
- <СумНал>
  <СумНал>10872.00</СумНал> 
  </СумНал>
  <ДопСведТов НаимЕдИзм="т" /> 
  </СведТов>
- <СведТов НомСтр="2" НаимТов="Известь 2 сорт" ОКЕИ_Тов="168" КолТов="175.3" ЦенаТов="2250.00" СтТовБезНДС="394425.00" НалСт="20%" СтТовУчНал="473310.00">
- <Акциз>
  <БезАкциз>без акциза</БезАкциз> 
  </Акциз>
- <СумНал>
  <СумНал>78885.00</СумНал> 
  </СумНал>
  <ДопСведТов НаимЕдИзм="т" /> 
  </СведТов>
- <СведТов НомСтр="3" НаимТов="Известь молотая в МКР" ОКЕИ_Тов="168" КолТов="1.74" ЦенаТов="3750.00" СтТовБезНДС="6525.00" НалСт="20%" СтТовУчНал="7830.00">
- <Акциз>
  <БезАкциз>без акциза</БезАкциз> 
  </Акциз>
- <СумНал>
  <СумНал>1305.00</СумНал> 
  </СумНал>
  <ДопСведТов НаимЕдИзм="т" /> 
  </СведТов>
- <СведТов НомСтр="4" НаимТов="Известь 2 сорт в МКР" ОКЕИ_Тов="168" КолТов="19.67" ЦенаТов="3083.33" СтТовБезНДС="60649.17" НалСт="20%" СтТовУчНал="72779.00">
- <Акциз>
  <БезАкциз>без акциза</БезАкциз> 
  </Акциз>
- <СумНал>
  <СумНал>12129.83</СумНал> 
  </СумНал>
  <ДопСведТов НаимЕдИзм="т" /> 
  </СведТов>
- <СведТов НомСтр="5" НаимТов="Известь 2 сорт фр.0-20" ОКЕИ_Тов="168" КолТов="20.4" ЦенаТов="2250.00" СтТовБезНДС="45900.00" НалСт="20%" СтТовУчНал="55080.00">
- <Акциз>
  <БезАкциз>без акциза</БезАкциз> 
  </Акциз>
- <СумНал>
  <СумНал>9180.00</СумНал> 
  </СумНал>
  <ДопСведТов НаимЕдИзм="т" /> 
  </СведТов>
- <ВсегоОпл СтТовБезНДСВсего="561859.17" СтТовУчНалВсего="674231.00">
- <СумНалВсего>
  <СумНал>112371.83</СумНал> 
  </СумНалВсего>
  </ВсегоОпл>
  </ТаблСчФакт>
- <СвПродПер>
- <СвПер СодОпер="Товары переданы, работы сданы, услуги оказаны">
  <ОснПер НаимОсн="Договор поставки № 2-П-12/09" ДатаОсн="01.12.2009" /> 
- <СвЛицПер>
- <РабОргПрод Должность="Генеральный директор" ОснПолн="Должностные обязанности">
  <ФИО Фамилия="Бездноздрев" Имя="Сергей" Отчество="Валерьевич" /> 
  </РабОргПрод>
  </СвЛицПер>
  </СвПер>
  </СвПродПер>
- <Подписант ОснПолн="Должностные обязанности" ОблПолн="0" Статус="1">
- <ЮЛ ИННЮЛ="6646001507" Должн="Глава Нижнесергинского муниципального района">
  <ФИО Фамилия="Еремеев" Имя="Валерий" Отчество="Васильевич" /> 
  </ЮЛ>
  </Подписант>
  </Документ>
  </Файл>
   Злопчинский
 
29 - 17.09.21 - 12:41
Врайтлн пише строку с энтером.
Пиши либо потоком
   AleksChek
 
30 - 17.09.21 - 12:45
(29) не понял.... Пинай... сколько сил есть...
xml_file.WriteLine("<БезАкциз>без акциза/<БезАкциз>"); - что здесь не так?
 
 
   ДенисЧ
 
31 - 17.09.21 - 12:46
xml_file.WriteLine("<БезАкциз>без акциза</БезАкциз>");

В XML вообще ничего не понимаешь?
   Kassern
 
32 - 17.09.21 - 12:47
(30) Вы опечатались, или реально так написали закрывающий тег?)) "/<БезАкциз>"
   AleksChek
 
33 - 17.09.21 - 12:53
(32) опечатался
   Злопчинский
 
34 - 17.09.21 - 12:56
В 1с++ кстати есть удобные методы для иксемеля. Или в вк Ромикса тоже. Какая-то из них пишет как раз без переводов строк.
   ChMikle
 
35 - 17.09.21 - 12:58
(0) в первом случае - узел , а во втором реквизит .
   Kassern
 
36 - 17.09.21 - 13:01
   Kassern
 
37 - 17.09.21 - 13:02
гляньте как у вас имя организации экранировано, где "&quot;"?
   Kassern
 
38 - 17.09.21 - 13:02
в общем ковыряйте файлик, пока не будит валидным
   MWWRuza
 
39 - 17.09.21 - 13:06
"Открывающие, Закрывающие, форматирование, экранирование".....
Гиморой какой-то..
Используйте "MSXML2.DOMDocument.6.0", там все само формируется, просто добавляете нужные узлы, атрибуты, текст.
Все ХМЛ конструкции сами формируются, вообще не нужно думать о том как тег закрыть/открыть.
Вот пример первого попавшегося под руку запроса из моей конфы, формирующего таким образом файл ХМЛ:

    XML_DOM            = CreateObject("MSXML2.DOMDocument.6.0");

    XML_HELPER        = CreateObject("Msxml2.MXNamespaceManager.6.0");
    XML_HELPER.declarePrefix("qp", "http://fsrar.ru/WEGAIS/QueryParameters");
    XML_HELPER.declarePrefix("ns", "http://fsrar.ru/WEGAIS/WB_DOC_SINGLE_01");
    Header             = XML_DOM.createProcessingInstruction("xml", "version=""1.0"" encoding=""UTF-8""" );
    XML_DOM.appendChild(Header);
    XML_ROOT         = ДобавитьУзел(XML_DOM, XML_HELPER, XML_DOM, "Documents", "ns");
    ДобавитьАттрибут(XML_DOM, XML_ROOT, "xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance");
    ДобавитьАттрибут(XML_DOM, XML_ROOT, "xmlns:qp", "http://fsrar.ru/WEGAIS/QueryParameters");
    XML_OWNER         = ДобавитьУзел(XML_DOM, XML_HELPER, XML_ROOT, "Owner", "ns");
    XML_FSRAR_ID     = ДобавитьУзел(XML_DOM, XML_HELPER, XML_OWNER, "FSRAR_ID", "ns");
    ДобавитьТекст(XML_DOM, XML_FSRAR_ID, FSRAR_ID);
    XML_DOCUMENT     = ДобавитьУзел(XML_DOM, XML_HELPER, XML_ROOT, "Document", "ns");    
    XML_Query         = ДобавитьУзел(XML_DOM, XML_HELPER, XML_DOCUMENT, СокрЛП(ВидЗапр), "ns");   // "QueryRestBCode"
    XML_Parameters    = ДобавитьУзел(XML_DOM, XML_HELPER, XML_Query, "Parameters", "qp");
    XML_Parameter    = ДобавитьУзел(XML_DOM, XML_HELPER, XML_Parameters, "Parameter", "qp");
    XML_Name        = ДобавитьУзел(XML_DOM, XML_HELPER, XML_Parameter, "Name", "qp");
    ДобавитьТекст(XML_DOM, XML_Name, СокрЛП(Пар));     //  "ФОРМА2"
    XML_Value        = ДобавитьУзел(XML_DOM, XML_HELPER, XML_PARAMETER, "Value", "qp");
    ДобавитьТекст(XML_DOM, XML_Value, СокрЛП(ЗначПар));    // НомСпрФ2
//    XML_DOM.Save("c:\Temp\1234.xml");
    RESULT_XML_DOM     = ВыгрузитьDOM(XML_DOM, УТМ_URL + "opt/in/" + СокрЛП(ВидЗапр));
   MWWRuza
 
40 - 17.09.21 - 13:10
+(39) Еще в ГМ должны быть такие экспортные процедцры/функции:

Функция ДобавитьУзел(XML_DOM, XML_HELPER, XML_NODE, Имя, Префикс) Экспорт
    Если СокрЛП(Префикс) = "" Тогда
        XML_CHILD = XML_DOM.createNode(1,Имя,"");
    Иначе    
        XML_CHILD = XML_DOM.createNode(1,Префикс+":"+Имя,XML_HELPER.getURI(Префикс));    
    КонецЕсли;
    XML_NODE.appendChild(XML_CHILD);
    Возврат XML_CHILD;
КонецФункции

Процедура ДобавитьАттрибут(XML_DOM, XML_NODE, Имя, Значение) Экспорт
    XML_ATTR = XML_DOM.createAttribute(Имя);
    XML_ATTR.nodeValue = Значение;
    XML_NODE.setAttributeNode(XML_ATTR);
КонецПроцедуры

Процедура ДобавитьТекст(XML_DOM, XML_NODE, Значение) Экспорт
    Попытка
        XML_TEXT = XML_DOM.createTextNode(Значение);
        XML_NODE.appendChild(XML_TEXT);
    Исключение
        Сообщить("Ошибка: " + Значение);
    КонецПопытки;
КонецПроцедуры
   Kassern
 
41 - 17.09.21 - 14:05
(39) а я что писал в (21)?) Ну хочет ТС строкой ковыряться и сам следить за экранированием - пожалуйста.
   hhhh
 
42 - 17.09.21 - 14:10
(33) вот здесь тоже хрень
<СумНал>
  <СумНал>778852.60</СумНал> 
  </СумНал>

СумНал 2 раза, не может это работать.
   Kassern
 
43 - 17.09.21 - 14:14
(42) почему же не может? все может; Вот пример из рабочего варианта из 8ки
                <Акциз>
                    <БезАкциз>без акциза</БезАкциз>
                </Акциз>
                <СумНал>
                    <СумНал>365.33</СумНал>
                </СумНал>
   Kassern
 
44 - 17.09.21 - 14:15
(42) откройте какую нибудь УПДшку эдошную и сохраните в файл. Увидите, что только в путь используется)
   Злопчинский
 
45 - 17.09.21 - 14:52
(42) я сам прифигел когда увидел, но э о непротиворечит формату иксемель и соответственно. Формату электроупд описанного в приказе фнс
   youalex
 
46 - 17.09.21 - 15:00
(42) вроде норм все  (если не принимать во внимание одаренность авторов этого формата)
в xpath это же разные поля
   ssh2006
 
47 - 17.09.21 - 16:04
(42) по формату

СумНал состоит из СумНал , БезНДС , ДефНДС
   MWWRuza
 
48 - 20.09.21 - 19:48
(41) а я что писал в (21)?
Ну, да, я просто немного подробнее расписал, с примером как это делается.


Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.