Итак, причина определена!
Теперь хотелось бы, чтобы уважаемые разработчики посмотрели и подсказали, почему такое происходит!
Удалось смоделировать ситуацию и определить при каких условиях начинает сбоить метод класса.
На локальной машине выглядет так: 1. Пользователь зашел в 1С. 2. Пользователь ни чего не делая, просто вышел из 1С.
На цитриксе выглядит так: 1. Пользователь вошел в 1С. 2. Пользователь выполнил некоторые действия. 3. Произошло схлопывание Citrix сессии - пока не выяснено почему произошло схлопывание (при этом 1С закрылось в нормальном режиме, только мы этого не видели - однако смоделировалась ситуация как буд-то пользователь ни чего не делал).
В результате происходят следующие манипуляции в ветке реестра:
HKEY_CURRENT_USER\Software\1C\1Cv7\7.7\Options\1C++ Components & Class\Work-billing\V7\
создается подветка \Пользователь\ в которую компонента пишет параметры
EnabledCheckType ="1" EnableDebugging ="1" EnableHookEventsGroupContext ="0" EnableOptimizate ="1" EnableTableSourceTable ="0" EnableTurboBL ="0"
При моделировании нормального входа пользователя, работы пользователя с формами, где задействованы внешние компоненты, при завершении работы в ту же ветрку реестра пишутся следующие значения параметров:
EnabledCheckType ="1" EnableDebugging ="1" EnableHookEventsGroupContext ="0" EnableOptimizate ="2" EnableTableSourceTable ="1" EnableTurboBL ="1"
Т.е. как видно из сравнения, в случае, если пользователь вошел в сессию и вышел, ни чего не сделав, т.е. ни разу не задействовав объекты внешней компоненты, то в параметры записывается:
EnableTableSourceTable ="0" EnableTurboBL ="0"
после этого начинаются некоторые некорректности работы внешней компоненты.
Попытка удалить один или несколько параметров не дает результата, т.е. пока не удалишь целиком ветку Пользователь - работать нормально не станет, т.к. при последующих входах и выходах, параметры заново не прописываются и значений не меняют.
Остается только два варианта - либо заменить значения вышеуказанных параметров, либо удалить целиком ветку Пользователь, что и применили в нашем случае. Таким образом, при входе пользователя, каждый раз ветка пустая и соответсвенно, методы корректно отрабатывают всегда.
Исходя из вышеописанного, очень хочется обратиться к разработчикам и попросить проанализировать данную ситуацию с записью параметров внешней компоненты в реестр.
Возможность менять значения параметров - очень полезная весчь. Но вот подобное поведение при записи параметров, возможно не очень корректно и по аналогии могут возникнуть сложности у других коллег, использующих эту обалденную разработку!
Готов выслать исходную конфигурацию - для проверки. Но смоделировать запись данных параметров может любой. Достаточно в глобальном модуле загрузить компоненту, после входа в 1С сразу выйти ни чего не делая и посмотреть реестр. А так же можно войти в 1С и вызвать какую-нибудь обработку, использующую один из методов. Тогда все станет корректно в части записанных параметров.
|