Имя: Пароль:
1C
1С v8
При загрузке данных из XML не все документы записываются
0 YaroslavStr
 
24.01.14
16:43
Сделал процедуру записи данных в файл XML. Все записывается отлично. Сделал процедуру чтения и записи документов из файла XML, но записываются документы как бы через один. В чем может быть проблема?

Документы идут разных типов. Но даже одного и того же типа пишутся раз через раз. Такое ощущение, что не корректно обрабатывается функция ВозможностьЧтенияXML(Чтение).
1 zladenuw
 
24.01.14
16:45
как выгружаешь и как загружаешь ? через что ? ошибка в алгоритме, а не в методах платформы
2 YaroslavStr
 
24.01.14
16:54
Смысл в том что надо из периферийных баз выгружать списки документов одного заказа и направлять их на производство. При выгрузке формируется XML с данными об этом заказе. Отдельно создаются теги с данными котрагента. Далее ниже записывается его главный документ "Раскрой", а потом его дочерние теги: Изделия, Деталировки. Все документы создаются нормально, кроме "Деталировки". Они как бы пропускаются частями.

Если ВозможностьЧтенияXML(Чтение) Тогда
    ЗагружаемыйОбъект = ПрочитатьXML(Чтение);                        Док = ЗагружаемыйОбъект.Скопировать();
    Док.Дата = ТекущаяДата();        
                                Если ТипЗнч(Док.Ссылка) = Тип("ДокументСсылка.РаскройТорговое") Тогда                                        
                    Док.ДокОснование = Ссылка;                        
                    Док.Изделия.Очистить();
                    Док.ОбменДанными.Загрузка = Истина;
                    Док.Записать();                     
                    
                    СсылкаНаРаскрой = Док.Ссылка;
                    Сообщить("Новый Объект: "+Док);                    
                    Сообщить("********************");
                КонецЕсли;
                
                Если ТипЗнч(Док.Ссылка) = Тип("ДокументСсылка.РаскройМеталл") Тогда                        
                    Док.ДокОснование = Ссылка;                        
                    Док.ОбменДанными.Загрузка = Истина;
                    Док.Записать();
                                                            
                    СсылкаНаРаскрой = Док.Ссылка;
                    Сообщить("Новый Объект: "+Док);
                    Сообщить("********************");
                КонецЕсли;                    
                
                Если ТипЗнч(Док.Ссылка) = Тип("ДокументСсылка.РаскройУслуги") Тогда                        
                    Док.ДокОснование = Ссылка;                        
                    Док.ОбменДанными.Загрузка = Истина;
                    Док.Записать();
                                                            
                    СсылкаНаРаскрой = Док.Ссылка;
                    Сообщить("Новый Объект: "+Док);                        
                    Сообщить("********************");
                КонецЕсли;
                
                Если ТипЗнч(Док.Ссылка) = Тип("ДокументСсылка.Изделие") Тогда                        
                    Док.ДокРаскрой = СсылкаНаРаскрой;                        
                    Док.ОбменДанными.Загрузка = Истина;
                    Док.Записать();
                                                            
                    СсылкаНаИзделие = Док.Ссылка;
                    Сообщить("Новый Объект: "+Док);
                    Сообщить("********************");
                КонецЕсли;
                
                Если ТипЗнч(Док.Ссылка) = Тип("ДокументСсылка.РДсп") или
                    ТипЗнч(Док.Ссылка) = Тип("ДокументСсылка.РДвп") или
                    ТипЗнч(Док.Ссылка) = Тип("ДокументСсылка.РДюбонд") или
                    ТипЗнч(Док.Ссылка) = Тип("ДокументСсылка.РЕтс") или
                    ТипЗнч(Док.Ссылка) = Тип("ДокументСсылка.РЗеркало") или
                    ТипЗнч(Док.Ссылка) = Тип("ДокументСсылка.РМодерн") или
                    ТипЗнч(Док.Ссылка) = Тип("ДокументСсылка.РОракал") или
                    ТипЗнч(Док.Ссылка) = Тип("ДокументСсылка.РПластик") или
                    ТипЗнч(Док.Ссылка) = Тип("ДокументСсылка.РПоклейка") или
                    ТипЗнч(Док.Ссылка) = Тип("ДокументСсылка.РПокраска") или
                    ТипЗнч(Док.Ссылка) = Тип("ДокументСсылка.РПрофиль") или
                    ТипЗнч(Док.Ссылка) = Тип("ДокументСсылка.РРаздвижка") или
                    ТипЗнч(Док.Ссылка) = Тип("ДокументСсылка.РСтекло") или
                    ТипЗнч(Док.Ссылка) = Тип("ДокументСсылка.РСтолешня") или
                    ТипЗнч(Док.Ссылка) = Тип("ДокументСсылка.РТорпал") или
                    ТипЗнч(Док.Ссылка) = Тип("ДокументСсылка.РТруба") или
                    ТипЗнч(Док.Ссылка) = Тип("ДокументСсылка.РФурнитура") Тогда
                                            
                    Док.Изделие = СсылкаНаИзделие;                                                
                    Док.ОбменДанными.Загрузка = Истина;
                    Док.Записать();                            
                    
                    Сообщить("Новый Объект: "+Док);
                    Сообщить("********************");
                КонецЕсли;                                    
            КонецЕсли;
3 YaroslavStr
 
24.01.14
16:55
Сама функция ВозможностьЧтенияXML возвращает одному документу Истина, а другому Ложь. Как такое может быть?
4 YaroslavStr
 
24.01.14
16:55
Документ копируется перед записью, что бы избежать дубликатов документов.
5 YaroslavStr
 
24.01.14
17:50
Проверил и действительно функция обрабатывает вложенные объекты через один: первый, третий, пятый и т.д. Кто что посоветует?
6 YaroslavStr
 
24.01.14
17:56
Короче, решил проблему дублированием выгружаемых объектов. Так как функция работает через один то дублирование помогло. :) неправильно но пока не знаю как исправить :)
7 SUA
 
24.01.14
18:00
Если ВозможностьЧтенияXML(Чтение) Тогда
заменить на
Попытка
похоже "ВозможностьЧтенияXML" сама считывает очередной элемент а потом еще раз ПрочитатьXML
или позиционироваться обратно надо
8 YaroslavStr
 
24.01.14
20:01
Видимо так и есть. Надо завтра выследить в чем дело.
2 + 2 = 3.9999999999999999999999999999999...