Имя: Пароль:
1C
 
ЗаписьXML. Часть узлов пустые...
0 poligraf
 
28.10.15
08:18
Правлю типовой обмен с сайтом в УТ11.

Так надо, ибо CMS не Битрикс и модуль от битрикса не разумеет...

Вот такая конструкция добавляется.
<Склады>
    <Склад>
    <ИД>dd792115-131c-11e5-981a-0cc47a068a52</ИД>
    <Количество>1</Количество>
    </Склад>
</Склады>

У некоторых позиций в <Склады> ничего не пишется в итоговом файле, хотя отладчик показывает, что вложенные узлы записываются...
1 Лефмихалыч
 
28.10.15
08:20
>ничего не пишется ... хотя отладчик показывает
Кэш продувал?
2 poligraf
 
28.10.15
08:33
(1) на кэш-то не подумал... Но не помогло:)
3 Лефмихалыч
 
28.10.15
08:38
если отладчик показывает запись, а записи нет, значит ты отладчиком остановился не там
4 poligraf
 
28.10.15
10:32
(3) да вот нифига...

Склады - это узлы в номенклатуре.
какие-то узлы заполнены, а какие-то нет...

Хотя отладчик по всем проходит, и код только в одном месте, что формирует.
5 Гёдза
 
28.10.15
10:32
кривой код?
6 Лефмихалыч
 
28.10.15
10:35
(4) придется-таки код читать, да? :)
7 poligraf
 
28.10.15
10:57
(6) код вообще простой...

ОбъектXMLПакетПредложений.ЗаписатьНачалоЭлемента("Склады");

СтрокиОстатков = ТаблицаОстатков.НайтиСтроки(СтруктураПоиска);
Для Каждого СтрокаОстатка Из СтрокиОстатков Цикл
    ОбъектXMLПакетПредложений.ЗаписатьНачалоЭлемента("Склад");
    
    ИДСклада = Строка(СтрокаОстатка.Склад.УникальныйИдентификатор());
    
    ЗаписатьТекстовыйУзел(ОбъектXMLПакетПредложений, ОписаниеОшибокXML, "ИД", ИДСклада);
    ЗаписатьТекстовыйУзел(ОбъектXMLПакетПредложений, ОписаниеОшибокXML, "Количество", ФорматЗначенияДляXML(СтрокаОстатка.Остаток, Параметры.ФорматКоличества));
    
    ОбъектXMLПакетПредложений.ЗаписатьКонецЭлемента();
КонецЦикла;

ОбъектXMLПакетПредложений.ЗаписатьКонецЭлемента();
8 Гёдза
 
28.10.15
10:58
Если нет остатков То будет пустой тег <Склады/>
9 poligraf
 
28.10.15
10:58
ЗаписатьТекстовыйУзел() тоже простая.

ОбъектXML.ЗаписатьНачалоЭлемента(Имя);
ОбъектXML.ЗаписатьТекст(СтрокаЗаписи);
ОбъектXML.ЗаписатьКонецЭлемента();
10 poligraf
 
28.10.15
10:58
(8) я знаю.
Но отладчик проходит по циклу, и в XML таки пишется информация.

Но что пишется, я не могу, к сожалению посмотреть в процессе, только после записи файла
11 Лефмихалыч
 
28.10.15
13:53
(10) зови попа, пуст серверную святой водой зальет.
Не бывает так.
При таком коде, если узел Склады пустой, значит остатков нет. Если остатки есть и узел все равно пустой, значит либо выполняется не этот код, а какой-то другой, либо остатков все-таки нет
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn