Для обновления всех изображений на сайте Bitrix при синхронизации с 1С можно использовать следующий подход:
1. Создать обработчик события после синхронизации с 1С. Для этого необходимо создать файл-обработчик событий в папке /bitrix/php_interface/init.php вашего проекта. Например, /bitrix/php_interface/init.php.
<?php AddEventHandler("iblock", "OnAfterIBlockElementUpdate", "UpdateImages"); function UpdateImages($arFields) { // Проверяем, что это обновление элемента каталога if ($arFields["IBLOCK_ID"] == YOUR_CATALOG_IBLOCK_ID) { // Получаем ID элемента $elementId = $arFields["ID"]; // Получаем детали элемента $arElement = CIBlockElement::GetByID($elementId)->GetNext(); // Получаем список всех свойств элемента $props = CIBlockElement::GetProperty( $arElement["IBLOCK_ID"], $arElement["ID"], array(), array() ); // Ищем свойства типа "файл" while ($arProp = $props->Fetch()) { if ($arProp["PROPERTY_TYPE"] == "F") { // Получаем список всех файлов $files = array(); $fileIds = explode(",", $arProp["VALUE"]); foreach ($fileIds as $fileId) { $arFile = CFile::GetFileArray($fileId); if ($arFile) { $files[] = $arFile; } } // Обновляем файлы foreach ($files as $arFile) { $newFile = $arFile; $newFile["MODULE_ID"] = "iblock"; CFile::UpdateDescription($arFile["ID"], $newFile); } } } } } ?>
2. Вместо YOUR_CATALOG_IBLOCK_ID вы должны указать ID информационного блока, в котором хранятся элементы вашего каталога. Это можно узнать в административной панели Bitrix, открывая соответствующий инфоблок.
3. Данный обработчик события будет выполняться после каждого обновления элемента каталога. Он получает все свойства элемента и проверяет, есть ли среди них свойства типа "файл".
4. Если найдено свойство типа "файл", обработчик получает список файлов и обновляет их. Обновление происходит путем вызова функции CFile::UpdateDescription(), которая обновляет описание файла, а именно, timestamp. Это приводит к изменению URL изображения, что заставляет браузеры загружать его заново.
5. Не забудьте сохранить созданный вами обработчик событий после изменений.
В результате всех этих действий все изображения на вашем сайте Bitrix будут обновлены при каждом обновлении элемента каталога при синхронизации с 1С.