Перейти к содержанию

Настройка отмены процесса по кнопке

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

Сценарий: Процесс «Согласование договора». Инициатор решает, что договор больше неактуален и хочет отменить согласование. 

Описание: Реализовывать данную настройку мы будем, основываясь на межпроцессном взаимодействии.

 

Настройка:

1. Перейдите в «Типы сообщений» и создайте новый шаблон сообщения с типом «Внутренний шаблон» (см. Добавление типов сообщений). Добавьте нужные вам атрибуты, которые вы хотите передавать в основной процесс при отмене (например, комментарий). Запомните имя сообщения, оно будет использовано далее.

Настройка шаблона сообщения

Настройка шаблона сообщения

2. В шаблоне записи, связанном с основным процессом «Согласование договора», создайте атрибут $processid.

3. На выходе из стартового события в процессе «Согласование договора» заполните этот атрибут процессным атрибутом ProcessID.

4. В этом же процессе сразу после стартового события поставьте параллельную развилку. Одна часть пойдёт по вашему настроенному процессу, а другая — в промежуточное событие–получение сообщения. В настройках события укажите имя сообщения (п.1.), и настройте соответствие атрибутов, если нужно.

Настройка основного процесса

Настройка основного процесса

Примечание : важно, чтобы все выходы из процесса в данном случае были терминаторами, чтобы останавливался весь процесс, а не одна его ветка.

Таким образом, при запуске процесса будут активны обе ветки и процесс завершится либо по настроенной логике (например, договор не согласован), либо если в событие–получение сообщение придет сообщение об отмене.

5. Создайте технический процесс «Отмена договора» с новым шаблоном записи (например, «Отмены договоров»). В новом шаблоне создайте необходимые атрибуты: ссылка на шаблон, связанный с основным процессом (с обратной коллекцией) и, например, комментарий, который будет заполняться на стартовой форме.

Настройка технического процесса

Настройка технического процесса

В настройках события–отправки сообщения укажите имя сообщения из п.1, и экземпляр процесса по типу: $DogovorRef-> processid, где $Dogovor — ссылка на шаблон, связанный с основным процессом, processid — атрибут, созданный в п.3, хранящий информацию об экземпляре запущенного процесса. Если необходимо, настройте соответствие атрибутов.

6. В шаблоне, связанном с основным процессом, создайте новую операцию «Отменить договор».

  • Тип операции — Запустить связанный процесс (по коллекции);
  • Результат выполнения — Обновить данные;
  • Контекст выполнения — Запись;
  • Шаблон — Отмена договора (атрибут: ссылка на текущий шаблон записи).

Если нужно, настройте условие видимости кнопки.

7. Вынесите кнопку на панель инструментов для списков, формы, или на саму форму.

8. Тестируйте.