Вопрос

Добрый день

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

Как получить график количество уникальных пользователей за текущий квартал в группировке по датам. На SQL легко и просто.

SELECT
CAST(DATEADD(HH,3,EPMRequestDate) as date) as [Дата], --дата запроса с учетом часового пояса
COUNT(DISTINCT EPMAuthDataEnergyId) as [Уникальные пользователи],
COUNT(Id) as [Посещения]
FROM EPMAuthDataStatisticEntity
WHERE
EPMAuthDataEnergyId!='9bb71e40-09b4-4352-ba5a-0f55b486f8f0' --Исключение ИД
and EPMTypeRequest = 1 --тип запроса
and EPMRequestDate between DATEADD(M,-3, GETDATE()) and GETDATE() --Текущий квартал
GROUP BY CAST(DATEADD(HH,3,EPMRequestDate) as date)
ORDER BY CAST(DATEADD(HH,3,EPMRequestDate) as date)

Начинаю делать в BPM и получаю только количество посещений в день

Насколько понимаю стандартными средствами никак?

У меня такой же вопрос

3 комментария
Лучший ответ

Нужно создать view в БД, на основе view создать объект. И уже делать график основываясь на данных виртуального объекта (view)

Поищите по форуму, как создаются объекты на основе вьюхи, вот например в этой теме есть инфа.

https://community.terrasoft.ru/questions/sozdanie-obekta-na-osnove-db-view

Нужно создать view в БД, на основе view создать объект. И уже делать график основываясь на данных виртуального объекта (view)

Поищите по форуму, как создаются объекты на основе вьюхи, вот например в этой теме есть инфа.

https://community.terrasoft.ru/questions/sozdanie-obekta-na-osnove-db-view

Благодарю за помощь. Создал View, объект в системе по ней и построил требуемые графики. Единственная сложность возникла при создании Объекта. Система требовала обязательно указать ключевое поле. Пришлось задать его во View

Да, для корректной работы view должна быть максимально похожа по набору стандартных полей на обычные объекты. Ещё поле для отображения указать будет не лишним.

Если не знаете, что вывести в качестве уникального Id, можно взять MD5-хэш от остальных полей.

 

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

Подскажите, как можно в аналитике (тип график), в "показать данные" таблице показать количество активнотей у ответственного, и отфильтровать за указаный период без привязки к разделу?

таблице со столбцами

Ответственный | Количество активностей

У меня такой же вопрос

1 комментарий
Лучший ответ

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

За основу можете взять пример воронки продаж в дешбордах - там тоже реализована возможность фильтрации периода.

Также посмотрите статью на Академии по добавлению пользовательского виджета итогов.

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

За основу можете взять пример воронки продаж в дешбордах - там тоже реализована возможность фильтрации периода.

Также посмотрите статью на Академии по добавлению пользовательского виджета итогов.

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

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

У меня такой же вопрос

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

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

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

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

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

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

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

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

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

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

Хочу поделиться интересной 'фичей', обнаруженной при настройке графиков в дешбордах.

Если у Вас в графике есть несколько серий и для первой серии установить тип графика 'Bar' (скрин 1), а для другой 'Column' (скрин 2) (возможно, что в русскоязычной локализации они называются по-другому), то в итоге Вы получите эффект 'вложения' одной серии в другую (для понимания этого эффекта лучше посмотреть прикрепленный скриншот график).

P.S. Не исключаю, что такой эффект после внесения изменений и исправлений в графики после очередного обновления на новую версию может пропасть, так как отображаться в итоге должно нечто другое, соответствующее указанному типу графика, но пока такой эффект присутствует вы можете использовать его в настройке ваших дешбордов, тем более, что нашим пользователям он очень понравился :wink:

Сейчас у нас версия 7.10.2.

У меня такой же вопрос

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

Это именно что фича а не баг, и тянется она давно, и не планирует исчезать :smile:

Максим,

хорошо, если так.

Мы этому будем только рады!

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

Столкнулся со следующей проблемой в BPMOnline ServiceDesk 5.4:
- Необходимо в Аналитике сделать ПОЧАСОВОЙ график регистрации инцидентов.

Но при настройке графика для поля "Дата/время" предлагается только форматы "Год, Месяц, Неделя, День". Соответственно вопрос каким образом добавить формат "Час"??

У меня такой же вопрос

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

Решил проблему сам путем добавления в объект SysDateTimeFormat следующей строчки:

insert into SysDateTimeFormat(Name,Code) values('Час','Hour')

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

