1С-Битрикс – команда принудительной выгрузки картинок

Что имеем:

  • Платформа 8.3.15.1700
  • Конфигурация УТ 11.4.8.92
  • Модуль БУС 7.0.1.17
  • Битрикс 19.0.275

Есть в модуле обмена 1С-Битрикс интересная книпочка “Принудительная выгрузка картинок“, которую, по нашему некоторому опыту использования этой самой выгрузки, приходится вручную нажимать, чтобы эти самые картинки выгрузились ВСЕ.

При чем, по расписанию выполняется ПОЛНАЯ выгрузка (а не выгрузка изменений), но при определенных условиях некоторые картинки ну никак не хотят выгружаться (н-р, когда одна и та же картинка установлена у нескольких разных позиций номенклатуры).

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

Чтобы на жмякание заветной книпочки не отвлекать Царя Администратора, проще всего вынести ее куда-нибудь на более видное место и отдать ее на растерзание контентщику сайта. И, как всегда, для этого ему понадобятся 100500 прав доступа. Почему? Потому что стандартной битриксовской роли “Разрешить слив базы дан.. “Роль по работе с БУС” недостаточно для осуществления выгрузки. Например, необходимо наличие у него прав доступа на справочники, заканчивающихся на *ПрикрепленныеФайлы. И для этого, как бы это ни казалось логичным, недостаточно добавления ролей на чтение справочников, к которым и прикрепляются эти самые файлы (хотя в основном это так, НО НЕ ВЕЗДЕ). Короче, было решено использовать УстановитьПривилегированныйРежим().


Создаем в конфигурации:

1) Константу БитриксПланОбменаУмолч, где укажем используемый для выгрузки Узел/план обмена.

Тип данных: ПланОбменаСсылка.Б_ОбменССайтом

2) Общую команду ЗапускПринудитОбменаБитрикс. Добавляем ее в подсистему Битрикс.ОбменСИнтернетМагазином. В модуле команды:

 

Создаем расширение и:

1) Создаем роль БитриксЗапускПринудитОбмена, куда добавляем все созданные объекты.

 

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

1) Константу БитриксПланОбменаУмолч

2) Команду ЗапускПринудитОбменаБитрикс

3) Реализуем запуск самого обмена в привилегированном режиме. Заменяем процедуру ОбщийМодуль.Б_ОбменССайтомСервер.ВыполнитьОбменИнтерактивно():

Результат:

По хорошему, в расширение нужно вынести все. Но создание констант в расширениях  должны будут запилить в платформах 8.3.16.*, а общую команду, созданную в расширении, у меня не получилось вынести на командную панель.

 

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

Ваш адрес email не будет опубликован.