+7 495 008 8452
  • Загрузка
Выберите ваш цвет

Как удалить файл в свойстве элемента инфоблока?

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


Источник: http://dev.1c-bitrix.ru/community/webdev/user/11948/blog/12034/

Так как же удалить файл в св-ве элемента инфоблока

Сабж. Казалось просто. А вот и ни фига. Есть камни, о которые новичок порвет мозг. Мне стыдно, но я убил часа полтора. Резюмирую здесь, надеюсь это последний раз у всех нас.

Итак, как нам обновить вообще любое св-во в Битрикс?
1. Update
2. SetPropertyValues
3. SetPropertyValuesEx

В каждом варианте на ключ массива обновления идет код св-ва, а значение - новое значение. Для удаления файла нам надо передать вот такой простой массивчик:
array('MY_FILE' => array('XXX' => array('del' => 'Y')));

Да, вот такой геморрой. Он универсален, что для ИБ, что для ИБ+, что для документооборота. MY_FILE - это код вашего св-ва типа файл. А что такое ХХХ? Настоящая порнография. Там содержится _ID_ _значения_ св-ва. То есть не ID св-ва, а именно ID значения. И магия еще в том, что в случае ИБ+ у нас нет такого понятия, а ID значения формируется как ID_элемента:ID_свва. Но вам это знать необязательно, лучше получить универсально.
CModule::IncludeModule('iblock');
$IB = 24;
$ID = 220304;
$CODE = 'ONE_FL';
if ($arProp = CIBlockElement::GetProperty($IB, $ID, 'ID', 'DESC', array('CODE' => $CODE))->fetch()) {
   $XXX = $arProp['PROPERTY_VALUE_ID'];
   CIBlockElement::SetPropertyValueCode($ID, $CODE, array($XXX => array('del' => 'Y')));
}

Вот таким образом получается этот универсальный XXX, именно так его и надо передавать для каждого файла, который мы хотим удалить.

Что делать в случае множественного файла? Как удалить конкретный файл в списке? Все просто - используем в примере выше не if, а while, ну и дополнительно фильтруем, какой файл надо удалить.





Назад в раздел

Подписаться на новые материалы раздела:
Загрузка...