Как получить значения дополнительных полей
Получить значение дополнительного поля, если известен id поля, можно через HashMap
        Object result = task.getUDFValues().get("udfid").getValue();
        Object result = message.getUDFValues().get("udfid").getValue();
Если id поля нет, можно получить значение через список
 Object result;     
           for(SecuredUDFValueBean valueBean:task.getUdfValuesList()) {
               if(valueBean.getCaption().equals("udf name")) 
                   result = valueBean.getValue();
           } 
 Object result;     
           for(SecuredUDFValueBean valueBean:message.getUdfValuesList()) {
               if(valueBean.getCaption().equals("udf name")) 
                   result = valueBean.getValue();
           } 
Чтобы использовать такой результат в скрипте, его необходимо привести к нужному типу данных.
| Тип поля | Тип результата | Примечание | 
|---|---|---|
| Строка | String | |
| Целое | Integer | |
| Дата | Calendar | |
| Список | com.trackstudio.tools.Pair | Содержится в trackstudio.jar. Конструктор Pair(String key, String value) | 
| Дробное | Double | |
| Текст | String | |
| Множественный список | List<Pair> | |
| Задача | ArrayList<SecuredTaskBean> | |
| Пользователь | ArrayList<SecuredUserBean> | |
| URL | com.trackstudio.containers.Link | Содержится в trackstudio.jar. Конструктор Link(String link, String description) | 
Ниже приведен пример скрипта, который возвращает список имен задач, которые являются значениями поля типа задача.
package scripts.task_custom_field_value;
import com.trackstudio.exception.GranException;
import com.trackstudio.external.TaskUDFValueScript;
import com.trackstudio.secured.SecuredTaskBean;
import com.trackstudio.secured.SecuredUDFValueBean;
import java.util.ArrayList;
class Example implements TaskUDFValueScript {
    
    public Object calculate(SecuredTaskBean task) throws GranException {
        String udfid = "4028808a1947f52201194818b51900ad";  /*ID поля, из которого нужно получить значение*/
        ArrayList<String> names = new ArrayList<String>();
        SecuredUDFValueBean result = task.getUDFValues().get(udfid);
        if(result!= null) {
            for(SecuredTaskBean securedTaskBean:(ArrayList<SecuredTaskBean>)result.getValue())  {
                names.add(securedTaskBean.getName());
            }
        }    return names;
    }
}