Возникла задача сохранения файла из внешнего источника в задаче КП Битрикса, но оказалось все не совсем просто, в связи с тем что использует он модуль disk, а не только стандартный класс CFile, чтобы решить данную проблему пришлось покопать исходники.
$fileInfo = \CFile::GetFileArray(1); $folder = \Bitrix\Disk\Folder::getById(1); $data = array( 'NAME' => $fileID.'_'.$fileInfo['ORIGINAL_NAME'], 'STORAGE_ID' => 1, 'FILE_ID' => $fileInfo['ID'], 'CREATED_BY' => 1, 'SIZE' => $fileInfo['FILE_SIZE'], 'PARENT' => $folder, 'PARENT_ID' => 1 ); $error = new \Bitrix\Disk\Internals\Error\ErrorCollection; $res = \Bitrix\Disk\File::add($data, $error); $fileDiskID = $res->getId();
Список всех папок на диске для сохранения можно получить так же —
\Bitrix\Disk\Internals\FolderTable::getList();
здесь есть для PARENT_ID и STORAGE_ID
Добавляем файл к задаче
if ($fileID) { $newFiles[] = \Bitrix\Disk\Uf\FileUserType::NEW_FILE_PREFIX.$fileID; } if (count($newFiles)) { $USER_FIELD_MANAGER->Update("TASKS_TASK", $taskID, array( 'UF_TASK_WEBDAV_FILES' => $newFiles, )); }