public static function Add($iblock_id, $arFields) { if ($iblock_id > 0) { $property_id = intval($arFields["ID"]); if ($property_id > 0) { return new CListPropertyField($iblock_id, "PROPERTY_" . $property_id, $arFields["NAME"], $arFields["SORT"]); } else { $arFields["IBLOCK_ID"] = $iblock_id; if (strpos($arFields["TYPE"], ":") !== false) { list($arFields["PROPERTY_TYPE"], $arFields["USER_TYPE"]) = explode(":", $arFields["TYPE"]); } else { $arFields["PROPERTY_TYPE"] = $arFields["TYPE"]; } $arFields["MULTIPLE_CNT"] = 1; $arFields["CHECK_PERMISSIONS"] = "N"; $arFields["CODE"] = $arFields["CODE"] ? $arFields["CODE"] : CLists::generateMnemonicCode(); $obProperty = new CIBlockProperty(); $res = $obProperty->Add($arFields); if ($res) { self::resetPropertyArrayCache(); if ($arFields["PROPERTY_TYPE"] == "L" && is_array($arFields["LIST"])) { CList::UpdatePropertyList($res, $arFields["LIST"]); } return new CListPropertyField($iblock_id, "PROPERTY_" . $res, $arFields["NAME"], $arFields["SORT"]); } } } return null; }