update
Описание и параметры
bool CTaskItem::Update( array arFields );
Нестатический метод изменяет параметры задачи с идентификатором ID.
Параметры метода
Параметр | Описание | С версии |
---|---|---|
arFields | Массив Array("поле"=>"значение", ...). Содержит значения всех полей задачи. Обязательные поля должны быть заполнены. | 16.0.0 |
Возвращаемое значение
При возникновении ошибки в исключениях будет содержаться текст ошибки.
Примеры использования
// смена ответственного в задаче CModule::IncludeModule('tasks'); global $USER; $userId = $USER->GetID(); $taskId = 85; $oTaskItem = new CTaskItem($taskId, $userId); try { $rs = $oTaskItem->Update(array("RESPONSIBLE_ID" => 480)); } catch(Exception $e) { print('Error'); } // прикрепление файла к задаче CModule::IncludeModule('tasks'); $storage = Bitrix\Disk\Driver::getInstance()->getStorageByUserId($USER_ID); $folder = $storage->getFolderForUploadedFiles(); $arFile = CFile::MakeFileArray($_SERVER["DOCUMENT_ROOT"]."/upload/wlog.txt"); $file = $folder->uploadFile($arFile, array( 'NAME' => $arFile["name"], 'CREATED_BY' => $USER_ID ), array(), true); $FILE_ID = $file->getId(); $oTaskItem = new CTaskItem($taskId, $userId); $rs = $oTaskItem->Update(array("UF_TASK_WEBDAV_FILES" => Array("n$FILE_ID")));
Добавление файла к задаче, где уже есть добавленные файлы. В примере выше добавляемый файл перезаписывается.
$taskId = 183; //Id задачи $userId = 1; // Id пользователя, от которого изменяем задачу $newFileId = 324; //Id нового файла из таблицы b_disk_object $task = new CTaskItem($taskId, $userId); $taskData = $task->getData(false); $task->update(['UF_TASK_WEBDAV_FILES' => array_merge($taskData['UF_TASK_WEBDAV_FILES'], ["n{$newFileId}"])]);
Сообщение не промодерировано, возможны ошибки и неточности.
|
Рабочий код прикрепления файла из задачи к сделке```
<?php use Bitrix\Tasks\Control; use Bitrix\Main\Diag\Debug; use Bitrix\Tasks\Control\Task; use \Bitrix\Tasks\Internals\TaskTable; use \Bitrix\Crm\DealTable; CModule::IncludeModule('tasks'); CModule::IncludeModule('crm'); $eventManager = \Bitrix\Main\EventManager::getInstance(); $eventManager->addEventHandler('crm', 'OnAfterCrmDealUpdate', 'onAfterUpdate'); $eventManager->addEventHandler('tasks', 'OnTaskUpdate', 'onAfterUpdate'); function onAfterUpdate($taskID, array $fields): array { global $USER; $userId = $USER->GetID(); $idTask = $fields['ID']; $insTask = new \Bitrix\Tasks\Item\Task(intval($idTask ), $userId); $arrTask = $insTask->getData(); $arrAttachmentIDs = $arrTask['UF_TASK_WEBDAV_FILES']->toArray(); // это не обязательно но я перестраховщик $arTaskAttachments = []; if (!empty($arrAttachmentIDs)) { foreach ($arrAttachmentIDs as $attachmentID) { $diskDriver = \Bitrix\Disk\Driver::getInstance(); $objAttachment = $diskDriver->getUserFieldManager()->getAttachedObjectById(intval($attachmentID)); // Так мы получили объект типа Вложение (Attachment). До самого файла нужно еще добраться. $objFile = $objAttachment->getObject(); // И вот только теперь у нас - файл. Получим его имя и ИД. $fileID = $objFile->getFileId(); $fileName = $objFile->getName(); $filePath = \CFile::GetPath($fileID); $fileB64Contents = base64_encode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . $filePath)); $arTaskAttachments[] = [ 'filename' => $fileName, 'b64contents' => $fileB64Contents ]; } } Debug::dumpToFile($fileID, $varName = date('Y-m-d H:i:s'),); $tag = $fields['TAGS']; DealTable::update($tag[0], [ 'TITLE' => 'Обновлено после обновлдения из абработчика из обработчика', "UF_CRM_1698757601681" => CFile::MakeFileArray($fileID), ]); return $fields; } ``` |
Сообщение не промодерировано, возможны ошибки и неточности.
|
//title: Получить все вложения из задачи
try { CModule::IncludeModule("tasks"); CModule::IncludeModule("disk"); } catch (\Bitrix\Main\SystemException $e) { die($e); } // Положим, наша заявка с номером 422 $taskID = 422; // Берем инстанс таска по его ИД с правами Администратора // (второй аргумент - ид пользователя от имени которого производятся манипуляции) $insTask = new \Bitrix\Tasks\Item\Task(intval($taskID), 0); $arrTask = $insTask->getData(); $arrAttachmentIDs = $arrTask['UF_TASK_WEBDAV_FILES']->toArray(); // это не обязательно но я перестраховщик // Теперь попробуем собрать массив, каждый член которого будет иметь имя файла и его содержимое в Base64 // Это так, для примера $arTaskAttachments = []; if (!empty($arrAttachmentIDs)) { foreach ($arrAttachmentIDs as $attachmentID) { $diskDriver = \Bitrix\Disk\Driver::getInstance(); $objAttachment = $diskDriver->getUserFieldManager()->getAttachedObjectById(intval($attachmentID)); // Так мы получили объект типа Вложение (Attachment). До самого файла нужно еще добраться. $objFile = $objAttachment->getObject(); // И вот только теперь у нас - файл. Получим его имя и ИД. $fileID = $objFile->getFileId(); $fileName = $objFile->getName(); $filePath = \CFile::GetPath($fileID); $fileB64Contents = base64_encode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . $filePath)); $arTaskAttachments[] = [ 'filename' => $fileName, 'b64contents' => $fileB64Contents ]; } } var_dump($arTaskAttachments); |
Сообщение не промодерировано, возможны ошибки и неточности.
|
CModule::IncludeModule('tasks');
$storage = Bitrix\Disk\Driver::getInstance()->getStorageByUserId($USER_ID); $folder = $storage->getFolderForUploadedFiles(); $arFile = CFile::MakeFileArray($_SERVER["DOCUMENT_ROOT"]."/upload/wlog.txt"); $file = $folder->uploadFile($arFile, array( 'NAME' => $arFile["name"], 'CREATED_BY' => $USER_ID ), array(), true); $FILE_ID = $file->getId(); $oTaskItem = new CTaskItem($taskId, $userId); $rs = $oTaskItem->Update(array("UF_TASK_WEBDAV_FILES" => Array("n$FILE_ID"))); |
Рушан Зарипов
|
||
Если стоит задача прикрепления не одного, а нескольких файлов, то подойдет такой пример:
$oTask = CTaskItem::add($arNewTaskData, $responsible);
| ||
© «Битрикс», 2001-2024, «1С-Битрикс», 2024
Пользовательские комментарии
Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.Для этого нужно всего лишь авторизоваться на сайте
Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.
Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.