Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Ошибка при создании XML файла ЗаписатьНачалоЭлемента

Ошибка при создании XML файла ЗаписатьНачалоЭлемента
Я
   skupidom
 
16.02.18 - 17:45
При создании XML файла ошибка:
{ОбщийМодуль.рар_Обмен.Модуль(1032)}: Ошибка при вызове метода контекста (ЗаписатьНачалоЭлемента)    ЗаписьXML.ЗаписатьНачалоЭлемента("DocumentObject.ПоступлениеТоваровУслуг.Вручную");
по причине:
Ошибочный порядок записи XML
Гружу 2 документа 1 вида

Вот мой код:
ЗаписьXML.ЗаписатьНачалоЭлемента("DocumentObject.ПоступлениеТоваровУслуг.Вручную");
    
    ЗаписатьXML(ЗаписьXML, Данные.Ссылка, "Ref", НазначениеТипаXML.Явное);
    
    ЗаписатьXML(ЗаписьXML, Данные.Номер, "Номер", НазначениеТипаXML.Явное);
    ЗаписатьXML(ЗаписьXML, Данные.Дата, "Дата", НазначениеТипаXML.Явное);
    ЗаписатьXMLВалюты(ЗаписьXML, Данные.ВалютаДокумента);

    ЗаписатьXML(ЗаписьXML, Данные.ВидОперации, "ВидОперации", НазначениеТипаXML.Явное);
    ЗаписатьXML(ЗаписьXML, Данные.ВидПоступления, "ВидыПоступленияТоваров", НазначениеТипаXML.Явное);
    ЗаписатьXML(ЗаписьXML, Данные.ДатаВходящегоДокумента, "ДатаВходящегоДокумента", НазначениеТипаXML.Явное);
    
    ЗаписатьXML(ЗаписьXML, Данные.Комментарий, "Комментарий", НазначениеТипаXML.Явное);
    
    ЗаписатьXMLКонтрагенты(ЗаписьXML, Данные.Контрагент);
    ЗаписатьXMLДоговорыКонтрагентов(ЗаписьXML, Данные.ДоговорКонтрагента);
    
    ЗаписатьXMLСправочникСсылкаИНаименованиеИерархия(ЗаписьXML, Данные.Подразделение, "Подразделения");
    ЗаписатьXML(ЗаписьXML, Данные.СуммаДокумента, "СуммаДокумента", НазначениеТипаXML.Явное);
    ЗаписатьXML(ЗаписьXML, "№ " + ОбщегоНазначения.ПолучитьНомерНаПечать(Данные.Ссылка) + " от " + Строка(Формат(Данные.Дата, "ДЛФ=Д")), "Представление", НазначениеТипаXML.Явное);    
    
    Если ВерсияОбмена<>"1" Тогда
        //Прикрепления

        Прикрепление=Прикрепления.Найти(Данные.Ссылка,"Объект");
        Если Прикрепление=Неопределено Тогда
            ЗаписатьXML(ЗаписьXML, Ложь, "ЕстьПрикрепления", НазначениеТипаXML.Явное);
            ЗаписатьXML(ЗаписьXML, "", "НаименованиеПрикрепления", НазначениеТипаXML.Явное);
            ЗаписатьXML(ЗаписьXML, "", "ИмяВХранилище", НазначениеТипаXML.Явное);
            ЗаписатьXML(ЗаписьXML, "", "УИДЦБ", НазначениеТипаXML.Явное);
            ЗаписатьXML(ЗаписьXML, 0, "Размер", НазначениеТипаXML.Явное);
        Иначе
            ЗаписатьXML(ЗаписьXML, Истина, "ЕстьПрикрепления", НазначениеТипаXML.Явное);
            ЗаписатьXML(ЗаписьXML, Прикрепление.Наименование, "НаименованиеПрикрепления", НазначениеТипаXML.Явное);
            ЗаписатьXML(ЗаписьXML, Прикрепление.ИмяВХранилище, "ИмяВХранилище", НазначениеТипаXML.Явное);
            ЗаписатьXML(ЗаписьXML, Строка(Прикрепление.Ссылка.УникальныйИдентификатор()), "УИДЦБ", НазначениеТипаXML.Явное);
            ЗаписатьXML(ЗаписьXML, Прикрепление.Размер, "Размер", НазначениеТипаXML.Явное);
        КонецЕсли;    
        //    

        ЗаписатьXML(ЗаписьXML, Строка(Данные.Ответственный), "Автор", НазначениеТипаXML.Явное);
    КонецЕсли;    
    
    ТЧ=Данные.Оборудование.Выгрузить();
    ТЧ.Сортировать("рар_Заказ,Номенклатура");
    ПредЗаказ="";
    Для Каждого СтрокаТЧ Из ТЧ Цикл
        ЗаписьXML.ЗаписатьНачалоЭлемента("DocumentTabularSectionRow.ПоступлениеТоваровУслуг.Оборудование.Вручную");
        Если ВерсияОбмена<>"1" Тогда
            ЗаписатьXML(ЗаписьXML, Строка(СтрокаТЧ.ЕдиницаИзмерения), "ЕдиницаИзмерения", НазначениеТипаXML.Явное);
        Иначе    
            ЗаписатьXMLСправочникСсылкаИНаименование(ЗаписьXML, СтрокаТЧ.ЕдиницаИзмерения, "ЕдиницыИзмерения");
        КонецЕсли;    
        ЗаписатьXML(ЗаписьXML, СтрокаТЧ.Количество, "Количество", НазначениеТипаXML.Явное);
        Если ВерсияОбмена<>"1" Тогда
            ЗаписатьXML(ЗаписьXML, Строка(СтрокаТЧ.Номенклатура), "Номенклатура", НазначениеТипаXML.Явное);
        Иначе    
            ЗаписатьXMLНоменклатура(ЗаписьXML, СтрокаТЧ.Номенклатура);
        КонецЕсли;    
        ЗаписатьXML(ЗаписьXML, СтрокаТЧ.Сумма, "Сумма", НазначениеТипаXML.Явное);
        ЗаписатьXML(ЗаписьXML, СтрокаТЧ.Цена, "Цена", НазначениеТипаXML.Явное);
        Если ВерсияОбмена<>"1" Тогда
            ЗаписатьXML(ЗаписьXML, Строка(СтрокаТЧ.рар_ВидРабот), "рар_ВидРабот", НазначениеТипаXML.Явное);
        Иначе    
            ЗаписатьXMLСправочникСсылкаИНаименованиеИерархия(ЗаписьXML, СтрокаТЧ.рар_ВидРабот, "рар_ВидыРабот");
        КонецЕсли;    
        Если ВерсияОбмена<>"1" Тогда
            Если ТипЗнч(СтрокаТЧ.рар_Заказ)=Тип("ДокументСсылка.ВнутреннийЗаказ") И ЗначениеЗаполнено(СтрокаТЧ.рар_Заказ) Тогда
                Если СтрокаТЧ.рар_Заказ<>ПредЗаказ Тогда
                    ЗаписатьXMLВнутреннийЗаказ(ЗаписьXML, СтрокаТЧ.рар_Заказ, Карты,Прикрепления,ВерсияОбмена);
                    ПредЗаказ=СтрокаТЧ.рар_Заказ;
                Иначе
                    ЗаписатьXML(ЗаписьXML, "УстановленоРанее", "рар_Заказ", НазначениеТипаXML.Явное);    
                КонецЕсли;    
            Иначе
                ЗаписатьXML(ЗаписьXML, "", "рар_Заказ", НазначениеТипаXML.Явное);    
            КонецЕсли;    
        КонецЕсли;
        ЗаписьXML.ЗаписатьКонецЭлемента();
    КонецЦикла;    
    
    ТЧ=Данные.Товары.Выгрузить();
    ТЧ.Сортировать("Заказ,Номенклатура");
    Для Каждого СтрокаТЧ Из ТЧ Цикл
        ЗаписьXML.ЗаписатьНачалоЭлемента("DocumentTabularSectionRow.ПоступлениеТоваровУслуг.Товары.Вручную");
        Если ВерсияОбмена<>"1" Тогда
            ЗаписатьXML(ЗаписьXML, Строка(СтрокаТЧ.ЕдиницаИзмерения), "ЕдиницаИзмерения", НазначениеТипаXML.Явное);
        Иначе    
            ЗаписатьXMLСправочникСсылкаИНаименование(ЗаписьXML, СтрокаТЧ.ЕдиницаИзмерения, "ЕдиницыИзмерения");
        КонецЕсли;    
        ЗаписатьXML(ЗаписьXML, СтрокаТЧ.Количество, "Количество", НазначениеТипаXML.Явное);
        Если ВерсияОбмена<>"1" Тогда
            ЗаписатьXML(ЗаписьXML, Строка(СтрокаТЧ.Номенклатура), "Номенклатура", НазначениеТипаXML.Явное);
        Иначе    
            ЗаписатьXMLНоменклатура(ЗаписьXML, СтрокаТЧ.Номенклатура);
        КонецЕсли;    
        ЗаписатьXML(ЗаписьXML, СтрокаТЧ.Сумма, "Сумма", НазначениеТипаXML.Явное);
        ЗаписатьXML(ЗаписьXML, СтрокаТЧ.Цена, "Цена", НазначениеТипаXML.Явное);        
        Если ВерсияОбмена<>"1" Тогда
            ЗаписатьXML(ЗаписьXML, Строка(СтрокаТЧ.рар_ВидРабот), "рар_ВидРабот", НазначениеТипаXML.Явное);
        Иначе    
            ЗаписатьXMLСправочникСсылкаИНаименованиеИерархия(ЗаписьXML, СтрокаТЧ.рар_ВидРабот, "рар_ВидыРабот");
        КонецЕсли;    
        Если ВерсияОбмена<>"1" Тогда
            Если ТипЗнч(СтрокаТЧ.Заказ)=Тип("ДокументСсылка.ВнутреннийЗаказ") И ЗначениеЗаполнено(СтрокаТЧ.Заказ) Тогда
                Если СтрокаТЧ.Заказ<>ПредЗаказ Тогда
                    ЗаписатьXMLВнутреннийЗаказ(ЗаписьXML, СтрокаТЧ.Заказ, Карты,Прикрепления,ВерсияОбмена);
                    ПредЗаказ=СтрокаТЧ.Заказ;
                Иначе
                    ЗаписатьXML(ЗаписьXML, "УстановленоРанее", "Заказ", НазначениеТипаXML.Явное);    
                КонецЕсли;    
            Иначе
                ЗаписатьXML(ЗаписьXML, "", "Заказ", НазначениеТипаXML.Явное);    
            КонецЕсли;    
        КонецЕсли;    
        ЗаписьXML.ЗаписатьКонецЭлемента();
    КонецЦикла;    
    
    ТЧ=Данные.Услуги.Выгрузить();
    ТЧ.Сортировать("Заказ,Номенклатура");
    Для Каждого СтрокаТЧ Из Данные.Услуги Цикл
        ЗаписьXML.ЗаписатьНачалоЭлемента("DocumentTabularSectionRow.ПоступлениеТоваровУслуг.Услуги.Вручную");
        ЗаписатьXML(ЗаписьXML, СтрокаТЧ.Количество, "Количество", НазначениеТипаXML.Явное);
        ЗаписатьXML(ЗаписьXML, СтрокаТЧ.Сумма, "Сумма", НазначениеТипаXML.Явное);
        Если ВерсияОбмена<>"1" Тогда
            ЗаписатьXML(ЗаписьXML, Строка(СтрокаТЧ.Номенклатура), "Номенклатура", НазначениеТипаXML.Явное);
        Иначе    
            ЗаписатьXMLНоменклатура(ЗаписьXML, СтрокаТЧ.Номенклатура);
        КонецЕсли;    
        ЗаписатьXML(ЗаписьXML, СтрокаТЧ.Цена, "Цена", НазначениеТипаXML.Явное);    
        Если ВерсияОбмена<>"1" Тогда
            ЗаписатьXML(ЗаписьXML, Строка(СтрокаТЧ.рар_ВидРабот), "рар_ВидРабот", НазначениеТипаXML.Явное);
        Иначе    
            ЗаписатьXMLСправочникСсылкаИНаименованиеИерархия(ЗаписьXML, СтрокаТЧ.рар_ВидРабот, "рар_ВидыРабот");
        КонецЕсли;    
        Если ВерсияОбмена<>"1" Тогда
            Если ТипЗнч(СтрокаТЧ.Заказ)=Тип("ДокументСсылка.ВнутреннийЗаказ") И ЗначениеЗаполнено(СтрокаТЧ.Заказ) Тогда
                Если СтрокаТЧ.Заказ<>ПредЗаказ Тогда
                    ЗаписатьXMLВнутреннийЗаказ(ЗаписьXML, СтрокаТЧ.рар_Заказ, Карты,Прикрепления,ВерсияОбмена);
                    ПредЗаказ=СтрокаТЧ.рар_Заказ;
                Иначе
                    ЗаписатьXML(ЗаписьXML, "УстановленоРанее", "Заказ", НазначениеТипаXML.Явное);    
                КонецЕсли;    
            Иначе
                ЗаписатьXML(ЗаписьXML, "", "Заказ", НазначениеТипаXML.Явное);    
            КонецЕсли;    
        КонецЕсли;
        ЗаписьXML.ЗаписатьКонецЭлемента();
    КонецЦикла;    
    
    Если ВерсияОбмена<>"1" Тогда
        Карта=Карты.НайтиСтроки(Новый Структура("Документ",Данные.Ссылка));
        Для каждого СтрокаТЧ из Карта Цикл
            ЗаписьXML.ЗаписатьНачалоЭлемента("DocumentTabularSectionRow.ЗаказПоставщику.Карта.Вручную");
            ЗаписатьXML(ЗаписьXML, СтрокаТЧ.Уровень, "Уровень", НазначениеТипаXML.Явное);
            ЗаписатьXML(ЗаписьXML, СтрокаТЧ.Ответственный, "Ответственный", НазначениеТипаXML.Явное);
            ЗаписатьXML(ЗаписьXML, СтрокаТЧ.СостояниеУровня, "СостояниеУровня", НазначениеТипаXML.Явное);
            ЗаписатьXML(ЗаписьXML, СтрокаТЧ.Комментарий, "Комментарий", НазначениеТипаXML.Явное);
            ЗаписатьXML(ЗаписьXML, СтрокаТЧ.Исполнитель, "Исполнитель", НазначениеТипаXML.Явное);
            ЗаписатьXML(ЗаписьXML, СтрокаТЧ.ДатаВыполнения, "ДатаВыполнения", НазначениеТипаXML.Явное);
            ЗаписьXML.ЗаписатьКонецЭлемента();
        КонецЦикла;    
    КонецЕсли;
    // Записываем конец элемента.

    ЗаписьXML.ЗаписатьКонецЭлемента();


ЗаписьXML.Закрыть();
 
 
   Вафель
 
1 - 16.02.18 - 18:00
у xml может быть только 1 корневой элемент
   skupidom
 
2 - 16.02.18 - 18:01
т.е ЗаписьXML.ЗаписатьНачалоЭлемента("DocumentObject.ПоступлениеТоваровУслуг.Вручную"); пишется всего 1 раз, правильно?
   Cyberhawk
 
3 - 16.02.18 - 18:12
Нет
   skupidom
 
4 - 16.02.18 - 18:18
тогда, прошу пояснить,что имеется в виду
   Вафель
 
5 - 16.02.18 - 18:21
ЗаписьXML.ЗаписатьНачалоЭлемента("Корень");
ЗаписьXML.ЗаписатьНачалоЭлемента("DocumentObject.ПоступлениеТоваровУслуг.Вручную");
.....
ЗаписьXML.ЗаписатьНачалоЭлемента("DocumentObject.ПоступлениеТоваровУслуг.Вручную");
....

   Cyberhawk
 
6 - 16.02.18 - 19:22
(4) Показывай код, начиная с созднания ЗаписиХМЛ

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует