• Модуль: 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;
}