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

Тема в разделе "Lotus - Программирование", создана пользователем xKlonx, 9 ноя 2009.

  1. xKlonx

    xKlonx Lotus team
    Lotus team

    Регистрация:
    10 сен 2009
    Сообщения:
    412
    Симпатии:
    0
    Здраствуйте!!!У меня на форме есть computed поле и оно почему - то автоматически не перещитывается,только если я открою форму для редактирования и сохраню.Пожалуста подскажите
     
  2. allex

    allex Гость

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

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    а ты хотел чтобы как было? :(
    значения полей пересчитываются при обновлении формы.
    автоматически обновление происходит при переходе в режим редактирования, перед УИ сохранением.
    еще можно в некоторых полях сказать, чтобы при его изменении происходил пересчет формы, ну и кодом.
    зы: ну и как выше указано, на форме можно включить галку, но с ней надо осторожно.
     
  4. xKlonx

    xKlonx Lotus team
    Lotus team

    Регистрация:
    10 сен 2009
    Сообщения:
    412
    Симпатии:
    0
    Итак для чего мне это нужно.Я пишу веб страницу и там поместил такой раздел "Сегодня день рождение у"
    и во вьюхе Xpage отображаю у кого сегодня день рождение,проблема в том что в пятницу 6 го числа для теста указал 2 человека типа у них день рождение,сегодня проверяю а они отображаются,тоесть поле не перещиталось,поле у меня просто компутед
     
  5. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    какое поле не пересчиталось? где? :(
    если надо в режиме чтения чтобы пересчитывалось, использую CFD, но оно не хранится
     
  6. allex

    allex Гость

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

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

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

    xKlonx Lotus team
    Lotus team

    Регистрация:
    10 сен 2009
    Сообщения:
    412
    Симпатии:
    0
    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
     
  8. allex

    allex Гость

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


    .
     
  9. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    я бы сказал, что это очень странный подход к задаче...
    т.е. фактически, тебе придется документ пользователя (а я так понял, что именно он отображается в виде и хранит дату ДР) менять дважды, если у него ДР наступил, и прошел тот день.

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

    xKlonx Lotus team
    Lotus team

    Регистрация:
    10 сен 2009
    Сообщения:
    412
    Симпатии:
    0
    Решил с помощью шедульного агента,куда поместил этот же код

    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"))
    Протестировал работает нормально.Спасибо за помощь!
     
  11. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.046
    Симпатии:
    18
    Код (Text):
    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")....
     
  12. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    как будто это что-то изменит ))
     
  13. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.046
    Симпатии:
    18
    еще как изменит :)
     
Загрузка...

Поделиться этой страницей