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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 19.06.2006, 10:40   #61  
batiskaf_new is offline
batiskaf_new
Участник
 
39 / 19 (1) ++
Регистрация: 07.06.2006
Цитата:
Сообщение от belugin
*вы не сможете создать объект без запуска конструктора
*посмотрите на erpkb "запуск и остановка".
Я этого и не хочу, мне нужно чтобы вызвался конструктор, в приведенном выше примере он (конструктор) и вызывается, но инициируется это в неявном виде... Как же объяснить?! Ну вот в джаве если напишете такое:

class MyClass
{
private MyClass()
{
DoSomeBlabla();
}
private static MyClass _this = new MyClass();
public static MyClass GetInstance()
{
return _this;
}
}

_this конечно же сам не проинициализируется, нужно попросить ClassLoader загрузить этот класс, но вот на момент загрузки произоёдет инициализация. Конечно, лучше чем пример для автоматических объектов в С++ ничего нету...

Ну ладно, давайте так. Есть ли в системе класс, виртуальный метод которого я могу перекрыть и это гарантирует мне то что мой код вызовется в момент инициализации клиентской части? Application.startUp (startupPost?!!!) для этих целей подходит?

О! Может кто знает asp, так вот там можно было в файле Global.asa написать свой Application_OnStart или Session_OnStart, и все мои подготовки проинициализируются там. Это конечно в явном виде получается, но хотя бы так.

Последний раз редактировалось batiskaf_new; 19.06.2006 в 10:45.
Старый 19.06.2006, 10:55   #62  
db is offline
db
Роман Долгополов (RDOL)
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
 
393 / 692 (24) +++++++
Регистрация: 01.04.2004
Адрес: Москва
Цитата:
Сообщение от batiskaf_new
Есть ли в системе класс, виртуальный метод которого я могу перекрыть и это гарантирует мне то что мой код вызовется в момент инициализации клиентской части? Application.startUp (startupPost?!!!) для этих целей подходит?
подходит

infolog.startup() - инициализация клиентской части сессии
application.startup() - инициализация серверной части сессии

если надо чтоб оъект жил на AOS - то application, если чтобы на клиентской машине - infolog

аналога Application_OnStart нет
За это сообщение автора поблагодарили: batiskaf_new (1).
Старый 19.06.2006, 11:16   #63  
batiskaf_new is offline
batiskaf_new
Участник
 
39 / 19 (1) ++
Регистрация: 07.06.2006
в коде infolog.startup() написано для этих целей использовать startupPost ? И еще, очень меня смущает программирование в системных классах, у меня каждый чих практически таким образом производится, с ужасом думаю как это все будет распространяться... Сложно было этим Навижн преджусмотреть какие то адаптеры, которыми нужно напичкать систему? Ну ладно, допустим.

И еще объясните мне такую вещь. Вот если я меняю какой нибудь класс из AOT\Classes то изменения можно сохранить в файле .xpo, и затем импортировать, допустим что такой вариант для меня приемлимый. А вот если я переписываю отдельные методы класса Info, класс ведь системный, class defenition его вообще не открыть, только метод startupPost. Как потом эти изменения сохранить в отдельный файл, чтобы потом импортировать в АОТ на другом компе (допустим что этот комп в другой компании, наши АОТ не связаны).

Опс! Инфо класс я не заметил в АОТ, он был не по алфавитному порядку а в конце списка, вторая часть вопроса снимается...

Последний раз редактировалось batiskaf_new; 19.06.2006 в 11:33.
Старый 19.06.2006, 11:38   #64  
db is offline
db
Роман Долгополов (RDOL)
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
 
393 / 692 (24) +++++++
Регистрация: 01.04.2004
Адрес: Москва
Цитата:
Сообщение от batiskaf_new
в коде infolog.startup() написано для этих целей использовать startupPost ? И еще, очень меня смущает программирование в системных классах, у меня каждый чих практически таким образом производится, с ужасом думаю как это все будет распространяться... Сложно было этим Навижн преджусмотреть какие то адаптеры, которыми нужно напичкать систему? Ну ладно, допустим. И еще объясните мне такую вещь. Вот если я меняю какой нибудь класс из AOT\Classes то изменения можно сохранить в файле .xpo, и затем импортировать, допустим что такой вариант для меня приемлимый. А вот если я переписываю отдельные методы класса Info, класс ведь системный, class defenition его вообще не открыть, только метод startupPost. Как потом эти изменения сохранить в отдельный файл, чтобы потом импортировать в АОТ на другом компе (допустим что этот комп в другой компании, наши АОТ не связаны).
понятно что правильнее startupPost(). Но все зависит от ситуации. startupPost() явно вызывается из startup() - если вам надо что-то сделать раньше, чем вызов этого метода - то придется написать в самом startup() или даже в new()

