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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 23.05.2013, 16:20   #1  
konfet is offline
konfet
Снова балуюсь косаптой :)
 
143 / 50 (2) ++++
Регистрация: 23.04.2003
Адрес: Moscow
Добавление данных из одного приложения Ax в другое
Есть такая, вроде бы, стандартная задача.
Имеем два разных приложения, Ax1 и Ax2. Они физически находятся на разных серверах (но в одной сети - есть постоянное соединение), у них разные аосы, разные базы данных (База1 и База2). Но Ax1 должно время от времени обращаться к Базе2 с операциями insert-update - попросту говоря, подкладывать новые или обновлять существующие данные в табличку базы База2.
В общем, задачу можно назвать "частичная синхронизация двух таблиц в двух разных приложениях Axapta".
Из-за необходимости генерации новых RecId в Базе2 сделать такое средствами SQL можно, но как я понимаю, довольно сложно и требует программирования на T-SQL.
Про бизнес-коннектор знаю, но при его использовании также придется писать довольно много муторного кода...
Поделитесь, кто какими средствами решал похожие задачи?
__________________
Бесты и регарды!
Старый 23.05.2013, 16:31   #2  
oip is offline
oip
Axapta
Лучший по профессии 2014
 
2,564 / 1416 (53) ++++++++
Регистрация: 28.11.2005
Записей в блоге: 1
Мы похожую проблему как-то раз решили так. В одной из баз делалась в АОТе табличка, которая де-факто на SQL-сервере являлась вьюшкой (да, при этом чуток ломалась процедура синхронизации), направленной на вторую базу (то есть, в базе1 делали таблицу-зеркало базы2, работать с ней можно как с обычной таблицей). А дальше пакетником записи из этой таблицы-вью обрабатывали и синхронизировали.

Но я не вижу особых проблем сделать и как-то иначе. Куча способов же. Как стандартных (AIF, но для простейших задач это из пушки по воробьям), так и не очень. Если это одна специальная таблица, то и recId генерировать средствами SQL не проблема.
За это сообщение автора поблагодарили: S.Kuskov (1).
Старый 23.05.2013, 16:48   #3  
konfet is offline
konfet
Снова балуюсь косаптой :)
 
143 / 50 (2) ++++
Регистрация: 23.04.2003
Адрес: Moscow
Спасибо.
Киньте плиз линк, как такую задачу быстро решить с помощью AIF?
И еще - а может есть в аксапте некий класс (не-бизнес коннектор), какой-нибудь AxObject, который позволяет из кода приложения Ax1 подцепиться к приложению Ax2, и создавать обьекты и выполнять их методы уже на Ax2?
__________________
Бесты и регарды!
Старый 23.05.2013, 17:04   #4  
raz is offline
raz
NavAx
Аватар для raz
NavAx Club
Лучший по профессии 2014
Лучший по профессии 2009
 
1,494 / 1065 (38) ++++++++
Регистрация: 22.07.2003
Адрес: МО
Мы делали так:
1. В АОТ в аксапте, куда копируем, делаем дубль таблицы, в которую нужно скопировать.
2. Через SQL копируем в эту таблицу-дубль.
3. В Axapta с помощью job из дубля копируем в нормальную таблицу.
4. Удаляем дубль.
За это сообщение автора поблагодарили: konfet (1).
Старый 23.05.2013, 17:19   #5  
oip is offline
oip
Axapta
Лучший по профессии 2014
 
2,564 / 1416 (53) ++++++++
Регистрация: 28.11.2005
Записей в блоге: 1
Цитата:
Сообщение от konfet Посмотреть сообщение
Спасибо.
Киньте плиз линк, как такую задачу быстро решить с помощью AIF?
Быстро через AIF, если с ним никогда не работали, не получится.

Цитата:
Сообщение от konfet Посмотреть сообщение
И еще - а может есть в аксапте некий класс (не-бизнес коннектор), какой-нибудь AxObject, который позволяет из кода приложения Ax1 подцепиться к приложению Ax2, и создавать обьекты и выполнять их методы уже на Ax2?


