Агент и вычисляемое поле

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

  1. LIGHT

    LIGHT Гость

    Ситуация такая, есть документ на котором болтается текстовое, многострочное поле.
    При определенном действии в это поле дописываются данные.
    При этом, это поле является вычесляемым, т.е. по некоторым соображениям нельзя допустить что бы там поправили что-то ручками. Сейчас сделано так, поле вычесляет само себя, + проверяет новый ли это документ и еще ряд параметров в случае если все нормально в него производится дозапись данных.

    Захотелось сделать вот что:

    В вьюшке где выбраны документы по этой форме, сделал кнопку, конопая на которую нужно сделать всего одно действие над выбраным(и) документами
    Код (Text):
    AddItemValye (мое_поле, мое_значение)
    Save(true,true,true)
    Но чего-то в мое_поле мое_значение ни как не хотит колбасится, даже ошибок нет.
    Может кто чего насоветует как такой винегрет приготовить.
     
  2. K-Fire

    K-Fire Гость

    А какая функция используется чтобы получить ссылку на документ из вьюхи?

    Может быть uiview.Documents, затем GetFirstDocument и при этом напротив документа галочка не поставлена?
     
  3. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Для: LIGHT
    Приведи нормальный код.
     
  4. LIGHT

    LIGHT Гость

    Код такой:

    Код (Text):
    Sub Click(Source As Button)

    '**********************************************
    Dim s As NotesSession
    Dim db As NotesDatabase
    Dim uidoc As NotesUIDocument
    Dim dc As NotesDocumentCollection
    Dim doc As NotesDocument
    Dim w As NotesUIWorkspace
    Dim createDate As Variant
    Dim i As Variant

    '***********************************************
    Set s = New NotesSession
    Set db = s.CurrentDatabase
    Set dc = db.UnprocessedDocuments
    Set doc = dc.GetFirstDocument
    Set w = New NotesUIWorkspace

    '**********************************************

    Do Until doc Is Nothing

    Let TOrig=doc.Orig(0)                      
    Let TOrigP=doc.OrigP(0)        

    Call doc.AppendItemValue( "OrigP" , doc.Orig(0))


    '******************************************************

    Call doc.save(True,True,True)
    Messagebox(doc.OrigP(0))
    Set doc = dc.GetNextDocument (doc)

    Loop

    End Sub
    PS Orig="ля-ля-ля" т.е. пуременная существует
    Делал тупо Call doc.AppendItemValue( "OrigP" , "проверочка") не работает :(

    Может быть еще будет важен код поля, хотя ... для моего случая должно быть по барабану.
     
  5. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Читай хелп.
    AppendItemValue создает новое поле. А если такое уже есть, то создает второе с таким же именем.
    Тебе нужно использовать ReplaceItemValue или через Evaluate.

    А еще есть функции @Command([ToolsRefreshSelectedDocs]) или @Command([ToolsRefreshAllDocs]), которые делают перевычисление всех полей в документе. Но пользоваться ими надо осторожно.
     
  6. LIGHT

    LIGHT Гость

    <!--QuoteBegin-Medevic+14:06:2007, 11:47 -->
    <span class="vbquote">(Medevic @ 14:06:2007, 11:47 )</span><!--QuoteEBegin-->Тебе нужно использовать ReplaceItemValue или через Evaluate.
    [snapback]69303" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Для: Medevic а не могбы примерчик привести как Evaluate прикрутить к ReplaceItemValue?
     
  7. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Это:
    <!--QuoteBegin-LIGHT+14:06:2007, 11:35 -->
    <span class="vbquote">(LIGHT @ 14:06:2007, 11:35 )</span><!--QuoteEBegin-->Call doc.AppendItemValue( "OrigP" , doc.Orig(0))
    [snapback]69298" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    заменить на это:
    Код (Text):
    doc.OrigP = Evaluate({OrigP : Orig}, doc)
     
  8. johny

    johny Гость

    а еще проще на собаках все написать

    tmp:= твое_поле;
    FIELD второе_твое_поле := tmp;
     
  9. Ronchik

    Ronchik Гость

    Для: LIGHT
    @SEtField("OrigP";OrigP:"Value")
    и все
     
Загрузка...

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