Подмена параметра в методе Queryopen

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

  1. Lariel

    Lariel Active Member

    Регистрация:
    11 сен 2009
    Сообщения:
    41
    Симпатии:
    4
    Привет.

    Столкнулся на днях с интересной проблемой. Может быть кто-то тоже сталкивался.

    При открытии документа в его методе

    Sub Queryopen(Source As Notesuidocument, Mode As Integer, Isnewdoc As Variant, Continue As Variant)

    в параметр Source - передается совсем другой документ, т.е. передается документ из другой базы совсем (из почтовой)
    у которого другой метод Queryopen и т.е. попадает документ который вообще не имеет отношения к открываемому документу.

    Какой-то интеренсый "глюк" что-ли ? Как такое может быть вообще.

    Удалял cache.ndk, desktop, bookmarks, - переустанавливал клиент - ничего не помагает

    Самое интересное вот что:

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

    - если в ACL базы изменить уровень пользователя с Редактора на дизайнера - то ошибка с подменой параметра исчезает

    - на других компьютерах под этим iD-пользователя - все работает корректно т.е. глюк проявляется только на оной конкретной машине

    Lotus Notes. 7.0.2 + Windows XP SP2

    Даже не знаю - это что какая-то проблема с интерпретаром Lotus Script ?
     
  2. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Может быть в Itialize этой формы или подключаемой библиотеки есть открытие документа в почтовой базе?
     
  3. ToxaRat

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

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.046
    Симпатии:
    18
    Lariel
    а документ случаем не во фрейме открывается?
    или из другого дока?
    или Source это глобальная переменная? :rolleyes:
     
  4. VladSh

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

    Регистрация:
    11 дек 2009
    Сообщения:
    1.251
    Симпатии:
    2
    Lariel

    Проблема, естессно, была ещё под 6-кой при использовании параметра newInstance в NUIWS.EditDocument. И надо перед вызовом кода очищать (Delete) всех объектов: сессии и т.п., кроме текущей БД, - её надо забивать с помощью присваивания Nothing, чтобы не было малевичей.., потом брать заново и выполнять скрипт.

    Получилось много условностей, поэтому сейчас я вообще ушёл от таких решений в сторону NUIWS.URLOpen(URL$).
     
  5. Lariel

    Lariel Active Member

    Регистрация:
    11 сен 2009
    Сообщения:
    41
    Симпатии:
    4
    Source - нет это не глобальная переменная, но
    документ открывается из представление, а представление внутри фрейма.
    Это может как-то влиять ?

    Добавлено:
    Это интересная идея - нужно посмотреть, проверить.
    Хотя на вскидку точно других открытых документов нет и даже нет других открытых баз,
    Открыта только одна база в которой идет попытка открыть документ (первый в рабочем пространстве Lotus)
    Не знаю - это играет какую-то роль ?
     
  6. VladSh

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

    Регистрация:
    11 дек 2009
    Сообщения:
    1.251
    Симпатии:
    2
    Как это "документ (первый в рабочем пространстве Lotus)"?? Открыт вид? и Вы пытаетесь открыть док из вида вручную даблкликом? Если так, то на открытии этого дока может стоять код, который ищет что-то в других базах и пытается открыть..
    И то, что "вроде как" не открыто других БД это ничего не означает, сейчас много любителей и под Notes делать что-то типа портала, т.е. как бы на одной странице есть доступ к разным БД.
    Если же это Ваша БД и Вы точно знаете, что никаких фреймов на чужие БД нет, тогда не знаю...
     
  7. Lariel

    Lariel Active Member

    Регистрация:
    11 сен 2009
    Сообщения:
    41
    Симпатии:
    4
    я тут наврено только запутал.

    Все на самом деле очень просто - код никаких других документов из других баз - не ищет и никуда не лезет в другие базы.
    такой код.

    а об одном документе в рабочем пространстве я писал для примера для ясности
    т.к. выше вроде была идея,
    что lotus notes может переключается в один из уже открытых ранее докумиентов -
    так вот я и написал что никаких других открытых документов нет.

    Условно говоря запускаю лотус открываю эту базы и сразу открываю документ - и тут в параметр source - появляется непонятно гокуда другой совсем документ из другой базы - меня вот это и удивило.

    Документ-то в итоге открывается тот на котором щелкал пользователь, но в коде в отлладчике видно что в параметре совсем другой документ.
     
  8. Lariel

    Lariel Active Member

    Регистрация:
    11 сен 2009
    Сообщения:
    41
    Симпатии:
    4
    Строго говоря, если я правильно понял суть этого "глюка" - программный код вообще может никакого не быть -
    тут важен именно факт что в процессе отладки в метод в параметр пападает уже другой "левый" документ,
    и этот неверное значения параметрп может передаваться уже программному коду.


    Sub Queryopen(Source As Notesuidocument, Mode As Integer, Isnewdoc As Variant, Continue As Variant)
    REM Source - этот нее тот документ на который щелкал пользователь и вообще из другой базы

    ----> а программный код уже чего тут анализировать раз Source не тот на которомщелкали
    End Sub
     
  9. Kee_Keekkenen

    Kee_Keekkenen Well-Known Member

    Регистрация:
    5 сен 2006
    Сообщения:
    616
    Симпатии:
    4
    может в представлении есть какой-то код ?
     
  10. Lariel

    Lariel Active Member

    Регистрация:
    11 сен 2009
    Сообщения:
    41
    Симпатии:
    4
    Посмотрел - в событиях представления кода нету.
    Чудаса какие-то
     
  11. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Lariel
    Может стоит базу выложить, чтоб все подивились на такое чудо
     
  12. Lariel

    Lariel Active Member

    Регистрация:
    11 сен 2009
    Сообщения:
    41
    Симпатии:
    4
    Да в том то и дело, как я писал в первом постинге - что глюк проявляется только на одной конкретной машине,
    а на других ПК эта база работает нормально.

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

    Но как только права пользователя на этой машине в базе поднимаю до Designer - то проблема пропадает на этом ПК.
     
  13. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Lariel
    Может "вирус бродит по Европе" (с)? Винду переустанавливать пробовали?
     
  14. Kee_Keekkenen

    Kee_Keekkenen Well-Known Member

    Регистрация:
    5 сен 2006
    Сообщения:
    616
    Симпатии:
    4
    а библиотеки заюзаны в виде или документе ?

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

    Lariel Active Member

    Регистрация:
    11 сен 2009
    Сообщения:
    41
    Симпатии:
    4
    Бибилиотеки да есть и подключаются в документе.
    Представление - чистое - в смысле там кода нет никакого.


    Ой, а синглетон - это что такое - я чего то такого не встречал - это куда смотреть нужно ?
     
  16. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    В гугл. Если чего не знаешь, в первую очередь нужно смотреть в гугл — там гугол информации на любую тему. А что касается библиотек, то стоит внимательно посмотреть, что они делают. Существуют технологии, например, в почтовом шаблоне, когда при открытии формы создаётся экземпляр класса со ссылками на doc, uidoc, session, db и прочее. Вот там может быть какая-нибудь ошибка.
     
  17. Lariel

    Lariel Active Member

    Регистрация:
    11 сен 2009
    Сообщения:
    41
    Симпатии:
    4
    Предположим, что эта ошибка с экземпляром, но не ясно почему тогда она возникает только на одном конкретном месте и исчезает если повысить права до disigner
     
  18. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    А точно до disigner? Может быть до editor? Тогда нужно смотреть в сторону прав на редактирование документа, т.е. поля authors. Теоретически возможно, что у данного сервера (клиента) не хватает прав на редактирование какого-то настроечного/профильного документа и логика программы рушится.
     
  19. Constantin A Chervonenko

    Constantin A Chervonenko Well-Known Member

    Регистрация:
    30 май 2006
    Сообщения:
    1.288
    Симпатии:
    0
    А почему она рушится только ПОСЛЕ ПЕРЕЗАГРУЗКИ машины?

    Я там (рядом с проблемой) был: на той машинке установлен сильно засекреченый софт (как пить дать с подменой системных DLL). После переинсталляции LN базы работают - до перезапуска машинки.
    Гипотеза: "тот" софт что-то в системе рихтует (типа - с взломом борется)
     
  20. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Хм, обычно подменой системных dll всякие червяки занимаются. "Сильная засекреченность" софта червякам не мешает грызть и его тоже.
    Опять же непонятно, а с дизайнерскими правами почему работает? Полтергейст да и только...
     
Загрузка...

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