Запуск бизнес-процессов из календаря

Запуск бизнес-процессов из календаря

Модуль запускает выбранный бизнес-процесс после создания в календаре события.

Настройка модуля

После установки модуля на портал нужно указать его настройки:

  • Для процессов на списках укажите id инфоблока списка и id шаблона бизнес-процесса, который нужно запустить.

    11cafc398e.jpg

  • Для standalone бизнес-процесса укажите id бизнес-процесса (виден в адресной строке) в поле ID бизнес-процесса.

    eb954d390e.jpg

После сохранения настроек модуль начнет работать, и указанный бизнес-процесс будет запускаться каждый раз, как кто-то создает событие в календаре.

При запуске бизнес-процесса модуль передает ему параметры:

EVENT_ID - id события в календаре; и AUTHOR_ID - id пользователя, создавшего событие.

Редактирование шаблона бизнес-процесса - Google Chrome.jpg

Получение информации о событии по его ID

$ra = $this->GetRootActivity();

CModule::IncludeModule('calendar');
CModule::IncludeModule('iblock');
global $USER;
$spath = '{=Constant:spath_printable}'; //путь к порталу, для удобства вставки в уведомления
$eventid = '{=Template:EVENT_ID}'; //id события
$event = CCalendarEvent::GetById($eventid);
$maineventid = $event["PARENT_ID"]; //самое первое событие (если участников несколько, для каждого создается свое событие)
$mainevent = CCalendarEvent::GetById($maineventid);
$att = $event["~ATTENDEES"]; //id участников события
$att_arr = array();
foreach ($att as $attendee) {     $att_arr[] = "user_".$attendee["USER_ID"];
}
$crm_arr = $mainevent["UF_CRM_CAL_EVENT"];
$crm_links = "";
$crmid_list = "";
$crmid = array();
if($mainevent["UF_CRM_CAL_EVENT"] =="") $crm_count = 0;
else $crm_count = count($crm_arr);
if ($crm_count >0){
    foreach($crm_arr as $link) {         $crmid[] = $link;
        switch(substr($link,0,2)) {
            case "L_": $crm_links .= $spath."/crm/lead/details/".substr(stristr($link,"_"),1)."/\n"; break;             case "D_": $crm_links .= $spath."/crm/deal/details/".substr(stristr($link,"_"),1)."/\n"; break;             case "C_": $crm_links .= $spath."/crm/contact/details/".substr(stristr($link,"_"),1)."/\n";break;             case "CO": $crm_links .= $spath."/crm/company/details/".substr(stristr($link,"_"),1)."/\n";break;         }
    }
}

$crmid_list = implode(", ",$crmid);
$ra->SetVariable("crm_count", $crm_count); //кол-во привязок к CRM
$ra->SetVariable("event_name", $mainevent["NAME"]); //название события
$ra->SetVariable("event_author", "user_".$mainevent["CREATED_BY"]); //автор события
$ra->SetVariable("date_from", $mainevent["DATE_FROM"]); //дата начала события
$ra->SetVariable("crm_links", $crm_links); //привязки к CRM ссылками
$ra->SetVariable("crmid_list", $crmid_list); // привязки к CRM списком ID
$ra->SetVariable("viewer_list", $att_arr ); //список наблюдателей для задачи

Стоимость такого проекта: бесплатно.

Попробовать

Похожие записи в блоге

Все статьи