Задача: Если ответственный за лид - пользователь из департамента 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"; } } } } } } |