Пример настройки отчета в службе 09 по республике Татарстан

Пример настройки отчета в службе 09 по республике Татарстан


Внимание! Данный отчет и статья были написаны для одной из первых версий Infinity X в январе 2012 года, некоторые возможности или функции возможно были изменены в новых версиях. В данной документации информация приведена для показа примера решения реальной задачи силами редактора отчета.

Сall-центр "Службы 09" представляет собой гибридное решение телефония которого и интеллектуальная часть сценариев реализовано на базе распределенных серверов телефонии Infinity 4, вся статистика и отчетность ведется в внешней СУБД MS SQL, настройка серверов, пользователей, групп и квалификаций осуществляется через «Infinity Call-центр X», там же ведется работа по статистике и отчетности комплекса в целом. Вынос обработки статистики и мониторинга в «Infinity Call-центр X» вполне оправдан тем, что на каждом из серверов телефонии Infinity 4 аккумулируется только собственная статистика, и только общая статистика со всех серверов находится в единой внешней базе на СУБД MS SQL.

Мощный инструментарий «Infinity Call-центр X», предназначенный для работы с отчетами, позволил сформировать все виды отчетов, которые были необходимы заказчику. Первоначально в «Infinity Call-центр X» были повторены все стандартные отчеты, которые присутствуют в call-центре Infinity 4, после чего был создан дополнительный ряд отчетов, необходимый для "Службы 09". 

Рассмотрим пример создания отчета. 
Данные, на основе которых строится отчет, являются результатом SQL запроса к таблице статистики "dbo.S_USERSTATUSES" в базе данных "INFDATA_Stat" в MS SQL. По аналогии с примером, описанным в разделе "Интеграция с базами данных", создаем системный DSN ODBC источник и называем его "INFDATA_SQL_Stat". 
В разделе "Базы данных" рабочего места администратора создаем объект подключения к базе данных "INFDATA_Stat": 
image001.png 
Во вкладке "Основные" настройки подключения к базе данных указываем идентификатор "Infinity4.Statistics" и наименование "Infinity4.Статистика" (именно оно будет потом фигурировать в качестве имени базы данных во всех объектах «Infinity Call-центр X»). Указываем, что используется драйвер подключения ODBC, в качестве строки подключения указываем наименование системного DSN -- "INFDATA_SQL_Stat", там же вводим имя пользователя и пароль для подключения. Вкладку "Дополнительные" и "Описание" не заполняем. 
В разделе "Администрирование" / "Редактор отчетов" выбираем нужный раздел в котором будет располагаться отчет и создаем новый отчет ("Создать отчет"). 
В разделе "Основное" свойств отчета заполняем поля "Наименование" и "Полное наименование". Автоматическое обновление отчета нам не требуется, а из всех элементов отчета оставляем только два -- фильтр и таблицу. Элемент отчета "Фильтр" отвечает за входные параметры отчета (например, диапазон дат, выбор конкретного оператора и пр.). Включенный элемент "Таблица" указывает на то, что данные отчета будут доступны в табличной форме. Для данного конкретного отчета табличное представление данных более чем достаточно и другие виды представления отчета на требуются. 
image003.png
На разделе Данные остановимся подробнее. Тип данных указываем "SQL-запрос" и ниже вводим тело самого запроса. 
image005.png
Тело запроса представляет собой типичный SQL-запрос в терминах той базы данных, к которой он производится. Остановимся на теле запроса подробнее, поскольку в него надо передать входные данные, отвечающие за параметры запроса. А именно, диапазон дат за который будет построен отчет, и, при необходимости, конкретного пользователя или конкретный статус по которому надо построить отчет. Модуль "Фильтр", включенный в элементах отчета автоматически находит в теле запроса все переменные, перед которыми стоит знак двоеточие, и определяет их как входные параметры запроса. Рассмотрим тело запроса с комментариями:


