| 
			
			 | 
		#1 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
			
			 
			
			Кто знает, подскажите, при подключении к Аксапте через СОМ создаем следующие обьекты, например: 
		
		
		
		
		
		
		
	Axapta, AxaptaQuery, AxaptaDataSource, AxaptaRange, AxaptaQueryRun, AxaptaTableBuffer. Каково время жизни обьектов? Например, "Axapta" нужен на протяжении всего сеанса (Logon, Logoff). "AxaptaQuery" и "AxaptaDataSource" уже труднее, нужно ли создавать новые при обращении к другой таблице или достаточно переопределить первые? Что происходит с переопределенными? Просто остаются в памяти до конца сеанса? Как можно их освободить? (=nil ?) И еще вопрос, как найти запись в базе? (Метод "Find" в "RecordSortedList" если кто использовал поделитесь). Пример кода на Delphi: procedure TForm1.FormCreate(Sender: TObject); begin Axapta := CreateCOMObject(StringToGUID('AxaptaCOMConnector.Axapta')) as IAxapta ; Axapta.Logon('Admin'); AxaptaQuery := Axapta.CreateObject('Query'); AxaptaDataSource := AxaptaQuery.Call('AddDataSource', CustTable); // 77 AxaptaRange := AxaptaDataSource.Call('AddRange', CustTable_Name); // 2 AxaptaRange.Call('Value', '*'); AxaptaQueryRun := Axapta.CreateObject( 'QueryRun', AxaptaQuery); While (AxaptaQueryRun.Call('Next')) do begin AxaptaTableBuffer := AxaptaQueryRun.Call('GetNo', 1); StrList.Add(AxaptaTableBuffer.field['AccountNum']); end; end; procedure TForm1.Button1Click(Sender: TObject); begin AxaptaDataSource := AxaptaQuery.Call('AddDataSource', VendTable); // 505 AxaptaRange := AxaptaDataSource.Call('AddRange', VendTable_Name); // 2 AxaptaRange.Call('Value', '*'); AxaptaQueryRun := Axapta.CreateObject( 'QueryRun', AxaptaQuery); While (AxaptaQueryRun.Call('Next')) do begin AxaptaTableBuffer := AxaptaQueryRun.Call('GetNo', 1); StrList.Add(AxaptaTableBuffer.field['AccountNum']); end; end;  | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Привет ты случайно импорт через коннектор не добил... в Delphi 
		
		
		
		
		
		
		
	Можешь поделиться тайными знаниями ?  | 
| 
	
 | 
| 
			
			 | 
		#3 | 
| 
			
			 Moderator 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Хм.... насколько я помню COM, там сделано так.  Вместо того,  чтобы напрямую захватывать  и удалять компонент мы сообщаем ему, что нам нужен некий интерфейс, а также, что мы закончили с этим интерфейсом  работать.  При этом компонент сам отслеживает, работает ли кто-нибудь с ним или нет, путем "подсчета ссылок". 
		
		
		
		
		
		
		
	Посмотри - у IUnknown есть для этого две функции-члена AddRef и Release. Это я так, общую концепцию описал. Если интересуют детали, рекомендую Роджерсона "Основы COM"/  | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			;-(
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Поделитесь информацией.... может у кого есть простейший пример?
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#6 | 
| 
			
			 Moderator 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Простейший пример есть в Руководстве разработчика.  В разделе Axapta Business Connector.  Там на VB, но передалеть на Дельфи труда не составит.
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#7 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Я в таких случаях  стараюсь минимизировать количество объектов Аксапты, используемых в моих программах и поступаю так: 
		
		
		
		
		
		
		
	1. Весь код, который что-то делает в Аксапте, пишу внутри Аксапты 2. В Аксапте создаю класс и статический метод в классе, через который программа, написанная на другом языке будет вызывать аксаптовский код из первого пункта. 3. Вызываю этот статический метод из программы, написанной на другом языке, через AxaptaCOMConnector.Axapta2 :: CallStaticClassMethodEx() 4. Если мне в моей программе нужны данные из Аксапты, то я напрямую через ADO беру эти данные из базы Аксапты. То есть основные два момента такие: 1) Если нужно что-то изменить в базе данных Аксапты, то я пишу код в самой Аксапте и вызываю этот код из своей программы через COM-connector и метод CallStaticClassMethodEx(). 2) Если нужно что-то прочитать из базы данных Аксапты, то я напрямую соединяюсь к этой базе через ADO.  | 
