IBM Domino: просмотр формулы с помощью @now - PullRequest
0 голосов
/ 23 мая 2018

В некоторых представлениях есть столбцы с формулой, включая @now.Эти столбцы используются для расчета дней с этого момента.Но эти взгляды такие медленные.Мне просто нужно получить документы в определенной категории из результата просмотра.Есть ли какие-либо настройки, чтобы получить документ категории до расчета дней?Или мне нужно удалить столбцы дней из представления и написать агента для добавления и вычисления столбцов дней к результату представления?

Ответы [ 3 ]

0 голосов
/ 24 мая 2018

Эта формула столбца позволяет добавлять значение Сегодня без использования @Today и, следовательно, много непрерывной обработки;

TodayDateString:= "Today";
Today := @TextToTime(TodayDateString);
@Abs(@Integer((Today - DateToCompare) / (60 * 60 * 24)))
0 голосов
/ 29 мая 2018

Уже ответил, но я все еще чувствовал необходимость добавить свои мысли.

Если вы можете позволить себе трогать свои документы каждый день (например, это просто веб на одном или кластерном сервере), то я бысерьезно подумайте над написанием агента, который обновляет поле «NumDaysOld».

Причина, по которой производительность снижается, если у вас есть @Now или @Today в выборе представления или формуле столбца, заключается в том, что индексатор знает, что пришло время-зависимый и, следовательно, не хранит индекс представления (или, может быть, просто не хранит весь индекс, я не уверен), заставляя его перестраивать каждый раз, когда к нему обращаются.

Если вы обманываете этоиспользуя @TextToTime («Сегодня»), тогда ваше представление индексирует риск того, что оно устарело, потому что, если документ не изменяется в течение n дней, представление не изменяется в течение n дней, и индексатор не запускается ...

Возможно, лучшая практика - написать агента, который будет каждый день менять формулу столбца, чтобы вместо @Today использовать буквальную дату (используя квадратные скобки, например [5/ 29/2018]), а затем напишите агенту, который будет менять эту формулу столбца каждый день.Я никогда не пробовал этого, потому что это было недоступно для меня, когда мне нужно было сделать что-то подобное.(Прошло много времени.) Вместо этого я решил эту проблему следующим образом:

  • , написав агент, который изменил каждый документ, чтобы обновить возраст документа, или
  • , создав папки для«<1 месяц», «от 2 до 6 месяцев» и т. Д., И имел ежедневного агента, который заполнял / исправлял папки, или </li>
  • , чтобы избежать проблемы, просматривая открытые документы, отсортированные по дате изатем пытаемся убедить конечных пользователей, что это достаточно близко!:-P (не горжусь этим)
0 голосов
/ 23 мая 2018

"Или [сделать] мне нужно удалить столбцы дней из представления и написать агент для добавления и вычисления столбцов дней к результату представления?"

Да.@ Теперь в формуле представления это рецепт плохой производительности.Создайте запланированный агент, который запускается один раз в день и обновляет поле в документе, а затем показывает это поле в представлении.

...