Поделиться через


Поиск элементов инвентаризации (10.210.00) не заполняется правильно

Эта статья содержит решение проблемы, из-за которой поиск элементов инвентаризации (10.210.00) не заполняется правильно.

Область применения: Microsoft Dynamics SL 2011 с пакетом обновления 2
Исходный номер базы знаний: 2953185

Симптомы

Поиск элементов инвентаризации (10.210.00) не включает все элементы инвентаризации, которые он должен.

Причина

Таблица InvtDescrXref не заполнена.

Решение

Примените следующие скрипты SQL с SQL Server Management Studio:

Сценарий 1

/****** Object: Trigger [dbo].[ADG_TR_InvtDescrXref_Delete] Script Date: 08/30/2012 17:03:58 ******/
SET
   ANSI_NULLS
   ON
   GO
   SET
      QUOTED_IDENTIFIER OFF
      GO ALTER TRIGGER [dbo].[ADG_TR_InvtDescrXref_Delete]
      ON [dbo].[Inventory] FOR
      DELETE
         AS
      set
         nocount
         on
         DECLARE @InvtID varchar(30)
         DECLARE @Descr varchar(60)
         DECLARE @RowsAffected int
         SELECT
            @RowsAffected = @@ROWCOUNT IF @RowsAffected = 1
            BEGIN
               SELECT
                  @InvtID = InvtID,
                  @Descr = Descr
               from
                  DELETED EXECUTE ADG_InvtDescrXref_Delete @InvtID,
                  @Descr
            END
            IF @RowsAffected > 1
            BEGIN
               DECLARE DelCursor SCROLL CURSOR FOR
               SELECT
                  InvtID,
                  Descr
               FROM
                  DELETED OPEN DelCursor FETCH FIRST
               FROM
                  DelCursor INTO @InvtID,
                  @Descr WHILE (@@FETCH_STATUS = 0)
                  BEGIN
                     EXECUTE ADG_InvtDescrXref_Delete @InvtID,
                     @Descr FETCH NEXT
               FROM
                  DelCursor INTO @InvtID,
                  @Descr
                  END
                  CLOSE DelCursor DEALLOCATE DelCursor
            END
            -- Copyright 1998 by Advanced Distribution Group, Ltd. All rights reserved.
            GO

Сценарий 2

/****** Object: StoredProcedure [dbo].[ADG_InvtDescrXref_Populate] Script Date: 08/30/2012 17:22:44 ******/
SET
   ANSI_NULLS
   ON
   GO
   SET
      QUOTED_IDENTIFIER OFF
      GO ALTER PROCEDURE [dbo].[ADG_InvtDescrXref_Populate] AS
      set
         nocount
         on
         DECLARE @InvtID varchar(30)
         DECLARE @Descr varchar(60) TRUNCATE TABLE InvtDescrXref
         DECLARE InvCursor INSENSITIVE CURSOR FOR
         SELECT
            InvtID,
            Descr
         FROM
            Inventory OPEN InvCursor FETCH NEXT
         FROM
            InvCursor INTO @InvtID,
            @Descr WHILE (@@FETCH_STATUS = 0)
            BEGIN
               EXECUTE ADG_InvtDescrXref_Add @InvtID,
               @Descr FETCH NEXT
         FROM
            InvCursor INTO @InvtID,
            @Descr
            END
            CLOSE InvCursor DEALLOCATE InvCursor
            -- Copyright 1998 by Advanced Distribution Group, Ltd. All rights reserved.
            GO

Скрипт 3

/****** Object: Trigger [dbo].[ADG_TR_InvtDescrXref_Add] Script Date: 08/30/2012 17:03:37 ******/
SET
   ANSI_NULLS
   ON
   GO
   SET
      QUOTED_IDENTIFIER OFF
      GO ALTER TRIGGER [dbo].[ADG_TR_InvtDescrXref_Add]
      ON [dbo].[Inventory] FOR INSERT,
      UPDATE
         AS
         DECLARE @InvtID varchar(30)
         DECLARE @Descr varchar(60)
         DECLARE @TranStatusCode varchar(2)
         DECLARE @RowsAffected int
         DECLARE @OMInstalled smallint
         SELECT
            @RowsAffected = @@ROWCOUNT
         SET
            NOCOUNT
            ON IF @RowsAffected = 1
            BEGIN
               IF
               UPDATE
(Descr)
                  BEGIN
                     SELECT
                        @InvtID = InvtID,
                        @Descr = Descr
                     from
                        DELETED EXECUTE ADG_InvtDescrXref_Delete @InvtID,
                        @Descr
                        SELECT
                           @InvtID = InvtID,
                           @Descr = Descr
                        from
                           INSERTED EXECUTE ADG_InvtDescrXref_Add @InvtID,
                           @Descr
                  END
                  IF
                  UPDATE
(TranStatusCode)
                     BEGIN
                        Select
                           @OMInstalled = count(*)
                        from
                           SOSetup (NOLOCK) IF @OMInstalled > 0
                           BEGIN
                              SELECT
                                 @InvtID = InvtID,
                                 @TranStatusCode = TranStatusCode
                              from
                                 INSERTED EXECUTE ADG_ProcessMGr_PlnIn_CrtSh @InvtID,
                                 @TranStatusCode
                           END
                     END
            END
            IF @RowsAffected > 1
            BEGIN
               IF
               UPDATE
(Descr)
                  BEGIN
                     DECLARE DelCursor SCROLL CURSOR FOR
                     SELECT
                        InvtID,
                        Descr
                     FROM
                        DELETED OPEN DelCursor FETCH FIRST
                     FROM
                        DelCursor INTO @InvtID,
                        @Descr WHILE (@@FETCH_STATUS = 0)
                        BEGIN
                           EXECUTE ADG_InvtDescrXref_Delete @InvtID,
                           @Descr FETCH NEXT
                     FROM
                        DelCursor INTO @InvtID,
                        @Descr
                        END
                        CLOSE DelCursor DEALLOCATE DelCursor
                        DECLARE InsCursor SCROLL CURSOR FOR
                        SELECT
                           InvtID,
                           Descr
                        FROM
                           INSERTED OPEN InsCursor FETCH FIRST
                        FROM
                           InsCursor INTO @InvtID,
                           @Descr WHILE (@@FETCH_STATUS = 0)
                           BEGIN
                              EXECUTE ADG_InvtDescrXref_Add @InvtID,
                              @Descr FETCH NEXT
                        FROM
                           InsCursor INTO @InvtID,
                           @Descr
                           END
                           CLOSE InsCursor DEALLOCATE InsCursor
                  END
                  IF
                  UPDATE
(TranStatusCode)
                     BEGIN
                        Select
                           @OMInstalled = count(*)
                        from
                           SOSetup (NOLOCK) IF @OMInstalled > 0
                           BEGIN
                              DECLARE InsCursor SCROLL CURSOR FOR
                              SELECT
                                 InvtID,
                                 TranStatusCode
                              FROM
                                 INSERTED OPEN InsCursor FETCH FIRST
                              FROM
                                 InsCursor INTO @InvtID,
                                 @TranStatusCode WHILE (@@FETCH_STATUS = 0)
                                 BEGIN
                                    EXECUTE ADG_ProcessMgr_PlnIn_CrtSh @InvtID,
                                    @TranStatusCode FETCH NEXT
                              FROM
                                 InsCursor INTO @InvtID,
                                 @TranStatusCode
                                 END
                                 CLOSE InsCursor DEALLOCATE InsCursor
                           END
                     END
            END
            -- Copyright 1998 by Advanced Distribution Group, Ltd. All rights reserved.
            GO