@command ([ToolsRefreshAllDocs]) не работает в Lotus Notes - PullRequest
2 голосов
/ 21 апреля 2020

Я изменил свойство нескольких полей формы в моей базе данных Lotus Notes. В базе более 1000 документов. Чтобы отразить это изменение свойства поля, если я открою каждый документ, а затем сохраню и закрою его, поле обновляется. Но делать это вручную для каждой 1000+ документов в неосуществимом решении.

Я изучил это и обнаружил, что @command ([ToolsRefreshAllDocs]) может обновить sh всех документов в представлении. Я создал агент с этой формулой и попытался запустить его из представления. К сожалению, он не работает и выдает ошибку «Документ оставлен для обработки xxx, NoteID вызывает ошибку = xxx». Я пытался найти какую-либо информацию об этой ошибке, но ничего не смог найти.

Может кто-нибудь, пожалуйста, помогите мне с этим и дайте мне знать, почему эта ошибка возникает и как ее устранить. Или есть какой-либо другой способ обновить sh всех документов в представлении, чтобы поля обновлялись для всех документов.

Спасибо

1 Ответ

3 голосов
/ 22 апреля 2020

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

Это трудно отследить вручную. Одним из методов, который я использовал для этого в первые дни Notes, было создание двух папок. Переместите половину документов в одну папку, а половину в другую. Попробуйте ваш refre sh агент в обеих папках. Если они оба терпят неудачу, у вас есть по крайней мере один документ с проблемой в каждой папке. Создайте еще две папки и разбейте их на четыре группы, затем попробуйте повторно выполнить refre sh в каждой папке. Продолжайте делить документы и освежать. Каждый раз, когда вы получаете папку, в которой ваш агент refre sh работает правильно, вы знаете, что все документы в этой папке хороши. Продолжайте делить и обновлять папки, в которых вы получаете ошибку, пока, наконец, не найдете только один документ в папке.

Излишне говорить, что этот метод «разделяй и властвуй» методом грубой силы не доставляет удовольствия, когда у вас большие базы данных с тысячами документов. К счастью, есть лучший способ. Вы можете написать агент LotusScript, который просматривает документы в вашем представлении и вызывает do c .ComputeWithForm (true, true), проверяет логическое возвращаемое значение и устанавливает значение элемента (например, для debugItemFailed значение «1» для каждого документа, где это значение было ложным. Затем создайте себе новое представление, используя SELECT debugItemFailed = "1", и вы увидите все документы, в которых у вас есть проблема с проверкой или вычисляемым полем.

И это, кстати, почему Я давно не использовал [ToolsRefreshAllDocs] ни в одной производственной базе данных. Я всегда использую агент LotusScript, который вызывает ComputeWithForm.

...