Программный Доступ К Выделенным Документам Embedded View

arm

Member
06.03.2013
24
0
#1
Я очень долго пытался найти способ получить доступ из кода формы к списку выделенных документов во встроенной в эту форму вьюшке. Сейчас у меня все операции со списком отображаемых документов производятся программно, но чтобы определить к каким объектам я хочу это всё применить я использую метод ws.PickListCollection который настроен так, что отображает ровно такую же вьюшку в которой я и отмечаю документы. Очень бы хотелось избежать этого ненужного шага, но способа так и не вижу. Располагать кнопки в самой вьюшке не вариант! Если кто-то все-таки нашёл способ подсобите пожалуйста!
 

erdi

Well-known member
20.08.2008
265
17
#2
Код:
Set collection = db.UnprocessedDocuments
должен тебе вернуть список выделенных документов
 

Bob84

Well-known member
16.05.2012
48
0
#4
Как вариант можно использовать событие OnSelect представления. Так как из встроенного представления мы может класть в текущий документ нужную информацию (если он в режиме редактирования, если промотр придется использовать временный документ или переменные окружения), по этому событию вычисляем список NoteID или UNIDов выделенных документов и записываем их куда-либо (см. выше).
 

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 231
17
#5
сделать внедренную вьюху
а часть данных в колонках обозвать кнопками
и тогда сделав событие на редактирование колонки получаем настоящий кайф :)
 

VladSh

начинающий
Lotus team
11.12.2009
1 260
5
#6
Код:
Set collection = db.UnprocessedDocuments
должен тебе вернуть список выделенных документов
Для одного внедрённого вида отработает из действия в виде, а в случае выделения документов в нескольких внедрённых видах получим непредсказуемые результаты.

Добавлено:
Как вариант можно использовать событие OnSelect представления.
Да, в Onselect. Для отмеченных доков галочками используем Source.Documents (где Source - NotesUIView), а для документа, на котором курсор - CaretNoteID.
 

Omh

Lotus team
04.07.2007
2 210
1
#7
Ну по идее надо делать так:

делается embedded view, в нём делается кнопка.
embeedded view указывается отображать Action Bar
в action отлично работает db.unprocessedDocuments

теперь самый скользкий шаг:
по идее, после
---
Dim ws As New NotesUIWorkspace
Dim uiDoc As NotesUiDocument
Dim Doc As NotesDocument
Set uiDoc = ws.CurrentDocument
Set Doc = uiDoc.Document
---
в переменной док мы получим открытый документ.
Есть некоторые нюансы, когда мы можем не получить uidoc, но при нормальной работе он будет отрабатывать в 99% случаев.

Итого у нас есть то, что нам надо:
коллекция документов из embedded view
переменная содержащая открытый док

P.s. Тегу code конец пришёл, чё он обрезает код,
 

arm

Member
06.03.2013
24
0
#8
Ну по идее надо делать так:

делается embedded view, в нём делается кнопка.
embeedded view указывается отображать Action Bar
в action отлично работает db.unprocessedDocuments

теперь самый скользкий шаг:
по идее, после
---
Dim ws As New NotesUIWorkspace
Dim uiDoc As NotesUiDocument
Dim Doc As NotesDocument
Set uiDoc = ws.CurrentDocument
Set Doc = uiDoc.Document
---
в переменной док мы получим открытый документ.
Есть некоторые нюансы, когда мы можем не получить uidoc, но при нормальной работе он будет отрабатывать в 99% случаев.

Итого у нас есть то, что нам надо:
коллекция документов из embedded view
переменная содержащая открытый док

P.s. Тегу code конец пришёл, чё он обрезает код,
Круто конечно, такой способ работает! Спасибо! Но проблема всё-таки в том, что мне нужно, чтобы код исполнялся в форме, а не во вьюшке. Потому, что форма при открытии создает объект класса, с которым и происходят определенные манипуляции, а при выходе этот объект записывает результат в форму и её респонсы. Так что любые такие действия не упрощают процесс. Можно конечно создать кнопку на вьюшке которая записывала бы список выделенных в какой-нибудь документ, а потом его можно было бы считать из формы нажатием на другую кнопку, но это не лучше того, что уже имеется, в основном потому, что это ещё более не естественно.
На счет onSelect - у меня вообще такого нет, есть только inViewEdit - вещь не плохая, но опять же корявый способ...
А вот если бы можно было иметь общие глобальные объекты разделенные между вью и формой - тогда все элементы управления можно было бы запихнуть во вью - было бы отлично, но так похоже тоже нельзя.
 

erdi

Well-known member
20.08.2008
265
17
#9
можешь очереди заюзать вполне стабильно работают, правда нюансов тоже хватает. У меня в одном модуле похожая задача, очередями удачно решается....правда без OnSelect никак ты не получишь выделенные документы
 

savl

Lotus team
28.10.2011
2 131
102
#10
А Onselect event : Note This event is new with Release 8.
Обновится до 8ки и заюзать очереди.
или переработать архитектуру и схему работы.
 

VladSh

начинающий
Lotus team
11.12.2009
1 260
5
#11
в action отлично работает db.unprocessedDocuments
Отлично работает. Но надо помнить, что:
Для одного внедрённого вида отработает из действия в виде, а в случае выделения документов в нескольких внедрённых видах получим непредсказуемые результаты.
Для отмеченных доков галочками используем Source.Documents (где Source - NotesUIView).

Добавлено:
что форма при открытии создает объект класса, с которым и происходят определенные манипуляции, а при выходе этот объект записывает результат в форму и её респонсы. Можно конечно создать кнопку на вьюшке которая записывала бы список выделенных в какой-нибудь документ, а потом его можно было бы считать из формы нажатием на другую кнопку, но это не лучше того, что уже имеется, в основном потому, что это ещё более не естественно.
У нас что-то подобное. 2 похожих объекта - в форме и вьюхе. Результат можно писать в скрытые поля текущего дока. NotesUIDocument получать каждый раз при клике на кнопку, т.к. м.б. открыто несколько доков с одной и той же вьюхой.
По глобальным данным ещё один из вариантов (непопулярный) - собственный ActiveX.