Как удалить превью, детальную картинку и галерею у элемента инфоблока
Когда нужен программный сброс медиа
Импорты каталогов, синхронизация с ERP и тихие ошибки генерации анонсов приводят к ситуации, когда у элемента инфоблока нужно просто обнулить картинки: убрать анонсовое и детальное изображение и вычистить набор файлов во множественном свойстве. Ниже — короткая схема на классическом API, которая хорошо уживается с кодом ядра D7.
Подключение модуля
Перед любой работой подключите инфоблоки вызовом загрузчика:
use Bitrix\Main\Loader;
Loader::includeModule('iblock');Превью и детальная картинка
Поля файлов элементов связаны со стандартными ключами массива. Чтобы удалить их физически и обнулить привязки, передайте вложенную конструкцию с флагом удаления без запуска истории версий документа:
$cardId = 41288;
$editor = new \CIBlockElement;
$editor->Update($cardId, [
'PREVIEW_PICTURE' => ['del' => 'Y'],
'DETAIL_PICTURE' => ['del' => 'Y'],
], false, false);Последние два аргумента false, false отключают пересборку счётчиков и полный цикл журнирования там, где он не нужен — для разовых миграций это уменьшает нагрузку.
Файловое свойство множественного типа
Снимок миниатюр для карточки или вторичное фото можно хранить в пользовательском свойстве множества файлов. Чтобы удалить уже сохранённые значения, используйте метод установки свойств без ручной выборки старых ID:
$cardId = 41288;
$catalogIbId = 12;
$filePropCode = 'BRAND_MEDIA'; // символьный код множественного свойства типа файл
\CIBlockElement::SetPropertyValuesEx(
$cardId,
$catalogIbId,
[
$filePropCode => [
'VALUE' => ['del' => 'Y'],
],
]
);Значение $filePropCode замените на реальный символьный код из настроек инфоблока. Если свойство простое и не множественное, структура массива будет проще — без вложенного 'VALUE'. После любых изменений имеет смысл пересмотреть кеш комплексных компонентов каталога, если он включён статическими или тегированными стратегиями.
Итог
Две точки входа достаточны для типовой санитизации медиаданных: CIBlockElement::Update для системных файлов анонса и детальной части и SetPropertyValuesEx для пользовательских файловых полей множества.
Не хотите копаться сами?
Починю за 1-3 дня. Без предоплаты — оплата по результату.
15+ лет опыта с 1С-Битрикс · Без предоплаты · 7 дней гарантии