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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 21.11.2003, 12:34   #1  
z_av is offline
z_av
Участник
 
24 / 10 (1) +
Регистрация: 14.03.2003
Адрес: Москва
? COM Connector - как вызвать функцию?
Подскажите способ вызова функции Axapta (не метода)
с помощью COM-Connector

Исходные требования к задаче таковы:
1 требуется выполнить заданный набор действий над стандартными объектами axapta, т.е. собственные классы - не использовать и Jobs - также не использовать
2 в коде X++ требуется объявлять переменные
3 требуется передавать внешние аргументы различных типов

Проблемы:
пробовал ExecuteStmt - не работает, не переваривает создание переменных (или подскажите, как их правильно объявлять в строке для ExecuteStmt?)
Старый 21.11.2003, 13:18   #2  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Читайте Руководство разработчика Axapta. А именно AxDvgCOMUs.chm::/COMbasic/COMbasic_Introduction.htm

ИМХО, задача поставлена неверно.
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Старый 21.11.2003, 15:14   #3  
z_av is offline
z_av
Участник
 
24 / 10 (1) +
Регистрация: 14.03.2003
Адрес: Москва
Ответ, мне кажется, не совсем в тему.

Переформулирую свой вопрос, есть некоторый алгоритм - код на JScript,
он подключается к Axapta и должен по ходу вызвать функцию Axapta.
То есть метод вызвать можно, а функцию - нельзя ?
В чем "некорректность" задачи?

Понятно, что функция не относится к объекту и все такое прочее,
но - выход то какой ?
Старый 21.11.2003, 17:21   #4  
metal is offline
metal
Юзовские
Дети Юза
 
92 / 10 (1) +
Регистрация: 06.08.2002
Адрес: Украина
Что есть функция аксапты?
Старый 21.11.2003, 20:38   #5  
z_av is offline
z_av
Участник
 
24 / 10 (1) +
Регистрация: 14.03.2003
Адрес: Москва
функция аксапты в данном контексте - это одна из функций
в узле AOT System documentation \ Functions

понятно, что внутри они как-то отличаются от статических методов классов,
но ведь с точки зрения интерфейса - абсолютно такие же!
отсюда и возникает вопрос - как их можно вызвать через интерфейсы Com Connector и если нельзя то почему?
Старый 24.11.2003, 08:48   #6  
Ruff is offline
Ruff
Дмитрий Ерин
Аватар для Ruff
1C
 
475 / 396 (14) ++++++
Регистрация: 18.09.2003
Адрес: Тула
Первое, что приходит в голову - обернуть системную функцию в метод класса. Например,
PHP код:
int str2timeWrap(str _text)
{
    return 
str2time(_text);

Или что-то этому мешает?
Старый 24.11.2003, 12:14   #7  
metal is offline
metal
Юзовские
Дети Юза
 
92 / 10 (1) +
Регистрация: 06.08.2002
Адрес: Украина
Согласен с Ruff. Обернуть функцию в статический метод класса. См. класс Global.
Старый 24.11.2003, 14:28   #8  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Re: COM Connector - как вызвать функцию?
Цитата:
Изначально опубликовано z_av
Ответ, мне кажется, не совсем в тему.
В руководстве разработчика написано, что ExecuteStmt выполняет Statement X++. Читаем руководство разработчика далее: Statement - это по сути операторы (в том числе составные). Объявлять переменные в блоках составных операторов X++ не позволяет, отсюда и Ваши проблемы.

Зато к Statement относится оператор runbuf. То есть, легко можно выполнить следующую конструкцию:
PHP код:
Cmd "void Test() { InventTable a; select firstonly a; /* делаем что угодно */ }"
Ax.ExecuteStmt "runbuf(\" + Cmd +\")" 
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Старый 24.11.2003, 14:31   #9  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Цитата:
Изначально опубликовано z_av
В чем "некорректность" задачи?
Какой результат надо достичь?
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Старый 26.11.2003, 20:36   #10  
z_av is offline
z_av
Участник
 
24 / 10 (1) +
Регистрация: 14.03.2003
Адрес: Москва
2 Maxim: то что Вы написали - это объявление функции, меня интересует,
как я могу ее вызвать, причем желательно - с аргументами?

а в оригинале интересовало вот что: как можно
запустить через ComConnector следующий код ?

PHP код:
StdAxObject obj;
  ;
changecompany (c) {
  return 
obj.getSomeValue(x) + sin(x);

при том что :
1) c и x - внешние параметры
2) StdAxObject - некоторый стандартный класс в стандартном приложении

2All: см пункт 1 исходных требований
Старый 26.11.2003, 20:45   #11  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Если дословно, то так.

PHP код:
Cmd _
"void Func(DataAreaId c, int x) \n" _
"{                             \n" _
"    StdAxObject obj;           \n" _
";                              \n" _
"    changecompany (c) { \n" _
"        return obj.getSomeValue(x) + sin(x); \n" _
"    } \n" _
"}"
Ax.ExecuteStmt "runbuf(\"" Cmd +"\", 'DAT', 1)" 
Только вот значения возвращаемые так забрать не получится.

А вот чтобы забирать значения, надо сделать так:
PHP код:
Common.CreateRecord("Common")
Cmd _
"void Func(DataAreaId c, int x, Common ret) \n" _
"{                             \n" _
"    StdAxObject obj;           \n" _
";                              \n" _
"    changecompany (c) { \n" _
"        ret.RecId=obj.getSomeValue(x) + sin(x); \n" _
"    } \n" _
"}"
Common.ExecuteStmt "runbuf(\"" Cmd "\", 'DAT', 1, %1)" 
Разумеется, работает только для целых чисел. Результат в Common.RecId.
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Kurt Hatlevik: Sneak preview of the WMS E&E Blog bot DAX Blogs 0 20.11.2008 01:10
msdynamicsax: VB script that test the com connector for Dynamics Ax 4.0 Blog bot DAX Blogs 0 25.08.2008 18:05
Передача агументов в функцию com объекта doo DAX: Программирование 34 30.01.2007 13:14
Как с вэб страницы вызвать функцию из аксапты? Dronas DAX: Программирование 16 28.02.2005 18:23
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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