|
23.05.2013, 16:20 | #1 |
Снова балуюсь косаптой :)
|
Добавление данных из одного приложения Ax в другое
Есть такая, вроде бы, стандартная задача.
Имеем два разных приложения, Ax1 и Ax2. Они физически находятся на разных серверах (но в одной сети - есть постоянное соединение), у них разные аосы, разные базы данных (База1 и База2). Но Ax1 должно время от времени обращаться к Базе2 с операциями insert-update - попросту говоря, подкладывать новые или обновлять существующие данные в табличку базы База2. В общем, задачу можно назвать "частичная синхронизация двух таблиц в двух разных приложениях Axapta". Из-за необходимости генерации новых RecId в Базе2 сделать такое средствами SQL можно, но как я понимаю, довольно сложно и требует программирования на T-SQL. Про бизнес-коннектор знаю, но при его использовании также придется писать довольно много муторного кода... Поделитесь, кто какими средствами решал похожие задачи?
__________________
Бесты и регарды! |
|
23.05.2013, 16:31 | #2 |
Axapta
|
Мы похожую проблему как-то раз решили так. В одной из баз делалась в АОТе табличка, которая де-факто на SQL-сервере являлась вьюшкой (да, при этом чуток ломалась процедура синхронизации), направленной на вторую базу (то есть, в базе1 делали таблицу-зеркало базы2, работать с ней можно как с обычной таблицей). А дальше пакетником записи из этой таблицы-вью обрабатывали и синхронизировали.
Но я не вижу особых проблем сделать и как-то иначе. Куча способов же. Как стандартных (AIF, но для простейших задач это из пушки по воробьям), так и не очень. Если это одна специальная таблица, то и recId генерировать средствами SQL не проблема. |
|
|
За это сообщение автора поблагодарили: S.Kuskov (1). |
23.05.2013, 16:48 | #3 |
Снова балуюсь косаптой :)
|
Спасибо.
Киньте плиз линк, как такую задачу быстро решить с помощью AIF? И еще - а может есть в аксапте некий класс (не-бизнес коннектор), какой-нибудь AxObject, который позволяет из кода приложения Ax1 подцепиться к приложению Ax2, и создавать обьекты и выполнять их методы уже на Ax2?
__________________
Бесты и регарды! |
|
23.05.2013, 17:04 | #4 |
NavAx
|
Мы делали так:
1. В АОТ в аксапте, куда копируем, делаем дубль таблицы, в которую нужно скопировать. 2. Через SQL копируем в эту таблицу-дубль. 3. В Axapta с помощью job из дубля копируем в нормальную таблицу. 4. Удаляем дубль. |
|
|
За это сообщение автора поблагодарили: konfet (1). |
23.05.2013, 17:19 | #5 |
Axapta
|
Цитата:
Цитата:
Та же упоминаемая мной выше вьюшка, только с дополнительными вторым и четвертым шагами. |
|
23.05.2013, 17:35 | #6 |
Участник
|
через Com-connector соединяли Ax 2009 и 2.5 (Справочники, Заказы, Журналы и Строки). За подробностями обратись к Propeller
|
|
23.05.2013, 17:59 | #7 |
Снова балуюсь косаптой :)
|
Да я уже тоже понял, что ком-коннектор для этой задачи походу наименее трудозатратный путь...
__________________
Бесты и регарды! |
|
23.05.2013, 18:02 | #8 |
Участник
|
|
|
23.05.2013, 18:18 | #9 |
NavAx
|
Не внимательно прочел описание проблемы, мой вариант использовался для одноразовой закачки.
Тут же надо по другому, или приведенные варианты, или просто читать данные из другой Аксапты через прямые запросы к SQL. palleagermark: Read data from other databases |
|
23.05.2013, 19:03 | #10 |
Снова балуюсь косаптой :)
|
Да уже начал возится с ком-коннектором.
Вопрос к гуру. С помощью ком-коннектора можно без проблем вызывать во втором приложении методы класса с простыми параметрами, типа 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 |
Axapta
|
И правильно делает, что начинает орать. Передаваемый параметр должен иметь тип 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 |
Участник
|
Вы что тут насоветовали,
COM Connector - Deprecated feature уже давно через AIF надо делать, это вовсе не сложно |
|
26.05.2013, 22:29 | #13 |
Участник
|
А почему бы не использовать ODBCConnection, через который можно настроить соединение с другим SQL-сервером и напрямую запросить любую таблицу любой базы этого сервера. А дальше уже дело техники.
|
|
26.05.2013, 22:56 | #14 |
Модератор
|
На что только не пойдешь, лишь бы с AIF не разбираться
__________________
-ТСЯ или -ТЬСЯ ? |
|
27.05.2013, 00:19 | #15 |
Banned
|
|
|
27.05.2013, 17:03 | #16 |
Снова балуюсь косаптой :)
|
Цитата:
При удовлетворении некоторых клиентов и поставщиков (плюс, возможно, другие смежные данные) в Приложении 1 некоторым условиям, они должны быть сразу же или через небольшой промежуток времени отдублированы в Приложение 2. Можете кинуть линком на step-by-step описание, как подобное быстро настроить в AIF? Времени на подробное изучение AIF, как обычно, нет.
__________________
Бесты и регарды! |
|
27.05.2013, 18:35 | #17 |
Участник
|
http://msdn.microsoft.com/EN-US/library/bb496530.aspx
клиенты и поставщики - это старнадртные документы, так что даже программировать не придется. |
|
27.05.2013, 19:37 | #18 |
Снова балуюсь косаптой :)
|
Увы, это не пошаговое руководство, а приглашение покопаться в коде таких-то классов
кроме того, у нас DAX 4.
__________________
Бесты и регарды! |
|
27.05.2013, 21:17 | #19 |
Участник
|
|
|
27.05.2013, 23:20 | #20 |
Модератор
|
Цитата:
Цитата:
Увы, это не пошаговое руководство, а приглашение покопаться в коде таких-то классов
Все, остается определиться с тем что и как будет инициировать отправку read сообщения из системы Б P.S. пишу по памяти и некоторые термины могут быть указаны неточно, уж звиняйте, но логика вроде как должна прослеживаться
__________________
-ТСЯ или -ТЬСЯ ? |
|
|
За это сообщение автора поблагодарили: konfet (1), S.Kuskov (1). |
Теги |
aif |
|
|