Здравствуйте! Подскажите с решением следующей задачи: необходимо создать график в разделе итогов в "Обращениях", который будет показывать количество обращений по месяцам, созданных пользователем, который за последние 30 дней создал наибольшее количество обращений. Возможна ли такая тонкая настройка графиков, и если да, то как ее произвести?

Нравится

3 комментария

Здравствуйте!

Для настройки фильтрации данного графика необходимо выбрать только одного контакта, у которого количество обращений за последние 30 дней = максимальному значению из всех сумм обращений по ответственным за этот период. К сожалению, на данный момент числовые значения фильтров графиков можно сравнивать только с константами. То есть, в базовой версии приложения отсутствует возможность реализации Вашей задачи.

Ваш бизнес-кейс можно решить только реализацией пользовательского виджета (необходимы навыки программирования).

Одеяненко Юлия,

Спасибо за ответ. Скажите, пожалуйста, есть ли где-нибудь пример создания пользовательского виджета итогов на основе графика?

Здравствуйте!

Примеров реализации виджета на основе графика у нас, к сожалению, нет. Есть только на базе показателя - https://academy.terrasoft.ru/documents/technic-sdk/7-11/dobavlenie-polzovatelskogo-vidzheta-itogov

Можем предложить еще вариант, более простой, но правки необходимо будет вносить в базу данных. Фильтры дашбордов записываются в колонку "items" таблицы "SysDashboard" (записи таблицы являются вкладками с дашбордами). На нужной записи необходимо отредактировать наполнение колонки "items", установив фильтр графика согласно Вашей бизнес-задаче. Но хотим заметить, что после внесения подобных изменений график будет отображаться корректно, но настраивать/редактировать его с помощью базового функционала системы возможности не будет.

Показать все комментарии

Добрый день!

Можно ли сделать автоматические создание скриншота дашборда раздела Итоги в конце рабочего дня?

Нравится

3 комментария

Здравствуйте, Александр!

К сожалению, на данный момент такая возможность отсутствует, так как скриншот дашбордов делается на стороне клиента (в веб-браузере), возможность настроить необходимый Вам бизнес-процесс отсутствует.

Мы передали Вашу идею аналитикам продукта, они рассмотрят возможность реализации данной функциональности в последующих релизах продукта.

Приветствую Александр.

у меня данная задача уже решалась в рамках одного из проектов. Постучитесь ко мне с напоминанием после 01 февраля я с вами поделюсь примером реализации. Только реализовывалось у меня в рамках конфигурации BPMOnline Sales Enterprise. Но поидее функционал Дашбоардов стандартный, должно заработать и на других конфигурациях.

Власов Михаил Викторович, добрый день!

Спасибо за предложение! Обязательно напишем. 

Показать все комментарии

Так как во многих компаниях принято недельный цикл планирования, то графики строятся по неделям. 

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

Предлагаю добавить формат Year&Week, чтобы отображать в нужном порядке результаты по неделям.Изображение удалено.

2 комментария

Здравствуйте, Владимир!

Мы передали Вашу идею аналитикам продукта, они рассмотрят возможность ее реализации в последующих релизах приложения.

Спасибо, что помогаете улучшать наши продукты!

Владимир, спасибо за проявленный интерес. Зарегистрировали ваше пожелание по развитию приложения.

Показать все комментарии

День добрый! Есть ли возможность увеличить количество знаков после запятой в модуле итогов? 

Нравится

1 комментарий

Здравствуйте, Олег!

На данный момент базовая логика приложения не позволяет изменять формат отображения значений в некоторых типах графиков.

 

Мы передали данное пожелание команде разработки, для анализа возможности внедрения функционала в будущих версиях системы.

Показать все комментарии

Добрый день, Коллеги!
Возникла потребность в настройке итога для обращений (тип показатель) для вычисления "средней скорости закрытия обращения".

Необходимо для объекта "Жизненный цикл обращения" по колонке "Продолжительность часов" высчитать среднее значение времени, а именно "как быстро обращение перешло из состояния Новое на одну из завершающих стадий (включая время нахождения на промежуточных этапах по отдельности) Закрыто или Отменено".

Вопрос в следующем:
Возможно ли настроить фильтрацию таким образом, что бы захватывать общую, среднюю продолжительность времени для всех обращений, по всем состояниям кроме "Закрыт" (т.к. в базе в колонке EndDate всегда будет NULL для стадии закрыт)?

