• Модуль: lists
  • Путь к файлу: ~/bitrix/modules/lists/classes/general/listfields.php
  • Класс: CListFieldList
  • Вызов: CListFieldList::UpdateField
public function UpdateField($field_id, $arFields)
{
	$new_field_id = false;
	$newField = null;

	if(isset($this->fields[$field_id]))
	{
		/** @var CListField $obField */
		$obField = $this->fields[$field_id];

		if(isset($arFields["TYPE"]) && ($arFields["TYPE"] != $obField->GetTypeID()))
		{
			if(CListFieldTypeList::IsField($obField->GetTypeID()))
			{
				if(CListFieldTypeList::IsField($arFields["TYPE"]))
				{
					$newField = $obField->Update($arFields);
				}
				else
				{
					$obField->Delete();
					$newField = CListPropertyField::Add($this->iblock_id, $arFields);
				}
			}
			else
			{
				if(!CListFieldTypeList::IsField($arFields["TYPE"]))
				{
					$newField = $obField->Update($arFields);
				}
				else
				{
					$obField->Delete();
					$newField = CListElementField::Add($this->iblock_id, $arFields);
				}
			}
		}
		else
		{
			$newField = $obField->Update($arFields);
		}
	}

	if(is_object($newField))
	{
		if(isset($arFields["SETTINGS"]))
			$newField->SetSettings($arFields["SETTINGS"]);

		unset($this->fields[$field_id]);
		$new_field_id = $newField->GetID();
		$this->fields[$new_field_id] = $newField;

		$this->_resort();
		$this->_save_form_settings($this->form_id);
	}

	return $new_field_id;
}