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

Lariel

Active Member
11.09.2009
41
4
#1
Привет.

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

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

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 ?
 

nvyush

Well-Known Member
Lotus team
22.04.2009
2 317
0
#2
Может быть в Itialize этой формы или подключаемой библиотеки есть открытие документа в почтовой базе?
 

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 226
25
#3
Lariel
а документ случаем не во фрейме открывается?
или из другого дока?
или Source это глобальная переменная? :rolleyes:
 

VladSh

начинающий
Lotus team
11.12.2009
1 248
2
#4
Lariel

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

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

Lariel

Active Member
11.09.2009
41
4
#5
Lariel
а документ случаем не во фрейме открывается?
или из другого дока?
или Source это глобальная переменная? ;)
Source - нет это не глобальная переменная, но
документ открывается из представление, а представление внутри фрейма.
Это может как-то влиять ?

Добавлено:
Lariel

Проблема, естессно, была ещё под 6-кой при использовании параметра newInstance в NUIWS.EditDocument. И
Это интересная идея - нужно посмотреть, проверить.
Хотя на вскидку точно других открытых документов нет и даже нет других открытых баз,
Открыта только одна база в которой идет попытка открыть документ (первый в рабочем пространстве Lotus)
Не знаю - это играет какую-то роль ?
 

VladSh

начинающий
Lotus team
11.12.2009
1 248
2
#6
Открыта только одна база в которой идет попытка открыть документ (первый в рабочем пространстве Lotus)
Как это "документ (первый в рабочем пространстве Lotus)"?? Открыт вид? и Вы пытаетесь открыть док из вида вручную даблкликом? Если так, то на открытии этого дока может стоять код, который ищет что-то в других базах и пытается открыть..
И то, что "вроде как" не открыто других БД это ничего не означает, сейчас много любителей и под Notes делать что-то типа портала, т.е. как бы на одной странице есть доступ к разным БД.
Если же это Ваша БД и Вы точно знаете, что никаких фреймов на чужие БД нет, тогда не знаю...
 

Lariel

Active Member
11.09.2009
41
4
#7
Как это "документ (первый в рабочем пространстве Lotus)"?? Открыт вид? и Вы пытаетесь открыть док из вида вручную даблкликом? Если так, то на открытии этого дока может стоять код, который ищет что-то в других базах и пытается открыть..
И то, что "вроде как" не открыто других БД это ничего не означает, сейчас много любителей и под Notes делать что-то типа портала, т.е. как бы на одной странице есть доступ к разным БД.
Если же это Ваша БД и Вы точно знаете, что никаких фреймов на чужие БД нет, тогда не знаю...
я тут наврено только запутал.

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

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

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

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

Lariel

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


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

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

nvyush

Well-Known Member
Lotus team
22.04.2009
2 317
0
#11
Lariel
Может стоит базу выложить, чтоб все подивились на такое чудо
 

Lariel

Active Member
11.09.2009
41
4
#12
Lariel
Может стоит базу выложить, чтоб все подивились на такое чудо
Да в том то и дело, как я писал в первом постинге - что глюк проявляется только на одной конкретной машине,
а на других ПК эта база работает нормально.

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

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

nvyush

Well-Known Member
Lotus team
22.04.2009
2 317
0
#13
Lariel
Может "вирус бродит по Европе" (с)? Винду переустанавливать пробовали?
 

Kee_Keekkenen

Well-Known Member
05.09.2006
639
6
#14
Посмотрел - в событиях представления кода нету.
Чудаса какие-то
а библиотеки заюзаны в виде или документе ?

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

Lariel

Active Member
11.09.2009
41
4
#15
а библиотеки заюзаны в виде или документе ?

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


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

nvyush

Well-Known Member
Lotus team
22.04.2009
2 317
0
#16
Ой, а синглетон - это что такое - я чего то такого не встречал - это куда смотреть нужно ?
В гугл. Если чего не знаешь, в первую очередь нужно смотреть в гугл — там гугол информации на любую тему. А что касается библиотек, то стоит внимательно посмотреть, что они делают. Существуют технологии, например, в почтовом шаблоне, когда при открытии формы создаётся экземпляр класса со ссылками на doc, uidoc, session, db и прочее. Вот там может быть какая-нибудь ошибка.
 

Lariel

Active Member
11.09.2009
41
4
#17
Предположим, что эта ошибка с экземпляром, но не ясно почему тогда она возникает только на одном конкретном месте и исчезает если повысить права до disigner
 

nvyush

Well-Known Member
Lotus team
22.04.2009
2 317
0
#18
Предположим, что эта ошибка с экземпляром, но не ясно почему тогда она возникает только на одном конкретном месте и исчезает если повысить права до disigner
А точно до disigner? Может быть до editor? Тогда нужно смотреть в сторону прав на редактирование документа, т.е. поля authors. Теоретически возможно, что у данного сервера (клиента) не хватает прав на редактирование какого-то настроечного/профильного документа и логика программы рушится.
 

Constantin A Chervonenko

Well-Known Member
Lotus team
30.05.2006
1 333
4
#19
А почему она рушится только ПОСЛЕ ПЕРЕЗАГРУЗКИ машины?

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

nvyush

Well-Known Member
Lotus team
22.04.2009
2 317
0
#20
Хм, обычно подменой системных dll всякие червяки занимаются. "Сильная засекреченность" софта червякам не мешает грызть и его тоже.
Опять же непонятно, а с дизайнерскими правами почему работает? Полтергейст да и только...