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

Тема в разделе "Lotus - Программирование", создана пользователем Klido, 3 фев 2010.

Статус темы:
Закрыта.
  1. Klido

    Klido Гость

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

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

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

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

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.046
    Симпатии:
    18
    ну почему случайность я бы сказал, что даже закономерность
    К примеру когда там(в вьюхе) срабатывает какой-либо скрипт, который вызывает диалог бокс или что-то еще уишное, то УИ уходит туды и ты остаёшься без CurrentDocument :)
    тоже бы хотел услышать какой нить вариант стабильного решение этой ситуации, так как у меня хоть и есть вариант, когда УИ уползает вообще в другую базу, но ошибка раза с 20-40го воспроизводится всё равно
     
  3. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Решение простое. Не использовать ws.CurrentDocument во внедренном представлении. :)
    Иначе можно долго глюки ловить. Особенно мне запомнился «когда УИ уползает вообще в другую базу». :)
     
  4. Klido

    Klido Гость

    какие альтернативы? :)

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

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Если форма открывается не в диалоге, можно во внедрённой вьюхе в Globals создать глобальную переменную CurrentDoc, в QueryOpen вставить
    Set CurrentDoc = ws.CurrentDocument.Document
     
  6. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Вынести кнопку на форму. Список обрабатывать с помощью PickListCollection.
     
  7. Klido

    Klido Гость

    nvy
    а агент как про неё узнает???
     
  8. VladSh

    VladSh начинающий
    Lotus team

    Регистрация:
    11 дек 2009
    Сообщения:
    1.251
    Симпатии:
    2
    Что говорит notesSession.DocumentContext?
     
  9. Klido

    Klido Гость

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

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

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Либо код ЛС агента поместить в кнопку, либо в кнопке толкать его не собаками, а скриптом с указанием noteid.

    Добавлено:
    Тогда уж лучше очередями сообщений
     
  11. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    а документ сам по себе сохранен? может на несохраненных доках глюка?
     
  12. Klido

    Klido Гость

    да, конечно сохранен...
     
  13. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.046
    Симпатии:
    18
    этот глюк даже на сохранных доках вылетает, к примеру есть док, а в нем встроенный вид с коментами по доку, если долго клацать по коментам, переходить в отдельные коменты, потом обратно возвращаться в главный док то глюк время от времени появляется
     
  14. Klido

    Klido Гость

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

    Klido Гость

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

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

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

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

    Как вообще вызвать из дока агент, ничего ему не передавая, а в агенте гарантированно взять вызывающий документ?
     
Загрузка...
Похожие Темы - странность currentdocument document
  1. Eugen
    Ответов:
    10
    Просмотров:
    1.081
Статус темы:
Закрыта.

Поделиться этой страницей