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

Обновление элемента CIBlockElement::Update

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

тут кусок кода в котором загоняются фотографии в свойства.
Код
 ...........
 for ( $i=1; $i<=10; $i++ )
   {
       $name = "photo_".$i;
       $arFILE = $_FILES[$name]; 
       $arFILE["MODULE_ID"] = "iblock";
       $photo = CFile::SaveFile($arFILE, "enterdom"); 
      $PROP[3680][$i] = CFile::MakeFileArray($photo);
      ............
         )
       );
   }

$arLoadProductArray = Array(
    "MODIFIED_BY"    => $USER->GetID(), // элемент изменен текущим пользователем
    "IBLOCK_SECTION_ID"      => $IB_SECTION_ID,
    "IBLOCK_ID"      => 253,
    "PROPERTY_VALUES"=> $PROP,
    "NAME"           => "Квартира",
    "ACTIVE"         => "Y",            // активен
   "DATE_ACTIVE_FROM"   => date($DB->DateFormatToPHP(CSite::GetDateFormat("SHORT")), time()),
   "DATE_ACTIVE_TO"     => $dat,
    "PREVIEW_TEXT"   => $_REQUEST["PREVIEW"],
    "PREVIEW_PICTURE" => CFile::MakeFileArray($prev_photo)
   );

$PRODUCT_ID = $_REQUEST["ID"]; 
   $el->Update($PRODUCT_ID, $arLoadProductArray);

спросил 13 Июнь, 13 от Kane (160 баллов)

3 Ответы

00 голосов
Точно не помню, но вроде в массив $PROP[3680][$i] надо добавить "DEL" => "Y"
ответил 13 Июнь, 13 от Almarea (3,760 баллов)
00 голосов
Цитата
Дмитрий Яковенко пишет:
Точно не помню, но вроде в массив $PROP[3680][$i] надо добавить "DEL" => "Y"


Не совсем так. Чтоб изменить значение множественного свойства, надо знать его PROPERTY_VALUE_ID. Его можно получить, например, CIBlockElement::GetProperty.
Далее $PROP[3680]["нужный PROPERTY_VALUE_ID"]=Array("VALUE"=>CFile::MakeFileArray("ID изображения"));
Для удаления к этому массиву добавляем "DEL"=>"Y".
Пример тут:
http://dev.1c-bitrix.ru/api_help/iblock/classes/ciblockelement/setpropertyvaluecode.php

Так как делали вы можно пользоваться для добавления новых изображений и вместо $i лучше писать "n".$i.
ответил 26 Июнь, 13 от NitroGeN (2,840 баллов)
00 голосов
Спасибо! суть понял ... пойду разбираться. )
ответил 29 Сен, 13 от Kane (160 баллов)

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

0 голосов
4 ответов
спросил 16 Янв, 14 от Zlob (120 баллов)
0 голосов
0 ответов
спросил 08 Янв, 14 от TukoHDpyC (160 баллов)
0 голосов
2 ответов
спросил 19 Март, 14 от aisigylka (100 баллов)
0 голосов
3 ответов
спросил 23 Март, 14 от Naru (200 баллов)
0 голосов
2 ответов