Как получить значения дополнительных полей
Получить значение дополнительного поля, если известен 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;
}
}