Блокировка текущего документа с использованием lotusscript - PullRequest
0 голосов
/ 19 апреля 2019

У меня есть документ и копия документа.Я хочу создать блокировку документа для документа с использованием LotusScript.

Я отдельно поместил текущий документ в представление «Компьютер» и скопировал документ в представление «Черновик».Ниже приведено действие для создания копии.

Создание копии

Sub Click(Source As Button)
    Dim ns As New NotesSession
    Dim db As NotesDatabase
    Dim doc As NotesDocument
    Dim newdoc As NotesDocument
    Dim dc As NotesDocumentCollection

    Set db= ns.CurrentDatabase
    Set dc= db.UnprocessedDocuments

    If dc.Count<>1 Then
        Messagebox "No or too many documents selected"
        Exit Sub
    End If

    Set doc= dc.GetFirstDocument
    Set newdoc= doc.CopyToDatabase(db)
    Call newdoc.ReplaceItemValue("PStatus", "Draft")
    Call newdoc.Save(True, False)
End Sub

Кнопка сохранения

Sub Click(Source As Button)
    Dim session As New NotesSession
    Dim workspace As New NotesUIWorkspace
    Dim db As NotesDatabase
    Dim uidoc As NotesUIDocument
    Dim doc As NotesDocument
    Dim view As NotesView

    Set uidoc = workspace.CurrentDocument
    Set db = session.CurrentDatabase
    Set view = db.GetView("Draft")
    Set doc = view.GetDocumentByKey("Draft", True)
    vpswd = Inputbox$("Pls input code to save :")

    If vpswd = "o" Then

        uidoc.EditMode = True
        Set doc = uidoc.Document
        Set doc = view.GetFirstDocument
        If doc.PStatus(0) = "Draft" Then
            Set newdoc= doc.CopyToDatabase(db)
            Call newdoc.ReplaceItemValue("PStatus", "Active")
            Call newdoc.Save(True, False)
        End If
        Call uidoc.FieldSetText("SaveOptions" , "1")

        Call uidoc.Save
        Call uidoc.Close
    End If


End Sub

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

Еще один вопрос: для документа копирования после сохранения я хочу заменить текущий документ в качестве документа для копирования, и документ для копирования станет действующим документом.Хотя текущий документ не будет удален из базы данных, но будет удален из представления «Компьютер» и отображен в представлении «Архив».

А в режиме «Черновик» копия документа будет удалена из представления.Любая помощь будет оценена.Спасибо!

Ответы [ 2 ]

1 голос
/ 20 апреля 2019

Блокировка документа должна быть неявной. Убедитесь, что вы используете поле Статус во всех документах. Например. когда вы создаете копию, установите статус скопированного документа на «Скопировано», а для nw documof nt - «Черновик». Вы должны покрыть все различные изменения статуса. Лучше всего также добавить одно поле, содержащее уникальный идентификатор документа, который нельзя изменить. Может также добавить номер версии.

Примеры статусов:

  • Черновик: находящийся в стадии разработки документ (только один, не может быть скопирован)
  • Текущий: действительный документ (можно скопировать только один)
  • Скопировано: текущий документ, который был скопирован (только один, не может быть скопирован)
  • В архиве: документ, который был заменен (более одного, копировать нельзя)

Это может помочь в создании STD, диаграммы перехода состояний.

0 голосов
/ 23 апреля 2019

Я сделал нечто подобное. Когда создается новая версия, как я ее называю, это «черновой» документ. Предыдущий документ является «утвержденным» документом. Пользователь может просматривать только утвержденные документы до тех пор, пока не будет утверждена новая версия, после чего более ранние утвержденные документы архивируются из БД. Если вы хотите, чтобы все версии оставались в БД, но только был выведен новый документ, вы можете использовать то, что я называю полем HistoryID. В основном у меня есть поле в каждом документе, в котором может быть до трех значений:

TheUNID
ParentUNID: TheUNID: Родитель
TheUNID: ChildUNID: Ребенок

Поле «theUNID» вычисляется при составлении, поэтому оно никогда не изменяется. Если новая версия или черновик созданы, HistoryID теперь будет иметь два значения:

TheUNID
TheUNID: ChildUNID: Родитель

Это означает, что теперь у вас есть новый черновик, и документ, на котором вы находитесь, фактически является родительским. «ChildUNID» на самом деле является «UNID» проекта черновика, который вы только что создали.

В дочернем документе или новом черновом документе, который вы указали в HistoryID:

TheUNID ParentUNID: TheUNID: Родитель

Таким образом, ваш черновик знает, кто его родитель.

В вашем коде в вашей базе данных у вас просто есть открываемый документ, сначала проверьте поле HistoryID. Если есть ребенок, вы отводите пользователя к ребенку. Неважно, какой родительский объект открыт или как далеко зашли поколения, ваш код продолжает перебирать HistoryID, пока не будет найден текущий дочерний документ, у которого нет родителя. Звучит хорошо?

Дайте мне знать, если вам нужны разъяснения.

...