перекрывая методы xInfo (вот он как раз полностью системный и закрытый) вы их пишите их реализацию в классе Info - там все замечательно открывается и экспортируется, включая ClassDeclaration. глобальная переменная infolog ссылается на экземпляр Info (не xInfo - он абсрактный базовый). Ядро же для своих нужд использует интерфейс от xInfo

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

Последний раз редактировалось db; 19.06.2006 в 11:43.
Старый 19.06.2006, 11:57   #65  
batiskaf_new is offline
batiskaf_new
Участник
 
39 / 19 (1) ++
Регистрация: 07.06.2006
Цитата:
Сообщение от db
И еще
будьте осторожнее с вставкой своего кода в методы стартапа - при определенных ошибках в этом коде (у меня был случай с ошибкой вызывавшей трассровку стека) то можно полностью загробить приложение - вы в него просто не зайдете. Бояться не надо, но тестрировать стоит потщательнее, чем "обычный" код
Ценные замечания, только что подумал что если я не проверю null reference или еще чего то аксапта просто не откроется. И что, нет никакой возможности поднять последнюю рабочую конфигурацию?

Пока что решил весь этот код оборачивать в обработчике исключений.
Старый 19.06.2006, 12:10   #66  
db is offline
db
Роман Долгополов (RDOL)
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
 
393 / 692 (24) +++++++
Регистрация: 01.04.2004
Адрес: Москва
Цитата:
Сообщение от batiskaf_new
Ценные замечания, только что подумал что если я не проверю null reference или еще чего то аксапта просто не откроется. И что, нет никакой возможности поднять последнюю рабочую конфигурацию?

Пока что решил весь этот код оборачивать в обработчике исключений.
никакого волшебного ключика командной строки или другого штатного способа откатить изменения нет (ну или я про него не знаю). самое простое и надежное - перед началом коряченья этих классов сделать копию всего приложения или хотя бы aod файла с вашим рабочим слоем
если сломается скопировать все взад (если копировали только aod, то перед запуском приложения грохнуть все индексные файлы (delindex.bat))
Старый 19.06.2006, 12:17   #67  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
или добавить SysStartupCmd тогда ваш код будет вызываться только с ключиком
Старый 19.06.2006, 20:11   #68  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от batiskaf_new
Всем привет, давно не виделись.
У меня большая просьба - открывайте новые ветки для новой темы.
И указывайте нормальное название.
Пожалуйста.
__________________
полезное на axForum, github, vk, coub.
Старый 20.06.2006, 11:49   #69  
batiskaf_new is offline
batiskaf_new
Участник
 
39 / 19 (1) ++
Регистрация: 07.06.2006
Цитата:
Сообщение от mazzy
У меня большая просьба - открывайте новые ветки для новой темы.
И указывайте нормальное название.
Пожалуйста.
Я наоборот думал сосредоточить весь этот изврат в одной теме, думаю мало кому такое пригодится. Ну как скажете...
Теги
crm2011

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
AX UK: Advanced Demand Management for AX 2009 workshops Blog bot DAX Blogs 0 28.03.2009 01:05
AX UK: Update on Advanced Demand Management for AX 2009 Blog bot DAX Blogs 0 26.03.2009 17:05
Solutions Monkey: WSS Setup for EP - Basic or Advanced Mode ? Blog bot DAX Blogs 0 23.08.2007 05:32
axaptabuilder: How to learn Axapta programming: “MorphXIT: an introduction to Axapta and the MorphX Development Suit” Blog bot DAX Blogs 0 28.10.2006 16:47
Advanced programming: Grid data and view manipulations batiskaf_new DAX: Программирование 15 21.06.2006 11:44

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

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

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