Ошибка заполнения xml

1. user5300 1014 18.03.21 13:58 Сейчас в теме
Добрый день, друзья! Нужна ваша помощь. Заполняю xml документ по xsd схеме, с помощью XDTO пакета (Для загрузки в СУЗ, Честный знак).
Пишет что не правильно заполнено (На сайте Честный знак при загрузке)...
Подскажите пожалуйста что я делаю не правильно:


	ПакетЗаказКодовСУЗ = ФабрикаXDTO.Пакеты.Получить("urn:oms.order"); 
	СвойствоOrder 		= ПакетЗаказКодовСУЗ.КорневыеСвойства.Получить("order"); 
	ГлавныйПакетXDTO 	= ФабрикаXDTO.Создать(СвойствоOrder.Тип);
	
	///Дополнительно. Получаем Список значений "cisType"
	КоллекцияПеречисленийCIS = ПакетЗаказКодовСУЗ.Получить("cisType").Фасеты;
		
	ФБТИП =  ФабрикаXDTO.Тип("urn:oms.order","OrderMilkType");
	ТоварМолокоXDTO = ФабрикаXDTO.Создать(ФБТИП);

	ТоварМолокоXDTO.contactPerson = "string";
	ТоварМолокоXDTO.createMethodType = "SELF_MADE";
	ТоварМолокоXDTO.productGroupe = "milk";
	ТоварМолокоXDTO.productionOrderId = "string";
	ТоварМолокоXDTO.releaseMethodType = "PRODUCTION";
	

	ПродуктыXDTO = ФабрикаXDTO.Тип("urn:oms.order","OrderMilkType").Свойства.Получить("products").Тип;
	XDTOПродукт = ПродуктыXDTO.Свойства.Получить("product").Тип;
	
	products = ФабрикаXDTO.Создать(ПродуктыXDTO);
	
	/// Заполняем список
    СписокКодовXDTO = ФабрикаXDTO.Создать(XDTOПродукт);          	
	
	СписокКодовXDTO.cisType = "UNIT"; 							///  Единичный товар
	СписокКодовXDTO.gtin = "04607088111111";   					///  Штрих код номенклатуры 14 цифр
	СписокКодовXDTO.quantity = 100 ;        					///  Количество КМ
	СписокКодовXDTO.expDate = Формат(ТекущаяДата(),"ДФ=ддММгг");  	///Дата срока годности более 72 часа   (YYMMDD)
	//СписокКодовXDTO.expDate72 = Формат();  						///Дата срока годности менее 72 часа  (YYMMDDHHMM)
	СписокКодовXDTO.serialNumberType = "OPERATOR";              /// Способ формирования кода маркировки (Оператор)
	//СписокКодовXDTO.serialNumbers = Список значений xdto;   	/// Ручное формирование кодов маркировка. У нас формирует "Оператор"
	СписокКодовXDTO.stickerId = "";   							/// Идентификатор этикетки - не обязателен	
	СписокКодовXDTO.templateId = 20;  							/// Идентификатор шаблона КМ. (У молоч. продукции = 20)
	
	products.product.Добавить(СписокКодовXDTO);
	

	ТоварМолокоXDTO.products = products;
	ГлавныйПакетXDTO.milk = ТоварМолокоXDTO;

	 	
	Запись = Новый ЗаписьXML;
	Запись.ОткрытьФайл("c:\test.xml");
	Запись.ЗаписатьОбъявлениеXML();
	ФабрикаXDTO.ЗаписатьXML(Запись, ГлавныйПакетXDTO,"order");
	Запись.Закрыть();

Показать


В Файле xsd схема и пример из Честного знака. и мой файл
Прикрепленные файлы:
order-v5.0.xsd
заказ_кодов_маркировки.xml
test.xml
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
16. bmk74 234 18.03.21 16:25 Сейчас в теме +1 $m
(9)Могу предположить что теги стоят не в том порядке, в котором они прописаны в схеме..
Элемент sequence определяет, что дочерние элементы должны появляться в последовательности. Каждый дочерний элемент может использоваться от 0 до бесконечного числа раз.

В схеме это присутствует, заполняйте фабрику так как указано в схеме, ну или в примере..
Лень было лезть схему смотреть сразу
18. ptolomei 18.03.21 16:34 Сейчас в теме +1 $m
(15)не, нашел, не косяк, это базовый тип...
а вот про порядок следования верно подмечено. OrderProduct в схеме упорядоченный
"Упорядоченный – признак того, является ли порядок следования элементов, представляющих значения свойств, строго соответствующим порядку следования свойств в типе объекта XDTO. Если задана модель контента xsd:all, то порядок следования элементов XML может быть произвольным. При этом допустимым является порядок, соответствующий порядку следования свойств в типе. То есть если свойство Упорядоченный имеет значение Ложь, то на входе порядок следования элементов XML не контролируется, а на выходе определяется порядком следования свойств, если только признак Последовательный не имеет значение Истина." (С)
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. bmk74 234 18.03.21 14:14 Сейчас в теме
Ругается то на какое поле...или просто ошибку дает?
3. user5300 1014 18.03.21 14:18 Сейчас в теме
(2) Ругается что XML не соответствует формату ...
Прикрепленные файлы:
4. bmk74 234 18.03.21 14:32 Сейчас в теме
(3)
Запись.ЗаписатьОбъявлениеXML();

