147  /  328

Примеры работы с множественными свойствами

Просмотров: 6104 (Статистика ведётся с 06.02.2017)
Дата последнего изменения: 02.11.2016

Задача 1: удаление одного из значений множественного свойства элемента инфоблока.

Решение:

$el = new CIBlockElement;
$PROP = array();
$PROP[property_id][id] = "4";  
$PROP[property_id][id] = "5";
$PROP[property_id][id] = "6";

$arLoadProductArray = Array(
  "IBLOCK_ID" => $B_ID,
  "PROPERTY_VALUES" => $PROP,
  "NAME" => "Element",
  );

$PRODUCT_ID = $E_ID;
$res = $el->Update($PRODUCT_ID, $arLoadProductArray);

При этом для удаления достаточно исключить из массива $PROP пару: ключ и значение удаляемого свойства. Данное решение является оптимальным в ситуации, когда необходимо сохранить id значения свойства прежним:

$PROP[property_id ][id ]

Также вариантом решения задачи может стать использование метода SetPropertyValues:

CIBlockElement::SetPropertyValues($ELEMENT_ID, $IBLOCK_ID, $PROPERTY_VALUE, $PROPERTY_CODE);

в четвёртый параметр функции следует передавать false, а в третий - массив "код свойства"=>"значение".

При этом все значения будут удалены кроме тех, которые указаны в массиве, переданном в третий параметр.


Задача 2: добавление определенного значения для множественного свойства типа файл:

Решение:

//FILES - символьный код множественного свойства типа файл;

$ELEMENT_ID = 392;
$arFile = CFile::MakeFileArray($_SERVER["DOCUMENT_ROOT"]."/images/help.gif");
$arFile["MODULE_ID"] = "iblock";

CIBlockElement::SetPropertyValueCode($ELEMENT_ID, "FILES", Array("VALUE"=>$arFile)  );

Задача 3: добавление нескольких значений для множественного свойства типа файл:

Решение:

$arFile = array(
0 => array("VALUE" => CFile::MakeFileArray($_SERVER["DOCUMENT_ROOT"]."/images/01.gif"),"DESCRIPTION"=>""),
1 => array("VALUE" => CFile::MakeFileArray($_SERVER["DOCUMENT_ROOT"]."/images/help.gif"),"DESCRIPTION"=>"")
);
CIBlockElement::SetPropertyValueCode($ELEMENT_ID, $PROPERTY_CODE, $arFile);

Задача 4: удаление определенного значения множественного свойства типа файл:

Решение:

//FILES - символьный код множественного свойства типа файл;
//2033 - id значения свойства;

$ELEMENT_ID = 392;
$arFile["MODULE_ID"] = "iblock";
$arFile["del"] = "Y";

CIBlockElement::SetPropertyValueCode($ELEMENT_ID, "FILES", Array ("2033" => Array("VALUE"=>$arFile) ) );

Задача 5: обновление определенного значения множественного свойства типа файл:

Решение:


//FILES - символьный код множественного свойства типа файл;
//2033 - id значения свойства;

$ELEMENT_ID = 392;
$arFile = CFile::MakeFileArray($_SERVER["DOCUMENT_ROOT"]."/images/help.gif");
$arFile["MODULE_ID"] = "iblock";

CIBlockElement::SetPropertyValueCode($ELEMENT_ID, "FILES", Array ("2033" => Array("VALUE"=>$arFile) ) );

Задача 6: установка множественного свойства типа строка с полем для описания значения:

Решение с помощью SetPropertyValueCode:

$arValues = array(
  0 => array("VALUE"=>"значение","DESCRIPTION"=>"описание значения"),
  1 => array("VALUE"=>"значение2","DESCRIPTION"=>"описание значения2") 
);  
CIBlockElement::SetPropertyValueCode($ELEMENT_ID, $PROP_CODE, $arValues);  

Решение с помощью SetPropertyValuesEx:

$PROPERTY_VALUE = array(
  0 => array("VALUE"=>"значение","DESCRIPTION"=>"описание значения"),
  1 => array("VALUE"=>"значение2","DESCRIPTION"=>"описание значения2") 
);
CIBlockElement::SetPropertyValuesEx($ELEMENT_ID, $IBLOCK_ID, array($PROPERTY_CODE => $PROPERTY_VALUE));

Задача 7: обновление множественного свойства типа Текст и сохранение при этом DESCRIPTION:

Решение:

CIBlockElement::SetPropertyValues($nProductID, $nIblockID, array(
             array(
                 "VALUE" => array(
                     "TEXT"=>time(),
                     "TYPE"=>"HTML"
                  ),
                 "DESCRIPTION"=>"111"),
             array(
                 "VALUE" => array(
                     "TEXT"=>time(),
                     "TYPE"=>"HTML"
                  ),
                 "DESCRIPTION"=>"222"),
            ), $prop['ID']);
20
Курсы разработаны в компании «1С-Битрикс»

Если вы нашли неточность в тексте, непонятное объяснение, пожалуйста, сообщите нам об этом в комментариях.
Развернуть комментарии