• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

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

  • Автор темы arm
  • Дата начала
A

arm

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

erdi

Green Team
20.08.2008
264
17
BIT
0
Код:
Set collection = db.UnprocessedDocuments
должен тебе вернуть список выделенных документов
 
B

Bob84

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

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
сделать внедренную вьюху
а часть данных в колонках обозвать кнопками
и тогда сделав событие на редактирование колонки получаем настоящий кайф :)
 

VladSh

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

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

Omh

Ну по идее надо делать так:

делается 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 конец пришёл, чё он обрезает код,
 
A

arm

Ну по идее надо делать так:

делается 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

Green Team
20.08.2008
264
17
BIT
0
можешь вполне стабильно работают, правда нюансов тоже хватает. У меня в одном модуле похожая задача, очередями удачно решается....правда без OnSelect никак ты не получишь выделенные документы
 

savl

Lotus Team
28.10.2011
2 597
310
BIT
160
А Onselect event : Note This event is new with Release 8.
Обновится до 8ки и заюзать очереди.
или переработать архитектуру и схему работы.
 

VladSh

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


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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!