В карточке продукта есть закладка "Движение по складу" и у меня она не работает.
Я закрыла периоды, выбираю наиболее активный из всех и продукт, который точно был отгружён\куплен в тот же период.
Вопрос как наконец увидеть этот график?(

У меня такой же вопрос

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

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

Здравствуйте, Наталия!

Посмотрите, пожалуйста, условия отображения той или иной линии графика в соответствии с данными в Вашей системе.

Информация описана в разделе 3.5.2 на с.191-192:
http://tsrdp.tscrm.com/support/downloads/manuals/TS_XRMDistribution_UG_…

Все условия выполнены, но ничего нет.
Есть только линия минимальных запасов.

Здравствуйте, Наталия.

Есть предположение, что в Вашей версии допущена ошибка.

Попробуйте сделать резервную копию сервиса Offerings\Details\Analytic\sq_OfferingAnalytic из конфигурации, а затем поверх него загрузить обновленный сервис из архива во вложении.

Сообщите, пожалуйста, результат.

sq_offeringanalytic.zip

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

Всем добрый день. Мне нужно построить график, отображающий состояние задач по ответственному за определенный период. Он должен отображаться в основной закладке Графики раздела Задачи.Посмотрел обучающее видео http://www.training.terrasoft.ua/resources/video/741. По оси X должно быть количество, по оси Y - состояние задачи. Количество я реализовал. Типы тоже, но не совсем. Мне нужно, чтобы на гистограмме был отдельный столбец, который бы отображал просроченные задачи. Как это реализовать не знаю. Поскольку по оси X у меня состояния задач, а состояния задачи "Просрочена" я не создавал. Вопрос: можно ли создать такой доп.столбец, указать ему название "Просроченные", не добавляя новое состояние в таблицу tbl_TaskStatus (так как это необходимо только для графика, для самих задач это состояние не нужно выставлять) С графиками работаю впервые. Подскажите,пож-ста, какими средствами TS лучше реализовать. И еще вопрос: можно ли построив график(гистограмму) на основании FR отображать его в основной закладке "Графики" в разделе? Заранее спасибо!

У меня такой же вопрос

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

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

  1. Подобная задача решалась в теме Просроченные задачи
    Просьба ознакомится с темой, а так же с замечанием в последнем сообщении.
  2. График, созданный в FastReport, вы не сможете отображать на закладке Графики в разделе Задачи. Дополнительно о графиках в FastReport Вы можете ознакомиться, пройдя по ссылке

Спасибо! тему форума пункта 1 я уже читал. Тот график который Вы там описываете делается в Fast Report же?

Да, в FastReport, так как в пользовательском запросе в клиенте Terrasoft, нет возможности установить связи признака просроченной задачи

Дата Завершения < Текущая дата
И
(Статус задачи != Выполнена или Статус задачи != Отменена)

А возможно ли в FR построить график, который у меня в описании темы стоит? то есть чтобы для одного ответственного было по оси Y - количество задач, а по оси X - состояния задач = в работе, не начата, выполнена, отменена и + просроченные? (то есть 5 столбцов гистограммы чтобы было)

Антон, в SelectQuery мы можем добавить еще один запрос, через конструкцию Union. Во втором запросе мы будем считать количество просроченных задач.

SELECT
	[TaskStatus],
	[CountTask],
	[ContactName],
	[ContactID]
FROM
	(SELECT
	[tbl_TaskStatus].[Status] AS [TaskStatus],
	COUNT(CAST([tbl_Task].[ID] AS VARCHAR(38))) AS [CountTask],
	[tbl_Contact].[Name] AS [ContactName],
	[tbl_Contact].[ID] AS [ContactID]
FROM
	[dbo].[tbl_Task] AS [tbl_Task]
LEFT OUTER JOIN
	[dbo].[tbl_TaskStatus] AS [tbl_TaskStatus] ON [tbl_TaskStatus].[ID] = [tbl_Task].[StatusID]
LEFT OUTER JOIN
	[dbo].[tbl_Contact] AS [tbl_Contact] ON [tbl_Contact].[ID] = [tbl_Task].[OwnerID]
GROUP BY
	[tbl_TaskStatus].[Status],
	[tbl_Contact].[Name],
	[tbl_Contact].[ID]
UNION ALL
SELECT
	N'Просроченные задачи' AS [TaskStatus],
	COUNT(CAST([tbl_Task].[ID] AS VARCHAR(38))) AS [CountTask],
	[tbl_Contact].[Name] AS [ContactName],
	[tbl_Contact].[ID] AS [ContactID]
FROM
	[dbo].[tbl_Task] AS [tbl_Task]
LEFT OUTER JOIN
	[dbo].[tbl_Contact] AS [tbl_Contact] ON [tbl_Contact].[ID] = [tbl_Task].[OwnerID]
WHERE((NOT ([tbl_Task].[StatusID] = :StatusClosedID OR
	[tbl_Task].[StatusID] = :StatusCancelledID)) AND
	[tbl_Task].[DueDate] < getutcdate())
GROUP BY
	[tbl_Contact].[Name],
	[tbl_Contact].[ID]) AS [U]

В результате наш запрос будет выдавать следующий набор данных

В работе	5	Евгений Мирный	{59B9825D-A16D-48AF-9C20-4DF1100E4BD5}	
Выполнена	26	Евгений Мирный	{59B9825D-A16D-48AF-9C20-4DF1100E4BD5}	
Не начата	17	Евгений Мирный	{59B9825D-A16D-48AF-9C20-4DF1100E4BD5}	
Отменена	4	Евгений Мирный	{59B9825D-A16D-48AF-9C20-4DF1100E4BD5}	
Просроченные задачи	10	Евгений Мирный	{59B9825D-A16D-48AF-9C20-4DF1100E4BD5}	

Далее на основании SQ необходимо создать Dataset
2345
После чего отчет FR (реализацию Вы можете посмотреть в прикрепленных файлах)
1
Настроить график можно следующим образом
6
Также необходимо настроить фильтр отчета, по отвественному
7
Все сервисы, используемые для ответа, в прикрепленных файлах.

Спасибо огромное за информацию и решение! Буду пробовать!

А фильтр за определенный период времени,чтоб задачи были на графике, как лучше реализовать? Добавить в фильтр отчета поля "Дата начала", "Дата завершения"?

Антон, проблема с окном фильтрацией встроенным в FastReport, в том что можно использовать только поля датасета, в данном случае, если вы вынесете поля [tbl_Task].[StartDate] и [tbl_Task].[DueDate] в Select по ним автоматически будет проходить группировка (они попадут в GROUP BY). Для решения задачи, необходимо добавить CompareFiltr'ы по [StartDate], [DueDate] по логике аналогичной клиентской, и параметры в SQ

([tbl_Task].[StartDate] < @P1 AND ([tbl_Task].[DueDate] >= @P2)

где @P1 datetime2(7),@P2 datetime2(7) конкретные даты ('2012-04-30 21:00:00','2012-03-31 21:00:00')
12
После чего создавать отдельное окно фильтрации для отчета, как это делается описано в блоге Передача параметра в отчет FastReport и фильтрация (прикрепленные файлы)
SQ с добавленными фильтрами StartDate,DueDate во вложении

Спасибо, попробую!

А как сделать чтобы по оси Y разбиение не было таким мелким? чтобы отображались только целые числа

Алексей, а какого типа контрол нужно создавать в своем окне фильтрации для выбора Ответственного по задаче?(в стандартном окне при установке ответственного по задаче появляется MultiSelectWindow) В стандартном окне оно есть, а мне нужно его и в свое. Значит нужно создавать еще параметр для Ответственного, чтобы включать его для датасета отчета. Я правильно понимаю? Будут ли тут свои нюансы?

Антон, параметр и фильтр Ответственного уже создан, фильтр называется OwnerID, параметр ответственного ContactID
Если Вы хотите использовать фильтрацию по дате, следует использовать LookupControl, в этом случае будет использоваться wnd_SelectData, так как по факту Вам необходима одна запись. Нюансы описаны в моем блоге

По поводу первого вопроса, возможно свойство Chrat’a AxisValueFormat поможет решить задачу. В FastReport используется компонент TeeChart. Я не уверен что TeeChart поддерживает свойство кастомизации делений в Chart'ах. В общем случае можно пытаться в обработчике события Chart1OnBeforePrint отлавливать значения, и обнулять их если они не целые.

Мне нужен фильтр по дате и по ответственному, в своем окошке фильтрации. В sozdat_svoe_okno_filtracii_dlya_otcheta_2.doc для даты использ-ся DateTimeControl, зачем использовать
LookupControl?

По контролу Ответственный в моем окне фильтрации не совсем понял, по фильтрам понял, что они есть уже. А как в моем окне сделать так , чтобы wnd_SelectData можно было выбрать ответственного?

Где нах-ся свойство Chrat’a AxisValueFormat? не смог найти.

Алексей, спасибо за ответы!
[quote="Яворский Алексей"]

Если Вы хотите использовать фильтрацию по дате, следует использовать LookupControl, в этом случае будет использоваться wnd_SelectData, так как по факту Вам необходима одна запись.

Извините, ошибся, я имел в виду LookupControl для выбора отвественного, DateControl для передачи дат, StartDate и DueDate

Бывает) А свойство Chrat’a AxisValueFormat не знаете где устанавливается?

Антон, я имел в виду свойство 1.

"Яворский Алексей" написал:Я не уверен что TeeChart поддерживает свойство кастомизации делений в Chart'ах. В общем случае можно пытаться в обработчике события Chart1OnBeforePrint отлавливать значения, и обнулять их если они не целые.

Спасибо!Алексей,а можете на JScript'е написать код обработчика события Chart1OnBeforePrint?Не понимаю как обращаться к значениям оси Y

Антон, в документации Fastreport’a также на официальном форуме никаких примеров доступа к значениям в осях Chart’a.
Предлагаю обходное решение:
В свойствах Chart'a отключить автоматическое масштабирование
1
После чего вручную задать Минимум и Максимум для Chat'a
2
В итоге график будет выглядеть так
3

Спасибо Алексей!

а

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

Здрасте.
Есть FR отчет, создал к нему запрос, датасет. Хочу в отчете вывести график- несколько линий, по числу поставщиков. По Х- дата, по Y- сумма, и третий компонент- поставщик. Как мне это осуществить в chart editor? Пробовал разные комбинаци, не получается :(

Таблица такая:

ID Postav Region1 Region2 Region3 DataPr

Где ID- ИД
Postav- поставщики
Region1- сумма продаж по региону 1
Region2- сумма продаж по региону 2
Region3- сумма продаж по региону 3
DataPr- дата продаж
Подскажите плиз.

У меня такой же вопрос

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

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

Рассматриваем данный вопрос
Пример реализации:
Удовлетворенность клиентов по инцидентам (Page 5)
Сервис fr_IncidentSatisfaction

Пытаюсь сделать аналогичный Select Query, вид примерно таков :

SELECT
	[tbl_LineChart].[ID] AS [ID],
	[tbl_LineChart].[Postav] AS [Postav],
	[tbl_LineChart].[DataPr] AS [DataPr],
	([tbl_LineChart].[Region1] +[tbl_LineChart].[Region2] +[tbl_LineChart].[Region3])  AS [Summa],
	[tbl_LineChart].[Region1] AS [Region1],
	[tbl_LineChart].[Region2] AS [Region2],
	[tbl_LineChart].[Region3] AS [Region3]
FROM
	[dbo].[tbl_LineChart] AS [tbl_LineChart]

Поясню- мне нужно не все регионы в один график, а разделить графики по регионам, соотв данные для графика: регион1, поставщик, дата

Примерно как тут

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

Для того, чтобы сделать диаграмму с несколькими линиями, необходимо добавить на диаграмму несколько серий и установить в настройках Color Each:

И в закладке Marks галочку All Series Visible

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

И еще раз здравствуйте.

Вот еще возникла проблема: надо построить график в fastreport.
У меня в отчет в текстовом виде данные выводятся, т.е. sq и db для отчета у меня созданы и работают. Там среди прочего есть "Название", "дата завершения", "крайний срок". Надо эти данные отразить на графике - не важно горизонтальном или вертикальном. Н
Например, так: по оси Y - название элемента, а по оси Х - две даты для этого элемента.
Я пробывала сначала отразить хотя бы одну дату. Что из этого получилось, можно посмотреть в прикрепленном файле. Что сделано не верно? какие правильные параметры надо указать в отчете для диаграммы?

У меня такой же вопрос

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

Виктория, попробуйте поле "Название" установить по оси Х (Label), а поле типа "Дата" по оси Y. После этого в свойствах YValues установите признак DateTime и порядок сортировки:

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

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

Как в графике отобразить итоги?

Возьмем к примеру уже построенный график (количество заявок за СЕГОДНЯ):

Нигде не отображается общее количество заявок за СЕГОДНЯ.
Как это сделать? и желательно, чтобы Итоги отображались в заголовке? то есть в данном случае заголовок будет таким:
Заявки за Сегодня (5)

и еще попутный вопрос по легенде к графику:
Как убрать из легенды, в данном случае, надписи 1-комн. кв-ра, 2 комн. кв-ра и т.д.?

У меня такой же вопрос

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

График строится по пользовательскому запросу в скрипте scr_GraphUtils в функцие DrawGraphByDataset. Сюда передаются датасет с данными и настройки графика. Один из параметров "GraphName" задает отображаемое название графика.Функция эта вызывается из функции BuildGraph в этом же скрипте:

var GraphName = GraphDataset.Values('Name');     

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

А на счет легенды, так она специально устанавливается (становится видимой) для таких типов графиков. Чтобы она не отображалась, в функцие DrawGraphByDataset, в блоке "if (GraphType == gt_Pie)" установите вместо "Graph.Legend.Visible = true;" строку "Graph.Legend.Visible = false;"

Татьяна, спасибо.
Но все-таки надо, чтобы график сам забирал данные из запроса и ставил Итоги в заголовок. Как это сделать?
______________
www.abs.com.kz
Агентство недвижимости АБС Royal Estate

"Биккинин Т.Р." написал:Как это сделать?

Нужно дописывать эту логику в конфигурации. А как -- Татьяна описала.

Войдите или зарегистрируйтесь, чтобы комментировать