220  /  380
Справочник

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

Просмотров: 71724
Дата последнего изменения: 10.11.2023
Роберт Басыров
Сложность урока:
3 уровень - средняя сложность. Необходимо внимание и немного подумать.
1
2
3
4
5
Недоступно в лицензиях:
Ограничений нет

Задача 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']);
33
Курсы разработаны в компании «1С-Битрикс»

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