![]() |
#1 |
Участник
|
Извне 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) Есть какие-то идеи ??? Спасибо. Если нет предложений, но есть вопросы по тому что уже сделал спрашивайте отвечу. |
|
![]() |
#2 |
Участник
|
Была мысль сделать на основе SysImportElement новый класс и выкинуть из него все лишнее, но уперся в то, что вызов xInfo.startImport() из бизнесс коннектора (3.0) возвращает не идентификатор импорта, а this для класса.
Может быть в .Net исправили?
__________________
Axapta v.3.0 sp5 kr2 |
|
![]() |
#3 |
Участник
|
Привет AndyD.
Была тоже такая мысль.Выкинул все лишнее из класса SysImportElements, но наткнулся на ту же ошибку. Использовал .NET connector. При создании класса SysImportElements выподает такая ошибка Error executing code: Imagelist object not initialized. Stack trace Classes\ImageList\smallIconWidth ..... Эту проблему и пытаюсь обойти каким-то образом... |
|
![]() |
#4 |
Участник
|
Уберите из new() вашего класса такие вызовы -
imageListAppl_* = new new ImageListAppl_* PS Цитата:
Была тоже такая мысль.Выкинул все лишнее из класса SysImportElements, но наткнулся на ту же ошибку.
__________________
Axapta v.3.0 sp5 kr2 Последний раз редактировалось AndyD; 26.12.2006 в 13:52. |
|
![]() |
#5 |
Участник
|
SysImportElements жив здоров, я неправильно выразил мысль!
![]() Так тоже пробовал(выкинуть все что относится к визуализации), пишет следующую ошибку, когда вызываем метод infolog.startImport() Error executing code: Wrong argument types in variable assignment. Какой либо аналогии с неправильными типами передаваемых параметров я не нашел, т.е. ошибка не из-за типов. Это я могу объяснить тем, что попробовал из Аксапты вызывать тотже метод(а не из .NET connectora), под Debugger-ом прошелся и убедился, что параметры те же и все работает. Это связано с тем, что SysImportElements, работает только когда запущен клиент локально. Так написан кернел. Я пытаюсь запустить батч джобу, чтобы она запускала импорт на АОСе, причем джоба будет клиетом. Есть надежда, что заработает. Но пока не могу сделать. Может есть другие способы обойти эту проблему? AndyD ![]() |
|
![]() |
#6 |
Участник
|
Это как раз таки то, о чем я говорил. Присвойте возвращаемое значение не переменной типа int, а anytype - и увидите, что оно имеет тип xInfo (или Info), т.е. возвращается сам класс, а не идентификатор импорта
![]() Жаль, что в .net это не исправили
__________________
Axapta v.3.0 sp5 kr2 |
|
![]() |
#7 |
Участник
|
Решение есть.
Если вам нужно использовать SysImportElements в каком то методе, который вызывается из .NET Buisness connectora. Сделайте так: 1) Создайте батч класс (наследник RunBaseBatch) 2) В методе Run напишите ваш код. 3) Зарегистрируйте ваш батч-класс так чтобы он выполнялся 1 раз и запустите его(чтобы он появился в таблице Batch) (Как регистировать нужно разобратся) 4) Запустите батч-сервер на машине к которой будет обращатся .NET Buisness connector 5) С помощью .NET Buisness connectora вызывайте метод который будет менят статус джобы в таблице Batch с Ended на Waiting. 6) Батч-сервер будет отрабатывать джобу Удачи |
|
![]() |
#8 |
Участник
|
Забыл - спасибо Марине
![]() |
|