Перейти к содержанию

Пользовательские источники данных

Инструмент предназначен для работы с произвольными источниками данных как из самой системы, так и получаемых через интеграции: просмотр, фильтрация, выбор полей, выгрузка в excel. Произвольные источники позволяют в интерфейсе "Первой Формы" работать с большими объемами данных и сложными аналитическими отчетностями.

Добавление и редактирование источника данных

Для добавления нового источника данных нажмите кнопку Добавить — откроется модальное окно добавления нового источника данных. Обязательные для заполнения поля выделены красным цветом.

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

ℹ️ При создании нового источника необходимо настроить и сохранить колонки

Для перехода в режим редактирования нажмите на строку с нужным источником — откроется модальное окно настроек произвольного источника.

Общие

Общие настройки произвольного источника:

Параметр Описание
Тип источника данных Доступные варианты:

-Таблица -Функция -Хранимая процедура (доступно только на MSSQL) -Представление -Хранимая процедура без явного ResultSetВ качестве источника данных можно указать процедуру с параметрами или иной произвольный SQL запрос.

*Хранимая процедура без явного ResultSet используется, когда в зависимости от контекста меняется количество возвращаемых колонок. Этот источник не описывает структуру возвращаемых данных и не определяет количество столбцов, в связи с чем часть пользовательских функций, таких как сортировка, фильтрация, группировка, разбиение на страницы будут недоступны.

При выборе функции или хранимой процедуры в качестве типа источника данных справа от поля появляется значок — нажатие на него отображает окно с примером кода для создания необходимой функции или процедуры.

ℹ️ Обратите внимание: при изменении состава колонок в хранимой процедуре или функции произвольного источника требуется обновить колонки на вкладке Колонки.

|

Пример функции:

CREATE FUNCTION customDataSourceFunc ( @UserId int null ) RETURNS TABLE AS RETURN ( SELECT DisplayName, LastName from Users )

Пример хранимой процедуры:

CREATE PROCEDURE customDataSourceProc @UserId int null AS BEGIN SELECT DisplayName, LastName from Users END
| Источник данных* | Источник данных в БД | | --- | --- | | Загружать данные при открытии | Если настройка неактивна, при открытии будет отображаться пустой список с уведомлением: Для отображения данных, нажмите "Загрузить" |

По умолчанию активировано. | Название | Название произвольного источника | | --- | --- | | Алиас* | Наименование источника (псевдоним) | | Путь | Полный путь до произвольного источника с учетом текущего алиаса. Заполняется автоматически после указания алиаса | | Описание | Описание произвольного источника | | Группы | Список групп, которым выданы права на источник | | Специальный тип | Произвольный источник можно открыть как отдельным роутом, так и из БИ. |

При выборе типа "Блок используется" к пути добавляется ds/{alias}?taskId= Обязательные параметры табличной функции для БИ: -UserID (int) — ID пользователя. -TaskID (int) — ID задачи. [Пример табличной функции для БИ]

