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

Определения свойств, характеристик и состояния текущего документа


@Created

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

Возвращает время и дату создания документа.

Пример 1. Возвращает [15.02 93 14:01:00] для документа, созданного 15 февраля 1993 г. в 14:01.

@Created

Пример 2. Возвращает [04.08.93 13:10:00] для документа, созданного 4 апреля 1992 г. в 13:10.

@Adjust( @Created; 1; 4; 0; 0; 0; 0)

@Modified

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

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

Пример 1. Возвращает [30.9.92 11:00:00], если документ в последний раз сохранялся 30 сентября 1992 г. в 11:00.

@Modified

Пример 2. Возвращает строку, составленную из содержимого поля Topic, пробела, текста "Последнее изменение: " и значения "дата-время" последнего сохранения документа, преобразованного в текст.



Topic + " " + "Последнее изменение: " + @Text( @Modified )

@Accessed

Область применения: нельзя использовать в формулах отбора и навигатора. Функция "чувствительна" к часовому поясу.

Возвращает величину дата/время последнего доступа (для чтения или записи) к документу. Величина, возвращаемая @Accessed, указывает время последнего доступа к документу в данной реплике базы данных; каждая реплика хранит свое собственное значение для одного и того же документа. Эта величина "точна до дня" - при очередном обращении к документу в течение дня она не изменяется.


@Accessed чаще всего используется в формулах полей, формулах отбора, акциях и агентах. Будьте осторожны, используя @Accessed в видах (в формулах колонок или формулах выбора), так как она форсирует обновление вида при каждом его открытии. Если БД хранится на CDROM, использование @Accessed не имеет смысла, т.к. доступ к базе для записи или чтения не контролируется Domino.

Эта функция может быть полезна для определения, не "застрял" ли документ в процессе обработки. Например, Вы можете написать агент, который проверяет дату последнего доступа к документам, и напоминает о тех документах, к которым длительно не обращались. @Accessed также может использоваться в агенте для архивирования документов, к которым отсутствовал доступ на протяжении определенного периода времени.

Пример. Возвращается [30.09.94 11:00:00], если документ был последний раз прочитан или редактирован 30 сентября 1994 в 11:00.

@Accessed

@Author

Область применения: нельзя использовать в формулах навигатора.