Вот это не нужно, фабрика сама все запишет, а так видать он у вас обьявление 2 раза пытается записать
5. user5300 1014 18.03.21 14:34 Сейчас в теме
(4) Нее, после записи появляется версия и кодировка:
 <?xml version="1.0" encoding="utf-8"?>

Без этого, эта строчка отсутствует.
Но я пробовал и без этой записи - не получается всё равно
6. bmk74 234 18.03.21 14:37 Сейчас в теме
(3)
А так у вас не в 1С проблема то ...
т.е. файл он записывает у вас, а уже на стороне Честного знака отбой идет ??
Сложно догадаться. я думал у вас при записи файла ошибку выдает

Я так понял первый файл как должно быть, второй это ваш ?

тогда ошибка вот в этом

xsi:schemaLocation="urn:oms.order schema.xsd
">
В вашем файле этого нету...
7. user5300 1014 18.03.21 14:42 Сейчас в теме
(6) А как правильно записать это? вроде всё согласно xsd схеме записывается
8. bmk74 234 18.03.21 15:04 Сейчас в теме
Фабрика то дописывает в заголовок
<order xmlns="urn:oms.order"

Но там помимо этого должно быть еще
xsi:schemaLocation="urn:oms.order schema.xsd"

т.е как я понял это где искать эту схему..как в Фабрике это добавить..не знаю, можно потом после формирования файла это добавить..прочитать как текст и добавить через стрЗаменить...
9. user5300 1014 18.03.21 15:18 Сейчас в теме
(8) Прописал эти строки вручную - всё равно не грузит
10. ptolomei 18.03.21 15:32 Сейчас в теме
(9) <stickerId></stickerId> в примере, <stickerId/> - у тебя. попробуй еще это изменить
11. user5300 1014 18.03.21 15:35 Сейчас в теме
(10) Убрал , ничего не поменялось
12. ptolomei 18.03.21 15:38 Сейчас в теме
(11)а еще в их xml нет xmlns:xs="http://www.w3.org/2001/XMLSchema"
а если не поможет, то скопируй текст их XML в свой файл и попробуй его валидировать.

ЗЫ Возможно еще надо пошаманить с BOM в твоем файле, посмотри тут
13. user5300 1014 18.03.21 15:47 Сейчас в теме
(12)
Там файл пример - нам не подходит (Там штрих коды вручную внесены, у нас оператор формирует)
Файл- пример загружает но пишет что другая специфика , если мои данные подогнать - тоже самое пишет
14. ptolomei 18.03.21 16:08 Сейчас в теме
(13)а мне вот не соывсем понятно, почему в схеме свойство Milk имеет тип OrderMilkType, которы в свою очередь имеет свойство product типа OrderProductMilk, а в твоем файле тип свойства product - OrderProduct. это нормально?
15. user5300 1014 18.03.21 16:25 Сейчас в теме
(14) Точно, косяк )
Но проблема не в этом...

В общем написал тех-поддержке, посмотрим что скажут "Специалисты"
18. ptolomei 18.03.21 16:34 Сейчас в теме +1 $m
(15)не, нашел, не косяк, это базовый тип...
а вот про порядок следования верно подмечено. OrderProduct в схеме упорядоченный
"Упорядоченный – признак того, является ли порядок следования элементов, представляющих значения свойств, строго соответствующим порядку следования свойств в типе объекта XDTO. Если задана модель контента xsd:all, то порядок следования элементов XML может быть произвольным. При этом допустимым является порядок, соответствующий порядку следования свойств в типе. То есть если свойство Упорядоченный имеет значение Ложь, то на входе порядок следования элементов XML не контролируется, а на выходе определяется порядком следования свойств, если только признак Последовательный не имеет значение Истина." (С)
19. user5300 1014 18.03.21 16:36 Сейчас в теме
(16)
(18) Да, вы были правы! Всё получилось, Благодарю!
16. bmk74 234 18.03.21 16:25 Сейчас в теме +1 $m
(9)Могу предположить что теги стоят не в том порядке, в котором они прописаны в схеме..
Элемент sequence определяет, что дочерние элементы должны появляться в последовательности. Каждый дочерний элемент может использоваться от 0 до бесконечного числа раз.

В схеме это присутствует, заполняйте фабрику так как указано в схеме, ну или в примере..
Лень было лезть схему смотреть сразу
17. user5300 1014 18.03.21 16:26 Сейчас в теме
Оставьте свое сообщение

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