Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе
В приведённом коде всё теже ошибки, на которые указывали в первых постах.Сделал так:
Sub Click(Source As Button)
Dim session As New NotesSession
Dim uiworkspace As New NotesUIWorkspace
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim item As NotesItem
Dim itemTMP As NotesItem
Set db = session.CurrentDatabase
Set doc = uiworkspace.CurrentDocument.Document
Set item = doc.GetFirstItem("СОДЕРЖАНИЕ_")
item.IsSigned ="true"
Call doc.Sign
Call doc.save(True, False)
Dim docTMP As NotesDocument
Set docTMP = db.CreateDocument
xxx$= item.text
Set itemTMP = docTMP.AppendItemValue("СОДЕРЖАНИЕ_TMP", xxx$)
itemTMP.IsSigned ="true"
Call docTMP.Sign
Call docTMP.save(True, False)
Call doc.ReplaceItemValue("$Signature_2",docTMP.GetItemValue("$Signature") )
Delete docTMP
Call doc.save(True, False)
End Sub
Нужно как-то так:Перечитал.
Вот тестовая кнопка для создания поля $Signature_2, которое копирует с временного документа поле $Signature в основной. $Signature_2 - пустое!
Немогу понять, что не так???
Dim item As NotesItem
Set item = doc.GetFirstItem("$Signature")
Call doc.CopyItem(item, "$Signature_2")
угу - в теме как НАПЕЧАТАТЬ подписьне так давно обсуждалось.
А как, простите, Вы об этом узнали? Путём многочисленных экспериментов нескольких членов форума было установлено, что значение поля подписи можно увидеть только в окне свойств документа. Никакими средствами Лотуса, включая СиАПИ "выгрызть" значение подписи в строковую переменную и т.п. не представляется возможным, можно только скопировать поле подписи под другим именем. То, что Вы после выполнения doc.GetItemValue("$Signature") получаете пустую строку или видите пустоту в отладчике, не означает, что поле на самом деле пустое.Дело в том, что в временном документе docTMP после его подписания создается поле $Signature пустое!
а теперь запомните унид этого темпового документа, завершите выполнение кода, найдите этот темповый документ и посмотрите айтем $Signature из клиента.То, что Вы после выполнения doc.GetItemValue("$Signature") получаете пустую строку или видите пустоту в отладчике, не означает, что поле на самом деле пустое.
Перечитали и не исправили даже то, что я указал явно:Перечитал.
Вот тестовая кнопка для создания поля $Signature_2, которое копирует с временного документа поле $Signature в основной. $Signature_2 - пустое!
Немогу понять, что не так???
Опять item.IsSigned ="true"
Должно быть item.IsSigned = True без кавычек. Это булево значение, а не строка.Да, теперь с темпового документа все нормально копируется его поле $Signature.
Вот только при каждом запуске кнопки возвращается новое значение $Signature с темпового дока.
И не понимаю в упор про item.IsSigned ="true"... Да item.IsSigned это свойство, признак, будет ли подписываться поле или нет.
Но в дебагере команда item.IsSigned ="true" меняет признак подписываемости у поля!
Копировать лучше не значения поля, а само поле, какЧто не так со временным документом?
Sub Click(Source As Button)
'Подписать
Dim session As New NotesSession
Dim uiworkspace As New NotesUIWorkspace
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim item As NotesItem
Dim itemTMP As NotesItem
Set db = session.CurrentDatabase
Set doc = session.DocumentContext
Set item = doc.GetFirstItem("СОДЕРЖАНИЕ_")
item.IsSigned = True
Call doc.Sign
Set itemTMP = doc.GetFirstItem("$Signature")
Call doc.CopyItem(itemTMP, "$Sign_2")
doc.RemoveItem "$Signature"
item.IsSigned = False
doc.Save False, False
End Sub
Sub Click(Source As Button)
'Проверка подписи
Dim session As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim item As NotesItem
Set db = session.CurrentDatabase
Set doc = session.DocumentContext
Set item = doc.GetFirstItem("$Sign_2")
Call doc.CopyItem(item, "$Signature")
Set item = doc.GetFirstItem("СОДЕРЖАНИЕ_")
item.IsSigned = True
If doc.Signer="" Then Msgbox "Not valid" Else Msgbox "Valid"
End Sub
А когда подписывающий выполняет проверку подписи и проверку, обнаружение изменений подписанных данных работает?Почему-то, если другой юзер изменяет поле СОДЕРЖАНИЕ_, то подпись не нарушается....
На форме не должно быть подписываемых полей и признака "Sign documents that use this form"
Обучение наступательной кибербезопасности в игровой форме. Начать игру!