Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

CIBlockElement::Update обновление файлов

00 голосов
4
Здравствуйте!
Столкнулся с проблемой обновления файлов в множественном свойстве через метод Update. В документации сказано, чтобы удалить файлы нужно использовать массив с параметром "del" => "Y", но хоть убей файлы не удаляются при обновлении. Кусок кода

Код
........

      $el = new CIBlockElement();
      $PROP = array();
      $arFile = CFile::MakeFileArray($_SERVER["DOCUMENT_ROOT"]. $filename);

      $PROP[1] = $place['VALUE'];
      $PROP[2] = CFile::SaveFile($arFile, "photosn");

       $arUpd = Array(
         
         "PROPERTY_VALUES"=> $PROP,
          "del"=>"Y"
  );
     $el->Update($arFields['ID'], $arUpd);


В итоге добавляется новый файл в множественное свойство, и старый файл остается на месте. Подскажите пожалуйста, где может быть ошибка? Спасибо!
спросил 16 Янв, 14 от Zlob (120 баллов)

4 Ответы

00 голосов
Господа, неужели проблема нерешаема? :oops:
ответил 04 Май, 14 от Zlob (120 баллов)
00 голосов
Примерно так:
Код
$el = new CIBlockElement();
$PROP = array();
$arFile = CFile::MakeFileArray($_SERVER["DOCUMENT_ROOT"]. $filename);

$PROP[1] = $place['VALUE'];
$PROP[2] = array(
  "n0" => $arFile
);

$rsProp2OldValues = $el->GetProperty(<PLACE IBLOCK ID HERE>, $arFields['ID'], "sort", "asc", array("ID" => 2, "EMPTY" => "N"));
while($arOldPropertyValue = $rsProp2OldValues->Fetch())
  $PROP[2][$arOldPropertyValue["PROPERTY_VALUE_ID"]] = array("VALUE" => array("del"=>"Y"), "DESCRIPTION"=>"");

$arUpd = Array(
  "PROPERTY_VALUES"=> $PROP,
);
$el->Update($arFields['ID'], $arUpd); 

PS код не тестировал. основная мысль: что бы удалить значение файлового свойства надо задать его в массиве с ключом идентификатора этого значения.
ответил 30 Авг, 14 от Miso (740 баллов)
00 голосов
спасибо, всё отлично работает!
ответил 05 Янв, 15 от Zlob (120 баллов)
00 голосов
Цитата
Станислав Харченко пишет:
спасибо, всё отлично работает!


Немного поторопился с выводами. При таком подходе с сортировкой файлов происходят странные вещи. Если ранее когда я добавлял фотографии в множественное свойство они, почему то, сортировались в обратном порядке, то теперь если выполнять обновление фоток по коду, описанному выше, файлы сортируются непонятным образом - либо в перемешку, либо по порядку, либо в обратном порядке. Как всё таки правильно сортировать множественное свойство для фотографий? Т.е. чтобы в конечном счете фотографии отображались в том порядке, в котором я их добавил на момент создания/редактирования элемента инфоблока.
Спасибо всем за ответ заранее!
ответил 23 Апр, 15 от Zlob (120 баллов)

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

0 голосов
3 ответов
спросил 13 Июнь, 13 от Kane (160 баллов)
0 голосов
2 ответов
спросил 19 Март, 14 от aisigylka (100 баллов)
0 голосов
0 ответов
спросил 08 Янв, 14 от TukoHDpyC (160 баллов)
0 голосов
2 ответов
спросил 30 Апр, 14 от Djicso (100 баллов)
0 голосов
2 ответов
спросил 03 Апр, 14 от Fatima (120 баллов)