Коллеги, добрый день!

 

Вопрос, касающийся фильтрации графиков в разделе Итоги:

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

 

Подробнее с примером:

Мы имеем график с 5 сериями - Хвост, Решено с подтверждением за период, Поступило за период, Дубль, Отклонено.

Изображение удалено.

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

 

Как нужно, чтобы работало:

Необходимо иметь возможность отфильтровать все серии (к примеру) по группам ответственных, кроме серии "Поступило за период" - этот показатель должен остаться неизменным и охватывать значение поступивших Обращений на все группы ответственных. В то время как остальные показатели должны отображать значение Обращений только по группе ответственных, заданной в фильтре.

 

Вопрос:

Есть ли возможность отмены фильтров (быстрых/расширенных) на одну из серий в рамках одного графика? И как это осуществить?

 

Прошу дать рекомендации по решению данного вопроса.

Спасибо.

Нравится

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

Добрый день!



На текущий момент описанный Вами функционал отсутствует в продукте. Мы зарегистрировали идею развития функциональности на основании Вашей бизнес-задачи.

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

В новой версии (7.18) в столбчатых диаграммах с накоплением отображаются нулевые значения. Причем сами секторы графика не рисуются, а вот нули в виде подписей есть. Это баг? Можно как-то исправить? Нужной настройки для этого не нашли.Изображение удалено.

Нравится

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

Неужели нет комментариев по данному вопросу :(

Добрый день, Вадим!

Спасибо за детальное описание данного кейса!

 

На основании данной информации, в департаменте разработки зарегистрирована соответствующая задача:

- На графике с признаком Stacked не отображать пустые серии.

Если серия пустая, на данный момент, отображается ноль. Если таких серий много или они находятся рядом, это мешает чтению данных.

Необходимо, чтобы пустая серия не отображалась.

 

Исправления запланированы в версии 7.18.2.

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

Жмурко Сергей,

Ждем с нетерпением! Спасибо за ответ

Жмурко Сергей,

Судя по всему, не исправили в 7.18.2?

Добрый день,

Мы связались с разработчиками и они нам сообщили, что сроки сдвинулись.

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

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

Изображение удалено.Не хватает настройки формата: минута и час

Нравится

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

И "Год и неделя"

Дамиан, Владимир, спасибо за информацию, завели такую идею.

Логика наполнения этого выпадающего списка реализована в схеме ChartDesigner:

/**
 * Returns the object of types of date.
 * @private
 * @return {Object} Returns the object of types of date.
 */
getDateTimeFormatDefaultConfig: function() {
	const dateTimeFormatDefaultConfig = {
		"Year": {
			value: "Year",
			displayValue: this.get("Resources.Strings.DateTimeFormatYear")
		},
		"Month;Year": {
			value: "Month;Year",
			displayValue: this.get("Resources.Strings.DateTimeFormatMonthYear")
		},
		"Month": {
			value: "Month",
			displayValue: this.get("Resources.Strings.DateTimeFormatMonth")
		},
		"Week": {
			value: "Week",
			displayValue: this.get("Resources.Strings.DateTimeFormatWeek")
		},
		"Day;Month;Year": {
			value: "Day;Month;Year",
			displayValue: this.get("Resources.Strings.DateTimeFormatDayMonthYear")
		},
		"Day;Month": {
			value: "Day;Month",
			displayValue: this.get("Resources.Strings.DateTimeFormatDayMonth")
		},
		"Day": {
			value: "Day",
			displayValue: this.get("Resources.Strings.DateTimeFormatDay")
		},
		"Hour": {
			value: "Hour",
			displayValue: this.get("Resources.Strings.DateTimeFormatHour")
		}
	};
	return dateTimeFormatDefaultConfig;
},

Если не хотите вносить глобальные доработки в механизм графиков, а нужно задать для одной конкретной диаграммы, в качестве быстрого обходного решения можно включить в браузере отладчик, поставить breakpoint в этой функции и в консоли исправить этот объект dateTimeFormatDefaultConfig в момент открытия настройки графика, а затем сохранить настройки с выбранным новым значением.

У меня так получилось, когда подменил одно из значений на:

{value:"Week;Year", displayValue: "Неделя и год"}

После сохранения с такой настройкой диаграмма выглядит нужным образом:

Формат для часов и минут, увы, не подобрал. Вероятно, такой фильтрации в ESQ и нет.

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

Добрый день

Есть в системе деталь, которая отображает запросы пользователей к сервису. Один пользователь может обращаться много раз. На каждый запрос формируется запись с 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
2
3
4
5
После чего отчет 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')
1
2
После чего создавать отдельное окно фильтрации для отчета, как это делается описано в блоге Передача параметра в отчет 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

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

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