AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 14.11.2013, 11:38   #6  
androzavr is offline
androzavr
Участник
 
4 / 10 (1) +
Регистрация: 02.02.2011
Если позволите, подниму тему.

С описанным в начале темы сообщением, когда на сервере вызывается класс с RunOn=Client и в результате получаем ошибку, вроде все понятно.
Но недавно столкнулся с интересным моментом:
имеется некий класс с RunOn=Server;
в одном из его методов вызывается метод Global::fileNameNext(), при этом класс Global имеет RunOn=Called from, а метод Global::fileNameNext() объявлен следующим образом - static client server Filename fileNameNext(Filename _filename);
однако в методе Global::fileNameNext() используется метод WinAPI::fileExists(), который в свою очередь является клиентским (RunOn=Client у класса WinAPI и модификатор client у метода fileExists()).

Для начала вопрос: как вы думаете, как будет работать такая связка при обработке файлов на сервере (пути - сетевые).

Я бы наверное сразу сказал, результатом будет ошибка "Олицетворенный на сервере (RunAs) сеанс попытался вызвать метод, который доступен только на клиенте...", но как показала практика - все работало нормально. Класс работал в пакете, проверялось наличие файлов, получались новые имена, файлы создавались/перемещались с новыми именами...
Но, тут самое интересное! Все работало до поры, до времени.
В один прекрасный момент таки появилась вышеописанная ошибка! Причем только на одном файле из нескольких сотен. Причем именно на этом файле она повторялась. Причем на всех других файлах она не проявлялась. Со временем выявился еще один такой уникальный файлик. С тех пор их только два.
Честно, говоря полез проверять места выполнения всей цепочки только после того как получил ошибку. До этого просто не обратил внимание на наличие в fileNameNext() метода WinAPI::fileExists(). И даже после этого не стал сразу исправлять, а некоторое время последил за работой класса - ошибка больше не проявлялась на новых файлах и стабильно повторялась на двух файлах, на которых появлялась и ранее.

Может кто-нибудь объяснить такое поведение Аксапты?

P.S.: Метод Global::fileNameNext() ни кем не правился - живет на sys-слое. WinAPI::fileExists() - также. Kernel version: 5.0.1500.4570, Application version: 5.0.1500.3761
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Дисплей метод таблицы который вызывается из ГРИДА 3oppo DAX: Программирование 10 23.05.2006 06:47
Не могу вызвать метод класса Red Stranger DAX: Программирование 10 12.04.2005 17:57
Метод Filter датасорса - только стринг ??? Mechanizm DAX: Программирование 2 01.06.2004 12:58
как вызвать метод "деда" ? Omeo DAX: Программирование 23 26.05.2004 16:07
Как вызвать метод на COMVariant? Andronov DAX: Программирование 2 06.08.2003 08:29

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 14:43.