Полная выгрузка на сайт Bitrix 3 раза в неделю

Клиент захотел, чтобы полная выгрузка товаров из УТ на сайт Bitrix происходила 3 раза в неделю, чтобы подчищать товары, которые больше не выгружаются на сайт.

Проблема была в том, что расписание было настроено на частичный обмен. А использовать две настройки не получится — т.к. каждая настройка использует свой каталог товаров. А свойство «Выгружать изменения» почему-то задается у плана обмена.

Решено было доработать модуль выгрузки, в итоге получилось такое расширение:

&Вместо("ДобавитьНастройкиОбменаВПараметры")
Функция дор_ДобавитьНастройкиОбменаВПараметры(УзелОбмена, Параметры, ПринудительнаяПолноеОбновлениеДанныхТовара)
    
    //Осипов 2021-11-21 добавлена полная выгрзка
    УстановитьПривилегированныйРежим(истина);
    
    дор_ПоследняяПолнаяВыгрузкаНаСайт = Константы.дор_ПоследняяПолнаяВыгрузкаНаСайт.Получить();
    ЭтоПолнаяВыгрузка = ложь;
    Если НачалоДня(дор_ПоследняяПолнаяВыгрузкаНаСайт) <> НачалоДня(ТекущаяДата()) Тогда
        ДеньНедели = ДеньНедели(ТекущаяДата());
        Если ДеньНедели = 1 ИЛИ ДеньНедели = 3 ИЛИ ДеньНедели = 5 Тогда
            ПринудительнаяПолноеОбновлениеДанныхТовара = истина;
            ЭтоПолнаяВыгрузка = истина;
            //Корректируем для полной выгрузки
            Параметры.Вставить("ВыгружатьТолькоИзменения", ложь);
            Константы.дор_ПоследняяПолнаяВыгрузкаНаСайт.Установить(ТекущаяДата()); //Запоминаем время выгрузки
        КонецЕсли;
    КонецЕсли;
    
    
    Результат = ПродолжитьВызов(УзелОбмена, Параметры, ПринудительнаяПолноеОбновлениеДанныхТовара);
    Если Результат <> Истина Тогда Возврат Результат; КонецЕсли; //Если были ошибки
    
    Возврат Результат;
КонецФункции

Обратите внимание, что свойство «Выгружать изменения» подменяется до получения полных настроек по первичным. Также заведена дополнительная константа для хранения времени и даты последней полной выгрузки. Если при выгрузке произойдет сбой, она будет считаться все равно успешной, но на самом деле клиенту хватает и одной гарантированной выгрузки в неделю. А падает обмен редко.

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

Начало обменов сдвинул на 5 утра, чтобы полная выгрузка успела пройти — она идет 1.5-2 часа.

По сути, в коде программно устанавливаются две галочки.

Первая — признак того, что выгружать все данные, а не только изменения (ВыгружатьТолькоИзменения = ложь):

Вторая — аналог нажатия кнопки «Выгружать все картинки» (ПринудительнаяПолноеОбновлениеДанныхТовара = истина):

Среда: УТ 11.4.13.46. Объем: 1.5 час.

fixin

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

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

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

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