Атрибут «Документ». Формирование ссылки на файл
Введение
Comindware Platform позволяет прикрепить любые файлы к атрибуту типа «Документ».
Атрибут типа «Документ» хранит не сами файлы, а ссылки на них.
Эти файлы доступны для скачивания по прямой ссылке без предоставления доступа к атрибуту типа «Документ».
Здесь представлен пример настройки текстового атрибута в формате HTML, в который помещаются ссылки на файлы, загруженные в атрибут типа «Документ», с помощью выражения N3.
Структура атрибута типа «Документ»
- Атрибут типа «Документ» хранит одну или несколько ссылок на записи (документы) в системном шаблоне документа, к которым прикрепляются файлы (например, загруженные пользователями).
- В шаблоне документа имеется атрибут
currentRevision(текущая версия), который хранит ссылку на запись в системном шаблоне версии. -
В шаблоне версии имеются атрибуты
title(имя) иcontent(содержимое), которые хранят имя файла и ссылку на файл, физически хранящийся в папкеStreamsна сервере. Чтобы считать файл из атрибута типа «Документ» с помощью выражения N3, необходимо: -
получить объект с атрибутом:
("TemplateSystemName" "DocumentAttributeSystemName") object:findProperty ?DocumentAttribute. -
из объекта с атрибутом получить значение атрибута в текущей записи:
?item documentAttribute ?documentAttributeValue. -
из значения атрибута получить текущую версию документа:
?documentAttributeValue document:revision ?revision. -
из версии получить содержимое файла в формате
base64:?revision document:content ?content. -
из версии получить имя файла:
?revision document:title ?title. -
С помощью языка формул из атрибута типа «Документ» можно получить следующие данные:
- текущую ревизию документа:
$AttributeDocument->currentRevision; - имя файла из ревизии:
$AttributeDocument->currentRevision->revisionFilename; - относительную ссылку из ревизии:
$AttributeDocument->currentRevision->httpUri.
- текущую ревизию документа:
Прикладная задача
Имеется шаблон с атрибутом типа «Документ», к которому прикрепляются различные файлы.
Требуется настроить поле, в котором будут перечислены имена прикреплённых файлов со ссылками для их скачивания.
Исходные данные
В шаблоне «Заявки» (системное имя Заявки) имеется атрибут «Вложения» со следующими свойствами:
- Тип: документ
- Системное имя: Вложения
- Хранить несколько значений: флажок установлен
Настройка шаблона
-
Создайте текстовый атрибут со следующими свойствами:
- Название: Ссылки для скачивания
-
Формат отображения: HTML-текст
Важно!
Если задать для атрибута другой формат отображения, HTML-теги будут отображаться как обычный текст.
-
Вычислять автоматически: флажок установлен
-
Вычисляемое значение:
- Формула:
# Из атрибута «Вложения» (Вложения) собираем URI и имена всех прикреплённых файлов# и соединяем в HTML с разделителем <br/># 'https://host-name' — имя хоста Comindware PlatformFORMAT("<ul>{0}</u>",LIST(JOIN(" ", from a in $Вложения selectFORMAT("<a href='https://host-name{0}'>{1}</a>",LIST(a->currentRevision->httpUri, a->currentRevision->revisionFilename)))))или
- N3
# Импортируем функции для работы# с документами и строками@prefix object: <http://comindware.com/ontology/object#>.@prefix document: <http://comindware.com/ontology/document#>.@prefix cmwstring: <http://comindware.com/logics/string#>.@prefix string: <http://www.w3.org/2000/10/swap/string#>.{# Находим атрибут «Вложения» и помещаем в ?filesAttribute("Заявки" "Вложения") object:findProperty ?filesAttribute.# Запускаем циклfrom {# Находим содержимое ?filesAttribute в текущей# записи и помещаем в ?file?item ?filesAttribute ?file.# Получаем текущую ревизию документа и# помещаем в ?fileRevision?file document:currentRevision ?fileRevision.# Получаем ссылку на файл без имени хоста# и помещаем в ?fileUri?fileRevision document:httpUri ?fileUri.# Помещаем имя файла в ?fileName?fileRevision document:name ?fileName.# Формируем строки с именами файлов и ссылками на них# и помещаем в ?formatUri# 'https://host-name' — имя хоста Comindware Platform("<li><a href='https://host-name{0}'>{1}</a></li>" ?fileUri ?fileName) string:format ?formatUri.}# Формируем ?uriList из ?formatUri.select ?formatUri -> ?uriList.# Формируем из ?uriList маркированный список# и возвращаем его в значение атрибута(" " ?uriList) cmwstring:join ?listItems.("<ul>{0}</u>" ?listItems) cmwstring:format ?value.}
-
Поместите на форму атрибут «Ссылки для скачивания».
Тестирование
- Создайте запись в шаблоне «Заявки».
- Прикрепите несколько файлов к атрибуту «Вложения».
- Сохраните запись.
- В поле атрибута «Ссылки для скачивания» должен отобразиться маркированный список со ссылками для скачивания прикреплённых файлов.
- Проверьте, скачиваются ли файлы.
Эта статья была полезна 1 чел.