- Модуль: lists
- Путь к файлу: ~/bitrix/modules/lists/classes/general/listfield.php
- Класс: CListPropertyField
- Вызов: CListPropertyField::Add
public function Add($iblock_id, $arFields)
{
if($iblock_id > 0)
{
if (self::existPropertyCode($iblock_id, $arFields["CODE"]))
{
throw new NotSupportedException(GetMessage("LIST_PROPERTY_FIELD_DUPLICATE_CODE"));
}
$property_id = intval($arFields["ID"] ?? 0);
if($property_id > 0)
{
return new CListPropertyField($iblock_id, "PROPERTY_".$property_id, $arFields["NAME"], $arFields["SORT"]);
}
else
{
$arFields["IBLOCK_ID"] = $iblock_id;
if(mb_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";
$obProperty = new CIBlockProperty;
$res = $obProperty->Add($arFields);
if (!empty($obProperty->LAST_ERROR))
{
throw new ArgumentException($obProperty->LAST_ERROR);
}
if($res)
{
self::resetPropertyArrayCache();
if($arFields["PROPERTY_TYPE"] == "L" && is_array($arFields["LIST"] ?? null))
{
CList::UpdatePropertyList($res, $arFields["LIST"]);
}
return new CListPropertyField($iblock_id, "PROPERTY_".$res, $arFields["NAME"], $arFields["SORT"]);
}
}
}
return null;
}