Обходим условие пропуска выгрузки заказов. Розница 2.3
Клиент обратился со странной проблемой — он меняет статус заказа, а статус заказа на сайте не обновляется.
Сначала я подумал, что заказ не регистрируется в плане обмена, т.к. статус хранится в регистре и сделал регистрацию. Но не помогло — статус стал передаваться, но только через один обмен. Причем не всегда. Иногда сразу.
Анализ показал, что проблема связана с тем, что если заказ в одной сессии обмена загрузился, то выгружаться в этой же сессии не будет:
Зачем так сделано, непонятно, но клиент захотел изменить это поведение.
Я уже неоднократно применял методику, где вместо того, чтобы менять текст процедуры (пусть даже с контролем), меняем входящие данные и тогда можно оставить код процедуры, как он есть.
Здесь тоже применима эта методика. Нужно только удалить те заказы, которые система игнорирует из массива Загружено.
Расширяем модуль ОбменССайтом:
&Вместо("СформироватьЗаказыXDTO") Процедура дор_СформироватьЗаказыXDTO(Параметры, ТаблицаДанныеЗаказов, КоммерческаяИнформацияXDTO) СтруктураСтатистики = Параметры.СтруктураСтатистики; //Временно удаляем заказы из статистики загруженных, потом восстановим //Чтобы не срабатывал код, который отбрасывает загруженные заказы в выгрузку СтарыйМассивЗагружено = СтруктураСтатистики.Загружено; //Удаляем те строки загруженных заказов, что есть в выгрузке НовыйМассивЗагружено = Новый Массив(); Для Каждого Заказ ИЗ СтарыйМассивЗагружено Цикл Если ТаблицаДанныеЗаказов.Найти(Заказ) = Неопределено Тогда НовыйМассивЗагружено.Добавить(Заказ); КонецЕсли; КонецЦикла; //Устанавливаем новый массив СтруктураСтатистики.Загружено = НовыйМассивЗагружено; ПродолжитьВызов(Параметры, ТаблицаДанныеЗаказов, КоммерческаяИнформацияXDTO); //Восстанавливаем статистику выгруженных СтруктураСтатистики.Загружено = СтарыйМассивЗагружено; КонецПроцедуры
В итоге как вы видите, файл загрузки export и выгрузки oders заполнены, изначально файл выгрузки был пустым (обмен одним заказом):
Среда: 2.3.11.33. Объем: 1 час.
Свежие комментарии