Подсчет количества документов в представлении с помощью формулы Lotus Notes

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

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

Заранее спасибо :)


person user1579279    schedule 06.08.2012    source источник


Ответы (3)


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

Ваш код на панели инструментов должен выполнять @Command([Compose]; "" : "yourActionDb.nsf" ; "StartAction")

База данных "yourActionDb.nsf" (в данном случае локальная) должна иметь форму (здесь она называется StartAction), и вот в чем хитрость: в "QueryOpen" формы контекст по-прежнему является представлением... Так что вы можете используйте код вроде:

Dim ws as New NotesUIWorkspace
Dim uiviw as NotesUIView
Dim dc as NotesDocumentCollection
Set uiviw = ws.CurrentView
If not uiviw is Nothing then
  set dc = uiviw.Documents
  ...your code comes here
End if

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

Вы должны закрыть эту форму впоследствии (либо попытаться установить continue = False в queryopen, либо сделать uidoc.Close позже), но здесь вы должны сами выяснить, что лучше всего подходит для ваших нужд.

person Torsten Link    schedule 11.04.2013

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

person Ken Pespisa    schedule 06.08.2012

Я считаю, что если вы создадите агент формулы (то же содержание формулы, что и ваша кнопка на панели инструментов) и установите цель как «Выбранный документ», затем на кнопке панели инструментов добавьте:

@command([toolsrunmacro];"Имя или псевдоним агента здесь");

  • он запустит агент формулы для каждого выбранного документа. Установите цель агента как Selected Dcouments.
person user2808054    schedule 24.09.2013