| Задача: генерировать договор с данными доверенности менеджера (ответственный в сделке), хранится в свойстве пользователя |
я использовала 2 поля из пользователя, которые в моем случае нигде не используются и их подменяю нужными значениями, но они видны в полях для шаблонов
\Bitrix\Main\EventManager::getInstance()->addEventHandler('documentgenerator', 'onBeforeProcessDocument', function(\Bitrix\Main\Event $event){
//{AssignedPersonalGender} заменяем на доверенность ООО
//{AssignedPersonalCountry} заменяем на доверенность ИП
$document = $event->getParameter('document');
$template = $document->getTemplate();
if($template && $template->MODULE_ID == 'crm'){
$provider = $document->getProvider();
$ownerType = $provider->getCrmOwnerType();
if($ownerType == 2){
$dealId = $provider->getSource();
$arFilter = array(
"ID"=>$dealId, //выбираем определенную сделку по ID
"CHECK_PERMISSIONS"=>"N" //не проверять права доступа текущего пользователя
);
$arSelect = array(
"ID",
"ASSIGNED_BY_ID"
);
$res = CCrmDeal::GetList(Array(), $arFilter, $arSelect);
if($row = $res->Fetch()){
$userId = $row["ASSIGNED_BY_ID"]; // ID пользователя
$userBy = "id";
$userOrder = "desc";
$userFilter = array(
'ID' => $userId,
);
$userParams = array(
'SELECT' => array(
"UF_USR_1636023611005", //доверенность 1 ООО
"UF_USR_1636023629101", ////доверенность 2 ИП
"UF_USR_1636023649756" // доверенность ООО 2
),
'NAV_PARAMS' => array(
'nTopCount' => 1
),
'FIELDS' => array(
'ID',
),
);
$rsUser = CUser::GetList(
$userBy,
$userOrder,
$userFilter,
$userParams
);
if ($arUser = $rsUser->Fetch()){
$document->setValues(['AssignedPersonalGender' => $arUser['UF_USR_1636023649756']]);
$document->setValues(['AssignedPersonalCountry' => $arUser['UF_USR_1636023629101']]);
}
}
}
}
}); |