# Скрипт для определения пользователя из доп. поля как участника процесса (пример скрипта для дизайнера) **Category:** [Дизайнер процессов](https://community.tezis-doc.ru/c/workflow-guides/44) **Created:** 2024-07-02 08:11 UTC **Views:** 130 **Replies:** 0 **URL:** https://community.tezis-doc.ru/t/skript-dlya-opredeleniya-polzovatelya-iz-dop-polya-kak-uchastnika-proczessa-primer-skripta-dlya-dizajnera/272 --- ## Post #1 by @d.slepnev В рамках процесса необходимо чтобы пользователь с ролью "Ответственный" автоматически добавлялся в список согласующих на одноименную роль. Брать его надо из доп. поля "Ответственный" на вкладке "Детали". В скрипте необходимо указать код доп. поля, имя роли и код процесса. Пример дизайна, где используется скрипт. **Скрипт** ``` import com.haulmont.cuba.core.global.AppBeans import com.haulmont.cuba.core.global.DataManager import com.haulmont.cuba.core.global.LoadContext import com.haulmont.cuba.core.global.Metadata import com.haulmont.cuba.security.entity.User import com.haulmont.thesis.core.entity.Doc import com.haulmont.workflow.core.entity.CardRole import com.haulmont.workflow.core.entity.ProcRole import groovy.transform.Field Doc doc = card; @Field DataManager dataManager = AppBeans.get(DataManager.NAME) clearChiefRoles(); User user = doc.getValue("+123"); if (user != null) { ProcRole procRole = getProcRoleByCode("Ответственный"); Metadata metadata = AppBeans.get(Metadata.NAME); CardRole chiefCardRole = metadata.create(CardRole.class); chiefCardRole.setCard(doc); chiefCardRole.setProcRole(procRole); chiefCardRole.setCode(procRole.getCode()); chiefCardRole.setUser(user); chiefCardRole.setSortOrder(1); dataManager.commit(chiefCardRole); } return true; def void clearChiefRoles() { ProcRole procRole = getProcRoleByCode("Ответственный"); for (CardRole cardRole : card.getRoles()) { if (cardRole.getProcRole().equals(procRole)) { dataManager.remove(cardRole); } } } def ProcRole getProcRoleByCode(String code) { LoadContext context = new LoadContext(ProcRole.class) .setView("task-edit"); context.setQueryString("select pr from wf\$ProcRole pr where pr.code = :code and pr.proc.code = :procCode") .setParameter("code", code) .setParameter("procCode", "ubi"); return dataManager.load(context); } ``` --- **Canonical:** https://community.tezis-doc.ru/t/skript-dlya-opredeleniya-polzovatelya-iz-dop-polya-kak-uchastnika-proczessa-primer-skripta-dlya-dizajnera/272 **Original content:** https://community.tezis-doc.ru/t/skript-dlya-opredeleniya-polzovatelya-iz-dop-polya-kak-uchastnika-proczessa-primer-skripta-dlya-dizajnera/272