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

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

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

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

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

странность с Ws.currentdocument.document

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

Klido

есть форма, в ней внедренная вьюха с кнопкой, по которой запускается агент через @toolarunmacro
агент должен взять текущий документ и поработать над его данными...
в агенте начало типа

Dim WS As New NotesUIWorkspace
...
Set doc= ws.CurrentDocument.Document

и вот в этой непримечательной строке для некоторых (случайным образом) юзеров выдаёт Object variable not set

смущает случайность ошибки - у подавляющего большинства всё ОК... все авторы в базе, для конкретного документа пользователь тоже автор в поле указан...
что бы это могло быть??
 

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
ну почему случайность я бы сказал, что даже закономерность
К примеру когда там(в вьюхе) срабатывает какой-либо скрипт, который вызывает диалог бокс или что-то еще уишное, то УИ уходит туды и ты остаёшься без CurrentDocument :)
тоже бы хотел услышать какой нить вариант стабильного решение этой ситуации, так как у меня хоть и есть вариант, когда УИ уползает вообще в другую базу, но ошибка раза с 20-40го воспроизводится всё равно
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
Решение простое. Не использовать ws.CurrentDocument во внедренном представлении. :)
Иначе можно долго глюки ловить. Особенно мне запомнился «когда УИ уползает вообще в другую базу». :)
 
K

Klido

Решение простое
какие альтернативы? :)

Не использовать ws.CurrentDocument во внедренном представлении.

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

nvyush

Если форма открывается не в диалоге, можно во внедрённой вьюхе в Globals создать глобальную переменную CurrentDoc, в QueryOpen вставить
Set CurrentDoc = ws.CurrentDocument.Document
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
Вынести кнопку на форму. Список обрабатывать с помощью PickListCollection.
 
K

Klido

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

из видимых более комплексных решений - передавать в агент через notes.ini?
 
N

nvyush

nvy
а агент как про неё узнает???
Либо код ЛС агента поместить в кнопку, либо в кнопке толкать его не собаками, а скриптом с указанием noteid.

Добавлено:
из видимых более комплексных решений - передавать в агент через notes.ini?
Тогда уж лучше очередями сообщений
 
A

Akupaka

а документ сам по себе сохранен? может на несохраненных доках глюка?
 

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
а документ сам по себе сохранен? может на несохраненных доках глюка?
этот глюк даже на сохранных доках вылетает, к примеру есть док, а в нем встроенный вид с коментами по доку, если долго клацать по коментам, переходить в отдельные коменты, потом обратно возвращаться в главный док то глюк время от времени появляется
 
K

Klido

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

Klido

оказалась старая и напрочь забытая проблемка (спсб бывшим коллегам за струю мысли :))...

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

если такой документ открыт не из базы, а по ссылке - имеем Object variable not set ибо ws не имеет свойства типа currentdatabase и пытается подменить базу чем угодно, где нет, очевидно, документа...

в итоге пришлось передавать док в агент и юзать сессию....

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

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