Обновление документа

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

  1. wowa

    wowa Well-Known Member

    Регистрация:
    1 фев 2007
    Сообщения:
    842
    Симпатии:
    0
    Есть документ
    в нем поле№1 - значение занесет агент
    и поле№2 - равен значению поля№1

    Нажал на кнопку

    Начинает работать агент
    ........
    заносит значение в поле№1
    Call docCurrent.Save( True, True )

    .........
    в итоге документ закрылся
    Я открываю документ, а поле№2 не обновлено. Если перейти в редактирование и нажать F9, то обновляется
    Как мне сделать , чтобы при открытии документа , он был уже обновлен????.
    Т.е. мне нужно что-то сделать в агенте.

    в PostOpen это не пойдет, так как у пользователя нет права редактировать !
     
  2. morpheus

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

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    перед закрытием докумета обовите его! uidoc.Refresh

    а где запускаеться агент?
     
  3. wowa

    wowa Well-Known Member

    Регистрация:
    1 фев 2007
    Сообщения:
    842
    Симпатии:
    0
    ТАм вроде надо ComputeWithForm method
     
  4. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Если поле2 стоит после поля1, то без ф9 должно обновляться. Вроде бы.
    Иначе ручками.

    Документ в режиме чтения?
    Тогда в агенте меняй поле2.
     
  5. wowa

    wowa Well-Known Member

    Регистрация:
    1 фев 2007
    Сообщения:
    842
    Симпатии:
    0
    uidoc.Refresh
    в доке я сделать не могу, так как у меня нет прав редактирования документа

    агент
    Call agntDBActions.RunOnServer( stNoteID )
     
  6. Sandr

    Sandr Гость

    К чему все это? Меняйте поле 2 тем же агентом....
     
  7. wowa

    wowa Well-Known Member

    Регистрация:
    1 фев 2007
    Сообщения:
    842
    Симпатии:
    0
    КАк мне тогда в агент это закинуть?
    Const dbKey$ = {@DbLookup(""; "123456678:12345678"; "view"; значение_переменной_в_коде?????; 1)}
    vListNameDoc = Evaluate(dbKey$)

    как указать это Key???
     
  8. Sandr

    Sandr Гость

    Ну Вы даете..
    Во первых, Вы моэете использовать getAllDocumentsByKey

    Но даже если использовать такой изврат как ДБлукап в эвалуэйте, то так

    Код (Text):
    dbKey$ = {@DbLookup(""; "123456678:12345678"; "view";} & переменная_в_коде!!!!! & {; 1)}
    vListNameDoc = Evaluate(dbKey$)
    И я не пойму, почему константа? :)
     
  9. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    Вы же уже сами себе ответили! :)
    Но этот способ довольно грузный, если в форме очень "много дизайна" :) а полей обновить только парочку нужно, в таком случае лучше "ручками" прописать эти поля...
    Но с другой стороны нужно не забывать актуализировать код обновления, в случае смены формулы на форме :)

    зы: производительность всегда важнее ;)
     
  10. wowa

    wowa Well-Known Member

    Регистрация:
    1 фев 2007
    Сообщения:
    842
    Симпатии:
    0
    Для: Sandr
    Спасибо, сработало!
    +1
     
  11. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Сугубое имхо, но сложилось уже за n лет программирования на лотусе:
    1. ComputeWithForm - зло
    2. Куча компутедных полей на форме, вычисялемых одно от другого, на мой взгляд, тоже гогно.
    Никогда не знаешь, откуда тебе потом придётся пересчитать документ, поэтому в 99% случаев выношу код пересчёта в библиотеку, ну и юзаю его на QS событии.
    Зато потом не возникают вопросы "как это запихнуть" и не надо использовать этот гм... evaluate.
     
  12. Sandr

    Sandr Гость

    Для: Omh

    Ну, ситуации разные бывают... :blink:
     
  13. Гость

    Какая бы ситуация не была, использовать ComputeWithForm очень нежелательно. Кривая это вещь. При увеличении кол-ва полей на форме вероятность того, что "оно" (ComputeWithForm) криво отработает, сильно растет
     
  14. Sandr

    Sandr Гость

    А что, если Вам нужно создат на бекэнде документ по какой-то форме? А птом с ним работать на том же бекэнде, не давая польщователям работать с ним на уи? Предлагаете заполнят каждое поле?
     
  15. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    А че вы спорите-то? если есть возможность его не использовать, то не используем, а если нет, то придется... хоть и геморная это штука...
     
Загрузка...

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