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

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

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

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

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

Работа с Lotus из Word

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

Anatoly

Столкнулся с необходимостью работать с Lotus в фоновом режиме.
Пользователю нужно находясь в документе Word дергать информацию из базы Lotus.

Начинается с того, что не могу достучаться к уже запущенному клиенту :)
Set session = CreateObject("Lotus.NotesSession")
Call session.Initialize

Работает, но не годится, так как требуется каждый раз вводить пароль.
Через GetObject достучаться до клиента не получается, никак не пойму что указать в параметрах.

Далее, после инициализации сессии

Set db = session.GetDatabase("", "Путь к базе")
Set view = db.GetView("Имя вьюшки")

отрабатывает
Set doc = view.GetDocumentByKey("ИмяЗакладки")
выдает ошибку
Попробовал:
Set doc = view.GetFirstDocument()
Нормально, но мне не это надо, мне надо по ключу.
И далее из полученного документа нужно получить значение поля:
Selection.TypeText (CStr(doc.GetItemValue("Name")))
опять посылает меня.

Никак не могу найти ничего в помощь, куда тыкнуться?
 
T

TIA

Какие сообщения об ошибках выдаются?
doc.GetItemValue("Name") - возвращает всегда массив. Первое значение получается так doc.GetItemValue("Name")(0)
Вьюшка "Имя вьюшки" имеет отсортированную колонку?
 
A

azat20

У Вас есть документ со строковым значением в первой отсортированной колонке "ИмяЗакладки"?

Используйте Selection.TypeText (doc.Getfirstitem("Name").text)
 
A

Anatoly

doc.GetItemValue("Name") - возвращает всегда массив. Первое значение получается так doc.GetItemValue("Name")(0)
Черт, как я это упустил... Спасибо.
TIA сказал(а):
Вьюшка "Имя вьюшки" имеет отсортированную колонку?
Да. И, как не странно, после обычного пересохранения - заработало.

И, как я понял, для работы с Lotus в фоновом режиме клиент запускать не обязательно.
Но если он уже запущен, можно избежать вызова диалогового окна для ввода пароля?
 
A

Anatoly

Вообще, какие могут быть подводные камни при работе с Lotus из приложений MS Office?
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 933
609
BIT
177
странная "необходимость" - работать из МСО с ЛДН...
грабли одни - использование КОМа, и они - основные
 
A

Anatoly

лотус не закрывайте ;)
Вроде немного прояснилось :)
Клиент вообще не нужно запускать.
При первом запуске модуля в Word появляется приглашение ввести пароль и в дальнейшем, пока документ открыт, пароль больше не запрашивается.

странная "необходимость" - работать из МСО с ЛДН...
грабли одни - использование КОМа, и они - основные
Не мы ставим задачи, а нам. :(
А суть поставленной задачи в следующем: для облегчения и ускорения работы решено создать в организации банк фрагментов документов (стандартные фразы, формулировки и т.д). Ведется банк в Лотусе, хранятся куски в RTF-полях, все классифицированно: по по типам банков/категориям/видам/все. Короче, тут, как-бы, все без судка и задоринки. Но рядовому пользователю, набирающему текст в Ворде, нет резона лазить в Лотус - он нажимает кнопку на пенели Word, вводит имя закладки и ему в под курсор вставляется кусок текста. С этим я разобрался и реализовал.

Но вот сейчас сижу и думаю дальше...
Не всегда имя закладки известно :( Как дать пользователю выбрать нужный кусок визуально. Из Session не запустить view, как инициализировать UIWorkSpace для PickList не понятно... Может кто наведет на хорошую мысль? :)
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 933
609
BIT
177
я не о том...
ежели всёравно прогаете - почему именно МСО
юзеру пофиг чего запускать, а нотус у него установлен полюбасу
можно сразу по иконке открывать базу/док/вьюшку
*.ndl файл для этого сущ.
резон лазить в нотус есть - не усложнять систему и не плодить в ней багофичи (индусы и так, с UI, "постарались")
 
Мы в соцсетях:

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