Перебор в переборе

  • Автор темы Автор темы MMN
  • Дата начала Дата начала
одинаковые доки в них встречаются или нет
тема старейшин - кэширование доков в циклах для некоторых случаев (агенты, экшены) и невозможность указатель переместить из-за этого...
реальная тема - изменение текущего дока каким-то образом (явно или каким-то фоновым агентом во время выполнения) и как следствие - потеря указателя
 
куда правильнее писать так
Ой, я смеялся )) Тоха в своем стиле.

а что за скобки тут???
А скобки лучше оставить - смотрится эстетичнее, да и вероятность ошибки меньше в некоторых случаях.

MMN
А, если не жаль времени, верни цикл как был и допиши так:
Код:
...
Set telDoc=view.GetFirstDocument	
msgbox cstr(isarray(telDoc.items))
While Not telDoc Is Nothing
...
И отпиши, что грит
 
И отпиши, что грит

True

Добавлено:
P.S. telDoc из второго цикла не может в какой-то момент указывать на тот же документ, что и docX?
возможно что дело в этом, хотя переменные разные и документы только перебираются, никаких манипуляций с ними не происходит
 
а ошибка, при этом, в этой же, в первой же, итерации происходит?
что-то тут не так... ))

а если так?
Код:
on error goto errh
dim i as long

Set view=CS_GetCurrentDb.GetView("(AllPerson)")
Set telDoc=view.GetFirstDocument	
i = 0
While Not telDoc Is Nothing

Set telDoc=view.GetNextDocument(telDoc)
i = i + 1
Wend		

exit sub
errh:
msgbox Error & ": " & cstr(i) & ", " & cstr(isarray(telDoc.Items))
exit sub
 
возможно что дело в этом, хотя переменные разные и документы только перебираются, никаких манипуляций с ними не происходит
Klido ссылку дал как раз про этот случай.
Документ (i) помнит из какой он вьюхи, (ii) синглтон и (iii) кэшируеца на клиенте. Это сочетание и привело к наблюдаемому эффекту:
Если tellDoc в какой-то момент ссылаеца на docX, то docX "забудет" свою вьюху и будет считать что он из "(AllPerson)". ( ибо клиент не будет держать в памяти два объекта для одного и того же документа )
 
ибо клиент не будет держать в памяти два объекта для одного и того же документа
По-моему, и из этого правила есть исключение. Если создать второй объект базы данных, то через него можно получить второй объект документа.
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab