Как получить значение пользовательского поля родительской задачи?

  • 31 августа 2023 г. 9:36
Ответы на вопрос 2
Для получения значения пользовательского поля родительской задачи в скрипте ScriptRunner для Jira, вы можете использовать следующий код:

```groovy
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.Issue

// Получить текущую задачу
def issue = issue as Issue

// Получить родительскую задачу
def parentIssue = issue.getParentObject()

// Проверить, есть ли родительская задача
if (parentIssue) {
    // Получить значение пользовательского поля родительской задачи по ID
    def customFieldManager = ComponentAccessor.getCustomFieldManager()
    def parentCustomField = customFieldManager.getCustomFieldObject(<Your_Custom_Field_ID>)
    def parentCustomFieldValue = parentIssue.getCustomFieldValue(parentCustomField)

    // Вывести значение пользовательского поля родительской задачи
    log.info("Значение пользовательского поля родительской задачи: $parentCustomFieldValue")
} else {
    log.warn("Нет родительской задачи")
}
```

Замените `<Your_Custom_Field_ID>` на фактический ID вашего пользовательского поля. Вы можете узнать ID поля, перейдя на его страницу настроек.

Относительно ошибки "groovy.lang.MissingMethodException: No signature of method: com.atlassian.jira.issue.IssueImpl.getCustomFieldValue()": это может быть вызвано неверным использованием метода. Убедитесь, что у вас есть правильная ссылка на объект задачи и что задача имеет родительскую задачу. Если ошибка сохраняется, проверьте, правильно ли указан ID пользовательского поля.
Вы должны создать экземпляр `Issue`, чтобы обращаться к переменной `issue`. Также рекомендуется проверить, не является ли ваша задача родительской, прежде чем работать с `issue`. То же самое относится и к `customfield`.

Вот рабочий пример:
```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 org.apache.log4j.Logger
import static org.apache.log4j.Level.DEBUG

def _logger = Logger.getLogger("LOGGER")
_logger.setLevel(DEBUG)

String subIssueKey = "TASKIT-249" 
IssueManager issueManager = ComponentAccessor.getIssueManager()
Issue issue = issueManager.getIssueObject(subIssueKey)
_logger.debug("KEY: " + issue.getKey().toString())

if (issue.getParentObject() == null) {
    _logger.debug("Issue: " + subIssueKey + " IS NOT subTask!")
    throw new NullPointerException()
} else {
    issue = issue.getParentObject()
    _logger.debug("KEY: " + issue.getKey().toString())
}

CustomFieldManager customFieldManager = ComponentAccessor.getCustomFieldManager()
String myCustomFieldCode = "customfield_10100"

CustomField myCustomField = customFieldManager.getCustomFieldObject(myCustomFieldCode)
if (myCustomField != null) {
    String myCustomFieldValue =  issue.getCustomFieldValue(myCustomField)
    _logger.debug("Value: " + myCustomFieldValue)
} else {
    _logger.debug("Field: " + myCustomFieldCode + " NOT FOUND!")
}
```
Похожие вопросы