подключение модуля
CModule::IncludeModule("tasks"); |
обработчики
AddEventHandler("tasks", "OnBeforeTaskAdd", "MyOnBeforeTaskAdd");
function MyOnBeforeTaskAdd(&$arTask){}
AddEventHandler("tasks", "OnTaskAdd", "MyOnTaskAdd");
function MyOnTaskAdd($idTask, $arTask){}
AddEventHandler("tasks", "OnBeforeTaskUpdate", "MyOnBeforeTaskUpdate");
function MyOnBeforeTaskUpdate($id, &$data, &$arTaskCopy){}
AddEventHandler("tasks", "OnTaskUpdate", "MyOnTaskUpdate");
function MyOnTaskUpdate($ID, &$arFields, &$arTaskCopy){}
|
пример обработчика, который удаляет лишние пинги |
напоминание о задаче//добавляем напоминание
$arFields = Array(
"TASK_ID" => $idTask,
"USER_ID" => $arTask["CREATED_BY"],
"REMIND_DATE" => date("d.m.Y H:i:s", strtotime("+5 hours")),
"TYPE" => CTaskReminders::REMINDER_TYPE_DEADLINE,
"TRANSPORT" => CTaskReminders::REMINDER_TRANSPORT_JABBER
);
$obTaskReminders = new CTaskReminders;
$ID = $obTaskReminders->Add($arFields); |
задачи для сделки (или другой CRM сущности) получить и обновить
$arFilter = array(
'TAG' => $tag,
"UF_CRM_TASK" => "D_".$dealID, // "L_".$leadID
);
$res = CTasks::GetList(
Array("DEADLINE" => "ASC"),
$arFilter,
array("ID"),
array("USER_ID"=>1) //из-под админа получаем
);
$obTask = new CTasks;
while($arTask1 = $res->GetNext()){
$obTask->Update(
$arTask1["ID"],
array(
"STATUS" => CTasks::STATE_COMPLETED
),
array('USER_ID' => 1)
);
} |
создать задачу
$newTask = array(
"TITLE" => "заголовок",
"DESCRIPTION" => "описание",
"TAGS" => array("CRM","tag1"),
"DEADLINE" => date("d.m.Y H:i:s", strtotime(("+".($time+4)." hours"))),
"CREATED_BY" => $arTaskCopy["RESPONSIBLE_ID"],//кем создано
"RESPONSIBLE_ID" => $arTaskCopy["RESPONSIBLE_ID"],//ответственный
"AUDITORS" => $arTaskCopy["AUDITORS"], //наблюдатели
//"TASK_CONTROL" => "Y",
"ADD_IN_REPORT" => "Y",
"DEPENDS_ON"=> $arFields["ID"],
"UF_CRM_TASK" => $arTaskCopy["UF_CRM_TASK"] //IDшники сущностей ["D_123","C_234","L_345"]
);
$taskItem = \CTaskItem::add($newTask, 1); |
добавить определенного наблюдателя в задачу с тегом SMART
GetList не хочет возвращать AUDITORS
$arFilter = array(
'TAG' => array("SMART"),
);
$res = CTasks::GetList(
Array("DEADLINE" => "ASC"),
$arFilter,
array("ID"),
array("USER_ID"=>1) //из-под админа получаем
);
$obTask = new CTasks;
while($arTask1 = $res->GetNext()){
$task = new \Bitrix\Tasks\Item\Task($arTask1["ID"]);
$auditors = $task["AUDITORS"]->toArray();
if(!in_array(25, $auditors)){
//так не работает, ни фига не сохраняет
// $task["AUDITORS"]->push(25);
// $task->save();
//так работает
$auditors[] = 25;
$obTask->Update(
$arTask1["ID"],
array(
"AUDITORS" => $auditors
),
array('USER_ID' => 1)
);
}
}
|
обработчик
AddEventHandler("tasks", "OnBeforeTaskAdd", "AddSmartViewerByAdd");
function AddSmartViewerByAdd(&$arFields){
$arSmartViewers = [25];
if(!empty($arFields["TAGS"]) && is_array($arFields["TAGS"]) && in_array("SMART", $arFields["TAGS"])){
$arFields["AUDITORS"] = $arFields["AUDITORS"] ?? [];
$arFields["AUDITORS"] = array_unique(array_merge($arFields["AUDITORS"],$arSmartViewers));
}
$possibleCompliteTaskFieldID = 'UF_AUTO_696681441528';
if(isset($arFields[$possibleCompliteTaskFieldID]) && ($arFields[$possibleCompliteTaskFieldID] == '1')){
$arFields["TASK_CONTROL"] = "N";
}
}
AddEventHandler("tasks", "OnBeforeTaskUpdate", "AddSmartViewerByUpdate");
function AddSmartViewerByUpdate($id, &$arFields, &$arTaskCopy){
$arSmartViewers = [25];
if(!empty($arFields["TAGS"]) && is_array($arFields["TAGS"]) && in_array("SMART", $arFields["TAGS"])){
$arFields["AUDITORS"] = $arFields["AUDITORS"] ?? $arTaskCopy["AUDITORS"];
$arFields["AUDITORS"] = array_unique(array_merge($arFields["AUDITORS"],$arSmartViewers));
}
} |