| 
			
			 | 
		#1 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
			
			
			Как связать 2 Аксапты
			 
			
			Есть 2 Аксапты (4.0) необходимо из одной данные передавать в другую. 
		
		
		
		
		
		
		
	Какие есть варианты? Если вариант BC - как из аксапты вызвать статик метод с параметрами. Не получается.  | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
			
			
			Как связать
			 
			
			Если совсем просто, то сделать буферную базку и из одной Ax писать в нее прямыми запросами, а из другой забирать тоже прямыми запросами по признаку "прочитано" = 0. При этом устанавливать этот признак в 1.  
		
		
		
		
		
		
		
	   Забирать можно в пакетном режиме.
		 | 
| 
	
 | 
| 
			
			 | 
		#3 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Tutorial морской бой (в формах).
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Няма в 4-ке
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 Аманд 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Базы разнесены? 
		
		
		
		
		
		
			
		
		
		
		
	Цель объединить данные или просто передать пул заказов, проводки?  | 
| 
	
 | 
| 
			
			 | 
		#6 | 
| 
			
			 Banned 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Обновить до AX2012 R3 и настроить Master Data Management.
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: Ivanhoe (1). | |
| 
			
			 | 
		#7 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			В BI входит такая утилита, как SSIS можно с ее помощью читать данные из одной базы и вставлять в другую
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#8 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Задача синхронизировать справочники. Примерно 10 таблиц, по много полей в каждой. Хорошо бы редактировать online. 
		
		
		
		
		
		
		
		
			Вариант перейти на 2013 - не подходит. Надо с 4.0 на 4.0 Вариант с буферной базой (таблицами в одной из них) - рассматривается. Хотелось бы только избежать жуткого парсинга по полям. А вариант через бизнес-коннектор передать запись? Никто не использовал такую связку Аксапта-Аксапта? Последний раз редактировалось Эдик; 19.12.2014 в 14:53.  | 
| 
	
 | 
| 
			
			 | 
		#9 | 
| 
			
			 Участник 
		
			
	 | 
	
	|
| 
	
 | 
| 
			
			 | 
		#10 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Ничто не мешает даже писать напрямую в базу смежной системы (если доступна конечно) запросом SQL. 
		
		
		
		
		
		
		
	Но вы думаете о технологиях, а технологии здесь вторичны. Подумайте сначала о методике сквозного кодирования номенклатур, о необходимой скорости репликации, что вы будете делать с дублями и ошибками, кто главный в этом процессе, что делать если тут я завел а потом там удалил и тд.  | 
| 
	
 | 