Аналогичная вопрос о настройке фильтрации возникает с записями в объекте CaseLifecycle для случая, когда Новое обращение было взято "В работу", а затем "Отменено", так как в базе будет существовать три записи, но для конечной стадии Отменено EndDate = NULL.

Как именно в таком случае будет вычисляться среднее значение по нескольким записям CaseLifecycle и Case, если EndDate = NULL? Будет ли прибавляться просто 0 часов и учитываться в количестве записей жизненного цикла при расчёте среднего?

Возможно кто-то уже сталкивался с подобной задачей.
На скриншоте приведена попытка настройки итога.
Заранее спасибо!

Нравится

5 комментариев

Здравствуйте!

Базовыми средствами системы реализовать задачу можно, но нужно немного новых объектов и SQL запросов.

Построенная аналитика не совсем корректна - она отображает среднее время нахождения обращения на какой-то из стадий (то есть, отображается среднее значение, но не требуемое).

Для решения необходимо создать промежуточное представление, в котором будет храниться требуемая информация. Для этого:
1) Перейдите в конфигурацию
2) Создайте объект (назовем его UsrMyVwObject с заголовком "Объект для моей аналитики"), унаследовавшись от базового, добавьте два поля:

  1. Обращение (справочное с ссылкой на объект "Обращение") - с названием Case
  2. Суммарное время обработки (целое число) - с названием TotalSolution

В свойствах объекта укажите признак "Представление в БД"
3) Опубликуйте объект
4) Создайте представление в БД запросом:

create view UsrMyVwObject
as
select NEWID() "Id", c.CreatedOn, c.CreatedById, c.ModifiedOn, c.ModifiedById, c.Id "CaseId", sum(StateDurationInMinutes) "TotalSolution"
from "Case" c
join CaseLifecycle
on CaseLifecycle.CaseId = c.Id
group by Id, c.CreatedOn, c.CreatedById, c.ModifiedOn, c.ModifiedById, c.Id

5) Стройте аналитику по созданному объекту - необходимо посчитать среднее значение по полю TotalSolution.
В фильтре аналитики необходимо указать условие, что учитываются только обращения в конечном состоянии, так как незавершенные обращения не должны влиять на построение статистики.

P.S. SQL запрос не проверял - рекомендую самостоятельно проработать его.

Алексей, ещё раз добрый день!
Спасибо огромное за комментарий, попробовали реализовать.
Создали объект UsrAverageCloseSpeed
И две колонки
UsrTotalSolution - дробное число
UsrCase - справочное поле с ссылкой на обращение.
Возникли трудности именно с созданием представления в БД. Попробовали доработать согласно вашим рекомендациям SQL мкрипт, но проверка заканчивается с ошибкой Ambiguous column name "Id"

CREATE VIEW UsrAverageCloseSpeed
AS
SELECT NEWID() Id, c.CreatedOn, c.CreatedById, c.ModifiedOn, c.ModifiedById, c.Id, sum(clc.StateDurationInMinutes)
FROM [ofd_dev].[dbo].[Case] c
JOIN [ofd_dev].[dbo].[CaseLifecycle] clc
ON clc.CaseId = c.Id
GROUP BY Id, c.CreatedOn, c.CreatedById, c.ModifiedOn, c.ModifiedById, c.Id

Просим помочь разобраться или детальнее объяснить структуру SQL создания представления БД.
Заранее спасибо!

UPDATE
Перечитал я что написал с вечера, немного исправлю(кстати, первые два пункта были в изначальном запросе).
1) как правильно указал коллега ниже, нельзя создать 2 колонки с Id, c.Id AS CaseId вполне сработает.
2) нельзя также оставить последнюю колонку без имени, так как это view, нужно сделать примерно так:
SUM(clc.StateDurationInMinutes) AS TotalSolution
3) GROUP BY Id сделать точно не получится, так как GROUP BY еще об этом алиасе ничего не знает, фактически, еще даже newid() в этот момент не отработала, его нужно просто убрать.
Итого:

CREATE VIEW UsrAverageCloseSpeed
AS
SELECT NEWID() AS Id, c.CreatedOn, c.CreatedById, c.ModifiedOn, c.ModifiedById, c.Id AS CaseId, SUM(clc.StateDurationInMinutes) AS TotalSolution
FROM [Case] c
JOIN CaseLifecycle clc
ON clc.CaseId = c.Id
GROUP BY c.CreatedOn, c.CreatedById, c.ModifiedOn, c.ModifiedById, c.Id

