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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 22.07.2015, 19:39   #3  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,312 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от Arahnid Посмотреть сообщение
Цель - у меня есть библиотека с кучей функций.
Одна из функций на вход получает период накладных и должна вернуть списком номер и даты накладных за период.

Читаю документацию
https://msdn.microsoft.com/en-US/lib...(v=ax.50).aspx

Возникли вопросы (писала в коде)
X++:
static void importOle(Args _args)
{
    DLL dllOle = new DLL("dLLOLE.dll");//определяем название dll - она должна лежать в Bin клиента
    //1. если клиент стоит на клиентских машинах, то необходимо его туда копировать?
    //2. можно ли написать полный путь на сервер к библиотеке?

    DLLFunction   dllFunction = new DLLFunction(dllOle,"FunctionName");
    ;
    dllFunction.returns(ExtTypes::DWord);//3. Это типы возвращаемых значений?
    dllFunction.arg(ExtTypes::DWord);//4. Это определение типов переменных на вход в функцию?
    dllFunction.call('Value'); //5. Это передача значений переменных в функцию и результата запроса?
    //6. каким образом получить данные, если возвращается много строк? Например, номера накладных и их дат за период
    //7. каким образом получить две переменные, возвращаемые функцией? 
}
Отвечаю по пунктам:
1. Если Вы сами кладете dll в Bin клиента - то да, надо копировать. Есть семейство классов SysFileDeployment - они как раз занимаются тем, что копируют с сервера на клиент dll-ку при старте АХ. Т.е. dll-ка изначально кладется на сервер (кажется в Bin сервера), а каждый клиент при старте себе ее забирает и кладет в Bin клиента. Единственное - какие тут могут быть грабли - это "защита" Windows, начиная с Vista от копирования в Program Files. Тут нужно тестировать права.
2. Помню, что в старых версиях как-то не получилось с ходу прописать путь, вышли в результате на классы SysFileDeployment и решили, что именно этот вариант реализуем в АХ (т.е. когда dll-ка лежит в строго обозначенном каталоге). Если кто-то знает решение - то будет здорово.
3,4. Да
5. Да, но тут еще может использоваться тип COMVariant и соответственно - может потребоваться преобразование типов
6,7. Нужно смотреть - что за тип возвращает dll-ка. Базовые типы везде одинаковы (и то с той же датой или дробным числом могут быть заморочки). А вот если dll-ка умеет возвращать много строк - значит она возвращает некий объект. В этом случае - надо думать, как этот объект можно передать в АХ. Как вариант - массив Array. Но в идеале - если dll-ка связана с .NET - то попробовать использовать .net-овские типы / объекты. Например, в АХ 2012 своеобразным паттерном (шаблоном) является использование класса-контракта. Т.е. функция возвращает объект (класс), который АХ "распознает", как класс. И у этого класса количество parm-методов соответствует требуемому количеству возвращаемых Вам значений
__________________
Возможно сделать все. Вопрос времени
Теги
dll, dllfunction

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Ax3 and Win2008 для печати Arahnid DAX: Администрирование 13 22.04.2013 17:07
MSDAX 4.0 и планировщик win server 2008 werov2010 DAX: Администрирование 11 16.08.2012 14:18
Установка Ax2009 на локалку loka DAX: Администрирование 23 29.07.2009 12:34
при вызове функции из своей DLL, вылетает ошибка Delfins DAX: Программирование 9 07.03.2006 19:29
работа с wininet.dll Lucky13 DAX: Программирование 8 01.12.2004 15:03

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

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

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