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

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

Klido

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

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

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

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

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 226
25
#2
ну почему случайность я бы сказал, что даже закономерность
К примеру когда там(в вьюхе) срабатывает какой-либо скрипт, который вызывает диалог бокс или что-то еще уишное, то УИ уходит туды и ты остаёшься без CurrentDocument :)
тоже бы хотел услышать какой нить вариант стабильного решение этой ситуации, так как у меня хоть и есть вариант, когда УИ уползает вообще в другую базу, но ошибка раза с 20-40го воспроизводится всё равно
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
2
#3
Решение простое. Не использовать ws.CurrentDocument во внедренном представлении. :)
Иначе можно долго глюки ловить. Особенно мне запомнился «когда УИ уползает вообще в другую базу». :)
 
K

Klido

Гость
#4
какие альтернативы? :)

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

nvyush

Well-Known Member
Lotus team
22.04.2009
2 317
0
#5
Если форма открывается не в диалоге, можно во внедрённой вьюхе в Globals создать глобальную переменную CurrentDoc, в QueryOpen вставить
Set CurrentDoc = ws.CurrentDocument.Document
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
2
#6
Вынести кнопку на форму. Список обрабатывать с помощью PickListCollection.
 
K

Klido

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

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

nvyush

Well-Known Member
Lotus team
22.04.2009
2 317
0
#10
nvy
а агент как про неё узнает???
Либо код ЛС агента поместить в кнопку, либо в кнопке толкать его не собаками, а скриптом с указанием noteid.

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

Akupaka

А че я?.. О.о
04.10.2007
3 360
2
#11
а документ сам по себе сохранен? может на несохраненных доках глюка?
 

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 226
25
#13
а документ сам по себе сохранен? может на несохраненных доках глюка?
этот глюк даже на сохранных доках вылетает, к примеру есть док, а в нем встроенный вид с коментами по доку, если долго клацать по коментам, переходить в отдельные коменты, потом обратно возвращаться в главный док то глюк время от времени появляется
 
K

Klido

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

Klido

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

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

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

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

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