Выгрузка документов в xml

1. user1200515 11.06.19 15:16 Сейчас в теме
Пытаюсь выгрузить документы Приходной накладной, не сильна в этом, прописывала структуру в процедуре записиXML, но выгружает документы не по очереди, а сначала все номера, даты и тд. Создала фабрикуXDTO, прописала код
ЗаписьXML = Новый ЗаписьXML;
    ЗаписьXML.ОткрытьФайл("D:\126.xml","UTF-8");
	Документы = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://www.sample-package.org" ,"Документы"));
	ЗаписьXML.ЗаписатьОбъявлениеXML(); 

Выборка=Документы.ПриходнаяНакладная.Выбрать();
Пока Выборка.Следующий() Цикл
	 Документ = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип( "http://www.sample-package.org","Документ"));
  Документ.Номер= Выборка.Номер;
   Документ.Дата=Выборка.Дата;
    Документ.СуммаПоДокументу=Выборка.СуммаПоДокументу;
    //ЗаписатьXML(ЗаписьXML,Выборка.ПолучитьОбъект(), НазначениеТипаXML.Явное)
КонецЦикла; 

Выборка=Документы.ПриходнаяНакладная.Выбрать();
Пока Выборка.Следующий() Цикл
	 Для каждого стр из Выборка.СписокНоменклатуры цикл
    СписокНоменклатуры = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://www.sample-package.org","СписокНоменклатуры"));
 СписокНоменклатуры.Код=  стр.Номенклатура.Код;
СписокНоменклатуры.Номенклатура= стр.Номенклатура;
 СписокНоменклатуры.Количество=  стр.Количество;
  СписокНоменклатуры.Цена =стр.Цена;
   СписокНоменклатуры.Сумма=стр.Сумма;

КонецЦикла;
КонецЦикла;


	ФабрикаXDTO.ЗаписатьXML(ЗаписьXML, Документы);
	ЗаписьXML.Закрыть();
Показать

Выдает ошибку -Поле объекта недоступно для записи (Документы)
Документы = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://www.sample-package.org" ,"Документы"));
Как исправить не знаю
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user5300 1010 11.06.19 15:26 Сейчас в теме
(1)
ФабрикаXDTO.ЗаписатьXML(ЗаписьXML, Документы);

Тут опечатка, исправь "Документы" на "Документ"

Хотя нет, все правильно, Измените "Документы" на "мДокументы" в коде и попробуйте
3. user1200515 11.06.19 15:29 Сейчас в теме
(2)В структуре есть и документы и документ
4. user5300 1010 11.06.19 15:30 Сейчас в теме
(3)Документы- наименование метаданных , замените на другую переменную, например на мДокументы
5. user1200515 11.06.19 15:36 Сейчас в теме
(4) Спасибо, я бы и не догадалась что из за этого
Правда теперь другая ошибка...
Ошибка при установке значения атрибута контекста (Номенклатура)
СписокНоменклатуры.Номенклатура= стр.Номенклатура;
по причине:
Ошибка отображения типов:
Отображение типа 'СправочникСсылка.Номенклатура' в тип '{http://www.w3.org/2001/XMLSchema}anySimpleType'
6. user1200515 11.06.19 15:41 Сейчас в теме
(5)Возможно в этом коде что то поменять\добавить, чтобы документы записывались по очереди?

ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.ОткрытьФайл("D:\126.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.Закрыть();
8. user5300 1010 11.06.19 15:44 Сейчас в теме
(6) А чем вам стандартная обработка выгрузки не нравиться ?) https://its.1c.ru/db/metod8dev/content/4126/hdoc
9. user5300 1010 11.06.19 15:45 Сейчас в теме
(6)Там же можно выгрузить все что вам надо, + с условиями)
10. user1200515 11.06.19 15:49 Сейчас в теме
(9)Мне нужно свою разработать)
11. user5300 1010 11.06.19 16:05 Сейчас в теме
(10)Пример рабочего кода, тут используются стандартные XDTO пакеты (не надо создавать свои),
Получайте документ и записываете в XML

&НаСервере
Процедура Команда1НаСервере()

		ЗаписьXML = Новый ЗаписьXML;
		ЗаписьXML.ОткрытьФайл("C:\База 1\test.XML", "UTF-8");  ////C:\База 1\test.XML - путь к вашему файлу
		
		ЗаписьXML.ЗаписатьОбъявлениеXML();
		//ЗаписьXML.ЗаписатьНачалоЭлемента("_1CV8DtUD", "http://www.1c.ru/V8/1CV8DtUD/");
		ЗаписьXML.ЗаписатьНачалоЭлемента("ВсеДокументы");

		ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("V8Exch", "http://www.1c.ru/V8/1CV8DtUD/");
		ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("xsi", "http://www.w3.org/2001/XMLSchema-instance");
		ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("core", "http://v8.1c.ru/data");
		
		ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("v8", "http://v8.1c.ru/8.1/data/enterprise/current-config");
		ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("xs", "http://www.w3.org/2001/XMLSchema");
		
		//ЗаписьXML.ЗаписатьНачалоЭлемента("V8Exch:Data");
		ЗаписьXML.ЗаписатьНачалоЭлемента("Документ");

		Сериализатор = СериализаторXDTO; 
		
		Выборка = Документы.АвансовыйОтчет.Выбрать();
		Пока Выборка.Следующий() цикл
			ОбъектТ = Выборка.Ссылка.ПолучитьОбъект();
			
			Сериализатор.ЗаписатьXML(ЗаписьXML, ОбъектТ);
		КонецЦикла;
КонецПроцедуры

&НаКлиенте
Процедура Команда1(Команда)
	Команда1НаСервере()
КонецПроцедуры
Показать
12. user1200515 11.06.19 16:22 Сейчас в теме
7. user5300 1010 11.06.19 15:42 Сейчас в теме
(5)
Судя по всему у объекта СписокНоменклатуры нет свойство "Номенклатура", Либо у объекта не правильный тип... "anySimpleType"
13. VictorRGB2 13 11.06.19 17:46 Сейчас в теме
(5) по скрину - у СписокНоменклатуры собственно нет Номенклатура
потому и ругается...
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот