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

Тема в разделе "Lotus - Программирование", создана пользователем LIGHT, 8 ноя 2007.

  1. LIGHT

    LIGHT Гость

    Всем привет!

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

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

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

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

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

    Делаю это так.
    Код (Text):
    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
     
  2. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    Может просто замеить
    Код (Text):
    with Source.Document
    Pdoc.USReviewedDate = .ReviewedDate(0) ' Дата визирования
    Pdoc.USDecision= .Decision(0) ' Статус визирования
    Pdoc.USResolution = Implode( .Resolution (0)) ' Что сказал
    ...
    т.к. Resolution может быть многострочным то мона implode, Перед этим желательно проверить на то что поля заполнены

    а почему это н висит на QuerySave
     
  3. IsAvailable

    IsAvailable Гость

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

    и

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

    и

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

    и

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

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

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Для: IsAvailable
    Pdoc.GetItemValue("Status")(0) заменил бы на Pdoc.Status(0)
    C_порно
     
  5. LIGHT

    LIGHT Гость

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

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

    IsAvailable Гость

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

    fedotxxl Well-Known Member

    Регистрация:
    9 ноя 2005
    Сообщения:
    614
    Симпатии:
    0
    Для: IsAvailable
    Именно конструкция GetItemValue является правильной... а эти вольности, которые позволяет LS к хорошему не преводят... хотя более читабельна вторая конструкция... Но когда IBM введет метод Status для класса NotesDocument этот код рухнет =)
     
  8. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    <!--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]
    гы
     
Загрузка...

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