call dbo.droproutineifexists(\'dbo\', \'fn_ds_bi\');

create or replace function dbo.fn_ds_bi

(

 p_userid   int,

 p_taskid   int = NULL::integer

)

returns record

as

$routine_text$

 select

                 epHistory.extparamvalue,

                 epHistory.comment,

                 coalesce(epHistory.extparamoldvalue, \'\') as extparamoldvalue,

                 u.DisplayName as username,

                 coalesce(nullif(epInSubcat.ExtParamName,\'\'),ep.ExtParamName) as ExtParamName,

                 epHistory.dt,

                 epHistory.taskid,

                 ep.extparamtype

 from

                 dbo.extparamhistory epHistory

                 inner join

                 dbo.tasks t

                         on t.taskid = epHistory.taskid

                 left join

                 dbo.users u

                         on u.userid = epHistory.userid

                 inner join

                 dbo.extparams ep

                         on ep.extparamid = epHistory.extparamid

                 left outer join

                 dbo.extparamsinsubcat epInSubcat

                         on epInSubcat.subcatid = t.subcatid

                         and epInSubcat.extparamid = epHistory.extparamid

                 left outer join

                 (

                         select

                                         epPermission.extparamid,

                                         epPermission.subcatid,

                                         bool_or(epPermission.AllowEdit) as AllowEdit

                         from

                                         dbo.ExtParamPermission epPermission

                                         inner join

                                         dbo.usergroups ug

                                                 on ug.groupid = epPermission.groupid

                                                 and  ug.userid = p_userid

                         group by

                                         epPermission.extparamid,

                                         epPermission.subcatid

                 ) prm

                         on prm.subcatid = t.subcatid

                         and ep.extparamid = prm.extparamid

 where

                 epInSubcat.Id is not null

                 and

                 (

                         coalesce(epInSubcat.AccessControl,0) in (0,3,4,5)

                         or

                         prm.AllowEdit is not null

                 )

                 and epHistory.taskid = p_taskid;

$routine_text$

language sql;

Особенности работы с хранимой процедурой в качестве источника данных

Источником данных может являться хранимая процедура SQL. К таким процедурам предъявляется ряд требований.

Входные параметры хранимой процедуры:

Обязательно: \@UserID (int) — ID текущего пользователя.

Опционально: \@TaskID (int) — ID текущей задачи

Если процедура передает другие параметры, они не должны быть обязательными, т.к. при вычислении им будет передано значение NULL.

Хранимая процедура может возвращать произвольные данные и произвольный набор колонок. Названия колонок должны быть на латинице без пробелов

Пример процедуры:

create PROCEDURE [dbo.\bi_sp_simple_example]

@Userid int null,
@TaskID int null

AS
BEGIN
 declare @result table
                 Taskid                int null,
                 Userid                int null,
                 SomeText        varchar(max) null
 );

 insert into @result
 select        top 10
                 t.TaskID,
                 t.UserID,
                 t.Description
 from
                 Tasks t with(nolock)
 where
                 t.TaskID = @TaskID;

 select
                 TaskID,
                 UserID,
                 SomeText
 from
                 @result;
END
Колонки

Во вкладке доступны настройки колонок табличного вида.

По кнопке Обновить колонки данные будут обновлены в соответствии с указанным источником.

По кнопке Сброс настроек всех пользователей персональные настройки табличного вида пользователей будут сброшены к виду по умолчанию.

Настройки колонок:

Параметр Описание
Колонка в БД Название колонки в БД. Подтягивается автоматически, поле недоступно для редактирования
Название Название колонки.

ℹ️ При настройке произвольного источника необходимо использовать значения колонок именно в том виде (с сохранением регистра), в котором они передаются в поле Колонка в БД

Рядом с названием отображается иконка локализации — по клику на нее открывается окно для задания названий колонки в разных локалях.

ℹ️ Если необходимо открывать ссылки, в название колонки необходимо указать TaskID

Параметр Описание
Тип Тип данных колонки. Доступные варианты:
-Число
-Строка
-Дата
-Дата и время
-Html
-Html без тегов
-Чекбокс
Настройки фильтра Доступные типы фильтра: Базовый и Мультивыбор. Фильтр с типом "Мультивыбор" для колонки в списке задач категории позволяет дополнительно выбирать несколько значений из множества.\

Для мультивыбора необходимо указать источник фильтра: |

[Пример источника фильтра]

| Функция возвращает таблицу с двумя колонками name и value, предназначенную для использования в интерфейсе фильтрации. Колонка name содержит значения для отображения в пользовательском интерфейсе, а колонка value хранит значения, которые используются для фактической фильтрации данных. В интерфейсе пользователь видит значения из колонки name, и при выборе конкретного значения система применяет фильтр по соответствующему значению из колонки value.

| Пример функции:

CREATE OR ALTER FUNCTION [dbo.\testBoytsova\ (@UserId int)]

RETURNS @Table TABLE(

 [name\ nvarchar(300),]

 [value\ nvarchar(300)]

)

AS

Begin

 insert into @Table ([name\, \value)]

     select s.Description,s.Description

     from States s

     where s.StateID IN (1,2,3,4)

RETURN

END
| Доступно | Доступ поля для пользователей | | Детализируется | Клик по строке в списке отобразит целиком значения столбцов, для которых активна настройка |

Детализация по колонкам Title, Genre, Year Действия

Позволяет добавлять кастомные кнопки действий со строкой, которые отобржаются в отдельной колонке "Действия".

Настройка кнопок действий в колонке задается в формате JSON со следующими параметрами:

  • icon —  Название иконки из набора, она будет отображаться на кнопке. Список доступных иконок вы можете найти по ссылке: /spa/icons

  • name —  Название кнопки.

  • showInMenu —  Отображение кнопки в меню. Возможные значения: true (отображать) / false (не отображать).

  • showInActions — Отображение кнопки в тулбаре действий. Возможные значения: true (отображать) / false (не отображать).

  • type — Тип кнопки. Возможные значения: OpenUrl — Открыть ссылку из параметра url, Request — Запрос, OpenComponent — Открыть компонент (в настоящее время не поддерживается).

  • options:

ourl — Ссылка, которая открывается при нажатии на кнопку. Помимо статичной ссылки вы можете задать ссылку на конкретную строку таблицы в формате {params:\column}, вместо \column\ указывается название колонки, из которой необходимо получить данные в этой строке (см.пример).

ℹ️ Начиная с версии 2.262 Весы, параметры должны передаваться исключительно в нижнем регистре. Пример: /admin/extparams/ExtParamsMainFrame.aspx?ExtParamID={params:extparamid}

До версии 2.261 допустимо указание параметров в верхнем регистре, действие будет корректно обрабатывать запросы следующего формата: /admin/extparams/ExtParamsMainFrame.aspx?ExtParamID={params:ExtParamID} oopenMode — Режим отображения. Возможные значения: CurrentWindow — в текущем окне, NewWindow — в новом окне, ModalWindow — в модальном окне.

oparams  --- может содержать элемент http-запроса: headers, credentials, body и т.п. Наиболее распространенное значение:

▪method — API-метод (GET, POST).

oshowResponse — Отображение результата запроса. Возможные значения: true (отображать) / false (не отображать).

oisAvailable — Настройка доступа в формате: "(params, ctx) => params.id === 123 && ctx.userId === 11".

Пример:

[\  {   "icon": "vh-tasks-add-24",   "name": "Получить кэш",   "showInMenu": null,   "showInActions": null,   "type": "Request",   "options": {     "url": "/spa/ds/films",     "params": {       "method": "POST"     },     "showResponse": true,     "isAvailable": "(params, ctx) => params.id == 3 && ctx.userId == 8323"   }  },  {   "icon": "",   "name": "Открыть группу",   "showInMenu": null,   "showInActions": null,   "type": "OpenUrl",   "options": {     "url": "/spa/ds/films?f_id={params:id}",     "openMode": "ModalWindow"   }  } По кнопке справа доступен пример JSON:

Пример отображения кнопок действий в пользовательском интерфейсе:

Настройки тулбара

Позволяет добавлять кастомные кнопки действий в панели инструментов.

Настройка кнопок в панели инструментов задается в формате JSON со следующими параметрами:

  • icon —  Название иконки из набора, она будет отображаться на кнопке панели инструментов. Список доступных иконок вы можете найти по ссылке: /spa/icons

  • name —  Название кнопки.

  • showInMenu —  Отображение кнопки в меню. Возможные значения: true (отображать) / false (не отображать).

  • showInActions — Отображение кнопки в тулбаре действий. Возможные значения: true (отображать) / false (не отображать).

  • type — Тип кнопки. Возможные значения: OpenUrl — Открыть ссылку из параметра url, Request — Запрос, OpenComponent — Открыть компонент (в настоящее время не поддерживается).

  • options:

ourl — Ссылка, которая открывается при нажатии на кнопку.

oopenMode — Режим отображения. Возможные значения: CurrentWindow — в текущем окне, NewWindow — в новом окне, ModalWindow — в модальном окне.

oparams (может содержать элемент http-запроса: headers, credentials, body и т.п. Наиболее распространенное значение:

▪method — API-метод (GET, POST).

oshowResponse — Отображение результата запроса. Возможные значения: true (отображать) / false (не отображать).

oisAvailable — Настройка доступа в формате: "(params, ctx) => params.id === 123 && ctx.userId === 11".

Пример:

[\  {   "icon": "vh-tasks-add-24",   "name": "Группы",   "showInMenu": null,   "showInActions": null,   "type": "OpenUrl",   "options": {     "url": "/groups.aspx",     "openMode": "ModalWindow"  }  },  {   "icon": "vh-tasks-add-24",   "name": "Получить настройки",   "showInMenu": null,   "showInActions": null,   "type": "Request",   "options": {     "url": "/app-settings.json",     "params": {       "method": "GET"     },     "showResponse": true  }  } По кнопке справа доступен пример JSON:

Пример отображения кнопок действий в пользовательском интерфейсе:

Общий вид

Во вкладке Общий вид отображается то, как будет выглядеть табличный вид по выбранному источнику данных в пользовательском интерфейсе.

Панель инструментов табличного вида:

Кнопка Описание
**Обновить** | Обновление данных |
**Колонки** | Выбор нужного состава колонок для отображения |
**Режим выбора** | Переход в режим выбора задач, когда рядом с каждой задачей отображается флажок для выбора. В дальнейшем над выбранными задачами могут выполняться действия с помощью [пакетной обработки](../../user_guide/favorites-and-categories/views/paketnaya_obrab.md) |
**Пакетная обработка** | [Пакетная обработка](../../user_guide/favorites-and-categories/views/paketnaya_obrab.md) |
**В Excel** | Выгрузка в файл Excel |
**Сбросить настройки** | Сброс персональных настроек табличного представления, сделанных пользователем (сортировка, группировка, список и порядок колонок), и возврат к настройкам таблицы, определённым по умолчанию для данной категории/раздела системным администратором |

ℹ️ В системе нельзя экспортировать более 50 000 задач!

После внесения изменений нажмите кнопку Сохранить.

Удаление настроек

Чтобы удалить источник данных, нажмите кнопку в конце соответствующей строки. Для подтверждения удаления нажмите Ок. Если действие было сделано ошибочно, нажмите Отмена.