Обходим условие пропуска выгрузки заказов. Розница 2.3

Клиент обратился со странной проблемой — он меняет статус заказа, а статус заказа на сайте не обновляется.

Сначала я подумал, что заказ не регистрируется в плане обмена, т.к. статус хранится в регистре и сделал регистрацию. Но не помогло — статус стал передаваться, но только через один обмен. Причем не всегда. Иногда сразу.

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

Зачем так сделано, непонятно, но клиент захотел изменить это поведение.

Я уже неоднократно применял методику, где вместо того, чтобы менять текст процедуры (пусть даже с контролем), меняем входящие данные и тогда можно оставить код процедуры, как он есть.

Здесь тоже применима эта методика. Нужно только удалить те заказы, которые система игнорирует из массива Загружено.

Расширяем модуль ОбменССайтом:

&Вместо("СформироватьЗаказыXDTO")
Процедура дор_СформироватьЗаказыXDTO(Параметры, ТаблицаДанныеЗаказов, КоммерческаяИнформацияXDTO)
	
	СтруктураСтатистики = Параметры.СтруктураСтатистики;

	//Временно удаляем заказы из статистики загруженных, потом восстановим
	//Чтобы не срабатывал код, который отбрасывает загруженные заказы в выгрузку
	СтарыйМассивЗагружено = СтруктураСтатистики.Загружено;
	
	//Удаляем те строки загруженных заказов, что есть в выгрузке
	
	НовыйМассивЗагружено = Новый Массив();
	Для Каждого Заказ ИЗ СтарыйМассивЗагружено Цикл
		Если ТаблицаДанныеЗаказов.Найти(Заказ) = Неопределено Тогда
			НовыйМассивЗагружено.Добавить(Заказ);
		КонецЕсли;
	КонецЦикла;
	
	//Устанавливаем новый массив
	СтруктураСтатистики.Загружено = НовыйМассивЗагружено;
	
	ПродолжитьВызов(Параметры, ТаблицаДанныеЗаказов, КоммерческаяИнформацияXDTO);
	
	//Восстанавливаем статистику выгруженных
	СтруктураСтатистики.Загружено = СтарыйМассивЗагружено;
	
КонецПроцедуры

В итоге как вы видите, файл загрузки export и выгрузки oders заполнены, изначально файл выгрузки был пустым (обмен одним заказом):

Среда: 2.3.11.33. Объем: 1 час.

fixin

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

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

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

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