Цитата:
Сообщение от raz Посмотреть сообщение
1. В АОТ в аксапте, куда копируем, делаем дубль таблицы, в которую нужно скопировать.
2. Через SQL копируем в эту таблицу-дубль.
3. В Axapta с помощью job из дубля копируем в нормальную таблицу.
4. Удаляем дубль.
Та же упоминаемая мной выше вьюшка, только с дополнительными вторым и четвертым шагами.
Старый 23.05.2013, 17:35   #6  
Flomik is offline
Flomik
Участник
 
150 / 52 (2) ++++
Регистрация: 28.09.2007
Адрес: Москва
через Com-connector соединяли Ax 2009 и 2.5 (Справочники, Заказы, Журналы и Строки). За подробностями обратись к Propeller
Старый 23.05.2013, 17:59   #7  
konfet is offline
konfet
Снова балуюсь косаптой :)
 
143 / 50 (2) ++++
Регистрация: 23.04.2003
Адрес: Moscow
Да я уже тоже понял, что ком-коннектор для этой задачи походу наименее трудозатратный путь...
__________________
Бесты и регарды!
Старый 23.05.2013, 18:02   #8  
Flomik is offline
Flomik
Участник
 
150 / 52 (2) ++++
Регистрация: 28.09.2007
Адрес: Москва
Цитата:
Сообщение от konfet Посмотреть сообщение
Да я уже тоже понял, что ком-коннектор для этой задачи походу наименее трудозатратный путь...
Наименее трудозатратный и правильный. Один раз все прописать, зато потом проблем знать не будете.
Старый 23.05.2013, 18:18   #9  
raz is offline
raz
NavAx
Аватар для raz
NavAx Club
Лучший по профессии 2014
Лучший по профессии 2009
 
1,494 / 1065 (38) ++++++++
Регистрация: 22.07.2003
Адрес: МО
Не внимательно прочел описание проблемы, мой вариант использовался для одноразовой закачки.

Тут же надо по другому, или приведенные варианты, или просто читать данные из другой Аксапты через прямые запросы к SQL. palleagermark: Read data from other databases
Старый 23.05.2013, 19:03   #10  
konfet is offline
konfet
Снова балуюсь косаптой :)
 
143 / 50 (2) ++++
Регистрация: 23.04.2003
Адрес: Moscow
Да уже начал возится с ком-коннектором.
Вопрос к гуру.
С помощью ком-коннектора можно без проблем вызывать во втором приложении методы класса с простыми параметрами, типа str или int.

X++:
    COM       Axapta;
    COM       axaptaClass;
    COMVariant s;
    ;
 
    Axapta = new COM("AxaptaCOMConnector.Axapta3");
    Axapta.logon('');
    axaptaClass = Axapta.CreateObject("Class1");
    s = axaptaClass.call('Method1', '01'); 
    info (s.bStr());
Тут все замечательно работает.
А вот как передать в метод Method2 класса Class1 второго приложения переменную типа common или хотя бы контейнер? Или может быть object? Method2 у нас, скажем, такой:

X++:
str 10 method2(custtable _ct)
Когда пытаюсь вызвать

X++:
    COM       Axapta;
    COM       axaptaClass;
    COMVariant s;
    custTable ct;
    ;

    Axapta = new COM("AxaptaCOMConnector.Axapta3");
    Axapta.logon('');
    axaptaClass = Axapta.CreateObject("Class1");
    s = axaptaClass.call('method2', ct); 
    info (s.bStr());
- то начинает орать про недопустимый тип данных.
__________________
Бесты и регарды!
Старый 23.05.2013, 22:26   #11  
oip is offline
oip
Axapta
Лучший по профессии 2014
 
2,564 / 1416 (53) ++++++++
Регистрация: 28.11.2005
Записей в блоге: 1
И правильно делает, что начинает орать. Передаваемый параметр должен иметь тип Variant. Не получится так.
http://msdn.microsoft.com/en-us/libr...(v=ax.50).aspx
http://msdn.microsoft.com/en-us/library/cc237865.aspx

Ну и вот еще полезная ссылка, подобное же обсудалось.
Объект, как параметр COM-метода
Старый 24.05.2013, 10:11   #12  
lvan is offline
lvan
Участник
Аватар для lvan
Лучший по профессии 2014
 
