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

У меня есть документ и копия документа.Я использую TagNo как уникальный идентификатор для обоих документов.У меня также есть поле Статус, чтобы различать каждый документ, который является активным, неактивным, черновиком и блокировкой.Ниже я объясню ситуацию с моим документом.

Ниже приведен мой документ с двумя полями;Тэг № = PTagNo;Статус = PStatus.Ситуация, как показано ниже.

  1. Для оригинального документа статус установлен Активно.Когда копия будет создана, Исходный документ изменится на Блокировка, а Статус копирования документа изменится на Черновик.(Для этого я уже достиг.)

  2. После того, как я закончу редактирование, я изменю статус черновика и оригинала документа.Это происходит, когда я сохраняю черновик документа как «Полный».Мой Черновой документ будет Оригинальным документом, в то время как Мой Оригинальный документ будет Архивным документом.Таким образом, для моего черновика документа статус изменится на Активный, в то время как исходный документ, статус изменится на Неактивный (пока не достигнуто).

tagno

Я вставляю свой код сохранения, как показано ниже. Сохранить и завершить

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

    '// Set database and doc
    Set db = session.CurrentDatabase
    Set uidoc = workspace.CurrentDocument
    Set doc = uidoc.Document    

    keys(0) = doc.PTagNo(0)
    keys(1) = "Lock"
    Set view = db.GetView("Computer")
    vpswd = Inputbox$("Pls input code to save :")

    If vpswd = "o" Then

        Set activeDoc= view.GetDocumentByKey(keys, True)
        If Not activeDoc Is Nothing Then
            If activeDoc.PStatus(0) = "Lock" Then
                activeDoc.DocumetId = doc.UniversalID
                Call activeDoc.ReplaceItemValue("PStatus", "Inactive")
                Call activeDoc.Save(True, False)
            End If
        End If
        Call uidoc.FieldSetText("PStatus" , "Active")
        Call uidoc.FieldSetText("SaveOptions" , "1")
        Call uidoc.Save
        Call uidoc.Close
    Else
        Msgbox "Wrong Code"
        Exit Sub
    End If  
End Sub

Поэтому я использую GetDocumentByKey для поля ptagno, но он показывает ошибку "Переменная объекта не установлена".Я использовал неправильную функцию?Любая помощь будет оценена.Спасибо!

1 Ответ

2 голосов
/ 30 апреля 2019

Переменная ptagno не была установлена ​​- поэтому ошибка «Переменная объекта не установлена».Вам нужно прочитать значение из поля PTagNo и присвоить его переменной ptagno - или использовать его напрямую.Например, как это:

Set activeDoc= view.GetDocumentByKey(uidoc.FieldGetText("PTagNo"))
...