• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Данные из ответа в родитель

  • Автор темы LIGHT
  • Дата начала
L

LIGHT

Всем привет!

Помогите разрулить следующую бяку...

Есть документ в БД, к нему лепятся сдесяток документов ответов.
Грубо говоря это резолюции на родителя:

Основной документ
- Иванов, Согласен, ...
- Петров, Не согласен, ...
- Сидоров, Согласен, ....

В основном документе есть поле в котором зашита ФИО одного из (Иванов, Петров, Сидоров), грубо говоря это приоритетная резолюция.

Дальше когда происходит визирование, я читаю из главного документа кто основной "босс" если значение поля совпадет со значение текущего юзера, то в основной документ кое чего доляпываю.

Делаю это так.
Код:
Sub Queryclose(Source As Notesuidocument, Continue As Variant)


'если этот рецензент обозначен как ЮС то запишим его рецензию еще и в основной документ
'ЮС выбирается из списка рецензентов, регистратором

Dim db As NotesDatabase
Dim s As New NotesSession
Set db = s.CurrentDatabase
Dim Pdoc As NotesDocument

On Error Resume Next
Set Pdoc = db.getDocumentByUNID(Source.FieldGetText("Resp_Parents")) 
'Возьмен документ родитель, в который будем писать

On Error Goto ExitSub 'Не получилось - вышли от сюда
If Not (PDoc Is Nothing) Then


' Проверим условие, что в родителе выбран ЮСер и этот ЮС = тому кто оставляет резолюцию и согл. не завершено
If Pdoc.GetItemValue("Status")(0) <> "X" And Pdoc.GetItemValue("USUser")(0) <> "" And Pdoc.GetItemValue("USUser")(0) = Source.FieldGetText("Reviewed") Then

Call Pdoc.ReplaceItemValue("USReviewedDate",Source.FieldGetText("ReviewedDate")) ' Дата визирования
Call Pdoc.ReplaceItemValue("USDecision",Source.FieldGetText("Decision")) ' Статус визирования
Call Pdoc.ReplaceItemValue("USResolution",Source.FieldGetText("Resolution")) ' Что сказал
Call Pdoc.Save(True,True) 'Сохранились

End If
End If

ExitSub:
End Sub

Какая собственно заковыка: в родитель как-то коряво это заноситься, в часности, значения появляются если только открыть родителя и пересохранить его.
Чую заморочка тут Call Pdoc.Save(True,True) 'Сохранились
А как сделать Pdoc.Refresh ума не приложу.....

Может что-то другое, прошу хелп!

Моменты:
Документ комментов, сохраняется!, и закрывается автоматом, мой код висит на закрытии
Sub Queryclose
 
M

morpheus

Может просто замеить
Код:
with Source.Document
Pdoc.USReviewedDate = .ReviewedDate(0) ' Дата визирования
Pdoc.USDecision= .Decision(0) ' Статус визирования
Pdoc.USResolution = Implode( .Resolution (0)) ' Что сказал
...

т.к. Resolution может быть многострочным то мона implode, Перед этим желательно проверить на то что поля заполнены

а почему это н висит на QuerySave
 
I

IsAvailable

Использовал бы ParentDocumentUNID

и

Pdoc.GetItemValue("Status")(0) заменил бы на Pdoc.Status(0)

и

имя текущего пользователя брал бы из session.UserName

и

засунул бы это всё в querysave

Вот на первый взгляд чего в голову пришло...
 
O

Omh

Для: IsAvailable
Pdoc.GetItemValue("Status")(0) заменил бы на Pdoc.Status(0)
C_порно
 
L

LIGHT

Трабла все таки оказалась не в пересохранении основного дока, а в пересохранении в ответа.
имя текущего пользователя брал бы из session.UserName
Это не noes Имя )))

Всем спасибо, буду пробовать.
 
I

IsAvailable

Для: Omh
Ну по сути это одно и то же ) Если верить хэлпу ; )
А вообще - понимаю так, что не принципиально это, но просто у самого есть проект один, который юзает информацию из "родителя". Всё работает "на ура", поэтомй и высказался в этой теме ;)
 
F

fedotxxl

Для: IsAvailable
Pdoc.GetItemValue("Status")(0) заменил бы на Pdoc.Status(0)
Именно конструкция GetItemValue является правильной... а эти вольности, которые позволяет LS к хорошему не преводят... хотя более читабельна вторая конструкция... Но когда IBM введет метод Status для класса NotesDocument этот код рухнет =)
 
M

morpheus

<!--QuoteBegin-fedotxxl+8:11:2007, 23:20 -->
<span class="vbquote">(fedotxxl @ 8:11:2007, 23:20 )</span><!--QuoteEBegin-->Но когда IBM введет метод Status для класса NotesDocument этот код рухнет
[snapback]84897" rel="nofollow" target="_blank[/snapback]​
[/quote]
гы
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!