Как проще всего определить, использует ли приложение сохраненные формы в Lotus Notes?

Мы находимся в процессе переноса нашей почтовой системы с Notes на Office 365 и инструмента, который они получили, чтобы помочь с переводом адресов электронной почты, и они не будут обрабатывать приложения, которые используют сохраненные формы в перенаправляемых документах. Есть ли простой способ узнать, действительно ли приложение использует сохраненные формы?

MJ


person Mike Jackson    schedule 16.08.2017    source источник


Ответы (2)


Во-первых, база данных, которая позволяет использовать хранимые формы в документах, не имеет строчной буквы «f» в элементах $ Flags заметки ICON. Вы можете получить доступ к значку не в базе данных, используя

Const NOTE_CLASS_ICON% = &H0010             '*** icon note 
Const SPECIAL_ID_NOTE& = &HFFFF0000     ' use in combination w/NOTE_CLASS when calling NSFDbGetSpecialNoteID

Dim iconNoteId&
Dim icondoc As NotesDocument

iconNoteId = SPECIAL_ID_NOTE + NOTE_CLASS_ICON
Set icondoc = db.Getdocumentbyid(iconNoteId)
If InStr(icondoc.Getitemvalue("$Flags")(0), "f") > 0 Then
    Print "Database DOES NOT support shared forms"
Else
    Print "Database supports shared forms"
End If

У вторых форм, которые поддерживают или хранятся в документах, есть флаг в элементе $ Info, который указывает на это. Этот элемент представляет собой форматированный текст, и его нелегко просмотреть в среде IDE. Однако, используя версию файла DXL через синхронизированный проект диска Oon (ODP), вы можете просмотреть его с помощью XML или текстового редактора. Похоже, что шестой символ - это либо «I» для обычных форм, либо «G» для форм, которые хранятся вместе с документами.

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

person Newbs    schedule 16.08.2017
comment
Я почти уверен, что формы и скрипты также могут отправлять документы с сохраненными формами, независимо от настроек формы. - person Richard Schwartz; 17.08.2017
comment
@RichardSchwartz - Это правильно, НО отключение на уровне БД предотвращает это. - person Newbs; 17.08.2017
comment
Интересный. Отключение этого параметра в базе данных A мешает сценарию в базе данных A открывать базу данных B как объект NotesDatabase, а затем использовать databaseB.CreateDocument и отправлять этот новый документ с сохраненной формой? Если нет, то эта размытая грань между базой данных и приложением немного усложняет ответ на этот вопрос! - person Richard Schwartz; 17.08.2017

Изучите документы, отправленные приложениями по электронной почте. Вы можете настроить ведение почтового журнала для их записи, если у вас еще нет другого способа. Найдите элементы $ Title и $ Body. Их наличие указывает на то, что документ содержит сохраненную форму. Вы даже можете настроить формулу выбора:

SELECT @IsAvailable($Title) & @IsAvailable($Body)
person Richard Schwartz    schedule 16.08.2017
comment
Основываясь на вашем ответе, вы, вероятно, захотите @IsAvailable ($ Body) в одной половине этой формулы. - person Duston; 17.08.2017
comment
да. Спасибо, что уловили это. Исправлено. - person Richard Schwartz; 17.08.2017