• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Открытие Меню Файла Из Lotus Notes

  • Автор темы AnnaS
  • Дата начала
Статус
Закрыто для дальнейших ответов.
A

AnnaS

Раз документ всегда открыт на экране, то можно получать doc иначе.
Так же я не увидел сохранения документа и поскольку идет работа с RT-полем, то после всех изменений его надо переоткрыть.
Ну и режим редактирования сменить на чтение.
Попробуйте вот эту версию:

Запускаю агент,ошибка "Не удается выполнить указанную программу".
Затем вижу подписание файла (Bat -ом) , и думаю, что файл все-таки удаляет и пркрепляет новый doc, эцп не цепляет.
еще нюанс, после проведения всех операций в карточку уже нельзя прикрепить другой файл. ну,прикрепить можно, но при переоткрытии карточки в ней так и сидит старый файл ТестСолодова.
т.е. Напр, файл ТестСолодова удаляю вручную, прикрепляю файл АБВ, сохраняю, переоткрываю карточку, а в ней ТестСолодова.

Еще как-то пару раз вышло сообщение Edit of rich text failed
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
217
я всегда вычищаю все объекты из дока, через РТ объект, и в дополнение, через сам док (если аттач прикрепился не в РТ)
 

savl

Lotus Team
28.10.2011
2 601
312
BIT
215
AnnaS
"Не удается выполнить указанную программу".
Интересно на какой строке...
Обработчик ошибок есть? Надо сделать в агенте:

Код:
Sub Initialize
On Error Goto handler
' Код агента
Exit Sub
Handler:
msgbox "Erorr in line: " & Erl & chr(10) & chr(13) & Error$
Exit Sub
End Sub
 
A

AnnaS

AnnaS

Интересно на какой строке...
Обработчик ошибок есть? Надо сделать в агенте:

Код:
Sub Initialize
On Error Goto handler
' Код агента
Exit Sub
Handler:
msgbox "Erorr in line: " & Erl & chr(10) & chr(13) & Error$
Exit Sub
End Sub

сделала, как Вы написали.
error in line 51 edit of richtext failed

51 - Call att.Remove()


Причем, он эту ошибку выдает, когда тестирую на карточке,в поле Документ которой уже новый файл с другой иконкой, так понимаю прикрепленный заново.

Когда тестирую на новой карточке,где нормальн ворд документ, такой ошибки нет.

Добавлено: Проверила,этот док и открыть невозможно.
Пишет "Не найден объект".
Может, тогда не до конца что-то удаляет.
 

savl

Lotus Team
28.10.2011
2 601
312
BIT
215
если свойство документа из представления смотреть, там поле $File есть? сколько таких полей?
 

savl

Lotus Team
28.10.2011
2 601
312
BIT
215
то есть ошибка на повторной обработке того же документа, так?
 
A

AnnaS

то есть ошибка на повторной обработке того же документа, так?

ТАК ТАК!)))

Добавлено: изначально отрабатывает без проблем.
только не знаю,удаляет ли файл и цепляет новый или нет.Но иконка файла меняется.ну,может особенности лотуса. но ЭЦП не цепляет.

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

savl

Lotus Team
28.10.2011
2 601
312
BIT
215
Но иконка файла меняется
Если серая становится, то перецепил.

но ЭЦП не цепляет
Как это понять? я не в курсе нюансов с ЭЦП, не сталкивался.

а при открытии заново оказывается , что там старый документ на котором работал агент.
А вот это странно...
 
A

AnnaS

Если серая становится, то перецепил.


Как это понять? я не в курсе нюансов с ЭЦП, не сталкивался.


А вот это странно...

1. да, серая становится.
2. тут эцп не имеет значения. надо, чтоб из моей папки 1 на раб столе агент прикрепил не только файл док, а содержимое всей папки (а в ней у меня как раз эцп).так что нюансов с эцп как бы нет, она ставится через бат - файл.

Добавлено: то есть, мне не нужна замена одного файла на другой такой же док.
надо, чтоб файл док извлекался(это агент делает), подписывался (тоже делает), удалял файл из карточки(думаю, тоже делает), подкреплял всё содержимое папки (подкрепляет пока док файл).

3. по поводу странностей.. да этот лотус - вообще товарищ странный))
 

savl

Lotus Team
28.10.2011
2 601
312
BIT
215
Вот эта строка крепит файл по пути filepath
Код:
Call Body.EmbedObject(EMBED_ATTACHMENT," ",filepath$)
Надо такую же для ЭЦП сделать:
Код:
Call Body.EmbedObject(EMBED_ATTACHMENT," ",<Путь к ЭЦП>)
И тогда уже прикрепится 2 файла.

