Мне нужна помощь с groovy скриптом, который пересчитывает значение числового поля в родительской заявке при изменении поля в дочерней заявке. В консоли Groovy скрипт работает нормально, но когда я пытаюсь использовать его в Console Scriptrunner, появляются ошибки, такие как "No such property: issuetype for class: com.atlassian.jira.issue.Issue...". Вот сам скрипт: import com.atlassian.jira.component.ComponentAccessor import com.atlassian.jira.issue.fields.CustomField import com.atlassian.jira.issue.CustomFieldManager import com.atlassian.jira.issue.IssueManager import com.atlassian.jira.issue.Issue def subTaskSum=0 issue.getSubTaskObjects().findAll{it.issuetype.name == "Этап/Заявка" && it.status.name in ["Подписан", "Закрыт"]}.each{subTaskSum += it.get("customfield_13203")} issue.setFieldValue("customfield_13302", subTaskSum) return issue.get("customfield_13302")
Скрипт выше имеет синтаксическую ошибку. В последней строке вы используете метод `issue.get()`, который не существует для объекта типа `Issue`. Вместо этого вы можете использовать метод `getCustomFieldValue()`, чтобы получить значение пользовательского поля. Кроме того, вам необходимо добавить импорт `com.atlassian.jira.issue.MutableIssue` и заменить `issue.setFieldValue()` на `issue.setCustomFieldValue()`, чтобы установить значение пользовательского поля. Исправленный скрипт должен выглядеть так: ```groovy import com.atlassian.jira.component.ComponentAccessor import com.atlassian.jira.issue.fields.CustomField import com.atlassian.jira.issue.CustomFieldManager import com.atlassian.jira.issue.IssueManager import com.atlassian.jira.issue.Issue import com.atlassian.jira.issue.MutableIssue def subTaskSum = 0 issue.getSubTaskObjects().findAll { it.issuetype.name == "Этап/Заявка" && it.status.name in ["Подписан", "Закрыт"] }.each { subTaskSum += it.getCustomFieldValue(ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("customfield_13203")) as int } issue.setCustomFieldValue(ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("customfield_13302"), subTaskSum) return issue.getCustomFieldValue(ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("customfield_13302")) as int ``` Проверьте этот исправленный скрипт и попробуйте снова использовать его в ScriptRunner. Он должен работать правильно без ошибок.
Не знаю, что такое "консоль Groovy" и какие функции в ней работают хорошо. Однако, в объекте Issue нет метода getIssuetype(), но есть getIssueType(). Поэтому для получения типа задачи нужно использовать issueType.name. Также не известно про метод setFieldValue. В объекте MutableIssue его нет. А метод setCustomFieldValue не сохраняет информацию в базе данных, а только устанавливает значение в объекте. Однако, в общем, такой подход не является оптимальным. Было бы лучше использовать вычисляемое поле, чтобы информация оставалась актуальной всегда.