Задать вопрос
@djacode

Как получить файлы прикрепленные к комментарию в элементе смарт процесса?

Получается только получить инфу есть файлы или нет . И все(
  • Вопрос задан
  • 44 просмотра
Подписаться 1 Средний Комментировать
Решения вопроса 1
gromdron
@gromdron Куратор тега Битрикс24
Работаю с Bitrix24
Предположим существует комментарий к которому могут быть прикреплены файлы и вам известен его ID (комментария), например:
68678301d6d32726201341.png

Таким образом для получения файлов вы можете воспользоваться кодом:

* @var CUserTypeManager
 */
global $USER_FIELD_MANAGER;

use Bitrix\Main\Loader;
use Bitrix\Disk\Driver;
use Bitrix\Crm\Timeline\CommentController;
use Bitrix\Disk\AttachedObject;

Loader::requireModule('crm');
Loader::requireModule('disk');

/**
 * Timeline comment id
 * @var int
 */
$commentId = 30;

$userFieldWithValues = $USER_FIELD_MANAGER->GetUserFields(
	entity_id: CommentController::UF_FIELD_NAME,
	value_id: $commentId,
	selectFields: [
		CommentController::UF_COMMENT_FILE_NAME
	]
);

$attachedObjectIds = [];

if (
	array_key_exists(
		CommentController::UF_COMMENT_FILE_NAME,
		$userFieldWithValues
	)
	&& $userFieldWithValues[CommentController::UF_COMMENT_FILE_NAME]["VALUE_EXISTS"]
) {
	$attachedObjectIds = $userFieldWithValues[CommentController::UF_COMMENT_FILE_NAME]["VALUE"];
}

$files = [];

if (!empty($attachedObjectIds)) {
	$urlManager = Driver::getInstance()->getUrlManager();

	foreach ($attachedObjectIds as $value) {
		if (!$value) {
			continue;
		}

		$attachedObject = AttachedObject::loadById($value, ['OBJECT']);
		$file = $attachedObject->getObject();
		if (!$attachedObject || !$file) {
			continue;
		}

		$files[] = [
			'name' => htmlspecialcharsbx($file->getName()),
			'size' => \CFile::formatSize($file->getSize()),
			'url'  => $urlManager->getUrlUfController('download', ['attachedId' => $value])
		];
	}
}

/**
 * array(1) {
 *     [0]=> array(3) {
 *         ["name"]=> string(20) "2025-07-03_13-36.png"
 *         ["size"]=> string(10) "28.97 КБ"
 *         ["url"]=> string(60) "/bitrix/tools/disk/uf.php?attachedId=1&action=download&ncc=1"
 *     }
 * }
 */
var_dump($files);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

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

Похожие вопросы