Использование отчётов
Отчёт — механизм, предоставляющий возможность получения прямого доступ к БД Docsvision с целью получения сложных выборок данных, повышения производительности работы Решения, получения данных из внешней БД и т.п.
Отчёт работает с данными, минуя модели безопасности Docsvision, поэтому задача обеспечения защиты данных, в данном случае, возлагается на разработчика. Создание отчётов требует от разработчика понимания внутреннего устройства БД Docsvision. |
Создание отчёта
-
Разработка SQL-процедуры, реализующей требуемый механизм взаимодействие с данными в БД.
-
Настройка отчёта в схеме библиотеки карточек.
BEGIN
SELECT tblMy.Info1, tblMy.Info2
FROM [dvtable_{SOME_DV_TABLE_GUID_HERE}] tblMy
WHERE tblMy.Param1 = @Param1 and tblMy.Param2 = @Param2
ORDER BY tblMy.Info2
END
В процедуре можно использовать параметры (с символом @
), значения которых будут переданы при вызове отчёта. Параметры объявлять не требуется.
Процедура может возвращать или не возвращать значения. Возвращаемые значения могут представлять собой единственное значение или таблица.
Процедура должна размещаться в блоке BEGIN
.. END
.
Заголовок хранимой процедуры и описания параметров будут сгененированы автоматически.
Процедура должна быть сохранена в файл .sql
в подпапку (например, "Sql") в одном каталоге со схемой библиотеки карточек.
CardLib
| MyCardLib.xml
| MyCard.xml
|--Sql
| MyProcedure1.sql
| MyProcedure1.sql
Регистрация отчёта в схеме библиотеки карточек выполняется с помощью программы "CardManager". Инструкция по работе с программой приведена в Руководстве пользователя Resource Kit, см в центре загрузок Docsvision.
В качестве примера далее будет выполнена регистрация отчёта GetLogMessages
, возвращающего записи из журнала Docsvision за определённый период:
BEGIN
SELECT appLog.EmployeeID, appLog.Date, appLog.Data
FROM [dbo].[dvsys_log_application] appLog WITH(NOLOCK)
INNER JOIN [dbo].dvsys_users users WITH(NOLOCK)
ON (users.UserID = appLog.UserID)
WHERE appLog.Date BETWEEN @DateFrom AND @DateTo
END
-
Откройте в программе "CardManager" свойства собственной библиотеки карточек и перейдите на вкладку Reports.
Рисунок 1. Вкладка настройки отчётов библиотеки карточек в программе "CardManager" -
Добавьте новый отчёт в схему и укажите основные свойства отчёта.
-
Нажмите кнопку Add в блоке Procedures. В список Procedures будет добавлена новая запись.
-
В поле Alias введите псевдоним отчёта.
-
В таблице Названия введите локализованные названия отчёта.
В поле ID будет указан автоматически сгенерированный идентификатор отчёта, по которому отчёт может быть вызван с использованием API.
Рисунок 2. Пример настройки основных свойств отчёта
-
-
Добавьте в отчёт файлы с SQL процедурами на вкладке SQL files.
-
Нажмите кнопку Add на данной вкладке. В список Files будет добавлена новая запись.
-
В поле SQL file выберите разработанный ранее SQL-файл с процедурой отчёта. Приведите путь к файлу к относительному виду.
-
В списке Server type выберите тип СУБД, под управлением которой работает БД Docsvision, для которой создаётся отчёт: Microsoft SQL или PostgreSQL.
Рисунок 3. Пример настройки файлов отчёта
-
-
Настройте параметры отчёта на вкладке Parameters.
-
Нажмите кнопку Add на данной странице. В список Parameters будет добавлена новая запись.
-
В поле Parameter name введите название параметра, которое ожидается в соответствии с разработанной SQL-процедурой.
-
В поле Parameter type укажите тип параметра, соответствующий типу параметра, используемого в SQL-процедуре.
-
Аналогичным образом добавьте все параметры, ожидаемые разработанной SQL-процедурой.
Рисунок 4. Пример настройки параметров отчёта
-
-
Настройте возвращаемые данные отчёта на вкладке Report result.
-
Выберите формат возвращаемого значения:
-
Scalar result — если возвращается единственное значение.
-
TableResult — если возвращается коллекция значений.
-
-
Если выбран формат Scalar result, укажите:
-
Precision, Scale, Size — точность, масштаб и длина (см. подробнее на сайте Microsoft.).
-
Nullable — если может быть пустым.
-
Если выбран формат TableResult:
-
Нажмите кнопку Add. В список Columns будет добавлена новая запись.
-
В поле Name введите название возвращаемого процедурой поля.
-
Укажите (см. описание выше): Data type, Precision, Scale, Size и Nullable.
-
Аналогичным образом добавьте все возвращаемые процедурой поля. Данное условие критически важно при работе с PostgreSQL.
Рисунок 5. Пример настройки результатов отчёта
-
-
-
Сохраните настройки библиотеки карточек и загрузите её в Docsvision стандартным образом.
-
Перезапустите сервер Docsvision.
Вызов отчёта
Для работы с отчётами API Docsvision предоставляет менеджер отчётов типа ReportManager
.
Все отчёты содержатся в поле Reports класса ReportManager
.
var report = userSession.ReportManager.Reports[Guid.Parse("886d96f1-e92f-44aa-b22d-9b324aeb5abc")];
Parameters
:report.Parameters["DateFrom"].Value = DateTime.Parse("01.01.2012");
report.Parameters["DateTo"].Value = DateTime.Parse("01.01.2019");
Выполнение отчёта запускается методом report.GetData()
, который возвращает набор строк с результатами выполнения.
Следующий код демонстрирует пример вызова разработанного отчёта с отображением записей журнала Docsvision в консоли.
var report = userSession.ReportManager.Reports[Guid.Parse("886d96f1-e92f-44aa-b22d-9b324aeb5abc")]; (1)
report.Parameters["DateFrom"].Value = DateTime.Parse("01.01.2012");
report.Parameters["DateTo"].Value = DateTime.Parse("01.01.2019"); (2)
InfoRowCollection results = report.GetData(); (3)
foreach (InfoRow result in results)
{
Console.WriteLine("{0} | {1} | {2}", result["EmployeeID"].ToString(),result["Date"].ToString(), result["Data"].ToString()); (4)
}
1 | Получение отчёта с идентификатором 886d96f1-e92f-44aa-b22d-9b324aeb5abc . |
2 | Заполнения параметров отчёта — начальной и конечной даты выборки. |
3 | Выполнение отчёта. |
4 | Отображение результатов выполнения отчёта в консоли. |
Способ отображения данных отчёта в пользовательском интерфейсе реализуется разработчиком самостоятельно.