Выборка Для Представления

Тема в разделе "Lotus - Программирование", создана пользователем orion, 13 мар 2014.

  1. orion

    orion Active Member

    Регистрация:
    22 окт 2013
    Сообщения:
    39
    Симпатии:
    0
    Всем доброго времени суток!
    Столкнулся со странным явлением.
    Есть представление, в котором выборка документов идёт по условию:
    Код (Text):
    select (form="Форма1" | form="Форма2") & (field1="Текст") & (field2=@date(@now))
    - field2 - имеет формат Date/Time. Располагается в подформе, которая внедрена в формы Форма1 и Форма2.

    А теперь главное. Если поле делаю Computed, то выборка документов не работает. Если поле - Editable, то выборка документов работает.
    Это так и должно быть?
     
  2. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.051
    Симпатии:
    146
    Поля работаю, только что проверял, правда поле было текстовое.
    Так что вопрос что именно прописано в поле field2, возможно там затесалось время.
     
  3. susinmn

    susinmn Well-Known Member

    Регистрация:
    16 окт 2007
    Сообщения:
    530
    Симпатии:
    8
    1. Тормозить будет представление
    Попробуй так: @Date(field2)=@Date(@TextToTime("Today"))
     
  4. orion

    orion Active Member

    Регистрация:
    22 окт 2013
    Сообщения:
    39
    Симпатии:
    0
    savl

    Поле именно Дата/Время. И, навряд ли, от смены типа Computed/Editable появляется/исчезает время.... :blush:

    susinmn

    Твой вариант заработал с типом поля Computed. Не знаю даже в какой бубен стучать :D
    Спасибо большое!
     
  5. erdi

    erdi Well-Known Member

    Регистрация:
    20 авг 2008
    Сообщения:
    261
    Симпатии:
    36
    ну 1-е. Не использовать @now в представлениях...если без них никак, тогда уже лучше today := @Today; и (field2=today)
    2-е На всякий случай я ставлю проверку f2:=@If(@IsText(field2);@TextToTime(field2);field2); и (f2=today)

    объединив оба пожелания
    Код (LotusScript):
    today := @Today;
    f2:=@If(@IsText(field2);@TextToTime(field2);field2);
    select (form="Форма1" | form="Форма2") & (field1="Текст") & (f2=today)
    Добавлено: для общего развития на будущее
    Основы производительности для разработчиков IBM Lotus Notes
    Time/Date views in Notes: What are the options?
     
  6. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Завтра без ребьюлда представления эта формула уже не будет работать.
     
  7. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.051
    Симпатии:
    146
    orion
    Значит в поле field2 было время, раз @Date помогла.

    Вот тебе пример LS агента, который каждое утро в 6 часов меняет дату в формуле.
    Вполне быстро открывается представление после этого.

    Поменяй как необходимо и сделай расписание, одно из решений для ухода от @Today/@Now

    Код (LotusScript):
    Option Public
    Option Declare

    Sub Initialize
    Dim ses As New NotesSession
    Dim db As NotesDatabase
    Dim view As NotesView
    Dim dToday As New NotesDateTime(Today)
    Dim sFormula As String

    Set db = ses.Currentdatabase

    Set view = db.Getview("Pay2Today")
    sFormula = {SELECT Form = "Invoice":"InvoiceSF":"InvoiceNoF" & deleted = "" & StatusNumber = "600" & Srok = [}
    sFormula = sFormula & dToday.Dateonly & {] }
    sFormula = sFormula & { & @IsUnavailable($Conflict)}
    view.Selectionformula = sFormula

    End Sub
     
  8. susinmn

    susinmn Well-Known Member

    Регистрация:
    16 окт 2007
    Сообщения:
    530
    Симпатии:
    8
    А задача UpdateAll не должна такие представления перестраивать?
     
  9. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    ХЗ. У нас не перестраивает.
     
  10. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.051
    Симпатии:
    146
    UpdateAll все базы обработает + окурки снесет , а если этого не надо?
    Так что думаю именно перестроить не получится, если не побить.
    Так что лучше агентом.
     
  11. orion

    orion Active Member

    Регистрация:
    22 окт 2013
    Сообщения:
    39
    Симпатии:
    0
    savl
    Извиняюсь, поторопился вчера с выводом. Перепроверил - не работает и с "today" если поле ставится "Computed".
    Учёл замечания. Взял агента на вооружение :blush: Спасибо!

    erdi
    Спасибо за ссылки!
     
Загрузка...

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