[ELMA3] Сбор данных по персональному показателю
В статье описано, как в сценарии получить список пользователей, ответственных за показатель, и как для каждого из них установить значение за период.
Пример сценария с использованием PublicAPI
Примечание
Актуальная документация по PublicAPI доступна по ссылке.
Внимание!
Сценарий, указанный ниже, актуален для версий системы ELMA до 3.12.1 включительно.
Пространство имен:
1 | using EleWise.ELMA.API; |
Текст сценария:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | // Загружаем показатель по наименованию var indicator = PublicAPI.KPI.Indicator.FindByName( "Количество звонков в день" ); // Получаем пользователей, которые являются ответственными за показатель var users = PublicAPI.KPI.Indicator.GetPersonals(indicator); // Перебираем всех пользователей foreach (var user in users) { // Мы присваиваем значение - константу // Здесь может быть запрос к внешнему сервису, службе и т.д. var value = 123.45; // Сохраняем значение в базу PublicAPI.KPI.Indicator.SetFactValue(indicator,value,DateTime.Now,user, "Скрипт" ); //устанавливает фактическое значение //PublicAPI.KPI.Indicator.SetPlanValue(indicator,value,DateTime.Now,user, "Скрипт"); //устанавливает плановое значение } |
Пример сценария без использования PublicAPI
Пространство имен:
1 2 3 4 | using EleWise.ELMA.Services; using EleWise.ELMA.KPI.Security; using EleWise.ELMA.KPI.Managers; using EleWise.ELMA.Security.Models; |
Текст сценария:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | // Загружаем показатель по ID var indicator = IndicatorsService.Instance.LoadByName( "Количество звонков в день" ); // Создаем пару дат, которая будет обозначать период показателя Pair<DateTime, DateTime> period = null ; // Служба для работы с периодичностями var periodicityService = Locator.GetService<EleWise.ELMA.KPI.Common.Interfaces.IPeriodicityService>(); if (periodicityService != null ) { // Определяем период, за который записываем значение period = periodicityService.GetPeriod(indicator.Periodicity, DateTime.Now); } if (period != null ) { // Получаем ответственных за показатель // Для этого получаем матрицу ответственности var responsibleMatrix = indicator.GetResponsiblesMatrix(); // Получаем набор прав для роли ответственного Roles.Responsible var responsibleItem = responsibleMatrix.GetPermissionsByRole(Roles.Responsible).FirstOrDefault(); // Получаем пользователей, которые являются ответственными за показатель var users = responsibleItem.GetAllUsers(); // Перебираем всех пользователей foreach (var user in users) { // Мы присваиваем значение - константу // Здесь может быть запрос к внешнему сервису, службе и т.д. var value = 123.45; // Сохраняем значение в базу IndicatorsService.Instance.SetPeriodValue(indicator, period, value, "Скрипт" , user); } } |