@matveyboyko

Как добавить файл к задаче в Битрикс?

Привет!
Нашел следующий код для моей цели:
if (CModule::IncludeModule('disk') && CModule::IncludeModule('tasks')){
        $oTask = new CTaskItem($task_id, $user_id);
        $arFields = array(
            "UF_TASK_WEBDAV_FILES"   => array("n".$disk_file_id)
        );
        try
        {
            if ( ! $oTask->update($arFields) )
                throw new TasksException();
        }
        catch (TasksException $e)
        {
            print_r($e);
            return;
        }
    }

однако не совсем понял, что подставлять в переменную $disk_file_id.
По логике, это ID файла в системе, но откуда он возьмется, если файл только планируется загрузить?
Кто поможет разобраться?
Загружаемый файл находится не на локальном компьютере, а в сети по определенному пути, на него есть только ссылка.
  • Вопрос задан
  • 3171 просмотр
Решения вопроса 1
@jasper-blondin
Файл нужно предварительно загрузить.
В документации есть пример: https://dev.1c-bitrix.ru/api_help/tasks/classes/ct...

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")));
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы