ЭЦП одного поля в документе

Тема в разделе "Lotus - Программирование", создана пользователем seoman2, 17 фев 2010.

  1. seoman2

    seoman2 Lotus team
    Lotus team

    Регистрация:
    17 фев 2010
    Сообщения:
    435
    Симпатии:
    0
    Как правильно подписать без секции только одно поле в документе?
    И так, чтобы если в поле ничегоне меняли, а в других полях были изменения, т подпись у этого поля осталась.

    Вот кнопка подписать:
    Код (Text):
    Dim session As New NotesSession
    Dim uiworkspace As New NotesUIWorkspace

    Dim doc As NotesDocument
    Dim item As NotesItem
    Dim item2 As NotesItem
    Set doc = uiworkspace.CurrentDocument.Document
    Set item = doc.GetFirstItem("СОДЕРЖАНИЕ_")
    item.IsSigned="true"
    Call doc.Sign
    Set item2=doc.GetFirstItem("$Signature")
    Call item2.CopyItemToDocument(doc, "$SignatureOf_" & session.UserName)
    Call doc.Save( False, True )

    Messagebox "подписали содержание"
    А вот кнопка проверки подписи:
    Код (Text):
    Dim session As New NotesSession
    Dim uiworkspace As New NotesUIWorkspace
    Dim doc As NotesDocument
    Dim item As NotesItem
    Dim item2 As NotesItem
    Set doc = uiworkspace.CurrentDocument.Document
    Set item2 = doc.ReplaceItemValue("$Signature","$SignatureOf_" & session.UserName)
    Call doc.Save(True, False)
    Set item = doc.GetFirstItem("СОДЕРЖАНИЕ_")

    If item.IsSigned Then
    Messagebox "Signed"
    Else
    Messagebox "Not signed"
    End If
     
  2. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.047
    Симпатии:
    18
    интересная у вас проверка...
     
  3. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    'это что???
     
  4. TIA

    TIA :-)
    Lotus team

    Регистрация:
    15 май 2009
    Сообщения:
    790
    Симпатии:
    0
    При подписании документа методом NotesDocument.Sign, подписываются все поля, имеющие признак NotesItem.IsSigned. В св-вах документа такие поля имеют признак SIGN. Т.е. подписывается как-бы весь документ.
    Св-во NotesItem.IsSigned не говорит о том, подписано ли уже поле или нет, а лишь что оно подписываемо и что должно проверяться при проверке подписи. Проверить подписан ли документ в целом можно через NotesDocument.IsSigned. Проверка валидности подписи документа скриптом выполняется методом NotesDocument.Signer (глючит в некоторых версиях Notes, кажется в 7.0.2). NotesDocument.Signer пуст, если подпись нарушена.

    Т.о., отвечая на ваш вопрос, установите NotesItem.IsSigned только у одного поля, подписывайте через NotesDocument.Sign, и получите требуемую функциональность.
     
  5. seoman2

    seoman2 Lotus team
    Lotus team

    Регистрация:
    17 фев 2010
    Сообщения:
    435
    Симпатии:
    0
    В итоге сделал кнопку подписать:
    и кнопку проверки подписи:
    Так вот, если в документе изменить любое поле и сохранить док, то подпись исчезает, а в person попадает имя текущего юзера. А надо, чтобы подпись была только у у поля СОДЕРЖАНИЕ_, и изменялась (нарушалась) подпись в случае изменения только этого поля.
     
  6. TIA

    TIA :-)
    Lotus team

    Регистрация:
    15 май 2009
    Сообщения:
    790
    Симпатии:
    0
    Вероятно, потому что вы после doc.Save выполняете сохранение в UI. UI-сохранение перезаписывает результат подписи. Возможно даже поле $Signature у вас не появляется.
    Для такого случая лучше подойдёт галка в св-вах формы "Sign documents that use this form". При UI-сохранении (скажем, через NotesUIDocument.Save) в такой форме, документ сам подпишется и не нужно подписание через NotesDocument.Save
     
  7. Constantin A Chervonenko

    Constantin A Chervonenko Well-Known Member

    Регистрация:
    30 май 2006
    Сообщения:
    1.291
    Симпатии:
    0
    Во-во..
    Если искомое поле есть на форме - при сохранении соотв item будет перезаписан (подпись - побита).
    Не включайте поле в форму! Отображайте (если оч.надо) через ComputedText или CFD-поля
     
  8. seoman2

    seoman2 Lotus team
    Lotus team

    Регистрация:
    17 фев 2010
    Сообщения:
    435
    Симпатии:
    0
    Sign documents that use this form - и так стоит.
    Да, юзеры будут сохранять в UI документ. После этого $Signature исчезает вообще.
    Мне необходимо оставить поле на форме, причем чтобы его можно было редактировать. и если изменить, то чтобы было видно кто нарушил подпись.
    Расскажите поподробнее как это сделать ?
     
  9. Klido

    Klido Гость

    непонятно зачем так... если даем менять - последняя подпись и будет того, кто поменял...
    а сами изменения - отдельно лог надо делать, ибо изменения могут быть условными - катопейст, например, содержимого поля в себя же...
     
  10. seoman2

    seoman2 Lotus team
    Lotus team

    Регистрация:
    17 фев 2010
    Сообщения:
    435
    Симпатии:
    0
    Klido верно.
    А можно лотус скриптом сделать поле на форме вычисляемым?
    Что бы после подписи его нельзя было изменить?
    А то играться с 2 полями - одно на редактированние и второе на чтение и их скрытием неинтересно.
    Можно пример кода создания лога для одного поля?
     
  11. TIA

    TIA :-)
    Lotus team

    Регистрация:
    15 май 2009
    Сообщения:
    790
    Симпатии:
    0
    Если юзеры уже сохраняЮТ UI-методами и уже сейчас $Signature исчезаЕТ, тогда вы что-то сделали не так. Установлен ли у вашего поля признак "Sign if mailed or saved in section"?
    Как отличить, меняется ли поле с нарушением или легально?
     
  12. seoman2

    seoman2 Lotus team
    Lotus team

    Регистрация:
    17 фев 2010
    Сообщения:
    435
    Симпатии:
    0
    Шас поставил у поля Sign if mailed or saved in section и у формы Sign documents that use this form.
    Поле $Signature не прпадает.
    ПОкажите пример кода, как подписывать только одно поле? У меня это содержание документа.
    Человек заполнил его, а потом хочет подписать только это поле и боьлше не редактировать.
     
  13. TIA

    TIA :-)
    Lotus team

    Регистрация:
    15 май 2009
    Сообщения:
    790
    Симпатии:
    0
    1. Чтобы запретить изменение подписанного роля, см. здесь. Только секцию с управляемым доступом исключите.

    2. Вот весь код для подписания одного поля в документе (точнее, всего документа):

    dim ws as new NotesUIWorkspace
    ws.CurrentDocument.Save
    ws.CurrentDocument.Close

    Остальное настройками. :) Перечитайте внимательно данный топик.
     
  14. seoman2

    seoman2 Lotus team
    Lotus team

    Регистрация:
    17 фев 2010
    Сообщения:
    435
    Симпатии:
    0
    Мне не надо весь документ подписывать, а только одно поле. Настройки не помогают.

    Ещё вопрос - цифровая подпись на одно поле хранится в документе где?
    Может при подписании можно скопировать её в другое свое поле, а при проверке поля востанавливать?

    Если я изменяю в документе одно неподписываемое поле, то ц.подпись на подписываемое поле изменится? В лотусе.
     
  15. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    чесгря, не игрался с подписанием, но, что, если попытаться хранить информацию, которую пользователь подписывает не в этом документе, а в другом, а текущий док сделать как-бы средством для отображения и изменения этой информации, соотв., и подписывать тот другой документ с одним его полем, которое хранит информацию.
     
  16. TIA

    TIA :-)
    Lotus team

    Регистрация:
    15 май 2009
    Сообщения:
    790
    Симпатии:
    0
    Нет, не изменится. Поэтому, подписывая документ, фактически подписываются лишь подписываемые поля. Чем вам это не требуемое по условию подписание одного поля?
    На все подписываемые поля хранится в поле $Signature
     
  17. seoman2

    seoman2 Lotus team
    Lotus team

    Регистрация:
    17 фев 2010
    Сообщения:
    435
    Симпатии:
    0
    Akupaka, не представляю как это реализовать программно.
    TIA, а почему тогда при изменении неподписываемого поля слетает подпись ан подписанном поле?
     
  18. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    вопрос не конкретизирован. см работу с NotesDocument
     
  19. TIA

    TIA :-)
    Lotus team

    Регистрация:
    15 май 2009
    Сообщения:
    790
    Симпатии:
    0
    Мы пошли по кругу. Смотри предыдущие посты (#6,8,11,12,13).
     
  20. seoman2

    seoman2 Lotus team
    Lotus team

    Регистрация:
    17 фев 2010
    Сообщения:
    435
    Симпатии:
    0
    Ребят, все советы что были ранее не помогли. Что можно сделать??? Желательно конструктивные советы а не общие размышления.
     
Загрузка...
Похожие Темы - ЭЦП одного поля
  1. tanat
    Ответов:
    1
    Просмотров:
    716
  2. xpro

    Решено Эцп и xpages

    xpro, 31 мар 2015, в разделе: Lotus - Xpages
    Ответов:
    2
    Просмотров:
    726
  3. seoman2
    Ответов:
    3
    Просмотров:
    2.486
  4. akat
    Ответов:
    0
    Просмотров:
    2.256
  5. Sanchel
    Ответов:
    13
    Просмотров:
    4.134

Поделиться этой страницей