Ссылки на файлы в Битрикс24

Дано:

  • Бизнес-процесс (БП) в CRM Битрикс24
  • Файл на Диске (а точнее, поле типа Файл или Файл (Диск))

Нужно:

  • В БП сформировать кликабельную ссылку на файл для использования, например, в описании какого-нибудь действия


Решение

В БП для формирования ссылок на файлы можно использовать действие Детально об объекте Диска. Для этого нужно:

1) добавить в БП действие Детально об объекте Диска, в котором указать ID файла

2) использовать поля из секции Дополнительные результаты для получения самих ссылок:

  • Поле URL для просмотра – адрес страницы файла на Диске (типа /docs/shared/file/file_name), на которой выводится информация о файле и команды для управления файлом (в т.ч. и команда непосредственного открытия файла в браузере, если его формат позволяет это сделать). Значение поля в БП будет выглядеть так: {=<id>:DetailUrl}
  • Поле URL для загрузки – адрес для прямого скачивания файла с Диска (типа  /disk/downloadFile/file_id/?&ncc=1&filename=file_name). Значение поля в БП будет выглядеть так: {=<id>:DownloadUrl}

3) использовать тег url для формирования кликабельной ссылки для пользователя.

Например:

  • Ссылка на просмотр файла: [url={=<id_поля>:DetailUrl}]открыть[/url]
  • Ссылка на скачинивае файла: [url={=<id_поля>:DownloadUrl}]скачать[/url]

Пример в действии БП:

 


Ссылки на несколько файлов

Если поле с файлом – множественное, то для формирования нескольких ссылок можно использовать действие Итератор. Алгоритм:

1) добавить в БП действие Итератор, в котором указать множественную переменную с файлами

Примечание:

Действие Итератор поддерживает перебор только переменных. Т.е., например, поля БП в живой ленте использовать не получится. Придется создавать переменную и копировать в нее значение поля.

2) в каждой итерации цикла получать url на очередной файл с помощью действия  Детально об объекте Диска, как в начале статьи

3) Создать переменную типа Многострочный текст, в которой формировать и склеивать все ссылки

На скрине используется конкатенация переменной (строки) Ссылки на документы (с id равным {=Variable:DocsLinks}) со ссылками на очередной файл, т.е.:

Скрин итератора:


Публичные ссылки

Данный функционал стал доступен в Битрикс24 начиная с версии модуля БП 20.0.700.

publink – модификатор для создания публичной ссылки на файл, не требующей авторизации на портале (описание).

Пример:

Публичная ссылка на файл: {=Document:PROPERTY_MY_FILE > publink}

В результате будет ссылку вида:

shortlink – модификатор для создания короткой публичной ссылки на файл, не требующей авторизации на портале (описание).

Пример:

Короткая публичная ссылка на файл: {=Document:PROPERTY_MY_FILE > shortlink}

В результате будет ссылку вида:

src  – модификатор для создания прямой публичной ссылки к файлу на сервере, не требующей авторизации на портале.

Пример:

Ссылка на файл – [url={=Document:PROPERTY_FILE > src}]link[/url]

В результате будет ссылку вида:

Внимание!

Использование такого модификатора на коробочных версиях может быть небезопасно.

Например, если данный файл загружает пользователь: он может загрузить HTML и по такой ссылке откроется в браузере страница вашего сайта, в которой пользователем может быть написан вредоносный код.

Но возможно обойти использованием CDN (как в облачной версии Битрикс24) или настройкой вашего сервера (правила .htaccess и т.п., запрещающие выполнение html/php файлов в папке из папки /upload/).

9 thoughts on “Ссылки на файлы в Битрикс24

  1. Подскажите, что делаю не так! ССылки на несколько файлов.
    Загружаю в множественную переменную 2 файла, далее следую Вашей инструкции, на выходе у меня получается 2 ссылки (смотря сколько файлов загрузил), только в каждой ссылки (пусть к 1 и 2 файлу отделенные , ). Что я делаю не так?

    1. Привет, тут не понял фразу:
      “только в каждой ссылки (пусть к 1 и 2 файлу отделенные , )”

  2. Привет! Спасибо за инструкцию.
    У меня что-то идёт не так:1. Запихиваю в множественную переменную типа “Файл” файлы из множественного поля в CRM. На всякий случай, записываю значение переменной в отчёт – отсюда видим, что файлы в неё нормально пихнулись.
    2. В итераторе запускаю данные об объекте, в поле “Папка или файл диска”, соответственно, указываю значение итерации – он ругается, что не найден исходный файл.
    Скрин ошибки
    ЧЯДНТ?

  3. Привет! Спасибо за инструкцию. У меня тут странная ошибка:1. Заполняю множественную переменную файлами из множественного поля в CRM, отчёт показывает, что переменная заполняется, кроме того, итератор проходит строго столько раз, сколько файлов в переменной – на этом этапе вроде нет ошибок. Переменная типа файл тоже, если что.
    2. Активити “Детально об объекте диска” ругается, что “Не найден исходный объект.”
    ЧЯДНТ?

  4. Благодарю, в инструкции упущен момент, что нужно сначала использовать активити “Загрузить на диск” внутри итератора, и уже из дополнительных результатов этого активити взять ID загруженного файла.

    Так всё работает.

    Ещё раз спасибо!

  5. Коллеги, приветствую!
    У меня тут затык в облачном Битрикс24 возник, может поможете…
    Суть его в том, что мне необходимо встроить в текст задачи по согласованию ссылку на файл, находящийся в сделке во множественном файловом поле, а не на диске.
    Перебрал кучу вариантов кода, но так и не смог найти подходящий

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *