1. user1200515 11.06.19 15:16 Сейчас в теме

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

Пытаюсь выгрузить документы Приходной накладной, не сильна в этом, прописывала структуру в процедуре записи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 35 11.06.19 15:26 Сейчас в теме
(1)
ФабрикаXDTO.ЗаписатьXML(ЗаписьXML, Документы);

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

Хотя нет, все правильно, Измените "Документы" на "мДокументы" в коде и попробуйте
3. user1200515 11.06.19 15:29 Сейчас в теме
(2)В структуре есть и документы и документ
4. user5300 35 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 35 11.06.19 15:44 Сейчас в теме
(6) А чем вам стандартная обработка выгрузки не нравиться ?) https://its.1c.ru/db/metod8dev/content/4126/hdoc
9. user5300 35 11.06.19 15:45 Сейчас в теме
(6)Там же можно выгрузить все что вам надо, + с условиями)
10. user1200515 11.06.19 15:49 Сейчас в теме
(9)Мне нужно свою разработать)
11. user5300 35 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 35 11.06.19 15:42 Сейчас в теме
(5)
Судя по всему у объекта СписокНоменклатуры нет свойство "Номенклатура", Либо у объекта не правильный тип... "anySimpleType"
13. VictorRGB2 10 11.06.19 17:46 Сейчас в теме
(5) по скрину - у СписокНоменклатуры собственно нет Номенклатура
потому и ругается...
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Бобров
зарплата от 100 000 руб. до 150 000 руб.
Временный (на проект)

Студент (стажер) 1С
Нижний Новгород
зарплата от 25 000 руб.
Полный день

Программист 1С
Санкт-Петербург
зарплата от 120 000 руб.
Полный день

Программист 1С
Нижний Новгород
зарплата до 100 000 руб.
Полный день

Программист 1С
Новосибирск
зарплата от 80 000 руб.
Полный день