Язык @-формул в LotusDomino R 6.

Функции для работы со значениями типа "дата-время"


@Now

J @Now( флаги; список_имен_серверов )

Область применения: без ограничений.

Возвращает текущие дату и время как значение типа "дата-время". Во втором варианте синтаксиса флаги могут принимать одно из следующих значений:

  • [ServerTime] – при указании данного и следующего параметра время может браться по таймеру указанного сервера(ов);
  • [LocalTimeOnError] - при указании данного параметра и возникновении ошибки время будет браться по таймеру локальной станции.
  • Параметр список_имен_серверов имеет смысл только при задании флага [ServerTime], и может быть как текстовой строкой, так и списком. В последнем случае возвращаемое значение функции может быть так же списком.

    Время берется по таймеру локальной станции в следующих случаях:

    • если функция используется без параметров;
    • флаг [ServerTime] указан, но текущая база локальная и второй параметр не указан;
    • флаг [LocalTimeOnError] указан, второй параметр задан, но произошла ошибка при попытке получить значение даты-времени с указанного сервера.
    • Соответственно серверное время может быть получено в следующих случаях:

      • если текущая БД находится на сервере, флаг [ServerTime]

        указан, но второй параметр не указан;

      • при задании флага [ServerTime] и указании второго действительного параметра. В этом случае не важно где находится текущая БД, необходимо только чтобы станция имела доступ к указанным серверам.
      • Использование @Now в формулах отбора и колонок может существенно снизить производительность приложения.



        Пример 1. Возвращает [21.01.95 17:30:45] в 17:30:45 21 января 1995.

        @Now

        Пример 2. Может вернуть список [21.01.01 17:30:28] : [21.01.01 17:30:25].

        @Now( [ServerTime] : [LocalTimeOnError]; "server1" : "server2" );

        J @TimeMerge( дата; время [; часовой_пояс])

        Область применения: без ограничений.

        Возвращает значение типа дата/время, которое определяется аргументами функции.

        Параметры дата и время имеют тип дата/время, и определят соответствующие компоненты возвращаемого значения. Необязательный параметр часовой_пояс задает тайм зону возвращаемого значения, тип данных этого параметра должен соответствовать каноническому значению требуемой тайм зоны. Иными словами, в качестве данного параметра можно использовать значение поля, тип которого тайм зона (поле Type = Time zone с закладки Filed Info окна свойств поля).


        Пример 1. Возвращает значение [16.06.2003 16:24:27].

        @TimeMerge( [16.06.2003 12:20:00]; [26.04.1964 16:24:27] )

        Пример 2. Возвращает значение [16.06.2003 16:24:27 ZE7], если формула выполняется на компьютере, находящемся в часовом поясе Красноярска.

        @TimeMerge( [16.06.2003 12:20:00]; [26.04.1964 16:24:27]; @GetCurrentTimeZone)

        @Today

        Область применения: без ограничений. При использовании в формулах полей, возвращает значение текущей даты по таймеру рабочей станции, а не сервера.

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

        Пример 1. Возвращает [02.19.95], если сегодня 19 февраля 1995 г.

        @Today

        Пример 2. Устанавливает в поле ReceivedDate текущую дату.

        FIELD ReceivedDate := @Today;

        @Tomorrow

        Область применения: без ограничений. При использовании в формулах полей, возвращает значение "дата-время" по таймеру рабочей станции, а не сервера.

        Возвращает значение "дата-время", соответствующее завтрашнему дню. При использовании в формулах колонок и отбора документов может значительно снизить производительность работы из-за пересчетов.

        Пример 1. Возвращает [27.04.95], если сегодня 26 апреля 1995 г.

        @Tomorrow

        Пример 2. Устанавливает завтрашнюю дату в поле AnswerBack.

        FIELD AnswerBack := @Tomorrow;

        @Yesterday

        Область применения: без ограничений. Использование функции в формулах колонок и отбора документов может иногда приводить к отображению недостоверных данных, особенно в момент перехода дат. При использовании в формулах полей, возвращает значение "дата-время" по таймеру рабочей станции, а не сервера.

        Возвращает величину "дата-время", соответствующую вчерашнему дню.

        Пример. Возвращает [31.12.94], если сегодня 1 января 1995 г., или [16.8.95], если сегодня 17 августа 1995 г.



        @Yesterday

        @Zone

        @Zone( дата-время

        )

        Область применения: без ограничений.

        Функция возвращает числовое значение, определяющее установки часового пояса с учетом перехода на летнее/зимнее время. При вызове @Zone без параметра, возвращает установки компьютера, на котором она выполнялась. При передаче в качестве аргумента значения дата/время определяет установки, действующие на момент создания этого значения. В аргументе должна обязательно присутствовать компонента времени, в противном случае функция @Zone вернет значение ноль. Если аргумент есть константа, то возвращаемое значение определяет установки, действующие на момент сохранения @-формулы.

        Возвращаемое значение имеет вид:

        (+/-) mmhh.Flag  ,

        где знак для часовых поясов восточнее Гринвича (GMT) отрицателен, соответственно для поясов западнее GMT положителен. mm - минутная составляющая времени относительно GMT, а hh - часовая составляющая. В случае если часовой пояс смещен относительно GMT на целое число часов, компонента mm в возвращаемом значении отсутствует. Flag равен единице, если функция @Zone была вызвана без параметров, и на компьютере установлен переход на летнее/зимнее время, либо при вызове функции с аргументом, он «попал» в интервал с переходом на  «смещенное» время. В противном случае Flag равен нулю.

        Функция @Zone бывает полезна в распределенных БД, расположенных на разных серверах в различных часовых поясах.

        Пример 1. Возвращает (-3005.1) для компьютера, находящегося в Бомбее (GMT + 05:30) с включенным переходом на летнее/зимнее время.

        @Zone

        Пример 2. Возвращает (6.1) для документа, который был создан в Мехико (GMT - 06:00) и дата его создания «попала» в «смещенное» относительно Гринвича  летнее/зимнее время.

        @Zone( @Created )

        Пример 3. Возвращает (-3), если приведенная функция была сохранена в форме, установленной на компьютере в Москве (GMT + 03:00), и дата сохранения не «попала» в «смещенное» относительно Гринвича  летнее/зимнее время.

        @Zone( [12.07.96 07:15:00] )

        Пример 4. Возвращает 0, так как в аргументе отсутствует компонента времени.



        @Zone( [12.07.96] )

        J @GetCurrentTimeZone

        Область применения: без ограничений.

        Функция возвращает текущие настройки часового пояса в каноническом формате. Канонический формат часового пояса предназначен для сохранения значений в новом для R 6 типе полей – Time zone, и, например, для часового пояса Москвы имеет следующий вид: «Z=-3$DO=1$DL=3 -1 1 10 -1 1$ZX=52$ZN=Russian». Для преобразования таких значений к тексту используется функция @TimeZoneToText. При выполнении функции на стороне сервера (например, в агенте по расписанию) возвращает настройки часового пояса сервера, в клиенте – соответственно рабочей станции.

        Пример 1. В формуле значения вычисляемого поля типа Time zone на рабочей станции с настройками часового пояса «(GMT+03:00) Moscow, St. Petersburg, Volgograd» с поднятым флагом «Automatically adjust clock for daylight saving changes» (автоматический переход на летнее время) возвращает значение «Z=-3$DO=1$DL=3 -1 1 10 -1 1$ZX=52$ZN=Russian».

        @GetCurrentTimeZone

        Пример 2. В формуле значения вычисляемого текстового поля с настройками часового пояса из Примера 1 вернет значение «(GMT+03:00) Moscow, St. Petersburg, Volgograd».

        @TimeZoneToText(@GetCurrentTimeZone)


        Содержание раздела