[ELMA3] Сбор данных по персональному показателю
В статье описано, как в сценарии получить список пользователей, ответственных за показатель, и как для каждого из них установить значение за период.
Пример сценария с использованием PublicAPI
Примечание
Актуальная документация по PublicAPI доступна по ссылке.
Внимание!
Сценарий, указанный ниже, актуален для версий системы ELMA до 3.12.1 включительно.
Пространство имен:
using EleWise.ELMA.API;
Текст сценария:
// Загружаем показатель по наименованию 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
Пространство имен:
using EleWise.ELMA.Services; using EleWise.ELMA.KPI.Security; using EleWise.ELMA.KPI.Managers; using EleWise.ELMA.Security.Models;
Текст сценария:
// Загружаем показатель по 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); } }