# Заполнение в процесс переменной dueDate из длительности этапа (пример скрипта для дизайнера) **Category:** [Дизайнер процессов](https://community.tezis-doc.ru/c/workflow-guides/44) **Created:** 2024-07-02 06:32 UTC **Views:** 124 **Replies:** 0 **URL:** https://community.tezis-doc.ru/t/zapolnenie-v-proczess-peremennoj-duedate-iz-dlitelnosti-etapa-primer-skripta-dlya-dizajnera/257 --- ## Post #1 by @d.slepnev Для работы таймера возможно выбрать время "из процесса". В этом случае таймер смотрит в переменную dueDate, которая проставляется в формах процесса из поля "Завершить до". В случае настройки в процессе "Разрешить задание длительности этапа", поле "Завершить до" скрывается и никак в процессе не заполняется. Скрипт проставляет в переменную процесса dueDate вычисленную по рабочему календарю дату на основании длительности этапа. Если срок не указан, то проставляет 7 календарных дней. Использовали для настройки автоперехода в процессе по таймеру. **Скрипт** ```groovy import com.haulmont.cuba.core.Persistence import com.haulmont.cuba.core.Transaction import com.haulmont.cuba.core.global.AppBeans import com.haulmont.cuba.core.global.TimeSource import com.haulmont.workflow.core.app.WfService import com.haulmont.workflow.core.app.WorkCalendarAPI import com.haulmont.workflow.core.entity.CardRole import org.apache.commons.logging.Log import org.apache.commons.logging.LogFactory Log log = LogFactory.getLog("123"); Persistence persistence = AppBeans.get(Persistence.class); Transaction tx = persistence.createTransaction() CardRole cardRole = null; try { cardRole = persistence.getEntityManager().createQuery("select c from wf\$CardRole c where c.card.id=:cardId and c.code=:code") .setParameter("cardId", card.id) .setParameter("code", "Initiator2").getFirstResult() tx.commit() } finally { tx.end() } if (cardRole != null) { WfService wfService = AppBeans.get(WfService.class) Map processVariables = wfService.getProcessVariables(card); WorkCalendarAPI workCalendar = AppBeans.get(WorkCalendarAPI.NAME); def dueDate; if (cardRole.duration == null || cardRole.duration == 0) { Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.DAY_OF_YEAR, 7) dueDate = calendar.getTime(); } else { dueDate = workCalendar.addInterval(AppBeans.get(TimeSource.class).currentTimestamp(), cardRole.duration, cardRole.timeUnit) } processVariables.put("dueDate", dueDate) wfService.setProcessVariables(card, processVariables) } ``` --- **Canonical:** https://community.tezis-doc.ru/t/zapolnenie-v-proczess-peremennoj-duedate-iz-dlitelnosti-etapa-primer-skripta-dlya-dizajnera/257 **Original content:** https://community.tezis-doc.ru/t/zapolnenie-v-proczess-peremennoj-duedate-iz-dlitelnosti-etapa-primer-skripta-dlya-dizajnera/257