Вот такой запрос на моей базе успешно отработал.
P.S. Рекомендую Case взять в квадратны скобки, так это еще и зарезервированное слово в SQL.

"Титаев Александр Николаевич" написал:Просим помочь разобраться или детальнее объяснить структуру SQL создания представления БД.
Заранее спасибо!

Ну логично, вы пытаетесь создать вью с двумя одноименными колонками, что ваша первая Id что c.Id в результирующем запросе будут называтся Id. Так нельзя. Можно вроде этого:

CREATE VIEW UsrAverageCloseSpeed
AS
SELECT NEWID() Id, c.CreatedOn, c.CreatedById, c.ModifiedOn, c.ModifiedById, c.Id as UsrCaseId, sum(clc.StateDurationInMinutes)
FROM [ofd_dev].[dbo].[Case] c
JOIN [ofd_dev].[dbo].[CaseLifecycle] clc
ON clc.CaseId = c.Id
GROUP BY Id, c.CreatedOn, c.CreatedById, c.ModifiedOn, c.ModifiedById, c.Id

Ну и в объекте который вы будете поверх вью в бпм, последнюю колонку так же нужно будет назвать UsrCaseId, ну или как вы захотите, но отлично от Id

upd, так же упустил пункты 2.3. описанные выше Ильей, почитайте их ;)

Коллеги, спасибо большое за оказанную помощь!
Разобрались и дополнили)

Показать все комментарии

Нужно построить сложные итоги в BPM Online?
1. Показатель который имеет следующую формулу: кол-во активностей / кол-во контактов за месяц
2. Горизонтальная гистограмма которая формируется из 4 значений которые вычисляются как п.1
Можете подсказать в каком направлении копать? Я уверен что кто то уже делал нечто подобное.

Нравится

1 комментарий

Виталий, здравствуйте!

На текущий момент, в базовой функциональности такая возможность отсутствует.
Задача по реализации указанной логики, стоит на ответственной команде разработки, и уже принята для решения в последующих релизах.

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

Или попробовать (пример):

Для решения необходимо использовать обходное решение.
Что можно сделать:
1) Создать объект в bpm'online, унаследовавшись от базового. Обязательное условие - в свойствах объекта указано свойство "Представление в БД". В объект необходимо добавить поле UsrResult с типом дробное число. Предположим объект был назван UsrNewVw.
Объект необходимо опубликовать.

2) После публикации объекта необходимо создать представление в БД. Для этого нужно выполнить скрипт:
CREATE VIEW UsrNewVw
AS (SELECT [Реализация подсчета %] AS UsrResult FROM [Case] WHERE [Опциональное условие])

В результате в представлении будет значение, которое необходимо отобразить на дашборде, например, используя показатель.

Показать все комментарии

Коллеги, как реализовать виджет, отображающий процентное отношение , например процент просроченных обращений в службу Service Desk. В версии 7.8 присутствует только виджет "Индикатор" отображающий количество на заданной шкале. Ввести формулу преобразования в настройках возможности нет и этот виджет несколько другое. Только кодить? Готовых решений нет? Функциональность постоянно востребована заказчиками. Спасибо

Нравится

5 комментариев

Согласен, очень востребованное решение.

Согласен, очень востребованное решение.

Здравствуйте!

Коллеги, к сожалению, в bpm'online нет возможности отобразить соотношение между двумя показателями.

Для решения необходимо использовать обходное решение.
Что можно сделать:
1) Создать объект в bpm'online, унаследовавшись от базового. Обязательное условие - в свойствах объекта указано свойство "Представление в БД". В объект необходимо добавить поле UsrResult с типом дробное число. Предположим объект был назван UsrNewVw.
Объект необходимо опубликовать.

2) После публикации объекта необходимо создать представление в БД. Для этого нужно выполнить скрипт:

create view UsrNewVw
as (select [Реализация подсчета %] as UsrResult from [Case] where [Опциональное условие])

В результате в представлении будет значение, которое необходимо отобразить на дашборде, например, используя показатель.

"Демьяник Алексей" написал:В результате в представлении будет значение, которое необходимо отобразить на дашборде, например, используя показатель.

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

Поэтому нужен универсальный виджет

Здравствуйте, Владимир!

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

Показать все комментарии

есть сервис selectquery, в нем несколько запросов обедненных UNION ALL, в каждом запросе есть обычные поля и поля итогов(например в одном ) итогома сумма и количество продуктов детали продукты в счете за текущий месяц а в другом тот же запрос только для раздела склада.
Оно выводит сначала список продуктов которые нужно для счета а потом для склада, вот сокращенный код:

