[ELMA3] Создание ссылок на объекты ELMA в отчете
В данной статье будут рассмотрены способы организации гиперссылок на объекты системы ELMA в отчетах с использованием как стандартной формы Fast Report, так и Razor.
Данная статья будет полезна, если Вы хотите создать отчет, содержащий гиперссылки на документы, задачи, проекты, записи справочников и т.д. Далее мы рассмотрим три примера создания просто отчета с ссылками на одинаковые объекты системы с использованием простой формы FastReport, сложные отчет с ссылками на различные типы объектов системы с использованием FastReport и этот же отчет, но с использованием формы на языке Razor. Подробнее об отчетах можно прочитать в справке по ELMA3.
Ссылки на объекты системы
В системе ELMA ссылка на страницу формируется из адреса сервера, постоянной части, одинаковой для всех объектов определённого типа, и идентификатора объекта.
Посмотреть адрес ссылки на страницу можно в адресной строке браузера (рис. 1).
Рис. 1. Адресная строка браузера
Пример ссылки на задачу:
https://elma.testserv.com/Workflow/WorkflowTask/Execute/1003 ,где:
- https://elma.testserv.com/- адрес сервера (для локального сервера это может быть 127.0.0.1, но такой адрес будет работать только непосредственно на том компьютере, на котором запущен сервер);
- Workflow/WorkflowTask/Execute/ – постоянная часть для процессных задач;
- 1003 – идентификатор задачи.
ВНИМАНИЕ! Для разных типов задач постоянная часть отличается.
Несколько примеров постоянной части адреса:
- /Workflow/WorkflowTask/Execute/ - процессная задача;
- /Tasks/Task/Execute/ - задача-поручение;
- /Projects/ProjectTask/Execute/ - проектная задача;
- /Docflow/Route/RegistrationDocument/ - задача регистрации документа;
- /Common/Catalogs/ViewItem/10?uid=e13b9f1b-b664-432e-b01c-ad060cc0219a – запись справочника, имеющего Uid = e13b9f1b-b664-432e-b01c-ad060cc0219a с идентификатором записи Id = 10.
Пример создания ссылки на экземпляр процесса
Создание ссылки на экземпляр процесса осуществляется пользователем самостоятельно по следующей форме:
{BaseUrlSystem}/Processes/Monitor/Index?FilterId=0&Filter.Query=EqlFilter , где
- {BaseUrlSystem} – базовый URL-системы (не обязателен при использовании ссылки в отчете);
- /Processes/Monitor/Index?FilterId=0&Filter.Query= – постоянная часть ссылки, которая указывает на процесс из монитора процессов;
- EqlFilter – EQL- запрос. Подробнее см. статью Сложные фильтры, язык EQL.
Рассмотрим формирование ссылки на примере.
1. Создадим EQL- запрос (рис. 2).
Рис. 2. Монитор процессов. Создание EQL- запроса
Данный запрос позволяет выбрать экземпляры процесса P_CommercialProposal, которые были запущены пользователем с id=1.
2. Подставим созданный EQL-запрос . Ссылка будет выглядеть следующим образом:
http://127.0.0.1:8002/Processes/Monitor/Index?FilterId=0&Filter.Query=Id in (from P_CommercialProposal select WorkflowInstance where Iniciator = 1)
3. При вводе ссылки в адресную строку отобразятся экземпляры процессов (рис. 3) согласно заданному EQL-запросу.
Рис. 3. Монитор процессов. Отображение экземпляров процесса
После отображения экземпляров процесса ссылка будет выглядеть следующим образом:
http://127.0.0.1:8002/Processes/Monitor/Index?FilterId=0&Filter.Query=Id%20in%20(from%20P_CommercialProposal%20select%20WorkflowInstance%20where%20Iniciator%20=%201)
В сформировавшейся ссылке обычные пробелы будут заменены на %20.
Простой отчет с использованием FastReport
Рассмотрим пример отчета, выводящего все документы, находящиеся в архиве. SQL запрос на выборку данных для отчета представлен на рис. 4.
Рис. 4. Вкладка "Источники данных". SQL-запрос
select DmsObject.Name , Document.Id
from Document
Left join DmsObject on DmsObject.Id=Document.Id
Where IsArchived=’true’;
Подробнее о составлении запросов для формирования отчетов можно прочитать в этой статье.
Перейдем на вкладку Макет отчета и вынесем столбцы Id и Name на форму FastReport (рис. 5).
Рис. 5. Вкладка "Макет отчета"
Для размещения гиперссылки на объект, выберем поле Name в области данных отчета (поле в середине), щелкнем правой кнопкой мыши и выберем Hyperlink (рис. 6).
Рис. 6. Вкладка "Макет отчета". Контекстное меню
В появившемся окне на вкладке URL (рис. 7) мы можем задать постоянную ссылку на веб-страницу в поле Specify an URL (example: http://www.url.com) или выражение, вычисляющее адрес гиперссылки в поле or enter the expression that returns an URL:
Так как ссылки на каждый документ отличаются идентификатором, нам потребуется ввести во второе поле формулу, вычисляющую адрес. Формула состоит из постоянной части в двойных кавычках, знака «плюс» и идентификатора объекта:
"/Documents/Document/View/"+[Данные.Id]
Для более простого ввода формулы можно нажать на пиктограмму , расположенную справа. При этом появится окно Edit expression (рис. 8), в котором можно выносить данные, системные переменные и математические и иные функции мышью из колонки справа.
Рис. 8. Диалоговое окно "Edit Expression"
Установите флажок Modify the object’s appearance so it will look like a clickable link (рис. 7) и нажмите кнопку ОК, чтобы объект приобрел подчеркивание и выглядел как гиперссылка (рис. 9).
Рис. 9. Диалоговое окно "Edit Hyperlink"
Запустите отладку и в веб-приложении будет отображен отчет (рис. 10), в котором имена документов будут выглядеть как гиперссылки, а нажатие на них открывает страницу соответствующего документа.
Рис. 10. Отображение отчета в веб- приложении
Данная статья является первой из трех статьей о создании ссылок в отчетах
О том, как сделать отчет с ссылками на разные типы объектов с использованием стандартной формы FastReport можно прочитать в этой статье.
Использование ссылок в отчете с использованием разметки Razor подробно описано в этой статье.