Bitrix24. Обновляем штатные FM поля лида.
Не секрет что документации по api bitrix24 очень мало, и та что есть достаточно скудна.
Для тех кто не хочет тратить как я время на изучение ядра, написал небольшую заметку по классическому на вскидку кейсу.
У нас есть лид со штатными полями телефон и почта, периодически значения этих полей может меняться, нам необходимо программно иметь возможность их сменить.
Первое что приходит на ум это использовать стандартный Update для лида. К сожалению так CRM не будет менять поля PHONE и EMAIL, для того чтобы иметь возможность их сменить нужно использовать другой класс CCrmFieldMulti.
Ниже прикладываю листинг метода, который я написал для смены телефона или почты у лида. Его можно свободно использовать для смены значений телефона в CRM Bitrix24.
/**
* Обновляем FM поля
* @param TYPE_ID Тип FM поля
* @param LEAD_ID ID лида
* @param VALUE значение для поля
*/
function updateFieldMulti($TYPE_ID, $LEAD_ID, $VALUE){
\Bitrix\Main\Loader::includeModule('crm');
$dbResult = \CCrmFieldMulti::GetList(
array(),
array(
'ENTITY_ID' => 'LEAD',
'CHECK_PERMISSIONS' => 'N',
'TYPE_ID' => $TYPE_ID,
'ELEMENT_ID' => $LEAD_ID
)
);
if($arLead = $dbResult->GetNext()){
$arLeadID = $arLead;
}
$ds = new \CCrmFieldMulti;
$ds->Update(
$arLeadID['ID'],
array(
'VALUE' => $VALUE,
'TYPE_ID' => $arLeadID['TYPE_ID'],
'VALUE_TYPE' => $arLeadID['VALUE_TYPE'],
'COMPLEX_ID' => $arLeadID['COMPLEX_ID']
)
);
}