# Заполнение информации по задаче при ее автоматическом создании (пример скрипта для дизайнера) **Category:** [Дизайнер процессов](https://community.tezis-doc.ru/c/workflow-guides/44) **Created:** 2024-07-02 06:37 UTC **Views:** 253 **Replies:** 0 **URL:** https://community.tezis-doc.ru/t/zapolnenie-informaczii-po-zadache-pri-ee-avtomaticheskom-sozdanii-primer-skripta-dlya-dizajnera/259 --- ## Post #1 by @d.slepnev **ВНИМАНИЕ!** Скрипт работает только в случае одного исполнителя! Скрипт выставляет галки "Доступ к карточке-основанию", "Не требует подтверждения выполнения", копирует вложения из документа в задачу и текст из поля "Содержание" документа в поле "Полное описание" задачи. ![image|582x349](upload://df4c69Q9o4jWmrJxeuJrXBW1Bld.png) **Скрипт** ``` // task import com.haulmont.cuba.core.EntityManager import com.haulmont.cuba.core.Persistence import com.haulmont.cuba.core.Transaction import com.haulmont.cuba.core.entity.FileDescriptor import com.haulmont.cuba.core.global.* import com.haulmont.thesis.core.entity.Task import com.haulmont.workflow.core.app.WfService import com.haulmont.workflow.core.entity.Assignment import com.haulmont.workflow.core.entity.AttachmentType import com.haulmont.workflow.core.entity.Card import com.haulmont.workflow.core.entity.CardAttachment import com.haulmont.workflow.core.global.AssignmentInfo import org.apache.commons.collections.CollectionUtils import org.apache.commons.lang.StringUtils import org.apache.commons.lang.exception.ExceptionUtils import org.apache.commons.logging.Log import org.apache.commons.logging.LogFactory Log log = LogFactory.getLog(Scripting.class); Transaction tx = AppBeans.get(Persistence.class).getTransaction(); try { EntityManager em = AppBeans.get(Persistence.class).getEntityManager(); UUID taskId = task.getId(); Task reloadedTask = em.find(Task.class, taskId); if (reloadedTask != null) { copyAttachmentsToTask(card, reloadedTask); setTaskFullDescription(card, reloadedTask); reloadedTask.setParentCardAccess(true); reloadedTask.setConfirmRequired(true); } tx.commit(); } catch (Exception ex) { log.error(ExceptionUtils.getStackTrace(ex)); } finally { tx.end(); } void copyAttachmentsToTask(Card card, Task task) { if (card == null || task == null) return; UserSessionSource UserSessionSource = AppBeans.get(UserSessionSource.class); TimeSource timeSource = AppBeans.get(TimeSource.class); Metadata metadata = AppBeans.get(Metadata.class); EntityManager em = AppBeans.get(Persistence.class).getEntityManager(); List newAttachments = new ArrayList<>(); if (CollectionUtils.isNotEmpty(card.getAttachments())) { for (CardAttachment srcAttachment : card.getAttachments()) { if (srcAttachment.getVersionOf() == null) { CardAttachment newAttachment = metadata.create(CardAttachment.class); newAttachment.setName(srcAttachment.getName()); newAttachment.setCreatedBy(UserSessionSource.getUserSession().getCurrentOrSubstitutedUser().getLogin()); newAttachment.setSubstitutedCreator(UserSessionSource.getUserSession().getCurrentOrSubstitutedUser()); newAttachment.setCreateTs(timeSource.currentTimestamp()); newAttachment.setComment(srcAttachment.getComment()); newAttachment.setVersionNum(srcAttachment.getVersionNum()); newAttachment.setCard(task); if (srcAttachment.getAttachType() != null) { AttachmentType type = em.find(srcAttachment.getAttachType().getClass(), srcAttachment.getAttachType().getId()); newAttachment.setAttachType(type); } if (srcAttachment.getFile() != null) { FileDescriptor fileDescriptor = em.find(srcAttachment.getFile().getClass(), srcAttachment.getFile().getId()); newAttachment.setFile(fileDescriptor); } em.persist(newAttachment); newAttachments.add(newAttachment); } } task.setAttachments(newAttachments); } } void setTaskFullDescription(Card card, Task task) { EntityManager em = AppBeans.get(Persistence.class).getEntityManager(); WfService wfService = AppBeans.get(WfService.NAME); Set assignmentInfos = wfService.getAssignmentInfos(card); if (assignmentInfos.iterator().hasNext()) { AssignmentInfo assignmentInfo = assignmentInfos.iterator().next(); UUID assignmentId = assignmentInfo.getAssignmentId(); Assignment assignment = em.find(Assignment.class, assignmentId); if (assignment != null) { String comment = assignment.getComment(); if (comment != null && !StringUtils.EMPTY.equals(comment)) { task.setFullDescr(comment); } } } } ``` --- **Canonical:** https://community.tezis-doc.ru/t/zapolnenie-informaczii-po-zadache-pri-ee-avtomaticheskom-sozdanii-primer-skripta-dlya-dizajnera/259 **Original content:** https://community.tezis-doc.ru/t/zapolnenie-informaczii-po-zadache-pri-ee-avtomaticheskom-sozdanii-primer-skripta-dlya-dizajnera/259