858 / 82 (4) ++++
Регистрация: 15.04.2011
Записей в блоге: 1
Вы что тут насоветовали,
COM Connector - Deprecated feature уже давно
через AIF надо делать, это вовсе не сложно
Старый 26.05.2013, 22:29   #13  
ПётрДмит is offline
ПётрДмит
Участник
 
2 / 10 (1) +
Регистрация: 21.02.2013
А почему бы не использовать ODBCConnection, через который можно настроить соединение с другим SQL-сервером и напрямую запросить любую таблицу любой базы этого сервера. А дальше уже дело техники.
Старый 26.05.2013, 22:56   #14  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Сообщение от ПётрДмит Посмотреть сообщение
А почему бы не использовать ODBCConnection, через который можно настроить соединение с другим SQL-сервером и напрямую запросить любую таблицу любой базы этого сервера. А дальше уже дело техники.
На что только не пойдешь, лишь бы с AIF не разбираться
__________________
-ТСЯ или -ТЬСЯ ?
Старый 27.05.2013, 00:19   #15  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Цитата:
Сообщение от Vadik Посмотреть сообщение
На что только не пойдешь, лишь бы с AIF не разбираться
AIF с большим трудом умеет обновлять данные. Кроме того, мы так и не услышали, что именно за данные собирается передавать автор.
Старый 27.05.2013, 17:03   #16  
konfet is offline
konfet
Снова балуюсь косаптой :)
 
143 / 50 (2) ++++
Регистрация: 23.04.2003
Адрес: Moscow
Цитата:
Сообщение от EVGL Посмотреть сообщение
AIF с большим трудом умеет обновлять данные. Кроме того, мы так и не услышали, что именно за данные собирается передавать автор.
Очень просто.
При удовлетворении некоторых клиентов и поставщиков (плюс, возможно, другие смежные данные) в Приложении 1 некоторым условиям, они должны быть сразу же или через небольшой промежуток времени отдублированы в Приложение 2.
Можете кинуть линком на step-by-step описание, как подобное быстро настроить в AIF? Времени на подробное изучение AIF, как обычно, нет.
__________________
Бесты и регарды!
Старый 27.05.2013, 18:35   #17  
lvan is offline
lvan
Участник
Аватар для lvan
Лучший по профессии 2014
 
858 / 82 (4) ++++
Регистрация: 15.04.2011
Записей в блоге: 1
http://msdn.microsoft.com/EN-US/library/bb496530.aspx

клиенты и поставщики - это старнадртные документы, так что даже программировать не придется.
Старый 27.05.2013, 19:37   #18  
konfet is offline
konfet
Снова балуюсь косаптой :)
 
143 / 50 (2) ++++
Регистрация: 23.04.2003
Адрес: Moscow
Увы, это не пошаговое руководство, а приглашение покопаться в коде таких-то классов
кроме того, у нас DAX 4.
__________________
Бесты и регарды!
Старый 27.05.2013, 21:17   #19  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от konfet Посмотреть сообщение
кроме того, у нас DAX 4.
В MSDN на многих страницах есть выпадающий список Other Versions. Правда, стандартные документы AIF для клиентов/поставщиков появились, похоже, с АХ 2009.
Старый 27.05.2013, 21:47   #20  
lvan is offline
lvan
Участник
Аватар для lvan
Лучший по профессии 2014
 
858 / 82 (4) ++++
Регистрация: 15.04.2011
Записей в блоге: 1
там есть все, и даже табличка с документами и версией ах, в которой они появились
и пошаговые инструкции тоже есть
вам просто лень искать, видимо, мне тоже лень за вас искать
Теги
aif

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
ax-erp: Creating SSRS-Reports in Dynamics AX 2012 – What’s no longer possible in AX-reports Blog bot DAX Blogs 0 18.07.2012 12:11
axinthefield: Compatibility Testing for Microsoft Dynamics AX Blog bot DAX Blogs 0 23.06.2012 02:26
AX.NET: интеграция .NET-приложений с Аксаптой и (будущие) возможности облачных вычислений gl00mie DAX: Программирование 2 23.04.2010 00:47
Запуск отчета в Dynamics AX 3.0 SP5 из внешнего приложения polygris DAX: Программирование 4 01.12.2008 12:40
Arijit Basu: Reporting & BI in AX: An Overview [Level 100] Blog bot DAX Blogs 0 07.01.2008 16:01
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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