declare @DateStart datetime -- переменная типа дата-время, определяющая начало периода, должна быть задана обязательно 
declare @DateStop datetime -- переменная типа дата-время, определяющая конец периода, должна быть задана обязательно 
declare @idu bigint -- переменная типа bigint, определяющая пользователя по которому строится отчет, может быть не задана 
declare @ids int -- переменная типа int, определяющая статус по которому строится отчет, может быть не задана 

set @DateStart = cast(:TimeStartFrom as datetime) -- присвоение переменной @DateStart значения входного параметра :TimeStartFrom.
set @DateStop = cast(:TimeStartTo as datetime) -- присвоение переменной @DateStop значения входного параметра :TimeStartTo. 
set @idu = cast(:iduser as bigint) -- присвоение переменной @idu значения входного параметра :iduser. 
set @ids = cast(:idstatus as int) -- присвоение переменной @ids значения входного параметра :idstatus. 

-- формат передачи данных в запрос таков, что если какой либо из параметров будет не задан, то соответствующая ему переменная примет значение null 
-- Таким образом, если: 
-- параметр :TimeStartFrom будет не задан, то переменная @DateStart примет значение null 
-- параметр :TimeStartTo будет не задан, то переменная @DateStop примет значение null 
-- параметр :iduser будет не задан, то переменная @idu примет значение null 
-- параметр :idstatus будет не задан, то переменная @ids примет значение null 

select 
GLOBAL_ID, 
GLOBAL_IDUSER, 
DATETIME, 
OLDSTATUS, 
NEWSTATUS, 
OLD_DATETIME, 
ABSOLUTE_STATUS, 
STATUS_DURATION 
into 
#TempTable 
FROM 
[INFDATA_STAT].[dbo].[S_USERSTATUSES] -- данные выбираются из таблицы [S_USERSTATUSES] базы данных [INFDATA_STAT] в MS SQL 
where 
[OLD_DATETIME] <= @DateStop -- Сравнение диапазона дат с переменной входного параметра даты конца периода 
and [DATETIME] >= @DateStart -- Сравнение диапазона дат с переменной входного параметра даты окончания периода 
and (([GLOBAL_IDUSER] = @idu) or (@idu is null)) -- Если @idu совпадает с данными в поле [GLOBAL_IDUSER] или не задано 
and (([ABSOLUTE_STATUS] = @ids ) or (@ids is null)) -- Если @ids совпадает с данными в поле [ABSOLUTE_STATUS] или не задано 

update 
#TempTable 
set 
OLD_DATETIME = @DateStart, 
[STATUS_DURATION] = [DATETIME] - @DateStart 
where 
OLD_DATETIME < @DateStart 

update 
#TempTable 
set 
[DATETIME] = @DateStop, 
[STATUS_DURATION] = @DateStop - [OLD_DATETIME] 
where 
[DATETIME] > @DateStop 

select 
[GLOBAL_IDUSER], -- идентификатор пользователя в терминах «Infinity Call-центр X» 
[ABSOLUTE_STATUS], -- идентификатор статуса пользователя в терминах Infinity4 
cast(SUM(CAST([STATUS_DURATION] as float )) as datetime) as DURATION -- суммируем данные по колонке [STATUS_DURATION] 
FROM 
#TempTable 
group by 
[GLOBAL_IDUSER], [ABSOLUTE_STATUS] -- группировка по полям [GLOBAL_IDUSER] и [ABSOLUTE_STATUS] 
order by 
[GLOBAL_IDUSER], [ABSOLUTE_STATUS] -- сортировка сначала по пользователям [GLOBAL_IDUSER], потом по их статусам [ABSOLUTE_STATUS] 

dr op table #TempTable -- зачистка мусора

Результат выполнения запроса возвращает набор данных состоящих из трех столбцов [GLOBAL_IDUSER] (bigint) -- идентификатор пользователя в системе, [ABSOLUTE_STATUS] (int) -- идентификатор значения статуса и [DURATION] (datetime) -- длительность пребывания пользователя в этом статусе. После проверки запроса можно переходить к настройке оставшихся параметров отчета.

