Не перещитываются автоматически поля

xKlonx

Lotus team
10.09.2009
410
0
#1
Здраствуйте!!!У меня на форме есть computed поле и оно почему - то автоматически не перещитывается,только если я открою форму для редактирования и сохраню.Пожалуста подскажите
 
A

allex

#2
На форме включена опция - автоматического рэфреша
Поле пересчитывается после выполнения скриптом каких либо операций или после ручного ввода
Какой именно computed у поля (for display или when composed)
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
1
#3
У меня на форме есть computed поле и оно почему - то автоматически не перещитывается,только если я открою форму для редактирования и сохраню
а ты хотел чтобы как было? :(
значения полей пересчитываются при обновлении формы.
автоматически обновление происходит при переходе в режим редактирования, перед УИ сохранением.
еще можно в некоторых полях сказать, чтобы при его изменении происходил пересчет формы, ну и кодом.
зы: ну и как выше указано, на форме можно включить галку, но с ней надо осторожно.
 

xKlonx

Lotus team
10.09.2009
410
0
#4
Итак для чего мне это нужно.Я пишу веб страницу и там поместил такой раздел "Сегодня день рождение у"
и во вьюхе Xpage отображаю у кого сегодня день рождение,проблема в том что в пятницу 6 го числа для теста указал 2 человека типа у них день рождение,сегодня проверяю а они отображаются,тоесть поле не перещиталось,поле у меня просто компутед
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
1
#5
какое поле не пересчиталось? где? :(
если надо в режиме чтения чтобы пересчитывалось, использую CFD, но оно не хранится
 
A

allex

#6
В форме документа на postrecalc поставь refresh, а на view обновление раз в сутки

или смотри использование computedwithform

Какой механизм сохранения дока у тебя, нужно ли видеть пересчитанное в документе (тогда переоткрытием решить и вернуть док в режим чтения)
 

xKlonx

Lotus team
10.09.2009
410
0
#7
Akupaka
какое поле не пересчиталось? где?
текстовое поле.Есть 2 поля одно в которое я указываю день рождение человека,и другое компутед с формулой

monthBirth:= @Text(@Month(DOB));
dayBirth:= @Text(@Day(DOB));

monthNow:=@Text(@Month(@Now));
dayNow:=@Text(@Day(@Now));

@If(dayBirth = dayNow & monthBirth=monthNow;"1";"0")

Потом создал вьюху где силект формы и это поле = 1
 
A

allex

#8
На PostreCalc повесь
Код:
@If(dayBirth = dayNow & monthBirth=monthNow;@SetField("твое поле";"1");@SetField("твое поле";"0"))


.
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
1
#9
текстовое поле.Есть 2 поля одно в которое я указываю день рождение человека,и другое компутед с формулой

monthBirth:= @Text(@Month(DOB));
dayBirth:= @Text(@Day(DOB));

monthNow:=@Text(@Month(@Now));
dayNow:=@Text(@Day(@Now));

@If(dayBirth = dayNow & monthBirth=monthNow;"1";"0")

Потом создал вьюху где силект формы и это поле = 1
я бы сказал, что это очень странный подход к задаче...
т.е. фактически, тебе придется документ пользователя (а я так понял, что именно он отображается в виде и хранит дату ДР) менять дважды, если у него ДР наступил, и прошел тот день.

а может быть лучше сделать агент, который просто будет пробегать по докам юзеров и собирать данные о тех, кто счастлив в этот день, и писать эту инфу в отдельный документ в базе, а уже на странице, где нужна эта инфа, отображать нужные данные!
1) не надо править документы пользователя;
2) не нужен никакой вид;
3) инфа отображается так как тебе надо, а не в виде;
имхо :(
 

xKlonx

Lotus team
10.09.2009
410
0
#10
Решил с помощью шедульного агента,куда поместил этот же код

monthBirth:= @Text(@Month(DOB));
dayBirth:= @Text(@Day(DOB));

monthNow:=@Text(@Month(@Now));
dayNow:=@Text(@Day(@Now));SELECT

@If(dayBirth = dayNow & monthBirth=monthNow;@SetField("CheckBirtDay";"1");@SetField("CheckBirtDay";"0"))
Протестировал работает нормально.Спасибо за помощь!
 

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 231
17
#11
Код:
monthBirth:= @Text(@Month(DOB));
dayBirth:= @Text(@Day(DOB));

monthNow:=@Text(@Month(@Now));
dayNow:=@Text(@Day(@Now));SELECT

@If(dayBirth = dayNow & monthBirth=monthNow;@SetField("CheckBirtDay";"1");@SetField("CheckBirtDay";"0"))
ребята, вы чего?
Всё это можно сократить в одну строчку
@If(@Text(@Now; "D2")=@Text(DOB; "D2")....
Symbol Meaning
D0 Year, month, and day
D1 Month and day, year if it is not the current year
D2 Month and day
D3 Month and year