Управлять поведением формулы @ClientType в Lotus - PullRequest
1 голос
/ 31 марта 2012

Я столкнулся с проблемой с формулой @ClientType в Lotus Notes. Эта формула должна показывать тип клиента. Из справки Lotus:

Возвращает «Notes», если тип клиента - клиент Lotus Notes. «Интернет», если тип клиента - веб-браузер

@ ClientType полезен в формулах базы данных, формулах форм, кнопках в формах и формулах «скрыть когда». Не используйте @ClientType в столбце формулы. @ClientType всегда возвращает «None» при выполнении на сервере фоновый агент.

Однако, если я запускаю этот код в агенте или точке действия на клиенте:

x = Evaluate("@ClientType")
MsgBox x(0)

Результат - "Сеть".

И если я использую функцию notesDocument.RenderToRTItem (notesRichTextItem) или notesDocument.ConvertToMIME (translationType, options), формула @ClientType также оценивается как "Web"

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

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

Ответы [ 2 ]

0 голосов
/ 01 апреля 2016

Кажется, что решение состоит в том, чтобы преобразовать флаг convertmime сеанса в true после того, как ваш вызов doc.converttomime

Код ниже запускается из запланированного агента.Тест 1 возвращает «Ничего» Тест 2 возвращает «Веб» Тест 3 возвращает «Ничего» * ​​1003 *

Sub Initialize
Dim s As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim vntClientType As Variant

Set db=s.Currentdatabase

On Error GoTo ErrorHandling

vntClientType = Evaluate("@ClientType") 
MessageBox " Test 1 before converttomime " &  vntClientType(0)

Set doc=New NotesDocument(db)
Call doc.converttomime

vntClientType = Evaluate("@ClientType") 
MessageBox " Test 2  after converttomime" &  vntClientType(0)

s.convertmime=True

vntClientType = Evaluate("@ClientType") 
MessageBox " Test 3  after s.convertmime= true" &  vntClientType(0)

Exit Sub

ErrorHandling:

Error Err,  Error & " - " &  ", at line "  & Erl & { in "} & GetThreadInfo( 1 ) & {"}

End Sub

0 голосов
/ 05 апреля 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...