|
![]() |
#1 |
Участник
|
Чудес не бывает
![]() PS. Я так понимаю, речь о приложении AX 2009? Потому что в 2012 соотв. метод уже "различает", на клиенте он выполняется или на сервере. |
|
|
За это сообщение автора поблагодарили: androzavr (1). |
![]() |
#2 |
Участник
|
Ура! Вера в несуществование чудес получила очередное подтверждение...
Не дошел я до трассировки. Пока выбирал файлы для тестирования, наконец заметил отличие в тех, что вызывали ошибку и тех, что не вызывали ошибку - ошибочные файлы уже существовали в папке назначения, а нормальные все были новые. Соответственно сразу возникла мысль, что может все-таки fileNameNext() не всегда вызывается. Полез шерстить код и таки нашел чуть раньше вызов WinApiServer::fileExists(). Косяк - детский! Стыдно даже в нем признаваться, но дабы ни у кого не возникло вдруг веры в чудеса решил стерпеть и признаться... Все дело в невероятнейшем стечении обстоятельств! ![]() ![]() Итак, извиняюсь за преждевременно поднятую панику и, если позволите, пока свежо, пару вопросов не совсем по теме (не знаю как здесь обозначить "оффтоп"): 1) gl00mie, можете пояснить о какой трассировке и главное "TraceParcer'е" Вы говорили? Это термины из Ax2012? Или речь все-таки о Профайлере кода в Ax2009? Ведь я правильно понял, что это точно не трассировка SQL и не трассировка, которая включается галочками на вкладке "Разработка" в параметрах пользователя? 2) Если не сложно можете выслать мне код метода fileNameNext() с Ax2012, который различает на каком уровне он выполняется. Просто интересно посмотреть как Они это сделали, потому что у самого было несколько разных идей, но остановился пока на самом простом варианте (добавил в свой класс похожий метод)). Думаю не нарушит сильно авторских прав и лицензионных соглашений... Ответить можно в личку. Тему засорять больше не посмею... |
|
![]() |
#3 |
Участник
|
Возник еще один вопрос, касательно ошибки "Олицетворенный на сервере (RunAs) сеанс попытался вызвать метод, который доступен только на клиенте". Пока игрался с классами, вызывающими ошибку, заметил, что она не перехватывается try-catch'ем. Вместо сообщения "Произошла такая-то ошибка..." выполнение прерывается в месте вызова клиентского класса и вываливает инфолог.
Можно-ли с этим что-то поделать? Я понимаю, конечно, что такого просто-напросто нельзя допускать. И отправлять в рабочую среду код, пусть и обрабатывающий такого рода ошибки нельзя, просто хочется понять почему она не перехватывается. Такое поведение сделано специально, чтоб горе-программисты не пытались писать кривой код? Или ошибку обработать все-таки можно? |
|