Здравствуйте! В init.php сделал такую штуку:
Т.е. при создании элемента в инфоблоке "Объекты" я проверяю и создаю (если нет) новый раздел в инфоблоке "Квартиры" с таким же именем как и текущий элемент, а после создания раздела привязываю его к текущему элементу через свойство типа "Привязка к разделу" - "OBJECT_DATA" . И создание и привязка происходит корректно, вот только все остальные свойства элемента обнуляются. Как сделать так чтобы не обнулялось и при этом не произошло рекурсии (т.е. вызова обновлния из обновления или типа того)? Заранее спасибо!
Код |
---|
//Объекты define("IBLOCK_OBJECTS",8); //Квартиры define("IBLOCK_APARTMENTS",9); //Создаём и привязываем категории другого инфоблока к текущему элементу AddEventHandler("iblock", "OnBeforeIBlockElementAdd", Array("ObjectProcess", "createNewObjectInApartments")); AddEventHandler("iblock", "OnBeforeIBlockElementUpdate", Array("ObjectProcess", "createNewObjectInApartments")); //Операции с объектами и квартирвми class ObjectProcess { //создание нового объекта (раздела инфоблока 1-го уровня) (если такового нет) в инфоблоке "Квартиры" public function createNewObjectInApartments($arFields) { $CreateNewSection = true; $arFilter = Array( "IBLOCK_ID"=>IBLOCK_APARTMENTS, "NAME"=>$arFields["NAME"] ); $SectionCount = CIBlockSection::GetCount($arFilter); if($SectionCount>0) { $CreateNewSection = false; } else { //Если совпадений не найдено и значение флага осталось true, создаём новую секцию и привязываем её в объекту $bitrixSection = new CIBlockSection; $arFields = Array( "ACTIVE" => "Y", "IBLOCK_ID" => IBLOCK_APARTMENTS, "NAME" => $arFields["NAME"], "SORT" => 500, ); //Создаём категорию объекта в инфоблоке "Квартиры" $idNewSection = $bitrixSection->Add($arFields); //Привязываем созданную категорию к текущему элементу $arFields["PROPERTY_VALUES"]["OBJECT_DATA"] = $idNewSection; } } } |
Всё сбудется, стоит только расхотеть...