Кнопка «Принять в работу» для задачи. Настройка на C#
Введение
Здесь представлен пример С#-скрипта для кнопки, нажав которую, пользователь может принять задачу в работу. При этом в записи, связанной с задачей, будет проставлена дата принятия задачи в работу.
Скрипт запускается по нажатию кнопки на форме пользовательской задачи.
Прикладная задача
Имеется бизнес-процесс, в котором пользовательская задача назначается сразу на весь отдел.
Требуется дать сотрудникам отдела возможность самостоятельно брать задачу в работу.
При нажатии кнопки «Принять в работу» должны выполняться следующие действия:
- исполнителем задачи становится пользователь, нажавший кнопку;
- в атрибут «Дата принятия в работу» записывается текущая дата и время.
Дату принятия в работу, например, можно использовать в бизнес-отчётах и для отслеживания хода работ.
Отслеживание дат принятия различных задач
Если требуется отслеживать дату принятия нескольких задач, создайте для каждой задачи отдельный атрибут, хранящий дату принятия задачи в работу, и устанавливайте его значение отдельно для данной задачи.
Если использовать один и тот же атрибут даты принятия в работу для разных задач, в них будет отображаться некорректная информация: дата последнего нажатия кнопки «Принять в работу».
Настройка скрипта
Логика работы скрипта
Представленный здесь скрипт работает следующим образом:
- Получает ID текущей пользовательской задачи из контекста операции кнопки.
- Получает ID текущего пользователя, нажавшего кнопку.
- Назначает задачу текущему пользователю.
- Получает ID записи, связанной с задачей.
- Записывает текущую дату и время в атрибут «Дата принятия в работу» в запись, связанную с задачей.
- Возвращает результат выполнения операции с сообщением для пользователя.
-
В шаблоне записи, связанном с шаблоном процесса, создайте атрибут типа «Дата и время»:
- Название: Дата принятия в работу
- Системное имя:
ДатаПринятия
-
На диаграмме процесса создайте пользовательскую задачу и выберите её исполнителей (например, укажите группу, содержащую всех сотрудников отдела).
-
В шаблоне процесса создайте кнопку со следующими свойствами:
- Отображаемое название: Принять в работу
- Контекст операции: пользовательская задача
- Операция: C#-скрипт
- Результат выполнения: обновить данные
-
На вкладке «Скрипт» введите следующий код:
Подстановка фактических имён и значений
Замените в коде системное имя
ДатаПринятияна фактическое системное имя атрибута «Дата принятия в работу» в вашем шаблоне записи.Скрипт для принятия задачи в работу// Импорт базовых типов и функций .NET Framework для работы с данными.using System;// Импорт классов коллекций и словарей для хранения данных.using System.Collections.Generic;// Импорт классов для работы с сущностями данных.using Comindware.Data.Entity;// Импорт классов для обработки нажатий кнопок// и возврата результатов выполнения скрипта.using Comindware.TeamNetwork.Api.Data.UserCommands;// Импорт основных классов для работы с данными в {{ productName }}.using Comindware.TeamNetwork.Api.Data;class Script{// userCommandContext содержит данные контекста при нажатии кнопки.public static UserCommandResult Main(UserCommandContext userCommandContext, Comindware.Entities entities){// Получаем ID текущего пользователя, нажавшего кнопку.var currentUser = userCommandContext.CurrentUserId;// Получаем ID текущей пользовательской задачи из контекста операции кнопки.var taskId = userCommandContext.ObjectIds[0].ToString();// Назначаем задачу текущему пользователю.Api.TeamNetwork.UserTaskService.Reassign(taskId, currentUser);// Получаем ID записи, связанной с пользовательской задачей.var businessObjectId = Api.TeamNetwork.UserTaskService.GetBusinessObject(taskId);// Получаем текущую дату и время для записи в атрибут.var currentDateTime = DateTime.Now.ToString();// Записываем текущую дату и время в атрибут с системным именем ДатаПринятия.Api.TeamNetwork.ObjectService.EditWithAlias(businessObjectId, new Dictionary<string,object>{{"ДатаПринятия", currentDateTime}});// Формируем результат выполнения скрипта с сообщением для пользователя.var result = new UserCommandResult{Success = true,Commited = true,Messages = new[]{new UserCommandMessage{Severity = SeverityLevel.Normal,// Пример: Задача (ID 12345) принята в работу 15.01.2024 14:30:00Text = "Задача (ID " + taskId + ") принята в работу " + currentDateTime}}};return result;}} -
Сохраните кнопку.
- Поместите кнопку «Принять в работу» на форму пользовательской задачи.
Тестирование
- Запустите процесс с пользовательской задачей, назначенной на отдел.
- Откройте пользовательскую задачу от имени одного из сотрудников отдела.
- Нажмите кнопку «Принять в работу».
-
Убедитесь, что:
- исполнителем задачи стал пользователь, нажавший кнопку (задача должна появиться у него на странице «Мои задачи»);
- в атрибуте «Дата принятия в работу» записаны дата и время нажатия кнопки «Принять в работу»;
- отобразилось сообщение об успешном выполнении операции с указанием ID задачи и даты принятия в работу.
-
Проверьте, что другие сотрудники отдела больше не видят эту задачу в своём списке задач.
Эта статья была полезна 1 чел.