23.06.2011, 19:43 | #1 |
Участник
|
Формирование RecId при вставке в таблицу AX из SQL Server
Создается таблица в AX, вставка в которую будет происходить только сторонними средствами (скорее всего DTS). Планируется изменение одного поля (Status) в созданных записях непосредственно из AX.
Разумеется, сразу озаботился необходимостью формирования RecId. Эта тема уже поднималась 8 лет назад, но у предложенного решения было существенное ограничение: требовалось передавать параметры во внешнюю программу. Три года назад был предложен следующий код: Цитата:
Сообщение от oip
Код: -- Генерация RecId. На выходе не 0 если всё Ok и 0, если что-то не так -- Входные параметры: код компании и шаг -- Пример: exec AX_GETRECID 'dat', '25' CREATE PROCEDURE [dbo].[AX_GETRECID] (@dataAreaId VARCHAR(3), @hop INT) AS SET NOCOUNT ON DECLARE @RecID INT SET @RecID = NULL UPDATE SYSTEMSEQUENCES SET @RecID = A.NextVal, NextVal = A.NextVal + @HOP FROM SYSTEMSEQUENCES A WHERE A.Id = -1 AND A.DATAAREAID = @dataAreaId SELECT ISNULL(@RecID, 0) AS RecId RETURN ISNULL(@RecID, 0) GO В связи с тем, что пишут, что "в AX 2009 RecId уникален лишь для каждой таблицы, а не для базы в целом", появилась мысль: почему бы, ни на что не взирая, не авто-инкрементить RecId в данной конкретной таблице, начиная с единицы? Это чем-то чревато? Как бы поступили вы сами? Прошу поделиться соображениями. Последний раз редактировалось Hyper; 23.06.2011 в 19:48. |
|
Теги |
ax2009, recid, systemsequences, интеграция, таблица |
|
|