ПримечанияДокумент открывается дважды - PullRequest
1 голос
/ 29 мая 2020

У меня есть приложение, которое использует 2 сервера и 2 базы данных. Сервер 1 - Главное приложение Сервер 2 - Календарь

При запуске документа в основном приложении у меня есть ссылка на запись календаря. Откроется запись календаря на сервере календаря. В записи календаря есть ссылка, которая запускает документ в основном приложении.

Это действие выполняется с помощью функции notesuiworkspace.editDocument.

У меня проблема в том, что в моем сценарии выше , У меня в приложении открыт основной документ (1 документ). Затем я нажимаю кнопку, чтобы запустить запись календаря (теперь у меня открыто 2 документа: документ в основном приложении и соответствующая запись в календаре). Если я затем нажму на кнопку открытия основного документа, откроется еще одна копия основного документа. Если пользователь не знает, что они вызывают конфликты при сохранении.

Это произошло для нескольких версий Notes, в настоящее время 10. *

Set uidoc = ws.CurrentDocument
Set doc = Srv1.GetDocumentByUNID(uidoc.FieldGetText("CalenderUNID")
If Not (doc Is Nothing) Then
  Set uidoc = ws.EditDocument(True, doc)
End If      

Код из календарной записи в главный документ на сервере1

sID = uidoc.FieldGetText("MainUNID")
Set doc = Srv1.GetDocumentByUNID(sID)
If Not (doc Is Nothing) Then
  Call uidoc.Close(True)
  Set uidoc = ws.EditDocument(True, doc)
End If

1 Ответ

2 голосов
/ 29 мая 2020

Проверьте документацию на предмет «EditDocument» в NotesUIWorkspace:

Установите notesUIDocument = notesUIWorkspace .EditDocument ([editMode], [notesDocument], [notesDocumentReadOnly], [documentAnchor $], [returnNotesUIDocument], [newInstance])

Видите ли, есть необязательный параметр «newInstance». И если вы прочитаете дальше, это будет:

newInstance

Boolean. По желанию. Если True (по умолчанию), открывает новый экземпляр notesDocument (параметр 2) в пользовательском интерфейсе. Если установлено значение False, меняет фокус на существующий экземпляр notesDocument, если он существует, или на новый экземпляр, если он не существует. Этот параметр не применяется, если notesDocument не указан или в документе есть целевой фрейм.

Просто измените свой код соответствующим образом:

Set uidoc = ws.EditDocument(True, doc,False,"",True,False)

Но будьте осторожны: есть (немного ) ошибка с флагом "newInstance": если вы создаете новый основной документ и сохраняете его. Затем откройте документ календаря и щелкните ссылку, чтобы вернуться к основному документу, тогда всегда будет второе окно с основным документом, если вы тем временем не закрыли и не открыли снова основной документ ... "Новый" документ, который еще не был закрытие и повторное открытие после сохранения не распознается флагом newinstance ...

...