Бэ Вэ Пять

TaskFormDsl. 3.8.0 update

//добавлена функция "#NULL" для обнуления значения

//пример
task.initiatoruserid.setValue(#NULL)


//добавлены функции для работы с полем "заявитель"

//получить значение
task.initiatoruserid.value
task.initiatorgroupid.value

//установить значение
task.initiatoruserid.setValue(...)
task.initiatorgroupid.setValue(...)


//добавлены функции для работы с доп полями "Date" и "DateTime"

//получить значение
task.addfield_test1Date.value
task.addfield_test1DateTime.value

//установить значение
task.addfield_test1Date.setValue('2026-01-01')
task.addfield_test1DateTime.setValue('2026-01-01T10:00:00')


//добавлены функции для работы с полями "срок выполнения (план\факт)" и "срок реакции (план\факт)"

//получить значение "срок выполнения (план\факт)"
task.resolutiondateplan.value
task.resolutiondatefact.value

//установить значение "срок выполнения (план\факт)"
task.resolutiondateplan.setValue(...)
task.resolutiondatefact.setValue(...)

//получить значение "срок реакции (план\факт)"
task.reactiondateplan.value
task.reactiondatefact.value

//установить значение "срок реакции (план\факт)"
task.reactiondateplan.setValue(...)
task.reactiondatefact.setValue(...)


//добавлена функция для получение текущей даты
date.now

//добавлена функция diff для вычисления разницы между двумя датами
date.diff(date1, date2, unit)

//при вызове происходит вычитание date2 из date1
//если date1 меньше чем date2, то результатом будет отрицательное число
//unit - разрядность вычитания, доступные значения:
// year | month | day | hour | minute | second | millisecond

//пример
//выдавать ошибку если в дату выполнения заявки установили значение меньше чем 5 дней от текущей даты
if(number.bool(date.diff(task.resolutiondateplan.value, date.now, day) < 5)) {
throw 'Дата выполнения должна быть больше 5 дней от текущей даты'
}


//работа с комментарием

//получить html текст комментария
task.comment.value

//установить html текст комментария
task.comment.setValue(...)

//преобразовать html text в plain text
html.toPlainText(...)

//пример скрипта
//в доп поле с типом "текст" установить plain text из комментария
task.addfield_testText.setValue(html.toPlainText(task.comment.value))

//добавлена возможность менять значения выпадающих списков на форме заявки для доп полей с типом "SingleSelect" и "MultiSelect"

//возможно установить 2 значнения:
// [...],  строковый массив значений
// default, для загрузки полного списка

//для правильной работы в стандартном списке должны быть указаны все значения, которые используются в скрипте,
//иначе значение из скрипта будет проигнорировано

script {
    rule {
        name: 'test rule'
        action {
            
           //секция по работе с внешним видом формы заявки
            ui {
               //alias доп поля
                addfield_testSingleSelect {
                    //загрузить стандартный список
                    list = default
                }
                
                //alias доп поля
                addfield_testMultiSelect {
                    //показать только заданные значения
                    list = ['1', '2']
                }
            }
        }
    }
}



//добавлена возможность создавать кастомные функции с возвращаемым значением

//пример с построчным комментарием возможностей

script {

helpers {
//создана функция test1
function test1(nFactor, mFactor){

//в v1 и v2 запомнили значения доп полей
var v1 = task.addfield_dopPoleNumber.value
var v2 = task.addfield_factorNumber.value

//в v3 вычислили произведение v1 на v2
var v3 = number.math(vars#v1 * vars#v2)

//в v4 вычислили деление v3 на динамичный аргумент nFactor
var v4 = number.math(vars#v3 / args#nFactor)

//результатом функции будет умножение v4 на mFactor
return number.math(vars#v4 * args#mFactor)
}

//можно создать функцию без аргументов
function getServiceId() {
return task.serviceid.value
}
}

rule {
name: 'rule test'
action {
//вызов функции с аргументами
task.comment.setValue(func#test1(10, 15))

//вызов функции без аргументов
task.comment.setValue(func#getServiceId())
}
}