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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 09.05.2013, 18:00   #1  
_scorp_ is offline
_scorp_
Участник
Аватар для _scorp_
MCBMSS
 
488 / 369 (13) ++++++
Регистрация: 25.07.2007
Адрес: Москва
Цитата:
Сообщение от ShkipeRR Посмотреть сообщение
Тогда я правильно понимаю что эти способы в аксапте не получатся?
Я не представляю как эти способы реализовать.
Старый 10.05.2013, 14:16   #2  
ShkipeRR is offline
ShkipeRR
Участник
 
41 / 7 (1) +
Регистрация: 08.05.2013
Адрес: Владимир
Цитата:
Сообщение от _scorp_ Посмотреть сообщение
Я не представляю как эти способы реализовать.
Спасибо!!! А на будущее чтобы мне знать из этих способов что нито аксапта 3.0 поддерживает и где можно это посмотреть или почитать про эти 3 способа?
__________________
Axapta 3.0 SP6 Build 1951
Старый 10.05.2013, 23:45   #3  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5803 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от ShkipeRR Посмотреть сообщение
Из компании сканкод мне предложили получать данные из компоненты в Аксапту такими способами как колбек, эвент и сообщение окну.
Цитата:
Сообщение от ShkipeRR Посмотреть сообщение
из этих способов что нито аксапта 3.0 поддерживает и где можно это посмотреть или почитать про эти 3 способа?
Аксапта написана для работы под управлением виндов, поэтому если ее научить, то она сможет делать (для 3.0 - почти) все, что могут делать другие виндовые приложения, другой вопрос, насколько это будет трудоемко. С вариантом callback-функции могут возникнуть определенные сложности, потому что там необходимо, чтобы эта функция была скомпилирована с учетом определенных соглашений о вызовах (т.н. __stdcall). Под event'ом разработчики из Сканкода, видимо, понимают дергание обработчиков событий ActiveX-объектов, Аксапта это поддерживает, но нужно, чтобы сперва соотв. ActiveX-компонент кто-то написал. В этом смысле, наверно, вариант с обработкой оконных сообщений выглядит наиболее простым с точки зрения реализации на Х++. Пример реализации цикла обработки оконных сообщений можно посмотреть в \Classes\TableLookup_RU\waitAndSearch (по идее этот класс должен быть в 3.0, но сейчас проверить у меня нет возможности). Вкратце, в Windows есть окна, окна принимают сообщения, для которых организуется очередь, и есть callback-функции - обработчики оконных сообщений, в т.ч. обработчики по умолчанию, выполняющие большую часть рутинных операций; обработчики оконных сообщений также называют оконными функциями (Window Proc). Сообщение окну может быть помещено в очередь (для асинхронной обработки) либо может быть отправлено (для синхронной обработки с использованием прямого вызова оконной функции). Окна и оконные функции могут использоваться не только для отрисовки и реализации собственно окон (включая меню, кнопки и проч.), но и для сценариев интеграции, как в рассматриваемом случае. Обычно приложение организует цикл обработки оконных сообщений, который представляет собой нечто вроде:
PHP код:
while (GetMessage(&msgNULL00)) 
{
    
TranslateMessage(&msg);
    
DispatchMessage(&msg);

Тут за кадром остаются вызовы оконных функций, зарегистрированных для каждого соотв. класса окна. Опять же, поскольку оконные функции - это callback-функции, то реализация их в Аксапте на Х++ сопряжена с определенными трудностями (см. про __stdcall), но в примере с TableLookup_RU разработчики несколько упростили себе жизнь и вместо создания своей callback-функции встроили логику в цикл обработки сообщений, пожертвовав асинхронностью. Возможно, имеет смысл пойти примерно по тому же пути. Остается маленький нюанс - собственно создание окна, чья очередь сообщений задействуется в интеграции. Для этого используются функции CreateWindow/CreateWindowEx; перед созданием окна нужно зарегистрировать соотв. класс окна либо использовать один из предопределенных системных классов, таких как "BUTTON" или "EDIT". Конкретный класс окна влияет на его внешний вид и функциональные возможности, но поскольку тут окно нужно лишь для доступа к инфраструктуре обмена (оконными) сообщениями, конкретный класс не особо важен.
В общем, как мне представляется, с помощью оконных сообщений можно пусть не очень красиво и с использованием кучи оберток для функций Win32 API, но реализовать интеграцию на голом Х++, без написания дополнительных прослоек. Опять же, веселуха начнется в случае, когда на один хост с этой CipherLabTCPIP.dll начнут одновременно приходить данные от нескольких ТСД - это все надо будет разруливать внутри одной сессии Business Connector, крутящей цикл обработки оконных сообщений.
На счет доступа по http и тривиальности реализации в этом случае - утверждение, как мне кажется, не вполне однозначное Вместо одной сессии с легкой реализацией хранения состояния и непростой реализацией разруливания параллельного доступа с нескольких ТСД получится, условно, куча stateless-сессий http с легким разруливанием параллельного доступа с нескольких ТСД, но с непростой реализацией хранения состояния каждой сессий. Плюс из http-сервера все равно надо будет дергать Business Connector. Впрочем, кому что удобнее.
Старый 11.05.2013, 15:13   #5  
ShkipeRR is offline
ShkipeRR
Участник
 
41 / 7 (1) +
Регистрация: 08.05.2013
Адрес: Владимир
Цитата:
Сообщение от Player1 Посмотреть сообщение
Ага, это мой вопрос сканкоду. Они хотятотдельную программу написать под аксапту и спрашивают какие методы лучше поддерживает аксапта 3.0, т.к. в для ИС Аксапта компания сканкод не разрабатывала отдельные приложения. Для 1С у них много примеров а для подключения Wi-Fi терминала для Аксапта у них нет примеров.
__________________
Axapta 3.0 SP6 Build 1951
Старый 11.05.2013, 15:16   #6  
ShkipeRR is offline
ShkipeRR
Участник
 
41 / 7 (1) +
Регистрация: 08.05.2013
Адрес: Владимир
Цитата:
Сообщение от gl00mie Посмотреть сообщение
Аксапта написана для работы под управлением виндов, поэтому если ее научить, то она сможет делать (для 3.0 - почти) все, что могут делать другие виндовые приложения, другой вопрос, насколько это будет трудоемко. С вариантом callback-функции могут возникнуть определенные сложности, потому что там необходимо, чтобы эта функция была скомпилирована с учетом определенных соглашений о вызовах (т.н. __stdcall). Под event'ом разработчики из Сканкода, видимо, понимают дергание обработчиков событий ActiveX-объектов, Аксапта это поддерживает, но нужно, чтобы сперва соотв. ActiveX-компонент кто-то написал. В этом смысле, наверно, вариант с обработкой оконных сообщений выглядит наиболее простым с точки зрения реализации на Х++. Пример реализации цикла обработки оконных сообщений можно посмотреть в \Classes\TableLookup_RU\waitAndSearch (по идее этот класс должен быть в 3.0, но сейчас проверить у меня нет возможности). Вкратце, в Windows есть окна, окна принимают сообщения, для которых организуется очередь, и есть callback-функции - обработчики оконных сообщений, в т.ч. обработчики по умолчанию, выполняющие большую часть рутинных операций; обработчики оконных сообщений также называют оконными функциями (Window Proc). Сообщение окну может быть помещено в очередь (для асинхронной обработки) либо может быть отправлено (для синхронной обработки с использованием прямого вызова оконной функции). Окна и оконные функции могут использоваться не только для отрисовки и реализации собственно окон (включая меню, кнопки и проч.), но и для сценариев интеграции, как в рассматриваемом случае. Обычно приложение организует цикл обработки оконных сообщений, который представляет собой нечто вроде:[php]while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
Тогда я правильно понимаю будет легче организовывать в Аксапте по таким способам как: Сообщение окну или Колбэк? из этих вариантов рассматривать лучше.
__________________
Axapta 3.0 SP6 Build 1951
Теги
cipherlab, wifi, тсд, ax3.0

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
axaptacorner: Dynamics Axapta History Blog bot DAX Blogs 0 15.06.2012 17:11
Связь между системой Axapta и базой данных разорвалась zemlyn DAX: Администрирование 1 25.12.2009 09:33
dynamicsaxtraining: Axapta Training Introduction Blog bot DAX Blogs 0 12.11.2009 17:05
Axapta и Ин. языки SIRS DAX: Администрирование 4 01.03.2006 10:02
Введение в Аксапту Роман Кошелев DAX: Прочие вопросы 0 18.12.2001 14:00

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

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

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