Как использовать функцию LotusScript в качестве процедуры выбора документа - PullRequest
1 голос
/ 23 июня 2010

Можем ли мы использовать функцию lotusscript в качестве процедуры выбора документа в формуле выбора вида?

Вот моя функция лотоса, которая определяет критерии выбора

Function MyFilter(doc As NotesDocument) as boolean</p> <p>'very complex filtering function '........</p> <p>End Function

и вот формула выбора вида, в которую я хочу включить функцию лотоса внутри

SELECT (Form = "Form1")

  1. Можем ли мы использовать указанную выше функцию lotusscript внутри формулы выбора каким-либо образом?

    SELECT (Form = "Form1" & MyFilter(sourceDoc))

  2. мы можем избежать языка формул в выборе представления и заполнить представление во время выполнения путем обхода каждого документа в базе данных и добавления документа в представление по мере необходимости?

  3. Есть ли способ написать «пользовательскую формулу» (язык формул)?

  4. Можем ли мы написать C API для решения таких проблем?

Ответы [ 2 ]

3 голосов
/ 23 июня 2010
  1. Нет, формулы выбора представления не могут содержать LotusScript

  2. Не с видом, но вы на что-то там. Я делал это в прошлом, используя папки. Представления содержат набор документов, которые соответствуют формуле выбора представления. Папки, с другой стороны, могут содержать набор документов, размещенных там пользователем или кодом. В мире Lotusscript вы получаете доступ к папке так же, как и к представлению, используя класс NotesView. Затем вы можете вызвать метод PutInFolder документа или метод PutAllInFolder документаколлекции, чтобы добавить документы в эту папку.

  3. Нет. Тем не менее, вы можете программно указать формулу, используемую представлениями, через свойство SelectionFormula. Но это свойство ожидает строку, написанную на языке формул.

  4. Я не очень знаком с C API, но моя ставка в том, что вы можете сделать только то же самое, что и # 3 - указать формулу, используемую в качестве формулы выбора. Это не поможет вам выбрать документы на основе кода LotusScript.

Я уже шел этим путем в нескольких проектах, и лучшее решение, которое я нашел, было то, что я предлагаю в ответе № 2. То есть вы можете очистить и затем заполнить папку программно, а затем перевести пользователя в эту папку в качестве последнего шага в вашем коде. Используя этот метод, вы можете свободно использовать LotusScript для фильтрации документов и построения представления «Результаты запроса».

Еще один менее идеальный, но функциональный метод, который вы можете использовать, - пометить один элемент во всех документах специальным значением, а затем отфильтровать представление, чтобы показать только документы с элементами, равными этому специальному значению. Например, вы можете запустить поиск в LotusScript, чтобы построить коллекцию документов, используя метод db.Search. Затем используйте метод documentcollection.StampAll, чтобы установить для элемента «SHOWME» значение «YES». Тогда ваш вид просто должен быть настроен на показ только тех документов, где SHOWME = "YES". Конечно, вам нужно удалить этот элемент SHOWME из всех документов в базе данных в качестве первого шага в этом коде, так что вы начинаете с чистого листа каждый раз. Этот метод будет становиться все медленнее, чем больше у вас документов, но если у вас будет всего несколько сотен документов, он будет работать нормально.

Надеюсь, это поможет!

1 голос
/ 23 июня 2010

К сожалению, вы не можете использовать Lotuscript в формулах выбора представления. Однако один из способов решения этой проблемы в прошлом - вызвать сложную формулу в событии QuerySave (или WebQuerySave) на форме и установить для скрытого поля во всех документах значение Да или Нет. Затем просто используйте это скрытое поле. на ваш взгляд формула выбора:

SELECT (Form = "Form1" & MyFilterField="Y") 
...