Пишу эту заметку, чтобы не искать потом на форуме.
Допустим, в инфоблоке ($IBID) есть пользовательское свойство PHOTO. Нам неоходимо очистить значение этого свойства для элемента $id.
Сперва необходимо сделать запрос для получения дополнительных сведений о значении:
$bx_photo = CIBlockElement::GetProperty(
$IBID,
$id,
'sort',
'asc',
array('CODE' => 'PHOTO')
);
$ar_photo = $bx_photo->Fetch();
|
После этого запроса мы получим в массив $ar_photo следующей структуры:
Array
(
[ID]
[TIMESTAMP_X]
[IBLOCK_ID]
[NAME]
[ACTIVE]
[SORT]
[CODE]
[DEFAULT_VALUE]
[PROPERTY_TYPE]
[ROW_COUNT]
[COL_COUNT]
[LIST_TYPE]
[MULTIPLE]
[XML_ID]
[FILE_TYPE]
[MULTIPLE_CNT]
[TMP_ID]
[LINK_IBLOCK_ID]
[SEARCHABLE]
[FILTRABLE]
[WITH_DESCRIPTION]
[VERSION]
[USER_TYPE]
[IS_REQUIRED]
[PROPERTY_VALUE_ID]
[VALUE]
[DESCRIPTION]
[VALUE_ENUM]
[VALUE_XML_ID]
)
|
PROPERTY_VALUE_ID - это идентификатор конкретного значения свойства, VALUE - само значение свойства
После этого весьма экзотическим образом устанавливается свойство array('del' => 'Y', 'tmp_name' => '')
CIBlockElement::SetPropertyValueCode($_POST['id'], 'PHOTO', array(
$ar_photo['PROPERTY_VALUE_ID'] => array('del' => 'Y', 'tmp_name' => '')
));
|
А затем удаляется файл из файлохранилища.
CFile::Delete($ar_photo['VALUE']);
|