| 
	 | 
| 
			
			 | 
		#1 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
			
			
			Вставка записи и новый RecID
			 
			
			если я делаю экспорт из своей системы в Аксапту и мне необходимо вставить RecId, то можно ли сделать просто максимальное+1 или есть какие -то процедуры?
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 Гость 
		
			
	 | 
	
	|
| 
	
 | 
| 
			
			 | 
		#3 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			У Вас версия какая? Если 2012, то есть хранимая процедура sp_GetNextRecId
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Спасибо! получается моя вставка max(RecId)+1 может вызвать конфликт при стандартной вставке записи аксаптой, т.е. возможно эта процедура из таблицы SYSTEMSEQUENCES получит в следующий раз значение равное моему добавленному макс+1 и начнет ругаться?
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			желательно не вставлять данные напрямую из других систем в таблицы аксапты, которые активно используются системой. используйте для этого специально созданные для этого таблицы, recid в них не будет иметь особого значения
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#7 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Также можно использовать.NET Business Connector, тогда Аксапта при вставке будет генерировать RecId и другие значения системных полей стандартными механизмами.. 
		
		
		
		
		
		
		
		
			Пример кода для вставки записи можно найти по следующей ссылке Последний раз редактировалось Cardagant; 12.05.2015 в 21:18.  | 
| 
	
 | 
| 
			
			 | 
		#8 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от Cardagant
			 
 
			Также можно использовать.NET Business Connector, тогда Аксапта при вставке будет генерировать RecId и другие значения системных полей стандартными механизмами.. 
		
	Пример кода для вставки записи можно найти по следующей ссылке  | 
| 
	
 | 
| 
			
			 | 
		#9 | 
| 
			
			 Гость 
		
			
	 | 
	
	|
| 
	
 | 
| 
			
			 | 
		#10 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Вы указали, что делаете вставку из некоторой своей системы и я предположил, что эта система оперирует собственным языком программирования. Код, использующий Business Connector, должен быть написан на языке этой системы. 
		
		
		
		
		
		
		
	Расскажите пожалуйста подробнее откуда делается вставка. Также присоединяюсь к вопросу axm2013 .  | 
| 
	
 | 
| 
			
			 | 
		#11 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Добрый день! 
		
		
		
		
		
		
		
		
			Так попробуйте: X++: declare @my_new_recid bigint
exec sp_GetNextRecId @tableid = 104532, @recid = @my_new_recid output
select @my_new_recidПоследний раз редактировалось Товарищ ♂uatr; 14.05.2015 в 09:48.  | 
| 
	
 | 
| 
			
			 | 
		#12 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			ПОМОГИТЕ как вернуть в коде x++ аксапты результат sp_GetNextRecId ?? 
		
		
		
		
		
		
		
	exstr = strFmt(" exec sp_GetNextRecId 104532 "); resultSet = wrkADODBConnection.executeQuery(exstr); ругается на неверное число аргументов или неверный тип аргументов. Задача из SQLбазы другой системы(которая велась раньше) в коде аксапты вытащить данные (что получилось) и вставить в таблицу аксы, где RECID необходимо генерить поправильному. max(RECID)+1 может пересечься при добавлении через Аксу новой записи руками. проверено.  | 
| 
	
 | 
| 
			
			 | 
		#13 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			А в чём проблема прямо в Аксе (куда вставляете данные) наполнять табличный буфер извлечёнными из другой системы данными и производить вставку? При этом Recid будет генериться при вставке.
		 
		
		
		
		
		
		
		
		
			Последний раз редактировалось Cardagant; 14.05.2015 в 10:13.  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: Морковка (1). | |
| 
			
			 | 
		#14 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
Спасибо! Аксапта сама всё делает. Но опыт с вызовом GetRecID мне тоже пригодится.  | 
| 
	
 | 
| 
			
			 | 
		#15 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
exstr = strFmt("declare @my_new_recid as bigint exec sp_GetNextRecId @tableid = 104532, @recid = @my_new_recid output "); resultSet = wrkADODBConnection.execute(exstr); RecIdNew = resultSet.getInt(1); getInt не поддерживается...  | 
| 
	
 | 
| 
			
			 | 
		#16 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
X++: strSelect       = @"declare @my_new_recid bigint
exec sp_GetNextRecId @tableid = 104532, @recid = @my_new_recid output
select @my_new_recid";X++: resultset.getInt64(1); Последний раз редактировалось Товарищ ♂uatr; 14.05.2015 в 09:52.  | 
| 
	
 | 
| 
			
			 | 
		#17 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			к сожалению Метод "getInt64" не поддерживается интерфейсом Automation COM-объекта класса "_Recordset".
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#18 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			сага о X,Y и Z 
		
		
		
		
		
		
		
	http://www.gunsmoker.ru/2008/10/x-y-z.html  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: Товарищ ♂uatr (0). | |
| 
			
			 | 
		#19 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от lvan
			 
 
			сага о X,Y и Z 
		
	http://www.gunsmoker.ru/2008/10/x-y-z.html P.S. Теперь все работает, спокойно пошла варить борщ (как Вы, Ivan, рекомендовали) Последний раз редактировалось Морковка; 14.05.2015 в 11:44.  | 
| 
	
 |