Добрый день, прошу вашей помощи.
Два дня пытаюсь решить проблему. Нужно создавать задачу из почты. Более или менее все заработало.
Есть такой код
| Код |
|---|
if (CModule::IncludeModule("tasks")) {
$from = CMailUtil::ExtractMailAddress($arMessageFields['FIELD_FROM']);
$arrFilter = array("ACTIVE" => "Y","GROUPS_ID" => array($USER_GROUP_ID));
$sort_by = "ID";
$sort_ord = "ASC";
$dbUsers = CUser::GetList($sort_by, $sort_ord, $arrFilter);
while ($arUser = $dbUsers->Fetch()) {
$USERS_for_TASK[] = $arUser["ID"];
}
if(count($USERS_for_TASK)>0) {
$task = new \Bitrix\Tasks\Item\Task();
$task['TITLE'] = $from.':Обработка обращения от '.date('d.m.Y H:i:s');
$task['GROUP_ID'] = $USER_WS_GROUP_ID;
$task['DESCRIPTION'] = $arMessageFields['TITLE'].'<br>'.$arMessageFields['BODY'];
$task["RESPONSIBLE_ID"] = $USER_RES_ID;
$task["ACCOMPLICES"] = $USERS_for_TASK;
$task["STATUS"] = 2;
$task["CREATED_BY"] = $USER_RES_ID;
}
$newFiles = array();
$storage = \Bitrix\Disk\Driver::getInstance()->getStorageByGroupId($USER_WS_GROUP_ID);
if ($storage && $arMessageFields['ID'] > 0) {
$folder = $storage->getFolderForUploadedFiles();
//добавляем к задаче вложения
$dbr_attach = CMailAttachment::GetList(Array("NAME" => "ASC", "ID" => "ASC"), Array("MESSAGE_ID" => $arMessageFields['ID']));
while ($dbr_attach_arr = $dbr_attach->GetNext()) {
if ($dbr_attach_arr["FILE_NAME"]=='1.tmp' ||
preg_match_all('/\\.(?:exe|html|phtml|pl|js|htm|py|php|php4|php3|phtml|shtml)$/i', $dbr_attach_arr["FILE_NAME"], $p_matches, PREG_PATTERN_ORDER))
continue;
$dbr = CMailAttachment::GetByID($dbr_attach_arr["ID"]);
if($dbr_arr = $dbr->Fetch()) {
$fname = $_SERVER['DOCUMENT_ROOT']."/upload/from_mail/".$date.$dbr_arr["FILE_NAME"];
$handle = fopen($fname, 'wb');
fwrite($handle, $dbr_arr["FILE_DATA"]);
fclose($handle);
$arFile = CFile::MakeFileArray($fname);
$file = $folder->uploadFile($arFile, array(
'NAME' => $arFile["name"],
'CREATED_BY' => $USER_RES_ID
),
array(), true);
$newFiles[] = "n".$file->getId();
$task["UF_TASK_WEBDAV_FILES"] = $newFiles;
}
}
}
$result = $task->save();
AddMessage2Log($result, $task['TITLE'].' resultTask');
AddMessage2Log($result->dump(), $task['TITLE'].'resultTask->dump');
AddMessage2Log($result->isSuccess(), $task['TITLE'].'resultTask->isSuccess');
}
|
Часть задач успешно создается, часть нет, отлавливаю такую ошибку:
Error Result success = NO Fatals:
* Операция над задачей запрещена: обновление