Очень важное новшество в редакторе отчетов «Infinity Call-центр X» -- это присвоение переменным входным переменным и полям результирующего набора данных заранее предопределенных типов значений. Причем, это не только привычные для разработчиков программного обеспечения стандартные типы значений строка, число, дата-время и пр. Это еще и предопределенные типы значений переменных, используемых именно в структуре «Infinity Call-центр X». Например, переменная типа значений "Infinity4.Пользователь" определяет, что ведется работа с уникальными идентификаторами пользователей (стандартный тип bigint), а визуальными элементами выборки служат ФИО пользователей. Переменная типа значений "Infinity4.СтатусОператора" определяет, что ведется работа с уникальными идентификаторами статусов (стандартный тип int), а визуальными элементами выборки служат наименования статусов "Отключен", "На месте", "Перерыв", "Отошел", "Не доступен".


В разделе "Фильтр" / "Параметры" настраиваем свойства входных параметров отчета. В соответствии с оформлением отчета задаем для каждого значения входного параметра подпись, его тип значения и видимость на форме отчета. 
image007.png

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


В разделе "Фильтр" / "Шаблоны параметров" настраиваем начальные значения параметров запроса, которые будут подставлены сразу после открытия формы отчета. Начальное значение параметров может быть задано либо конкретным Значением, либо Функцией. Для данного отчета начальные значения параметров статуса и пользователя мы не задаем, а для параметров диапазона дат выбираем для параметра :TimeStartFrom значение функции "Вчера", а для параметра :TimeStartTo значение функции "Сейчас". 
image009.png
Для табличных данных в свойствах отчета "Таблица" / "Столбцы" задаем заголовки столбцов и присваиваем им соответствующие типы значений.

Обратим еще раз внимание на тип значения столбца. Если, к примеру, для столбца с идентификаторами пользователей указать стандартный тип значений "Стандартный.Число.Целое", то в результирующем наборе данных мы получим столбец из целочисленных значений - идентификаторов пользователей. Если же для столбца с идентификаторами пользователей указать тип значений "Infinity4.Пользователь" (для «Infinity IP АТС») или "Пользователь" (для «Infinity Call-центр X»), то в результирующем наборе данных мы получим столбец из ФИО пользователей.

image011.png
На этом формирование отчета завершено, в меню редактора отчетов, по нажатию кнопки "Просмотр", можно посмотреть внешний вид созданного отчета. 
image013.png
После завершения создания отчета он становится доступным в дереве отчетов рабочего места администратора и супервизора. С возможностью выбора отчета по всем пользователям за определенный период: 
image015.png
С выборкой по конкретному пользователю: 
image017.png
Или конкретному статусу: 
image019.png
Дополнения 
1. Обратите внимание на наличие значка image021.png рядом с отчетом. Он означает, что этот отчет является встроенным и поставляется в составе комплекса «Infinity Call-центр X». 
2. В свойствах отчета "Таблица" / "Параметры" можно задавать внешний вид столбцов и допустимые действия (сортировка, фильтрация и пр). 
image023.png
3. Каждый отчет можно распечатать, экспортировать и сохранить в архив. 
image025.png
Нашли ошибку?
Выделите текст, нажмите Ctrl + Enter

Сообщение об ошибке

Адрес страницы *
Ошибочный текст *
Комментарий *
Защита от автоматического заполнения

Введите символы с картинки*

Дополнить статью

Адрес *
Ваше ФИО
Ваш Email
Текст дополнения *

Попробовать InfinitySmart бесплатно

Зарегистрируйтесь, чтобы получить доступ
к бесплатной версии на 14 дней

Заказ презентации

После отправки запроса наш менеджер свяжется с вами для демонстрации системы, рассчитает ее стоимость, ответит на вопросы