| 
	
 | 
| 
			
			 | 
		#8 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Для velk - вот пример на VB 
		
		
		
		
		
		
		
	PHP код: 
	
			
	 | 
| 
	
 | 
| 
			
			 | 
		#9 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Изначально опубликовано Ace of Database  
Я в таких случаях стараюсь минимизировать количество объектов Аксапты, используемых в моих программах и поступаю так: 2) Если нужно что-то прочитать из базы данных Аксапты, то я напрямую соединяюсь к этой базе через ADO.  | 
| 
	
 | 
| 
			
			 | 
		#10 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Странно конечно но нигде не нашел инфу по login2 
		
		
		
		
		
		
		
	может кто скажет какие параметры и что означают  | 
| 
	
 | 
| 
			
			 | 
		#11 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			руководство разработчика 
		
		
		
		
		
		
		
	Axapta Business Connector \ Basics \ Reference Documentation \ IAxapta2 \ IAxapta2::Logon2  | 
| 
	
 | 
| 
			
			 | 
		#12 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Может кто поделится руководствами разработчика..... 
		
		
		
		
		
		
		
	ОЧЕНЬ НУЖНО... СПАСИБО  | 
| 
	
 | 
| 
			
			 | 
		#13 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			бог ты мой! 
		
		
		
		
		
		
		
	в дистрибутиве. или в каталоге bin. или возьмите здесь http://technet.navision.com/usered/A...02.00-ENUS.zip  | 
| 
	
 | 
| 
			
			 | 
		#14 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
			
			
			есть ли работающий пример на Delphi?
			 
			
			есть ли работающий пример на Delphi?
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#15 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
			
			 
			
			Получается этот пример работает только для двухзвенки? 
		
		
		
		
		
		
		
	А для трехзвенки как использовать? Помогите пожалуйста!!!!!  | 
| 
	
 | 
| 
			
			 | 
		#16 | 
| 
			
			 сибиряк 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Изначально опубликовано velk  
Получается этот пример работает только для двухзвенки? 
				__________________ 
		
		
		
		
	С уважением, Вячеслав.  | 
| 
	
 | 
| 
			
			 | 
		#17 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
			
			 
			
			Тогда подскажите какие настройки должны быть в Navision Axapta Configuration Utility 
		
		
		
		
		
		
		
	если конечно это там что то надо донастраивать.... может Logon необходимо дополнить какимито параметрами??? У меня для двухзвенки все работает прекрасно... как только перевожу на трехзвенку то возникает ошибка на строке ax.Logon2 "Admin", "", "", , , , ""  | 
| 
	
 | 
| 
			
			 | 
		#18 | 
| 
			
			 сибиряк 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Изначально опубликовано velk  
на строке ax.Logon2 "Admin", "", "", , , , "" Application("webAxapta").Logon "webuser", "" , "", "" 
				__________________ 
		
		
		
		
	С уважением, Вячеслав.  | 
| 
	
 | 
| 
			
			 | 
		#19 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Вот мой код 
		
		
		
			Set Axapta = CreateObject("AxaptaCOMConnector.Axapta") на этой строке возникает ошибка - Неопознаная ошибка Axapta.Logon "adminl", "adminpassword", "", "" Axapta.Logoff  | 
| 
	
 | 
| 
			
			 | 
		#20 | 
| 
			
			 сибиряк 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Изначально опубликовано velk  
"adminpassword"  
		
				__________________ 
		
		
		
		
	С уважением, Вячеслав.  | 
| 
	
 |