Задача, при вводе пользователем кривой(некорректной) даты рождения скорректировать ее и отобразить пользователю на экран без сохранения записи.
Чтобы это сделать, необходимо на поле БК(BusinessComponent) установить параметр Immediate Post Change = TRUE
Затем добавить ServerScript на эту компоненту на событие BusComp_PreSetFieldValue.
Скрипт должен подменять значение на корректное.
Пример скрипта по исправлению даты рождения:
Скажем сегодня 2013 год,
вы ввели: 17.04.2013 или просто 17.04 в результате получаем 17.04.1900
вы ввели: 17.04.2083 в результате получаем 17.04.1983
Данный код позволяет исправить такую неприятную особенность:
При обычном вводе даты в Siebel с неполным годом, он дополняет год текущим веком
например 17.04.38 в результате даст 17.04.2038
при использовании данного скрипта мы получим 17.04.1938, что нам и требуется.
Чтобы это сделать, необходимо на поле БК(BusinessComponent) установить параметр Immediate Post Change = TRUE
Затем добавить ServerScript на эту компоненту на событие BusComp_PreSetFieldValue.
Скрипт должен подменять значение на корректное.
Пример скрипта по исправлению даты рождения:
function BusComp_PreSetFieldValue (FieldName, FieldValue) { //свойство поля Birth Date: Immediate Post Change = TRUE, иначе пользователь не увидит изменений var s:String=FieldValue; var d:Date=new Date(); var fR:float=ContinueOperation; if (FieldName=="Birth Date") { if (s.substr(s.length-4,4)==d.getFullYear()) { this.SetFieldValue("Birth Date",s.replace(d.getFullYear(),"1900")); fR=CancelOperation; } else if (s.substr(s.length-4,4)>d.getFullYear()) { this.SetFieldValue("Birth Date",s.substr(0,s.length-4)+"19"+s.substr(s.length-2,2)); fR=CancelOperation; } } d=null; s=null; return (fR); }Данный код подменяет дату на 1900, если пользователь не указал год (т.е. там указан текущий год) и заменяет первые два символа года, если год в дате находится в будущем, например:
Скажем сегодня 2013 год,
вы ввели: 17.04.2013 или просто 17.04 в результате получаем 17.04.1900
вы ввели: 17.04.2083 в результате получаем 17.04.1983
Данный код позволяет исправить такую неприятную особенность:
При обычном вводе даты в Siebel с неполным годом, он дополняет год текущим веком
например 17.04.38 в результате даст 17.04.2038
при использовании данного скрипта мы получим 17.04.1938, что нам и требуется.
Более точно, дополняет не текущим веком - а от 1950 до 2050.
ОтветитьУдалитьhttp://docs.oracle.com/cd/E16348_01/books/eScript/methods_reference55.html
Не могу ни подтвердить не опровергнуть ваш комментарий, т.к. автоматическая подмена даты осуществляется не в eScript, а на уровне ActiveX контрола использующегося в HighInteractivity
ОтветитьУдалить