Доведение до ума выгрузки в Мобильную Кассу из Розницы 2.3

Ранее я уже писал, что не смог доделать задачу по выгрузке из Розницы в МК, потому что не было возможности отладить обмен.

В итоге был настроен обмен из Розницы в Мобильную кассу через файлы и я смог получить доступ к отладке.

Конвертация структуры ДанныеXDTO в ОбъектXDTO происходит в процедуре МенеджерОбменаЧерезУниверсальныйФормат.ОбъектXDTOИзДанныхXDTO.

Заказ имеет тип XDTO:
— Имя: Документ.ЗаказКлиента
— URIПространстваИмен: http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.8

Посмотрим XDTO-пакет в конфигурации:

Как видим, для документа «ЗаказКлиента» здесь нет поля СтатусЗаказа:

Попробуем прямо в файле поменять значение свойства XDTO, добавим <СтатусЗаказа>Согласован</СтатусЗаказа>:

И вот тут я увидел, что несмотря на то, что наличие поля СтатусЗаказа не соответствует схеме, статус заказа присутствует после разбора схемы (контроль не четкий):

Но одновременно с этим я заметил свою ошибку — статус заказа должен быть в дополнительных реквизитах:

А это поле как раз есть в объекте XDTO, т.е. можно не менять схему:

Так что достаточно просто указать дополнительные реквизиты, ну заодно и контактную информацию.

Тестовый код выглядит так:

&Вместо("ПКО_Документ_ЗаказПокупателя_Отправка_ПриОтправкеДанных")
Процедура дор_ПКО_Документ_ЗаказПокупателя_Отправка_ПриОтправкеДанных(ДанныеИБ, ДанныеXDTO, КомпонентыОбмена, СтекВыгрузки)
	
	//Вызываем старый обработчик
	ПродолжитьВызов(ДанныеИБ, ДанныеXDTO, КомпонентыОбмена, СтекВыгрузки);
	
	//Вставляем комментарий
	ДанныеXDTO.Вставить("Комментарий", ДанныеИБ.Комментарий);
	ЗаписьЖурналаРегистрации("Отладка.Обмен", ,,,"Объект" + ДанныеИБ.Ссылка + " Комментарий: " + ДанныеИБ.Комментарий);
	
	
	//Определяем дополнительные значения для выгрузки
		
	СтатусЗаказа = "Согласован";
	ЗаписьЖурналаРегистрации("Отладка.Обмен", ,,,"Объект" + ДанныеИБ.Ссылка + " Статус: " + СтатусЗаказа);
	Телефон = "+79090001122";
	АдресЭлектроннойПочты = "test@mail.ru";	
	
	//Дополнительные реквизиты    
	
	ДопРеквизиты = Новый ТаблицаЗначений;
	ДопРеквизиты.Колонки.Добавить("Свойство");
	ДопРеквизиты.Колонки.Добавить("ЗначениеСвойства");

	СтрокаДопРеквизита = ДопРеквизиты.Добавить();
	СтрокаДопРеквизита.Свойство = Новый Структура("Наименование", "СтатусЗаказа");
	СтрокаДопРеквизита.ЗначениеСвойства = СтатусЗаказа;
	
	ДанныеXDTO.Вставить("ДополнительныеРеквизиты", ДопРеквизиты);
	
	//Дополнительная информация
	
	ДополнительнаяИнформация = Новый Структура;
	
	ДополнительнаяИнформация.Вставить("Телефон", Телефон);
	ДополнительнаяИнформация.Вставить("АдресЭлектроннойПочты", АдресЭлектроннойПочты);
	
	ДанныеXDTO.Вставить("AdditionalInfo", ДополнительнаяИнформация);

	
КонецПроцедуры

В XML-файле обмена тоже попадает корректно:

Статус при загрузке прогружается, но телефон и адрес почты нет. Оказывается, 1С ожидает дополнительную информацию как запакованную в JSON структуру:

Поэтому с дополнительной информацией пробуем другой код:


	//Дополнительная информация
	
	ДополнительнаяИнформация = Новый Структура;
	
	ДополнительнаяИнформация.Вставить("Телефон", Телефон);
	ДополнительнаяИнформация.Вставить("АдресЭлектроннойПочты", АдресЭлектроннойПочты);
	
	ДанныеXDTO.Вставить("AdditionalInfo", дор_ЗначениеВJSON(ДополнительнаяИнформация));


Функция дор_ЗначениеВJSON(Данные, ПараметрыЗаписи = Неопределено) Экспорт
	
	ЗаписьJSON = Новый ЗаписьJSON;
	ЗаписьJSON.УстановитьСтроку(ПараметрыЗаписи);
	ЗаписатьJSON(ЗаписьJSON, Данные);
	Результат = ЗаписьJSON.Закрыть();
	
	Возврат Результат;
	
КонецФункции

Функцию выгрузки в JSON пришлось скопировать из другого модуля, универсальной нет.

В файле обмена данные выглядят так:

Загрузка проходит успешно. Как видно, в заказе теперь корректно прогружаются статус, телефон и e-mail:

Осталось только прогружать корректный статус, e-mail и телефон.

Вот что значит, когда у программиста есть доступ к отладчику!

Продолжение, как говорится, следует…

Среда: Мобильная касса (для разработчиков) 3.14.7.0, Розница 2.3.10.61
Объем: 2 час.

fixin

Программирую на 1С с 1999 года. В 1С просто Гений. В 2020 году ушел из офиса на вольные хлеба фриланса. Принимаю заказы.

Читайте также:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *