@oldzas

Как удалить значение свойства типа файл в Битриксе?

Как удалить значение свойства типа файл в Битриксе?
Сделал такую попытку, но она не работает. Что не так?

CIBlockElement::SetPropertyValues($arFields["ID"], $arFields["IBLOCK_ID"], array( $arFields['PROPERTY_PHOTO_VALUE'][0] => array('del' => 'Y')), "PHOTO");
  • Вопрос задан
  • 1483 просмотра
Пригласить эксперта
Ответы на вопрос 2
@Ogureccc
Возможно тебе сюда
https://dev.1c-bitrix.ru/api_help/iblock/classes/c...

Как раз по твоему вопросу там есть инфа
"Если изменяется свойство типа файл, то необходимо сформировать массив..."
Ответ написан
Вот рабочий вариант:
Удаление первых изображений в множественном свойстве типа файл. Код свойства MORE_IMAGES.

$dbElements = \CIBlockElement::GetList(
	[],
	[
		"ACTIVE" => "Y",
		"IBLOCK_ID" => IBLOCK_ID,
	],
	false,
	false,
	[
		'IBLOCK_ID',
		'ID',
		'PROPERTY_MORE_IMAGES',
	]
);

while($obFields = $dbElements->GetNext())
{
	$arFiles = [$obFields['PROPERTY_MORE_IMAGES_VALUE'][0]];
	$aElementID = $obFields['ID'];
	foreach ($obFields['PROPERTY_MORE_IMAGES_VALUE'] as $iKeyValue => $sValue) {
		if (in_array($sValue, $arFiles) && $obFields['PROPERTY_MORE_IMAGES_PROPERTY_VALUE_ID'][$iKeyValue] > 0) {
			$arDeleteList["MORE_IMAGES"][$obFields['PROPERTY_MORE_IMAGES_PROPERTY_VALUE_ID'][$iKeyValue]] = [
				'VALUE' => [
					'del' => 'Y',
				]
			];
		}
	}

	if (!empty($arDeleteList)) {
		foreach ($arDeleteList as $sPropForDelete => $arDeleteFiles) {
			CIBlockElement::SetPropertyValueCode(
				$aElementID,
				$sPropForDelete,
				$arDeleteFiles
			);
		}
	}

}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы