Исследование связки Розница 2.3 + Мобильная касса
У клиента проблема — из розницы не приходит в мобильную кассу по заказам статусы, телефоны. Только адреса проходят и товары.
Установили на компьютер мобильную кассу (это обычная 1С-база на большом копьютере). Запустил в режиме отладки, но увы, он не поддерживается.
Поэтому приходится отлаживать фоновое задание, которое стартует в ОбменДаннымиУниверсальныйФормат.ВыполнитьОбмен.
Загрузка объектов происходит в модуле ОбменДаннымиУниверсальныйФормат, например, загрузка заказов в процедуре ЗагрузитьЗаказКлиента.
Если посмотреть на структуру данных в ОбъектXDTO, там некоторые поля есть, некоторых нет:
Загрузка статуса заказа имеется в коде, но отсутствует в файле обмена:
Аналогично с контактной информацией контрагента для заказа:
Комментарий подставляется напрямую, но почему-то пустой в передаваемых данных:
Ну что же, проблему можно решить. не меняя приложение «Мобильная касса», достаточно только передавать корректные данные в обмен XML.
Теперь переходим в Розницу, ищем по примечательному имени «АдресДоставки», находим правило конвертации этого свойства:
Здесь еще интересна процедура ПОД_Документ_ЗаказПокупателя_Отправка_ПриОбработке, которая собирает данные из базы (таблицы Товары, Услуги) при отправке документа. Но мы ее трогать не будем:
А вмешиваться мы будем в процедуру ПКО_Документ_ЗаказПокупателя_Отправка_ПриОтправкеДанных:
Добавим ее в расширение:
&Вместо("ПКО_Документ_ЗаказПокупателя_Отправка_ПриОтправкеДанных") Процедура дор_ПКО_Документ_ЗаказПокупателя_Отправка_ПриОтправкеДанных(ДанныеИБ, ДанныеXDTO, КомпонентыОбмена, СтекВыгрузки) //Вызываем старый обработчик ПродолжитьВызов(ДанныеИБ, ДанныеXDTO, КомпонентыОбмена, СтекВыгрузки); //Вставляем комментарий ДанныеXDTO.Вставить("Комментарий", ДанныеИБ.Комментарий); ЗаписьЖурналаРегистрации("Отладка.Обмен", ,,,"Объект" + ДанныеИБ.Ссылка + " Комментарий: " + ДанныеИБ.Комментарий); СтатусЗаказа = "Согласован"; ДанныеXDTO.Вставить("СтатусЗаказа", СтатусЗаказа); ЗаписьЖурналаРегистрации("Отладка.Обмен", ,,,"Объект" + ДанныеИБ.Ссылка + " Статус: " + СтатусЗаказа); КонецПроцедуры
В мобильной кассе поставил подключение к фоновым заданиям, чтобы посмотреть, что получится:
Видно, что комментарий проставился, он прогрузился и в заказ в мобильной кассе, а поле СтатусЗаказа даже не появилось, несмотря на то, что я его добавлял.
Ну это и понятно, я добавляю в структуру, а если в формате нет этого поля, то оно и не появится.
В журнале регистрации Розницы, кстати, есть события по обмену:
Тут без отладки выгрузки не обойтись, поэтому я настроил выгрузку из кассы в каталог:
Но увы, в файл выгружать 1С не хочет, такое не предусмотрено.
Ладно, пойдем другим путем, поищем волшебное ДатаДоставки по модулям и макетам, чтобы найти, где описывается свойство XDTO. Увы, ничего не нашли, поэтому попробуем добавить ПКО.
&Вместо("ДобавитьПКО_Документ_ЗаказПокупателя_Отправка") Процедура дор_ДобавитьПКО_Документ_ЗаказПокупателя_Отправка(ПравилаКонвертации) //Стандартные правила ПродолжитьВызов(ПравилаКонвертации); //смотреть ОбменДаннымиXDTOСервер.КоллекцияПравилКонвертации ПравилоКонвертации = ПравилаКонвертации.Найти("Документ_ЗаказПокупателя_Отправка", "ИмяПКО"); СвойстваШапки = ПравилоКонвертации.Свойства; //Добавляем правила ДобавитьПКС(СвойстваШапки, "СтатусЗаказа", Неопределено); КонецПроцедуры
Но увы, это не помогло. В общем, надо разобраться, как в XDTO добавить свои поля.
Договорился с клиентом, что все же настроим обмен через каталог, тогда можно будет отладить выгрузку и посмотреть, как получить желаемое.
Продолжение следует…
Среда: Мобильная касса (для разработчиков) 3.14.7.0, Розница 2.3.10.61
Объем: 2 час.
Свежие комментарии