Бизнес-процессы: получить ссылку на загруженный файл (картинку) в любой момент выполнения
Дано:
Некий бизнес-процесс (далее по тексту - БП), одним из параметров которого служит картинка (скан счета, больничного листа, фото сотрудника - и т п)
Бизнес-процесс организован на инфоблоке (далее по тексту - ИБ) типа "Список", файл хранится в одном из свойств.
Требуется:
на определенном шаге выполнения выводить пользователю сообщение (письмо), в котором была бы ссылка на просмотр и скачивание данного вложения.
Решение:
1. Присвоим свойству, в котором хранится файл, код PHOTO
2. Создадим в БП переменную photo_link, куда на первом шаге запишем нашу ссылку.
3. PHP - код получения ссылки:
CModule::IncludeModule('iblock'); $IBLOCK_ID ={=Document:IBLOCK_ID}; $REC_ID ={=Document:ID}; $db_props = CIBlockElement::GetProperty($IBLOCK_ID, $REC_ID, array("sort" => "asc"), Array("CODE"=>"PHOTO")); if($ar_props = $db_props->Fetch()) {$str =$ar_props["VALUE"]; $link = "https://".$_SERVER["HTTP_HOST"]."/services/lists/".$IBLOCK_ID."/file/0/".$REC_ID."/PROPERTY_196/".$str."/"; $rootActivity = $this->GetRootActivity(); $rootActivity->SetVariable("photo_link",$link); } else $str = ""; |
Пояснения:
CModule::IncludeModule('iblock'); |
$IBLOCK_ID ={=Document:IBLOCK_ID}; $REC_ID ={=Document:ID}; |
$REC_ID |
$db_props = CIBlockElement::GetProperty($IBLOCK_ID, $REC_ID, array("sort" => "asc"), Array("CODE"=>"PHOTO")); |
if($ar_props = $db_props->Fetch()) {$str =$ar_props["VALUE"]; |
Далее - собственно, формирование ссылки:
$link = "https://".$_SERVER["HTTP_HOST"]."/services/lists/".$IBLOCK_ID."/file/0/".$REC_ID."/PROPERTY_196/".$str."/"; |
протокол HTTPS - актуален для данного конкретного случая, возможно, у Вас в ссылке будет HTTP. .$_SERVER["HTTP_HOST"] - корневой директорий
Переменные $IBLOCK_ID, $REC_ID и $str - получены выше по коду, остальные части текста - одинаковы для всех случаев, кроме PROPERTY_196
Здесь в каждом конкретном случае выражение будет формироваться по принципу PROPERTY_#ID свойства#.
ID свойства для Вашего списка можно узнать, если открыть соответствующий инфоблок в админке в режиме редактирования свойств.
Далее - записываем полученное значение в переменную photo_link
$rootActivity = $this->GetRootActivity(); $rootActivity->SetVariable("photo_link",$link); |