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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 25.12.2006, 17:46   #1  
Volodymyr is offline
Volodymyr
Участник
 
36 / 21 (1) +++
Регистрация: 03.11.2006
Адрес: Киев
Извне SysImportElements
Привет!
Столкнулся с проблемой, ищу решения, может есть люди, которые знают обходные пути.

Необходимо: Запустить аксапту и импортировать элементы. Запустить с помощью вебсервиса.

Что пробовал:
1) В вебсервисе(С#) создать класс Axapta( .NET Buisness connector). Вызвать код с помощью .NET Buisness connector, который использует класс SysImportElement.
Результат: не работает, ошибка кернела. Может запускать класс SysImportElement только если запушен клиент. (.NET Buisness connector - это не клиент)
2)В вебсервисе(С#) создать класс Axapta( .NET Buisness connector). Вызвать код с помощью .NET Buisness connector.В этом коде вызывать метод shellExecute(). Этот метод запускает Аксапту(клиент) + методы вызывающие SysImportElement.
Результат: не рабоате, так как нельзя запустить процесс на машине из под другого пользователя так, чтобы он имел окно.Т.е. получается, что нет окна, нет SysImportElement.
3)Делаю Batch класс, который запускает код используеющий SysImportElement, и есть надежда, что так сработает.
4) Есть какие-то идеи ???

Спасибо.
Если нет предложений, но есть вопросы по тому что уже сделал спрашивайте отвечу.
Старый 26.12.2006, 09:37   #2  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2480 (88) +++++++++
Регистрация: 20.08.2005
Была мысль сделать на основе SysImportElement новый класс и выкинуть из него все лишнее, но уперся в то, что вызов xInfo.startImport() из бизнесс коннектора (3.0) возвращает не идентификатор импорта, а this для класса.

Может быть в .Net исправили?
__________________
Axapta v.3.0 sp5 kr2
Старый 26.12.2006, 13:07   #3  
Volodymyr is offline
Volodymyr
Участник
 
36 / 21 (1) +++
Регистрация: 03.11.2006
Адрес: Киев
Привет AndyD.
Была тоже такая мысль.Выкинул все лишнее из класса SysImportElements, но наткнулся на ту же ошибку. Использовал .NET connector.
При создании класса SysImportElements выподает такая ошибка

Error executing code: Imagelist object not initialized.

Stack trace
Classes\ImageList\smallIconWidth
.....

Эту проблему и пытаюсь обойти каким-то образом...
Старый 26.12.2006, 13:45   #4  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2480 (88) +++++++++
Регистрация: 20.08.2005
Уберите из new() вашего класса такие вызовы -
imageListAppl_* = new new ImageListAppl_*

PS
Цитата:
Была тоже такая мысль.Выкинул все лишнее из класса SysImportElements, но наткнулся на ту же ошибку.
О! За что же вы его так? Сдалайте свой класс (дубль из SysImportElements) и изменяйте его.
__________________
Axapta v.3.0 sp5 kr2

Последний раз редактировалось AndyD; 26.12.2006 в 13:52.
Старый 26.12.2006, 14:42   #5  
Volodymyr is offline
Volodymyr
Участник
 
36 / 21 (1) +++
Регистрация: 03.11.2006
Адрес: Киев
SysImportElements жив здоров, я неправильно выразил мысль!

Так тоже пробовал(выкинуть все что относится к визуализации), пишет следующую ошибку, когда вызываем метод infolog.startImport()

Error executing code: Wrong argument types in variable assignment.

Какой либо аналогии с неправильными типами передаваемых параметров я не нашел, т.е. ошибка не из-за типов.
Это я могу объяснить тем, что попробовал из Аксапты вызывать тотже метод(а не из .NET connectora), под Debugger-ом прошелся и убедился, что параметры те же и все работает.

Это связано с тем, что SysImportElements, работает только когда запущен клиент локально. Так написан кернел.
Я пытаюсь запустить батч джобу, чтобы она запускала импорт на АОСе, причем джоба будет клиетом. Есть надежда, что заработает.
Но пока не могу сделать.
Может есть другие способы обойти эту проблему?

AndyD
Старый 26.12.2006, 14:48   #6  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2480 (88) +++++++++
Регистрация: 20.08.2005
Это как раз таки то, о чем я говорил. Присвойте возвращаемое значение не переменной типа int, а anytype - и увидите, что оно имеет тип xInfo (или Info), т.е. возвращается сам класс, а не идентификатор импорта
Жаль, что в .net это не исправили
__________________
Axapta v.3.0 sp5 kr2
Старый 27.12.2006, 14:24   #7  
Volodymyr is offline
Volodymyr
Участник
 
36 / 21 (1) +++
Регистрация: 03.11.2006
Адрес: Киев
Решение есть.
Если вам нужно использовать SysImportElements в каком то методе, который вызывается из .NET Buisness connectora.
Сделайте так:
1) Создайте батч класс (наследник RunBaseBatch)
2) В методе Run напишите ваш код.
3) Зарегистрируйте ваш батч-класс так чтобы он выполнялся 1 раз и запустите его(чтобы он появился в таблице Batch) (Как регистировать нужно разобратся)
4) Запустите батч-сервер на машине к которой будет обращатся .NET Buisness connector
5) С помощью .NET Buisness connectora вызывайте метод который будет менят статус джобы в таблице Batch с Ended на Waiting.
6) Батч-сервер будет отрабатывать джобу
Удачи
Старый 27.12.2006, 14:26   #8  
Volodymyr is offline
Volodymyr
Участник
 
36 / 21 (1) +++
Регистрация: 03.11.2006
Адрес: Киев
Забыл - спасибо Марине
 


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

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

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