Возвращает текстовый список имен авторов текущего документа. Имена возвращаются в сокращенной, а не канонической форме. Для определения списка имен авторов используется следующий алгоритм:

  • в документе ищется поле типа "Авторы", если оно одно возвращается его значение. Если таких полей несколько - возвращается значение первого из найденных полей этого типа;


  • если поле типа "Авторы" не найдено, ищется поле с именем "From", и если оно найдено, то ищется поле "FromDomain". Если оба поля найдены, то возвращаемое значение есть объединение значений этих полей через символ "@". Например, Evgeny V. Polyakov/ITDept/Technics/CenterTV/RU@CenterTV . Если найдено только поле "From", то возвращается оно;


  • если поле "From" не найдено, то ищется поле "$UpdatedBy". Если оно одно, то возвращается его значение;


  • если поле "$UpdatedBy" не найдено, и документ является новым (еще ни разу не сохраненным), то возвращается имя текущего пользователя;




  • если все предыдущие шаги закончились неудачей - возвращается пустая строка.


  • Пример. Возвращается "Evgeny V. Polyakov/ITDept/Technics/CenterTV/RU@CenterTV" для документов, отправляемых почтой автором этих строк.

    @Author

    @DocLength

    Область применения: нельзя использовать в формулах навигатора.

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

    • в расчет включаются только данные, введенные пользователем, не учитываются формулы и статичный текст;


    • размер базы данных всегда изменяется блоками по 64 байта, и документ не обязательно задействует целиком все блоки.


    • Так же результат работы функции может зависеть от того, открыт ли документ на чтение или редактирование (в этом случае он обычно занимает больше памяти), или закрыт (например, показывается в виде). Функция может быть использована для оценки заполнения базы данных и необходимости ее архивации.

      J @DocOmittedLength

      Область применения: нельзя использовать в формулах навигатора.

      Возвращает приблизительный размер “усеченной“ при репликации части документа в байтах. Все что было сказано про “приблизительность“ для @DocLength справедливо и для @DocOmittedLength.

      Пример. Для «усеченных» документов выводит диалоговое окно с размером «усеченных» данных.

      @If(

      @IsDocTruncated;

      @Prompt([Ok];"Предупреждение"; {Документ "усечен"} +

      @Char(13) + "Отсутствует порядка: " +

      @Text(@DocOmittedLength) + " байт");

      "")

      @Attachments

      Область применения: нельзя использовать в формулах навигатора.

      Возвращает число присоединенных файлов к документу. Часто применяется в формулах столбцов для отображения определенной пиктограммой наличие у документа присоединенных файлов.

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

      @If( @Attachments; 5; 0 )

      J @AttachmentModifiedTimes

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



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

      Пример. Формула примененная в акции формы вернет дату/время (или список) модификации присоединенного файла.

      @Prompt([Ok]; "Дата/время модификации";  

               @Implode(@Text(@AttachmentModifiedTimes); "~"))

      @IsNewDoc

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

      Возвращает 1 (TRUE), если редактируемый документ еще не сохранялся на диске, или 0 (FALSE), если документ был сохранен.

      Пример 1. Использованная в формуле заголовка окна, функция возвращает "Новый документ", если документ создается. Если документ вновь открыт после его сохранения, эта формула возвращает значение поля Subject.

      @If( @IsNewDoc; "Новый документ"; Subject )

      Пример 2. Если создается новый документ, в заголовке окна появляется строка "Новые общие сведения". Если же открывается существующий документ, в заголовке окна появляется строка "Общие сведения о", затем содержимое поля EmpName, обратная косая черта и содержимое поля EmpNumber.

      @If( @IsNewDoc; "Новые общие сведения";

          "Общие сведения о" + EmpName + "/" +EmpNumber )

      @IsResponseDoc

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

      Возвращает 1 (TRUE), если документ является документом-ответом (Response), в противном случае возвращает 0 (FALSE). Признаком документа-ответа является наличие в нем предопределенного поля $REF, содержащего универсальный идентификатор родительского документа. Документ-ответ может быть создан либо:

      • по форме типа Response to document (Ответ на документ) или Response to response (Ответ на ответ);




      • по форме, учитывающей отслеживания версий документов;


      • программным путем.


      • Пример. Возвращает "Ответ", если документ является документом-ответом; в противном случае возвращает "Тема".

        @If( @IsResponseDoc; "Ответ"; "Тема" )

        @IsDocBeingEdited

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

        Возвращает 1 (True), если текущий документ находится в режиме редактирования, иначе возвращает 0 (False).

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

        @Prompt( [OK]; "Информация"; "Последний редактор: " +

          @Name( [Abbreviate];

            @If( @IsDocBeingEdited;

              @UserName;

              @Subset( $UpdatedBy; -1 ))))

        @IsDocBeingRecalculated

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

        Возвращает 1 (TRUE), если в настоящее время текущий документ пересчитывается, в противном случае возвращает 0 (FALSE).

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

        Пример 1. Возвращает 1 во время вычисления и пересчитывания документа.

        @IsDocBeingRecalculated

        Пример 2. Возвращает 0 перед, и после вычисления и пересчитывания документа.

        @IsDocBeingRecalculated

        Пример 3. Может использоваться в поле типа дата/время, чтобы при различных обстоятельствах показывать различные даты. Формула вызывает отображение текущих времени и даты во время пересчитывания документа; в противном случае отображается дата создания документа.

        @If( @IsDocBeingRecalculated; @Now; @Created )

        @IsDocBeingLoaded

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

        Возвращает 1 (TRUE), если текущий документ в настоящее время загружается в память для последующего отображения; в противном случае возвращает 0 (FALSE).



        Пример 1. Возвращает 1, когда документ загружается в память.

        @IsDocBeingLoaded

        Пример 2. Возвращает 0, если документ был сохранен.

        @IsDocBeingLoaded

        Пример 3. Формула для вычисляемого поля Editors. Вычисляемое поле Editors показывает содержимое поля $UpdatedBy, когда документ загружается. Когда же пользователь пересчитывает поле (нажимая клавишу F9), вычисляемое поле Editors показывает имя пользователя как текущего редактора, а вслед за ним имена предыдущих редакторов. Наконец, когда документ сохраняется, значение в поле Editors остается без изменения.

        @If( @IsDocBeingLoaded; $UpdatedBy;

           @IsDocBeingRecalculated; ( "Текущий редактор -" + 

           @UserName ) : $UpdatedBy;

            Editors )

        @IsDocBeingSaved

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

        Возвращает 1 (TRUE), если в настоящее время текущий документ сохраняется, в противном случае возвращает 0 (FALSE).

        Если вы используете эту функцию для увеличения счетчика, учтите, что его содержимое будет увеличиваться на один при каждом сохранении документа пользователем.

        Пример 1. Возвращает 1 во время сохранения документа.

        @IsDocBeingSaved

        Пример 2. Возвращает 0 перед или после сохранения документа.

        @IsDocBeingSaved

        Пример 3. Эта формула возвращает "Администраторы" во время сохранения документа. В противном случае возвращает значение поля Readers.

        @If( @IsDocBeingSaved; "Администраторы"; Readers )

        @IsDocBeingMailed

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

        Возвращает 1 (TRUE), если в настоящее время текущий документ отправляется почтой, в противном случае возвращает 0 (FALSE).

        Функция обычно используется для подсчета, сколько раз пользователь отправлял документ, включая пересылки. Может применяться также для изменения документа во время отправки. Например, во время отправки можно изменить форму документа.



        Пример 1. Возвращает 1, когда документ отправляется.

        @IsDocBeingMailed

        Пример 2. Возвращает 0 перед и после отправления документа.

        @IsDocBeingMailed

        Пример 3. Может использоваться как формула в поле для подсчета количества отправок документа. Если эта формула определяет вычисляемое поле TimesMailed, первоначально в поле устанавливается 0 (пока документ не отправлялся). Затем содержимое TimesMailed увеличивается при каждой отправке почтой, т.е. если документ был отправлен один раз, его содержимое становится равным 1, и далее увеличивается на 1 после каждой последующей отправки документа.

        @If( @IsUnavailable( TimesMailed ); 0; TimesMailed + @IsDocBeingMailed )

        @Responses

        Область применения: предназначена только для использования в формулах заголовка окна. Не работает в Web-приложениях.

        Возвращает количество ответных документов (response) на текущий документ в текущем виде.

        Пример 1. Возвращает 5, если имеется пять документов-ответов на текущий документ.

        @Responses

        Пример 2. Возвращает строку "На этот документ нет ответных документов", если на текущий документ нет документов-ответов; в противном случае возвращает пустую строку.

        @If( @Responses = 0; "На этот документ нет ответных документов"; "" )


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