| 
			
			 | 
		#11 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
  Я для этого написал свою "обертку".Если без "обертки" в "чистом виде", то будет примерно так (как ни странно, но это все было в справке разработчика Ax2.5   )X++: str m_sProgID; str m_sProgIDParmList; Com axCom; Com axComParmList; // COM объект для списка параметров ComVariant comRetVal; m_sProgID = "AxaptaCOMConnector.Axapta2"; m_sProgIDParmList = "AxaptaCOMConnector.AxaptaParameterList"; axCom = new COM(m_sProgID); // COM interface initialization axComParmList = new COM(m_sProgIDParmList); // COM interface initialization /* UserId _userId, // Логин пользователя. При Windows-аутентификации - не обязателен Str 20 _password, // Пароль пользователя. При Windows-аутентификации - не обязателен DataAreaId _dataAreaId, // компания при подключении LanguageId _languageId = "ru", // язык при подключении Str 20 _serverManager = "", // Имя серверного менеджера, к которому предполагается подкючиться Str 20 _objectServer = "", // Имя AOS, к которому предполагается подключиться Str 1000 _configuration = "" // Имя конфигурации на компьютере или путь доступа к файлу конфигурации */ axCom.Logon2(_userId, _password, _dataAreaId, _languageId, _serverManager, _objectServer, _configuration); if ( ) { // Значения параметров надо преобразовывать из EDT к базовым типам! axComParmList.size(2); axComParmList.element(1,any2str('Текст')) axComParmList.element(2,any2int(123)) // Вызов статического метода MyClassName::MyStaticMethodName() // Передав в качестве параметра список значений comRetVal = axCom.CallStaticClassMethodEx("MyClassName","MyStaticMethodName",axComParmList); } else { // Вызов статического метода MyClassName::MyStaticMethodName() без передачи параметров comRetVal = axCom.CallStaticClassMethod("MyClassName","MyStaticMethodName"); } // Разбор полученного значения // AxaptaCOMConnector возвращает значения ВСЕГДА в виде объекта COMVariant // поэтому, необходимо дополнительное преобразование полученного значения /* switch (comRetVal.variantType()) { case COMVariantType::VT_BOOL : return comRetVal.boolean(); // boolean case COMVariantType::VT_BSTR : return comRetVal.bStr(); // str case COMVariantType::VT_UI1 : return comRetVal.byte(); // int case COMVariantType::VT_I1 : return comRetVal.char(); // int case COMVariantType::VT_CY : return comRetVal.currency(); // real case COMVariantType::VT_DATE : return comRetVal.date(); // date case COMVariantType::VT_DECIMAL : return comRetVal.decimal(); // real case COMVariantType::VT_R8 : return comRetVal.double(); // real case COMVariantType::VT_R4 : return comRetVal.float(); // real case COMVariantType::VT_DISPATCH : // return comRetVal.iDispatch(); // дескриптор COM-интерфейса. Число. case COMVariantType::VT_I4 : // int return comRetVal.int(); // return comRetVal.long(); // теоретически, это должно быть VT_I8, но такого значения нет, поэтому VT_I4 читается как int() case COMVariantType::VT_UNKNOWN : //return comRetVal.iUnknown(); // дескриптор COM-интерфейса. Число. return COM::createFromVariant(comRetVal); // Преобразую в ссылку на объект case COMVariantType::VT_ERROR : return comRetVal.sCode(); // int case COMVariantType::VT_I2 : return comRetVal.short(); // int case COMVariantType::VT_UI4 : return comRetVal.uInt(); // int //return comRetVal.uLong(); // теоретически, это должно быть VT_UI8, но такого значения нет, поэтому VT_I4 читается как int() case COMVariantType::VT_UI2 : return comRetVal.uShort(); // int case COMVariantType::VT_VARIANT : return comRetVal.variant(); // COMVariant case COMVariantType::VT_SAFEARRAY : return comRetVal.safeArray(); // array default : throw error(strFmt("Неизвестны правила обработки типа %1", comRetVal.variantType())); } */ Вам остается только адптировать это "добро" под COM Business Connector. Насколько я вижу, принципиально, схема работы с COM Business Connector не изменилась. Так что, особых сложностей быть не должно. Ну, может синтаксис местами будет чуть другой 
				__________________ 
		
		
		
		
	- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря...  | 
| 
	
 | 
| 
			
			 | 
		#12 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			в смысле, нету в 4-ке такой формы. Виноват.  
		
		
		
		
		
		
		
	 
		 | 
| 
	
 | 
| 
			
			 | 
		#13 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			По старинке: linked server + triggers.
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#14 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Эдик, периодический экспорт/импорт?
		 
		
		
		
		
		
		
			
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#15 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			А почему бы не посмотреть в сторону AIF??? )))))
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#16 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Вам нужно решить техническую проблему или методологическую? 
		
		
		
		
		
		
		
	
 Цитата: 
	
		
			Если вариант BC - как из аксапты вызвать статик метод с параметрами. Не получается.
		
	 
  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: Kabardian (2). | |
| 
			
			 | 
		#17 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Всем привет. 
		
		
		
		
		
		
		
	Из одной АХ через .net BC вызываем статический метод в другой АХ. результат хотим получить в первой АХ из объекта, который возвращает .net BC  | 
| 
	
 | 
| 
			
			 | 
		#18 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Вы же понимаете, что вернётся не AX объект, а Net. И то что с коннектором вы работаете из под аксапты на это никак не повлияет. Это тоже самое как если бы вы обращались во вторую аксапту из Visual Studio. Я даже советую вам сначала оттестировать весь код по работе с net BC на C# (там отладчик получше, видны конкретные типы и т.д.), а уже потом переносить его в аксапту.
		 
		
		
		
		
		
		
		
	 | 
| 
	
 |