Чтобы выполнить расчет оповещения по показателю эффективности:
1. | В карточке оповещения на вкладке Главная в группе Расчет нажмите на кнопку Текст расчета. Откроется окно редактора ISBL-текстов. |
2. | Введите расчет показателя с помощью ISBL-вычислений. |
3. | Сохраните расчет и карточку оповещения. |
Расчет для формирования и отправки оповещения о значении показателя:
TASK_SENDING_METHOD = "Task" EMAIL_SENDING_METHOD = "Email" TO_ALL_PARTICIPANTS = "Всем участникам" DELIMITER = ";" SenderProgram = КонстЗнач("ПЧПРОГ"; "DIRECTUM") Message = GetRequisiteValueAsString("KeyPerfomanceIndicatorNotifications"; NoticeCode; "ISBSearchCondition"; FALSE) Subject = GetRequisiteValueAsString("KeyPerfomanceIndicatorNotifications"; NoticeCode; "Дополнение"; FALSE) IndicatorCode = GetRequisiteValueAsString("KeyPerfomanceIndicatorNotifications"; NoticeCode; "Indicator"; FALSE) SendingMethod = GetRequisiteValueAsString("KeyPerfomanceIndicatorNotifications"; NoticeCode; "SendingMethod"; FALSE) // Получить последнее значение показателя, для которого // формируется уведомление. LastIndicatorValue = SQL(Format(" select top 1 ind.Value from PIMIndicatorView ind where ind.Indicator = %s order by ind.CalculateDate desc"; GetRequisiteValueAsString("KeyPerfomanceIndicators"; IndicatorCode; SYSREQ_ID; FALSE))) // Сформировать список e-mail. EmployeeCodeList = GetRequisiteValueAsString('KeyPerfomanceIndicatorNotifications'; NoticeCode; 'ISBEvent'; FALSE) if SendingMethod == EMAIL_SENDING_METHOD EMailList = CreateStringList() EMailList.Delimiter = DELIMITER foreach EmployeeCode in CSubString(EmployeeCodeList; DELIMITER) PersonCode = GetRequisiteValueAsString('РАБ'; EmployeeCode; 'Персона'; FALSE) if Assigned(GetRequisiteValueAsString('ПРС'; PersonCode; 'Строка2'; FALSE)) EMailList.Add(GetRequisiteValueAsString('ПРС'; PersonCode; 'Строка2'; FALSE)) endif endforeach AddedEmail = GetRequisiteValueAsString('KeyPerfomanceIndicatorNotifications'; NoticeCode; 'Текст2'; FALSE) if Assigned(AddedEmail) EMailList.Add(AddedEmail) endif Emails = EMailList.DelimitedText if Emails == '' // Необходимо указать получателей электронного письма. Message = LoadString('DIRAA466FDA_CC30_46BB_B285_ABDC22D45FF2'; 'KPIM') Raise(CreateException('EDIRInvalidRequisiteValue'; Message; ecWarning)) endif // Отправить письмо каждому адресату. ПЧТОтправитьПисьмо(Emails; ; ; Subject; Message; SenderProgram) endif // Сформировать задачу. if SendingMethod == TASK_SENDING_METHOD Task = Tasks.CreateNew() Task.Subject = Message Task.ActiveText = Subject Index = 1 EmployeeReference = CreateReference('РАБ'; ; FALSE) EmployeeReference.Open foreach EmployeeCode in CSubString(EmployeeCodeList; DELIMITER) // Если работник с указанным кодом найден и запись для работника // действующая и утвержденная, тогда отправить пользователю задачу. if EmployeeReference.Locate(ArrayOf(SYSREQ_CODE; SYSREQ_STATE; SYSREQ_RECORD_STATUS); ArrayOf(EmployeeCode; 'Действующая'; '+')) UserCode = EmployeeReference.Пользователь if not VarIsNull(UserCode) User = ServiceFactory.GetUserByCode(UserCode) RouteStep = Tasks.CreateRouteStep(Index; User; jkNotice; ''; ''; '') Index = Index + 1 Task.Route.Add(RouteStep) endif endif endforeach EmployeeReference.Close Task.CheckedTask = NO_VALUE Task.AccessType = TO_ALL_PARTICIPANTS Task.Start endif |
© Компания DIRECTUM, 2018 | Сообщество пользователей DIRECTUM |