Исследование связки Розница 2.3 + Мобильная касса

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

Установили на компьютер мобильную кассу (это обычная 1С-база на большом копьютере). Запустил в режиме отладки, но увы, он не поддерживается.

Поэтому приходится отлаживать фоновое задание, которое стартует в ОбменДаннымиУниверсальныйФормат.ВыполнитьОбмен.

Загрузка объектов происходит в модуле ОбменДаннымиУниверсальныйФормат, например, загрузка заказов в процедуре ЗагрузитьЗаказКлиента.

Если посмотреть на структуру данных в ОбъектXDTO, там некоторые поля есть, некоторых нет:

Загрузка статуса заказа имеется в коде, но отсутствует в файле обмена:

Аналогично с контактной информацией контрагента для заказа:

Комментарий подставляется напрямую, но почему-то пустой в передаваемых данных:

Ну что же, проблему можно решить. не меняя приложение «Мобильная касса», достаточно только передавать корректные данные в обмен XML.

Теперь переходим в Розницу, ищем по примечательному имени «АдресДоставки», находим правило конвертации этого свойства:

Здесь еще интересна процедура ПОД_Документ_ЗаказПокупателя_Отправка_ПриОбработке, которая собирает данные из базы (таблицы Товары, Услуги) при отправке документа. Но мы ее трогать не будем:

А вмешиваться мы будем в процедуру ПКО_Документ_ЗаказПокупателя_Отправка_ПриОтправкеДанных:

Добавим ее в расширение:

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

В мобильной кассе поставил подключение к фоновым заданиям, чтобы посмотреть, что получится:

Видно, что комментарий проставился, он прогрузился и в заказ в мобильной кассе, а поле СтатусЗаказа даже не появилось, несмотря на то, что я его добавлял.

Ну это и понятно, я добавляю в структуру, а если в формате нет этого поля, то оно и не появится.

В журнале регистрации Розницы, кстати, есть события по обмену:

Тут без отладки выгрузки не обойтись, поэтому я настроил выгрузку из кассы в каталог:

Но увы, в файл выгружать 1С не хочет, такое не предусмотрено.

Ладно, пойдем другим путем, поищем волшебное ДатаДоставки по модулям и макетам, чтобы найти, где описывается свойство XDTO. Увы, ничего не нашли, поэтому попробуем добавить ПКО.

&Вместо("ДобавитьПКО_Документ_ЗаказПокупателя_Отправка")
Процедура дор_ДобавитьПКО_Документ_ЗаказПокупателя_Отправка(ПравилаКонвертации)
	
	//Стандартные правила
	ПродолжитьВызов(ПравилаКонвертации);
	
	//смотреть ОбменДаннымиXDTOСервер.КоллекцияПравилКонвертации
	ПравилоКонвертации = ПравилаКонвертации.Найти("Документ_ЗаказПокупателя_Отправка", "ИмяПКО");
	СвойстваШапки = ПравилоКонвертации.Свойства;
	
	//Добавляем правила
	ДобавитьПКС(СвойстваШапки, "СтатусЗаказа", Неопределено);

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

Но увы, это не помогло. В общем, надо разобраться, как в XDTO добавить свои поля.

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

Продолжение следует…

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

fixin

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

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

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

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