Функции для работы со значениями типа "дата-время"
@Now
J @Now( флаги; список_имен_серверов )
Область применения: без ограничений.
Возвращает текущие дату и время как значение типа "дата-время". Во втором варианте синтаксиса флаги могут принимать одно из следующих значений:
- [ServerTime] – при указании данного и следующего параметра время может браться по таймеру указанного сервера(ов);
- [LocalTimeOnError] - при указании данного параметра и возникновении ошибки время будет браться по таймеру локальной станции.
- если функция используется без параметров;
- флаг [ServerTime] указан, но текущая база локальная и второй параметр не указан;
- флаг [LocalTimeOnError] указан, второй параметр задан, но произошла ошибка при попытке получить значение даты-времени с указанного сервера.
- если текущая БД находится на сервере, флаг [ServerTime]
указан, но второй параметр не указан;
- при задании флага [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)