Обновление внедренного представления

Тема в разделе "Lotus - Программирование", создана пользователем Kizarek86, 22 сен 2011.

  1. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    День добрый, Всем.

    Собственно что есть:
    Форма с внедренным представлением, в котором отображаются документы.

    При открытии документа следующий код:
    Код (Text):
    Sub Queryopendocument(Source As Notesuiview, Continue As Variant)
    Dim s As New NotesSession
    Call s.CurrentDatabase.GetAgent("(AG)").Run(Source.CaretNoteID)
    Continue = False
    exit sub
    Агент открывает выбранный документ в диалоговом окне:
    Код (Text):
        Dim s As New NotesSession
    Dim WS_DLG As New NotesUIWorkspace
    Dim doc As NotesDocument

    Set doc = s.CurrentDatabase.GetDocumentByID(s.CurrentAgent.ParameterDocID)

    If WS_DLG.DialogBox("DLG_FORM", True, True, False, False, False, False, "...", doc, True, False, False) Then
    Call doc.Save(True,True)
    End If
    Собственно вопрос, как обновить представление после сохранения документа открытого в диалоге?
     
  2. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Попробуй NotesUIWorkspace.ViewRefresh
     
  3. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    Блин, забыл совсем про неё, спасибо)
     
  4. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    КМК, перед этим нужно еще view.Refresh() сделать
     
  5. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    Ша проверю в 6.5
    в 8.0.2 работает без

    Ну в общем пашет и в 6.5, так что не нужно делать view.Refresh()
     
  6. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    Вот в 6.5 зато другой трабл вылез.

    В 8 у представления есть замечательное событие OnSelect.

    Что делается:
    На событии OnSelect в переменную окружения (notes.ini) пишем NoteID документа который выделен, для того чтобы потом из документа куда внедрено представления произвести некоторые действия.

    Как это можно сделать для 6.5 без OnSelect?
     
  7. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Поместить кнопку обрабатывающую выделенный документ в само view как action.
    И всю логику написать там.

    Как там вообще открытый док и док из внедрённого view связаны?
    Сколько лет программлю под лотус, как-то не приходилось нарываться на такие задачи, что бы передавать noteid выделенного документа через энвайромент.
     
  8. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
  9. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    Да они связаны, поэтому определить что именно в нужном представлении был последний клик получится.

    Не нравятся мне кнопки встроенные во внедренное представление хоть убей)
     
  10. Gandliar

    Gandliar Well-Known Member

    Регистрация:
    16 фев 2004
    Сообщения:
    222
    Симпатии:
    0
    В этом случае надо учитывать 2 варианта

    1. представление из текущей базы
    2. представление из другой базы

    если 1 все просто, в скрипте просто ловишь текущий уидок
    если 2 - то как в 1 не прокатывает, надо ловить уидок 1 раз на событие открытия вида
     
  11. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    Почему не прокатит с представление из другой базы?
     
  12. TIA

    TIA :-)
    Lotus team

    Регистрация:
    15 май 2009
    Сообщения:
    790
    Симпатии:
    0
    >На событии OnSelect в переменную окружения (notes.ini) пишем NoteID документа который выделен, для того чтобы потом из документа куда внедрено представления произвести некоторые действия.
    А что будет если открыть 2 или более таких документов, с внедрённым представлением! Выбрать в первом из встроенной вьюшки документ, а во втором "произвести некоторые действия" :)
     
  13. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    При открытии документа с внедрённым представлением в событии QueryOpen представления можно получить документ через Workspace.CurrentDocument и добавлять к имени переменной его unid/noteid.

    Добавлено
    Делал аналогичную реализацию, только unid подчинённого документа передавал через очереди.
     
  14. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    В моем случае все норм будет, т.к. чтобы производить действия нужно открыть документ на редактирование, с репликами не работают.
     
  15. TIA

    TIA :-)
    Lotus team

    Регистрация:
    15 май 2009
    Сообщения:
    790
    Симпатии:
    0
    kizarek
    >В моем случае все норм будет, т.к. чтобы производить действия нужно открыть документ на редактирование, с репликами не работают.

    Я про то, какой NoteId возмётся из notes.ini. Когда в первом документе производится выбор из встроенного представления, то в notes.ini запишется NoteId. Если во втором документе, при выполнении "некоторых действий" получить документ по этому NoteId, то получится выбранный в первом документе, а надо выбранный во втором.
     
  16. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Я делал так: при открытии документа с внедрённым представлением в QueryOpen представления запоминал NoteID документа и использовал его в имени очереди сообщений, соответственно, сколько документов не открывай, для каждого будет своя очередь, так что путаницы не возникнет. Аналогично можно добавлять NoteID "главного" документа к имени переменной окружения, чистить notes.ini от таких переменных можно по закрытию документа/базы.
     
Загрузка...
Похожие Темы - Обновление внедренного представления
  1. proteam
    Ответов:
    7
    Просмотров:
    108
  2. DNT
    Ответов:
    6
    Просмотров:
    812
  3. Erlan
    Ответов:
    1
    Просмотров:
    744
  4. valmont
    Ответов:
    5
    Просмотров:
    891
  5. hasp84
    Ответов:
    3
    Просмотров:
    1.178

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