public function UpdateField($field_id, $arFields) { $new_field_id = false; $newField = null; if(isset($this->fields[$field_id])) { $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; }