Field $ref

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

Статус темы:
Закрыта.
  1. fvoice

    fvoice Гость

    Подскажите пожалуйста, можно ли изменить родителя документа?
    Какие еще поля отвечают за связь с родиетелем?
    Можно ли изменить тип документа с "Документ" на "Ответ" программно у созданного уже документа?
     
  2. fvoice

    fvoice Гость

    В общем мне необходимо чтобы, ранее созданный документ, становился ответным к вновь создаваемому документу. Как такое можно реализовать?
     
  3. morpheus

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

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    А Вы пробовали заменить поле $ref ?
     
  4. Constantin A Chervonenko

    Constantin A Chervonenko Well-Known Member

    Регистрация:
    30 май 2006
    Сообщения:
    1.291
    Симпатии:
    0
    Есть такой метод doc.MakeResponse parentDoc
    На "собаках" тоже можно, но приемчик неочевидный: @SetDocField(childDocUNID; "$REF"; @DocumentUniqueID)
     
  5. Mihal

    Mihal Гость

    <!--QuoteBegin-fvoice+3:11:2006, 06:53 -->
    <span class="vbquote">(fvoice @ 3:11:2006, 06:53 )</span><!--QuoteEBegin-->Подскажите пожалуйста, можно ли изменить родителя документа?
    Какие еще поля отвечают за связь с родиетелем?
    Можно ли изменить тип документа с "Документ" на "Ответ" программно у созданного уже документа?
    [snapback]47028" rel="nofollow" target="_blank[/snapback]​
    [/quote]

    Можно. MakeResponse, например. За родитель-дитёныш отвечает только $Ref.
     
  6. fvoice

    fvoice Гость

    Просто замента поля $REF не дает результата, да к тому же скриптом он почему меняет его, а потом говорит что не может его найти.
    MakeResponse подходит отлично. Почему то я этот метод сразу не нашел.
    Из @-команд ComposeWithReference еще есть.
     
  7. Constantin A Chervonenko

    Constantin A Chervonenko Well-Known Member

    Регистрация:
    30 май 2006
    Сообщения:
    1.291
    Симпатии:
    0
    Потому что вы тип поля меняете с Reference на Text
    Речь шла об изменении родителя у существующего док-та, так?
     
  8. fvoice

    fvoice Гость

    Да, но я просто не мог найти ни одного метода для изменения или создания ответного документа, а эту команду написал для общего обозрения, вдруг у кого-нибудь будет такая-же проблема, а здесь можно будет найти более подробное описание! :D


    Разве есть такой тип данных Reference? В отладчике поле имеет тип String. Использование itema тоже не приносит результатов. :blink:
     
  9. Constantin A Chervonenko

    Constantin A Chervonenko Well-Known Member

    Регистрация:
    30 май 2006
    Сообщения:
    1.291
    Симпатии:
    0
    А ты посмотри не в отладчике, а просто в св-вах документа (ну, RMB) правильное поле $REF какого типа?
    PS: там вообще много интересного можно увидеть. И не все это через API доступно
     
  10. Veselinka

    Veselinka Гость

    Не обязятельно использовать $REF, можно породить поле-линк с произвольным названием и не одно, а сколько угодно, и таким образом породить эн альтернативных иерархий. Для отображения во вью в формуле селекции перед ней надо написать:
    DEFAULT $REF:=формула в которой определяется поле содержащее референс;
    select....
     
  11. Constantin A Chervonenko

    Constantin A Chervonenko Well-Known Member

    Регистрация:
    30 май 2006
    Сообщения:
    1.291
    Симпатии:
    0
    Все равно без $REF трудно обойтись. Все равно сначала doc.MakeResponse parent создает $REF, которое копируется/переименовывается в другое поле.
    В противном случае тип поля получается неправильный (НЕ reference) и трюк с DEFAULT $REF не работает
     
  12. fvoice

    fvoice Гость

    MakeResponse работает нормально:
    Код (Text):
    Sub Click(Source As Button)

    Dim ws As New NotesUIWorkspace
    Dim db As New NotesDatabase(MyGetServer("DBDoc"),MyGetDB("DBDoc"))
    Dim uidoc As NotesUIDocument
    Dim curdoc As NotesDocument
    Dim doc As NotesDocument
    Dim rtitem As NotesRichTextItem
    Dim picklist As Variant

    Set uidoc = ws.CurrentDocument
    Set curdoc = uidoc.Document

    If curdoc.SaveMode(0)="false" Then
    picklist = ws.PickListStrings(PICKLIST_CUSTOM,  True, MyGetServer("DBDoc"),MyGetDB("DBDoc"), "JOfZayavkaFailture", "Не выполненные заявки",  "Выберите заявку:",   1)
    If Isempty(picklist) Then
    Else
    Set doc = db.GetDocumentByUNID(Cstr(picklist(0)))
    curdoc.DocID = picklist
    Call doc.MakeResponse(curdoc)
    ...
    но если перед выполдниться следующая процедура, сидящая на другой кнопке MakeResponse выдает ошибку "The documents must be in the same database!".
    Вот код:
    Код (Text):
    Sub Onchange(Source As Field)
    Dim uidoc As NotesUIDocument
    Dim ws As New NotesUIWorkspace
    Dim db As NotesDatabase
    Dim s As New NotesSession
    Dim FIO As String
    Dim doc As NotesDocument
    Dim view As NotesView
    Dim curdoc As NotesDocument
    Dim nam As NotesName

    Set uidoc = ws.CurrentDocument
    Set curdoc= uidoc.Document
    Set db = New NotesDatabase(MyGetServer("DBDoc"),MyGetDB("DBSpr"))
    Set view = db.GetView("Sotr")

    FIO = uidoc.FieldGetText("FIO")
    Set doc = view.GetDocumentByKey( FIO )
    Set nam = New NotesName(doc.LotusName(0))
    Call uidoc.FieldSetText("Job" ,doc.Job(0))
    Call uidoc.FieldSettext("Ispolnitel",nam.Common)
    Call uidoc.FieldSettext("AnotherReaders",nam.Common)
    Call uidoc.FieldSettext("FIOConst",curdoc.FIO(0))
    Call uidoc.FieldSettext("JobConst",curdoc.Job(0))
    Call uidoc.Refresh
    End Sub
    Документы точно находяться в одной БД.
     
  13. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    <!--QuoteBegin-fvoice+3:11:2006, 09:21 -->
    <span class="vbquote">(fvoice @ 3:11:2006, 09:21 )</span><!--QuoteEBegin-->В общем мне необходимо чтобы, ранее созданный документ, становился ответным к вновь создаваемому документу. Как такое можно реализовать?
    [snapback]47029" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    В свойствах формы есть пункт Versions. Тебе нужно "Prior versions become respones".
     
Загрузка...
Статус темы:
Закрыта.

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