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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 04.06.2003, 11:43   #1  
Fedor is offline
Fedor
Участник
 
13 / 11 (1) +
Регистрация: 28.01.2003
? COM: Axapta.CallJob
Хочу запускать Job в аксапте в автоматическом режиме и гасить ее после отработки Job'а.

Написал Job - в аксапте все отлично работает. Когда обращаюсь к аксапте через COM и запускаю этот Job - происходит ошибка, вылетает трассировка стека - типа TreeNode object не инициализирован.

Думал это метод CallJob такой кривой - нет ведь, доработал класс - добавил статический метод для запуска того-же самого и вызываю его при помощи метода CallStaticClassMethod. Вызывается все нормально, но дальше опять падает.

Вот отрывок из метода, в котором происходит падение:

void ProcessJobs()
{
TreeNode treeNode, nodeInLayer, tmpNode, methodNode;
int i;
;
treeNode = infolog.rootNode();
treeNode = treeNode.AOTfindChild("Jobs"); // <-- Падение происходит здесь!!!


Может кто сталкивался с подобной ерундой?


ЗЫ: То, что Box::Info не работает - в принципе логично, т.к. пользовательского интерфейса в случае с COM'ом нет (хотя даже в этом случае можно через Win API сообщениями кидаться .
Старый 04.06.2003, 16:26   #2  
Fedor is offline
Fedor
Участник
 
13 / 11 (1) +
Регистрация: 28.01.2003
Thumbs down Ндааа.....
Который раз задаю вопрос на форуме - и тишина....


Выходит, что все проблемы, которые обсуждаются на форуме я могу решить и сам, а вот когда реальная проблема - помощи от форума ноль.

Жаль, очень жаль.
Старый 04.06.2003, 16:45   #3  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
Хм... видимо, никто такие задачи не делал.. но ответ очевиден
при работе через COM infolog не возвращает rootNode..
ищите другой метод для получения rootNode
Старый 05.06.2003, 00:57   #4  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Re: Ндааа.....
Цитата:
Изначально опубликовано Fedor
Который раз задаю вопрос на форуме - и тишина....
Выходит, что все проблемы, которые обсуждаются на форуме я могу решить и сам, а вот когда реальная проблема - помощи от форума ноль.
Fedor, не огорчайтесь.
С одной стороны, это говорит о вашей квалификации.

С другой стороны здесь не обязаны отвечать на вопросы. http://www.axforum.info/forums/showt...stid=13070#2_2

Тем более на сложные.
Реальные проблемы эффективнее решать на договороной основе.
У вас будут хоть какие то гарантии и рычаги воздействия.

Советую также обратить внимание на пункты 2.3 и 2.4.
Старый 05.06.2003, 09:14   #5  
Fedor is offline
Fedor
Участник
 
13 / 11 (1) +
Регистрация: 28.01.2003
Я уж было подумал, что кто-то ответит по существу :-)
Сергей, спасибо за напоминание, но я не предъявлял претензий ни к форуму ни к его обитателям.
Просто мысли в слух, извините, что не очень приятные.


2 Wamr: Спасибо за идею, я получил rootNode другим способом -
xInfo xInfo = new xInfo();
;
treeNode = xInfo.rootNode();
treeNode = treeNode.AOTfindChild("Jobs");

и это помогло. Но дальше возникла опять неразрешимая проблема:

