| Задача: Если ответственный за лид - пользователь из департамента 1615 меняет ответственного на сотрудника из департаментов: 1242, 1292, 181, 183, 1609, 1610, 1611, 1612 то Лид возвращается на статус Не обработан (начальный статус). И тумблер на данную настройку |
Обработчик в init.php
AddEventHandler("crm","OnBeforeCrmLeadUpdate","MyOnBeforeCrmLeadUpdate");
function MyOnBeforeCrmLeadUpdate(&$arFields){
$constantId = "Constant1664531666359";//глобальная константа, которая отвечает, переводить или нет при смене подразделения
if(!empty($arFields["ASSIGNED_BY_ID"])&& CModule::IncludeModule("bizproc") && CModule::IncludeModule('crm')){
$result = \Bitrix\Bizproc\Workflow\Type\GlobalConst::getValue($constantId); //получить значение
if($result=="Y"){
$arFilter = array(
"ID"=>$arFields["ID"],
"CHECK_PERMISSIONS"=>"N" //не проверять права доступа текущего пользователя
);
$arSelect = array(
"ID",
"ASSIGNED_BY_ID"
);
$res = CCrmLead::GetList(Array(), $arFilter, $arSelect);
if($arOldFields = $res->Fetch()){
if(($arOldFields["ASSIGNED_BY_ID"] != $arFields["ASSIGNED_BY_ID"]) && (CModule::IncludeModule('intranet'))){
$arDepartmentsOld = CIntranetUtils::GetUserDepartments($arOldFields["ASSIGNED_BY_ID"]);
$arDepartmentsNew = CIntranetUtils::GetUserDepartments($arFields["ASSIGNED_BY_ID"]);
if(
in_array(1615,$arDepartmentsOld) &&
( //1242, 1292, 181, 183, 1609, 1610, 1611, 1612
in_array(1242,$arDepartmentsNew) ||
in_array(1292,$arDepartmentsNew) ||
in_array(181,$arDepartmentsNew) ||
in_array(183,$arDepartmentsNew) ||
in_array(1609,$arDepartmentsNew) ||
in_array(1610,$arDepartmentsNew) ||
in_array(1611,$arDepartmentsNew) ||
in_array(1612,$arDepartmentsNew)
)
){
$arFields["STATUS_ID"] = "NEW";
}
}
}
}
}
} |