- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/classes/general/crm_field_multi.php
- Класс: \CCrmFieldMulti
- Вызов: CCrmFieldMulti::Update
public function Update($ID, $arFields, array $options = null)
{
$err_mess = (self::err_mess()).'
Function: Update
Line: ';
$ID = (int)$ID;
if($ID <= 0)
{
return false;
}
if(isset($arFields['VALUE']))
{
$arFields['VALUE'] = trim($arFields['VALUE']);
}
if (!$this->CheckFields($arFields))
return false;
$arFields_u = Array(
'TYPE_ID' => $arFields['TYPE_ID'],
'VALUE_TYPE'=> $arFields['VALUE_TYPE'],
'COMPLEX_ID'=> $arFields['TYPE_ID'].'_'.$arFields['VALUE_TYPE'],
'VALUE' => $arFields['VALUE'],
);
$strUpdate = $this->cdb->PrepareUpdate('b_crm_field_multi', $arFields_u);
if (!$this->cdb->Query("UPDATE b_crm_field_multi SET $strUpdate WHERE ID=$ID", false, $err_mess.__LINE__))
return false;
if(is_array($options) && (!isset($options['ENABLE_NOTIFICATION']) || $options['ENABLE_NOTIFICATION']))
{
$info = $this->GetOwerInfo($ID);
if(is_array($info) && isset($info['ENTITY_ID']) && isset($info['ELEMENT_ID']))
{
$entityTypeId = CCrmOwnerType::ResolveID($info['ENTITY_ID']);
$entityId = (int)$info['ELEMENT_ID'];
//region Register volatile duplicate criterion fields
DuplicateCommunicationCriterion::processMultifieldsChange($entityTypeId, $entityId);
DuplicateVolatileCriterion::register(
$entityTypeId,
$entityId,
[FieldCategory::MULTI]
);
//endregion Register volatile duplicate criterion fields
}
}
if ($arFields_u['TYPE_ID'] === static::PHONE)
{
$curData = FieldMultiPhoneCountryTable::getDataByMultiFieldId([$ID])[0] ?? [];
$valueCountryCode = static::fetchCountryCode($arFields_u['TYPE_ID'], $arFields);
if (empty($valueCountryCode))
{
if (isset($curData['ID']))
{
FieldMultiPhoneCountryTable::delete($curData['ID']);
}
}
else
{
if (isset($curData['ID']))
{
FieldMultiPhoneCountryTable::update($curData['ID'], ['COUNTRY_CODE' => $valueCountryCode]);
}
else
{
FieldMultiPhoneCountryTable::add([
'FM_ID' => $ID,
'COUNTRY_CODE' => $valueCountryCode,
]);
}
}
}
return $ID;
}