SELECT
        [OfferingID],
        ([SoldCount]),
        (a),
        [Name]
FROM
        (SELECT
        [tbl_OfferingInInvoice].[OfferingID] AS [OfferingID],
        COUNT(CAST([tbl_OfferingInInvoice].[ID] AS VARCHAR(38))) AS [SoldCount],
        SUM([tbl_OfferingInInvoice].[BasicAmount]) AS a,
        [tbl_Offering].[Name] AS [Name]
----
UNION ALL
SELECT
        [tbl_OfferingInMovement].[OfferingID] AS [OfferingID],
        COUNT(CAST([tbl_OfferingInMovement].[ID] AS VARCHAR(38))) AS [SoldCount],
        SUM([tbl_OfferingInMovement].[BasicAmount]) AS а,
        [tbl_Offering].[Name] AS [Name]
------) AS [U]
        GROUP BY
        u.[OfferingID],
        u.[Name]

для решение проблемы нужно писать так:
SELECT
        [OfferingID],
        count([SoldCount]),
        Sum(a),
        [Name]
FROM
        (SELECT
        [tbl_OfferingInInvoice].[OfferingID] AS [OfferingID],
        COUNT(CAST([tbl_OfferingInInvoice].[ID] AS VARCHAR(38))) AS [SoldCount],
        SUM([tbl_OfferingInInvoice].[BasicAmount]) AS a,
        [tbl_Offering].[Name] AS [Name]
----
UNION ALL
SELECT
        [tbl_OfferingInMovement].[OfferingID] AS [OfferingID],
        COUNT(CAST([tbl_OfferingInMovement].[ID] AS VARCHAR(38))) AS [SoldCount],
        SUM([tbl_OfferingInMovement].[BasicAmount]) AS а,
        [tbl_Offering].[Name] AS [Name]
------) AS [U]
        GROUP BY
        u.[OfferingID],
        u.[Name]

Но добавить итоги не получается(((. Это можно решить?

Нравится

4 комментария

К сожалению не понятен Ваш вопрос, можете конкретизировать его.
А также выполните sql запрос на БД, для получения результата.

Рекомендую ознакомится со статьей Использование хранимых функций в запросе

"Терещук Павел" написал:К сожалению не понятен Ваш вопрос, можете конкретизировать его.

Нужно превратить это

SELECT
        [OfferingID],
        ([SoldCount]),
        (a),
        [Name]
FROM
        (SELECT
.....

в это

SELECT
        [OfferingID],
        count([SoldCount]),
        Sum(a),
        [Name]
FROM
        (
....

"Терещук Павел" написал:А также выполните sql запрос на БД, для получения результата.

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

Создаете запрос, в свойстве колонки Summary Type (Итог) выберите необходимую агрегирующую функцию:

"Терещук Павел" написал:Создаете запрос, в свойстве колонки Summary Type (Итог) выберите необходимую агрегирующую функцию:

так и зделано, только в сервисе несколько селектов, в каждом проставлены итоги на поля, но в общем запросе, который ТС сам формирует - итоги не проставляются и программно тож не ставится. Пришлось сделать SQL запрос и копи пастом создать 8 полей.

Показать все комментарии

Я динамически добавляю/удаляю вкладки на итогах (напрямую в базе), но чтоб только что примененные изменения отобразились необходимо обновить страницу, т.к. итоги должны быть зарегистрированы в Terrasoft.DashboardManager. Подскажите, есть ли способ обновлять структуру итогов программно, не обновляя страницу?

Нравится

1 комментарий

Все оказалось очень сложно. Необходимо опубликовать сообщение с не очевидным названием ReloadDashboard.

Показать все комментарии

Подскажите, пожалуйста, возможно ли отключить гиперссылки в итогах?

Нравится

5 комментариев

Олег, уточните, о каких именно ссылках идет речь?

Речь идет о ссылках ведущих в записи других разделов

Здравствуйте!

Вам необходимо заместить соответствующий модуль. Для списка это DashboardGridModule.

Спасибо, еще небольшое уточнение - если для графика нажать показать данные - оттуда тоже можно перейти в другие разделы, за это тоже отвечает DashboardGridModule?

"Сафонов Олег" написал:

Спасибо, еще небольшое уточнение - если для графика нажать показать данные - оттуда тоже можно перейти в другие разделы, за это тоже отвечает DashboardGridModule?

Не совсем. У каждого типа итогов свой модуль.

Показать все комментарии