Может из-за подписи он не дает открыть вложение после обработки...
Можно ли его сохранить на диск потом, хоть что-то с ним сделать?
 
A

AnnaS

забудем про ЭЦП, разберусь с ней.

поясню так. выгружаю файл в папку Х, удаляю его в лотусе,
!!!и затем из этой папки Х должна импортировать ВСЕ файлы
в лотус.(это могут быть файлы word,excel, картинки и тд).

если пишу call body.embedobject дважды, то импортируется один и тот же файл дважды(а не два файла из папки). путь к папке один и тот же всегда.все файлы должны браться из одной и той же папки.
 

savl

Lotus Team
28.10.2011
2 601
312
BIT
215
вот теперь замое интересное:
Надо получить список всех файлов из папки и для каждого файла вызвать:
Код:
Call Body.EmbedObject(EMBED_ATTACHMENT," ",FileName)

Лучше в цикле:
Код:
Forall file in FileName
Call Body.EmbedObject(EMBED_ATTACHMENT," ",File)
End forall
Но надо как-то получить список файлов...

Добавлено: о нашел, способ:
Код:
Dim FSO as variant
Dim Folder as Variant

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("C:\") ' Получить папку
ForAll File In Folder.Files
Call Body.EmbedObject(EMBED_ATTACHMENT," ",File.Name)
Next
Возможно даже отработает без ошибок
 
A

AnnaS

ошибка в строке Call Body.EmbedObject(EMBED_ATTACHMENT," ",File.Name)
пишет файл_Мое название файла из лотуса_не найден

хотя в папке лежит еще и другой файл.
ну,и,соответственно,не подкрепляет ничего.
 

savl

Lotus Team
28.10.2011
2 601
312
BIT
215
хм... File.Name навреное позвращает только название файла, а не полный путь... Вот я кретин :)
Вот так тогда:
Код:
 Call Body.EmbedObject(EMBED_ATTACHMENT," ", <имя папки c разделителем в конце> & File.Name)
 

savl

Lotus Team
28.10.2011
2 601
312
BIT
215
мне кажется это из-за навигатора для нахождения аттача, кажись при попытке удалить не может переопределить позицию.
Давайте цикл заменим на другой, думаю хуже не будет.
Сделайте копию агента и измените способы извлечения и удаления файлов
Код:
If Not doc.HasEmbedded Then Exit Sub
Set body = doc.GetFirstItem("Body")
ForAll att In Body.Embeddedobjects
If att.type = 1454 Then ' Проверка что это файл
filepath$ = "C:\Users\37\Desktop\1\" & att.Source
Call att.ExtractFile(filepath$)
Print filepath$ & " файл извлечен"
End if
End Forall
' Подписываем файлы
' ....

ForAll att In Body.Embeddedobjects
If att.type = 1454 Then ' Проверка что это файл
Call att.remove()
End if
End Forall

' Закружаем файлы
' ....
 
A

AnnaS

спасибо, все,оказывается, работало и со старым кодом))) новый обязательно тоже попробую.
все работает и эцп выгружает,все ок.
осталась проблема следующая:
после отработки агента невозможно в рт поле посадить другие файлы.
то есть из поля "Документ" удаляю вручную уже обработанные агентом файлы, цепляю новые(необработанные агентом).сохраняю,закрываю (все как всегда), а при открытии в Документе сидят те файлы,над которыми работал агент.

и еще:можно ли сделать, чтобы определенный цикл в агенте запускался через опред время (напр,сек через 15), ибо функция,которую запускает мой батник, выполняется 3 сек.?
 

savl

Lotus Team
28.10.2011
2 601
312
BIT
215
у нас тут уже неоднакратно поднимался вопрос дождаться выполнения внешней программы:
Код:
	Dim WShell as Variant
Set WShell = CreateObject("WScript.Shell") 
ReturnCode = WShell.Run("%windir%\notepad.exe", 1, True)
Это точно будет ждать окончания работы (1 заменить на 0, тогда не будет окна на экране)

Еще можно после запуска Bat сделать Sleep(5) - 5 секунд
но поскольку bat может выполняться и дольше, то думаю первый вариант лучше.

По поводу файлов:
удаляю вручную уже обработанные агентом файлы
Вы перед этим документ переоткрываете?
 
A

AnnaS

Savl,все получилось.спасибо.задуманное реализовано.
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

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