while (treeNode)
{
for (i = 0; i <= 0xF; i++)
{
if (bitTest(treeNode.applObjectLayerMask(), 1 << i))
{
nodeInLayer = treeNode.getNodeInLayer(i);

вот в этом куске при обращении к Аксапта через COM, конструкция treeNode.getNodeInLayer(i) возвращает пустое значение, хотя при запуске данного кода в самой аксапте (с GUI) все отлично работает.


И такие ловушки на каждом шагу. При запуске Аксапта через COM почему-то перестают работать многие методы общеупотребимых классов.
к примеру Box::Info("Bla-Bla-Bla") выдаст ту же самую трассировку стека с сообщением о том, что объект не инициализирован.

вот такие пироги....
может аксапта какая кривая - 2.5 SP5 HF1
Старый 05.06.2003, 14:57   #6  
LTA is offline
LTA
Участник
 
94 / 10 (1) +
Регистрация: 27.01.2003
Привет

Мне так кажется нужно смотреть как Аксапта заходит в систему, если учесть что при запуске Аксапты инициализируются глобальные Объекты Аксапты может быть из-этого. Ты можешь напечатать твой код с COM Connectoroм. Кстати есть возможность трассировать вызовы COM Connectora внутри Аксапты может быть тебе это поможет. Извини что ничего конкретного. Просто я не сталкивался с такой задачей.
Старый 05.06.2003, 15:36   #7  
Fedor is offline
Fedor
Участник
 
13 / 11 (1) +
Регистрация: 28.01.2003
Код.
Пожалуйста :-)
Вот:

procedure TForm1.Button1Click(Sender: TObject);
Var Axapta : Taxapta2;
begin

Axapta := TAxapta2.Create(NIL);
Axapta.Logon2('','','cor','ru','','','WORK_DIRECT');
Axapta.CallJob(WideString('CORI01_FillCASnapshot_Job'));
Axapta.Logoff();

end;


А каким образом можно "трассировать вызовы COM Connectora внутри Аксапты "?

Спасибо,
Федор.
Старый 09.06.2003, 18:10   #8  
LTA is offline
LTA
Участник
 
94 / 10 (1) +
Регистрация: 27.01.2003
Извини что долго не отвечал

Трассировка COM конектора, запускаешь Axapta Configuration на закладке Bissnes Connector есть галочка трассировать X++.

Я бы смотрел инициализирован ли объект Session. Извини что не помог не сталкивался
Старый 09.06.2003, 18:27   #9  
Fedor is offline
Fedor
Участник
 
13 / 11 (1) +
Регистрация: 28.01.2003
:( Не выходит :-(
Спасибо за ответ, но вот в чем загвоздка - когда я открываю конфигурационную утилиту своей аксапты я не вижу закладки "Bissnes Connector " (только "COM Connector", но на ней нет описанной галочки).
Старый 09.06.2003, 18:29   #10  
Fedor is offline
Fedor
Участник
 
13 / 11 (1) +
Регистрация: 28.01.2003
К прошлому сообщению почему-то не прикрепилась иллюстрация :-/
Изображения
 
Старый 09.06.2003, 18:30   #11  
LTA is offline
LTA
Участник
 
94 / 10 (1) +
Регистрация: 27.01.2003
У меня Аксапта 3.0 а у тебя какая ?
Старый 10.06.2003, 11:34   #12  
LTA is offline
LTA
Участник
 
94 / 10 (1) +
Регистрация: 27.01.2003
Привет,

Трассировка работает только в Аксапте 3.0.

Я сделал примерчик по твоему образу и подобию почти, так как работаю в 3.0

static void Job2(Args _args)
{
int i;
Test t;
TreeNode treeNode;
TreeNodeIterator treeNodeIterator;
xInfo xInfo = new xInfo();
;


treeNode = TreeNode::rootNode();
treeNode = treeNode.AOTfindChild( "Jobs" );
treeNodeIterator = treeNode.AOTiterator();
treeNode = treeNodeIterator.next();
while (treeNode)
{
t.Name = treeNode.treeNodeName();
t.insert();
treeNode = treeNodeIterator.next();

}
}


Public Sub TEST()
Dim Axapta As Object
Set Axapta = CreateObject("AxaptaCOMConnector.Axapta")
Axapta.Logon
Axapta.CallJob "Job2"
End Sub

Посмотрел потом таблицу TEST , Job ее заполняет, значит все работает
Старый 11.06.2003, 13:38   #13  
Fedor is offline
Fedor
Участник
 
13 / 11 (1) +
Регистрация: 28.01.2003
->
Привет,
Спасибо!

Насчет версии аксапты - да, засада. У меня 2.5, кстати, я в предыдущих сообщениях указывал.

Насчет кода - тоже указывал, не работает код следующего вида:

while (treeNode)
{
for (i = 0; i <= 0xF; i++)
{
if (bitTest(treeNode.applObjectLayerMask(), 1 << i))
{
nodeInLayer = treeNode.getNodeInLayer(i); // <- Возвращает пустое значение.

Твой код у меня тоже работает :-)

Федор.
Старый 22.01.2007, 14:23   #14  
Volodymyr is offline
Volodymyr
Участник
 
36 / 21 (1) +++
Регистрация: 03.11.2006
Адрес: Киев
Привет, тоже была проблема, я вызывал функцию infolog.startImport(), которая не отрабатывала. У меня Аксапта 4.0. Для того чтобы нормально работал infolog нужен запущенный клиент Аксапты. Чтобы всетаки использовать infolog.startImport() я сделал Батч-сервер(клиент Аксапты) и написал батч джобу которая запускает инфолог.
обсуждения на форуме:
Извне SysImportElements
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Чудо с Axapta Com Connector RVS DAX: Администрирование 9 20.11.2008 07:05
C# and AX Development: Using the COM Business Connector in C#, the easy way (AX/Axapta) Blog bot DAX Blogs 0 15.12.2007 20:35
Axapta COM коннектор Neosy DAX: Администрирование 3 17.09.2002 16:41
Введение в Аксапту Роман Кошелев DAX: Прочие вопросы 0 18.12.2001 14:00
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

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