...

Настройка уведомлений о выполнении проектных задач в Ленту проекта

Тема в разделе "Примеры решений и дополнительных модулей", создана пользователем mochalov, 10 июн 2024.

  1. mochalov

    mochalov Участник

    В разделе "Проекты" на форму просмотра проекта по умолчанию вынесен виджет "Лента проекта". По своей сути является виджетом, использующим ленту объекта "Проект".

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

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

    Для этого предлагаю реализовать отправку уведомлений через обработчик событий в модуле на изменение прогресса в проектных задачах.

    Код:
    
    async function action(): Promise<void> {
      if (
    Context.data.__item!.namespace === '_project_management' && Context.data.__item!.code === '_project_task') {
        
    //выполняем поиcк элемента по id, где _project_task - контекстная переменная из настроек модуля
        
    var task await Namespace.params.fields.project_task.app.search().where(=> a.__id.eq(Context.data.__item!.id)).first();
        if (
    task && task.data._progress == 100) {
          const 
    responsible await task.data._responsible!.fetch();
            
    let message 'Ответственный ' responsible.data.__name;
            if (
    task.data._project_ref){
            const 
    project await task.data._project_ref!.fetch();
            
    project.sendMessage('Задача 'task.data.__name ' выполнена',message)
            }     
          }
        }
    }
    Файл модуля прилагаю.

    Вложения: