|
v7: Выгрузка в xml | ☑ | ||
---|---|---|---|---|
0
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; КонецЕсли; стр=прм_ЗначениеАтрибута; стр=СтрЗаменить(стр, "&", "&"); стр=СтрЗаменить(стр, """", """); стр=СтрЗаменить(стр, "<", "<"); стр=СтрЗаменить(стр, ">", ">"); стр=СтрЗаменить(стр, "'", "'"); xml_file.Write(" "+прм_ИмяАтрибута+"="+""""+стр+""""); КонецПроцедуры // xml_ЗаписатьЗаписатьАтрибут Процедура xml_ЗаписатьТекст(прм_Текст) Если xml_ТегОткрыт=0 Тогда Сообщить("Перед записью атрибута необходимо записать начало элемента!","!"); а=10/0; КонецЕсли; стр=прм_Текст; стр=СтрЗаменить(стр, "&", "&"); стр=СтрЗаменить(стр, """", """); стр=СтрЗаменить(стр, "<", "<"); стр=СтрЗаменить(стр, ">", ">"); стр=СтрЗаменить(стр, "'", "'"); 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 в принципе не предназначен для чтения глазами.
|
|||
2
youalex
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
|
Почему тег Акциз закрывается КонецЭлемента
А тег БезАкциз - КонецЭлементаТекст ? |
|||
6
Bigbro
17.09.21
✎
12:14
|
никакого косяка
xml_file.WriteLine - выводит строку. открытие тэга, данные, закрытие, каждый раз. если надо чтобы все это вместе выводилось в одну строку - надо сломать и переписать. но в (1) правда. XML не для людей. |
|||
7
AleksChek
17.09.21
✎
12:18
|
(1) если отредактировать и убрать эти пробелы, т.е. сделать в таком виде:
<БезАкциз>без акциза</БезАкциз> то загружается идеально. Т.е. все должно быть в "одну" строку |
|||
8
AleksChek
17.09.21
✎
12:19
|
(6) Пробовал этот вариант, но что-то не "прокатило". Сейчас еще раз попробую....
|
|||
9
AleksChek
17.09.21
✎
12:20
|
(6) т.е. примерно такой вид кода должен быть:
xml_file.WriteLine("<БезАкциз>без акциза<БезАкциз>"); |
|||
10
AleksChek
17.09.21
✎
12:23
|
(9) тогда получилось вот как:
<Акциз<БезАкциз>без акциза<БезАкциз> /> (это уже в выгруженном файле) |
|||
11
youalex
17.09.21
✎
12:24
|
А почему ты считаешь что вариант
<БезАкциз> без акциза </БезАкциз> неправильный, а в одну строку - правильный? |
|||
12
AleksChek
17.09.21
✎
12:24
|
т.е. вот такой код:
xml_ЗаписатьНачалоЭлемента("<Акциз>"); xml_file.WriteLine("<БезАкциз>без акциза<БезАкциз>"); xml_ЗаписатьКонецЭлемента("</Акциз>"); |
|||
13
AleksChek
17.09.21
✎
12:25
|
(11) а потому что в таком случае (когда "в разных строках) не корректно воспринимает Диадок. Ругается на это поле. А если "в одну строку" - то все ОК.
|
|||
14
Злопчинский
17.09.21
✎
12:25
|
(9) слэш в закрывающем забыл
|
|||
15
AleksChek
17.09.21
✎
12:27
|
(14) можно подробнее?
|
|||
16
Злопчинский
17.09.21
✎
12:29
|
Ну если все вышивжаются нормально с переводами строк, а в этом узле проблема то посмотри хексредактором может там затесался символ невидимый
|
|||
17
Злопчинский
17.09.21
✎
12:30
|
БА и /БА
А у тебя Ба текст ба |
|||
18
Злопчинский
17.09.21
✎
12:32
|
Открой свой первоначальный вариант который типа неправильный браузером и смотри что получится
|
|||
19
AleksChek
17.09.21
✎
12:34
|
(18) когда смотришь браузером, то оба варианта отображаются "тремя строками".... А когда в редакторе открываешь, то правильный вариант - одной строкой, а мой (не правильный) опять же тремя....
|
|||
20
AleksChek
17.09.21
✎
12:34
|
как здесь можно вложить файлы? Я бы прикрепил оба варианта...
|
|||
21
Kassern
17.09.21
✎
12:36
|
(0) я в свое время на клюшка юзал XML_DOM=CreateObject("MSXML2.DOMDocument.4.0"); ну или по младше версию, таких проблем не испытвал...
|
|||
22
Злопчинский
17.09.21
✎
12:37
|
Да пофиг в одну строку или в несколько. Браузер сам построено по узлам выводит
|
|||
23
Kassern
17.09.21
✎
12:37
|
(21) без проблем создаются элементы с нужной структурой
|
|||
24
Злопчинский
17.09.21
✎
12:37
|
(21) я всегда вывожу тупо текстом если формирование линейное.
|
|||
25
AleksChek
17.09.21
✎
12:39
|
(24) подскажи как вывести эти три строки в одну линейно? (ну совсем я глюканул... хоть запинайте)
|
|||
26
Злопчинский
17.09.21
✎
12:40
|
(25) хексредактором в проблемном варианте мусора не видно?
|
|||
27
Kassern
17.09.21
✎
12:40
|
(24) мне после 8ки удобнее так было удобнее. Это как аналог ЗаписьXML с примерно таким же функционалом
|
|||
28
AleksChek
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
|
Врайтлн пише строку с энтером.
Пиши либо потоком |
|||
30
AleksChek
17.09.21
✎
12:45
|
(29) не понял.... Пинай... сколько сил есть...
xml_file.WriteLine("<БезАкциз>без акциза/<БезАкциз>"); - что здесь не так? |
|||
31
ДенисЧ
17.09.21
✎
12:46
|
xml_file.WriteLine("<БезАкциз>без акциза</БезАкциз>");
В XML вообще ничего не понимаешь? |
|||
32
Kassern
17.09.21
✎
12:47
|
(30) Вы опечатались, или реально так написали закрывающий тег?)) "/<БезАкциз>"
|
|||
33
AleksChek
17.09.21
✎
12:53
|
(32) опечатался
|
|||
34
Злопчинский
17.09.21
✎
12:56
|
В 1с++ кстати есть удобные методы для иксемеля. Или в вк Ромикса тоже. Какая-то из них пишет как раз без переводов строк.
|
|||
35
ChMikle
17.09.21
✎
12:58
|
(0) в первом случае - узел , а во втором реквизит .
|
|||
36
Kassern
17.09.21
✎
13:01
|
||||
37
Kassern
17.09.21
✎
13:02
|
гляньте как у вас имя организации экранировано, где """?
|
|||
38
Kassern
17.09.21
✎
13:02
|
в общем ковыряйте файлик, пока не будит валидным
|
|||
39
MWWRuza
гуру
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/" + СокрЛП(ВидЗапр)); |
|||
40
MWWRuza
гуру
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); Исключение Сообщить("Ошибка: " + Значение); КонецПопытки; КонецПроцедуры |
|||
41
Kassern
17.09.21
✎
14:05
|
(39) а я что писал в (21)?) Ну хочет ТС строкой ковыряться и сам следить за экранированием - пожалуйста.
|
|||
42
hhhh
17.09.21
✎
14:10
|
(33) вот здесь тоже хрень
<СумНал> <СумНал>778852.60</СумНал> </СумНал> СумНал 2 раза, не может это работать. |
|||
43
Kassern
17.09.21
✎
14:14
|
(42) почему же не может? все может; Вот пример из рабочего варианта из 8ки
<Акциз> <БезАкциз>без акциза</БезАкциз> </Акциз> <СумНал> <СумНал>365.33</СумНал> </СумНал> |
|||
44
Kassern
17.09.21
✎
14:15
|
(42) откройте какую нибудь УПДшку эдошную и сохраните в файл. Увидите, что только в путь используется)
|
|||
45
Злопчинский
17.09.21
✎
14:52
|
(42) я сам прифигел когда увидел, но э о непротиворечит формату иксемель и соответственно. Формату электроупд описанного в приказе фнс
|
|||
46
youalex
17.09.21
✎
15:00
|
(42) вроде норм все (если не принимать во внимание одаренность авторов этого формата)
в xpath это же разные поля |
|||
47
ssh2006
17.09.21
✎
16:04
|
(42) по формату
СумНал состоит из СумНал , БезНДС , ДефНДС |
|||
48
MWWRuza
гуру
20.09.21
✎
19:48
|
(41) а я что писал в (21)?
Ну, да, я просто немного подробнее расписал, с примером как это делается. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |