Помогите с Response

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

  1. 10eyro

    10eyro Гость

    Здравствуйте. Есть 2 формы А1-Document Поле-Ф1, A2- response Поле-Ф1. Создаю документ в форме А1 сохраняю и из этой формы открываю Форму Ф2, при нажатие кнопки мне нужно скопировать данные из Формы А1-Document Поле-Ф1 в форме A2- response Поле-Ф1.
    В форме А1 создал 2 поля MainUNID - text computed формула - @Text(@DocumentUniqueID) и SelfUNID text computed формула - Text(@DocumentUniqueID). В форме respons А2 создал 3 поля MainUNID text computed формула - MainUNID, поле SelfUNID text computed формула - @Text(@DocumentUniqueID) и...
    и поле preSelfUNID text computed when composed - SelfUNID. Под кнопкой следующий код:
    Код (LotusScript):
    Sub Click(Source As Button)
    Dim session As New NotesSession
    Dim db As NotesDatabase
    Dim workspace As New NotesUIWorkspace
    Dim uidoc As NotesUIDocument
    Dim response As NotesDocument
    Dim parent As NotesDocument
    Dim ritem As Variant
    Dim gettext As String,newtext As String
    Dim j As Long,lastmark As Long
    Set db = session.CurrentDatabase
    Set uidoc = workspace.CurrentDocument
    If uidoc.IsNewDoc Then
    Set response = uidoc.Document
    predocUNID = response.preSelfUNID(0)
    If predocUNID ="" Then
    Exit Sub
    End If
    Set parent = db.GetDocumentByUNID( predocUNID)
    Set ritem = parent.GetFirstItem("ПолеФ1") ' поле откуда берем данные
    lastmark = 1
    newtext = Chr(13) & Chr(10)
    gettext = ritem.GetFormattedText(False,256) & Chr(10)
    For j=1 To Len(gettext)
    c=Mid(gettext,j,1)
    If c=Chr$(10) Then
    newtext = newtext & "> " & Mid$(gettext, lastmark, j + 1 - lastmark)
    j = j + 1
    lastmark = j
    End If
    Next j
    Call uidoc.FieldAppendText( "ПолеФ1", newtext ) ' добавляем в новое поле
    Call uidoc.GotoField( "Body" )
    End If
    End Sub


    Но при нажатие кнопки выдает Invalid Universal ID. Помогите, что делаю не так?
     
  2. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Нет документа с таким UNID в базе.

    А что делаешь не так - не знаю :)
     
  3. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    а почему не берете поле MainUNID или notesDocument.ParentDocumentUNID?
    скорее всего, получаете в поле preSelfUNID унид текущего дока, т.е. нового несохраненного документа.
     
  4. 10eyro

    10eyro Гость

    Объясните пожалуйста что где добавить?
     
  5. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    Я не поняла, зачем вам надо поле preSelfUNID? Что в нем должно быть?
    пока добавьте вывод унида документа, т.е. посмотрите, что за унид у вас получается после этой строчки
    Если у вас predocUNID = UNID документа response, то вы просто ошиблись с заполнением поля preSelfUNID в дочернем документе в форме А2 (туда попадает SelfUNID = @Text(@DocumentUniqueID) нового документа) .
     
  6. 10eyro

    10eyro Гость

    а что там должно попсть?
     
  7. allex

    allex Гость

    Попробуй так, или смени поле preSelfUNID на редактируемое
    Код (LotusScript):
    Dim s As New NotesSession
    Dim ws As New NotesUIWorkspace
    Dim db As NotesDatabase
    Dim cdoc As NotesDocument
    Dim uidoc As NotesUIDocument ' текущий документ - главный
    Set uidoc = ws.CurrentDocument
    If uidoc.EditMode=False Then
    uidoc.EditMode=True
    End If
    Call uidoc.Save ' родительский документ

    Dim respdoc As NotesDocument ' респонс от главного
    Set respdoc = db.Createdocument()
    respdoc.form = "Forma_responsa"
    Call respdoc.Makeresponse(uidoc.document)
    '
    '*** заполнение респонс-документа
    '
    Call respdoc.Save(True,true)
     
  8. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    10eyro
    это вопрос ко мне? Ну откуда я могу знать, что должно попасть в это поле в вашем приложении? %)
    Единственное, что я знаю - что если uidoc.IsNewDoc = True, то этот новый несохраненный в БД документ не найти по униду, хотя унид и не пустой.
    Имхо, исходя из описания задачи мне показалось, что там должен быть унид родительского документа по форме А1-Document, из-за чего и предложила воспользоваться другим полем (или свойством) у текущего документа, открытого по форме A2- response.
     
  9. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    10eyro
    Может быть Вам лучше не копировать значения полей из А1 в А2 по нажатию кнопки, а просто установить наследование значений полей (вторая закладка свойств формы, первая галка)? Тогда при нажатии в А1 кнопки "Создать А2", документ А2 будет в одноимённых с А1 полях содержать значения из А1.
     
  10. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    nvy
    Там вроде в коде в стартовом сообщении из рт-поля копируется только текст без форматирования в обычное поле, так что кнопка для переноса полей всё-таки нужна. А вот для полей с унидом может помочь, только автору надо разобраться, что за данные он там хочет хранить.
     
  11. 10eyro

    10eyro Гость

    Спасибо всем за ответы! Во всем разобрался.
     
Загрузка...

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