Заполнение Полей

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

  1. Antigo

    Antigo Active Member

    Регистрация:
    16 фев 2012
    Сообщения:
    41
    Симпатии:
    0
    Господа! Такая проблемка:
    Мне нужно при создании или открытии документа перезаписать некоторые существующие в документе поля из других документов.
    Если делаю в queryopen методом replaceitemvalue, то при создании документа не могу взять Source.Document, и, естественно replaceitemvalue не катит.
    Если пытаюсь в postopen, то при создании все гут перезаписывается, но при открытии существующего документа поля не перезаписываются. Как быть?
     
  2. afest

    afest Well-Known Member

    Регистрация:
    16 июн 2009
    Сообщения:
    78
    Симпатии:
    0
    Проверь в каком режиме открывается док - read/edit, ну и refresh дока проверь, могет поле и изменяется, но показывает старые данные
     
  3. Antigo

    Antigo Active Member

    Регистрация:
    16 фев 2012
    Сообщения:
    41
    Симпатии:
    0
    режим для чтения, refresh ошибку выдаст
     
  4. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.051
    Симпатии:
    146
    При создании нового - PostOpen, в конце Refresh UI-объекта.
    Проверять, что документ новый вот так, гарантированно определит:
    Код (LotusScript):
        Dim macro As Variant
    macro = Evaluate({@NoteID},param)
    If macro(0) <> {NT00000000} Then   
    ' To Do
    end if
    Если уже создан, запускать функцию на Queryopen, которая будет производить изменения.
    Записывать на этом событии вот так:
    Код (LotusScript):
    Call source.Document.ReplaceItemValue("CurrResult",msgtext)
    Refresh не делать.
    Проверяю я там новый документ через:
    Код (LotusScript):
    If Not Isnewdoc then
    Ошибки не выдает, но сомнения такая проверка у меня вызывает.
    Не мешает убедиться, что больше нигде пересчет не вызывается.

    У меня такое есть, именно через Queryopen, но Save я там не делаю, подсчет небольшой и время открытия примерно 10-12 секунд и данные должны меняться при каждом открытии документа ;)
     
  5. Antigo

    Antigo Active Member

    Регистрация:
    16 фев 2012
    Сообщения:
    41
    Симпатии:
    0
    а почему в постопен не проверить навый док или нет через uidoc.IsNewDoc?
     
  6. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.051
    Симпатии:
    146
    если документ создан не через Compose, то uidoc.IsNewDoc будет false.
     
  7. erdi

    erdi Well-Known Member

    Регистрация:
    20 авг 2008
    Сообщения:
    261
    Симпатии:
    36
    в Queryopen у меня такая конструкция

    Код (LotusScript):
        Dim doc As NotesDocument
    Set doc=Source.Document

    If doc Is Nothing Then
    If Not Source.IsNewDoc Then
    код
    End If
    Else
    If Not doc.IsNewNote Then  
    код
    End If
    End If
    и здесь уже неважно как был создан документ
     
  8. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.051
    Симпатии:
    146
    erdi
    В Queryopen есть отдельный параметр события Isnewdoc
    По сути тоже самое что и doc.IsNewNote
    Впрочем, это дело вкуса на мой скромный взгляд.
     
Загрузка...

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