Administrationshandbuch edoc D365 BC invoice cockpit

Einrichten eines Tabellentriggers beim Einsatz von SQL-Tabellen ("LinkedObject") für den Bewegungsdatenimport

Standardmäßig beträgt die Feldlänge für das Feld Address 100 Zeichen in Microsoft Dynamics 365 Business Central für die Tabelle Kreditor, während die Feldlänge in edoc D365 BC invoice cockpit 50 Zeichen beträgt.

Wenn Sie nun aus edoc invoice Bewegungsdaten exportieren und die Lieferantenadressen haben mehr als 50 Zeichen, kommt es zu Problem, da die Feldlängen zwischen edoc invoice und edoc D365 invoice cockpit bei der Lieferantenadresse nicht übereinstimmen.

Um das Problem beim Einsatz von SQL-Tabellen vom Typ LinkedObject zu umgehen, müssen Sie einen Tabellentrigger in Microsoft SQL Server Management Studio generieren.

Gut zu wissen

Wenn Sie in der Einrichtung von edoc D365 BC invoice cockpit die Option Webdienst für Datenimport verwenden aktiviert haben, funktioniert der Bewegungsdatenimport ohne den nachfolgenden Tabellentrigger.

Wenn Sie keine Webdienste für den Datenimport in edoc D365 BC invoice cockpit konfiguriert haben, müssen Sie einen Tabellentrigger einrichten, um den Feldinhalt der Lieferantenadressen auf 50 Zeichen zu kürzen.

So geht’s

  1. Öffnen Sie Microsoft SQL Server Management Studio auf dem Server, auf dem Microsoft Dynamics 365 Business Central ausgeführt wird.

  2. Stellen Sie eine Verbindung mit der Serverinstanz her, auf der die Business Central-Datenbank gespeichert wurde.

  3. Wählen Sie die Business Central-Datenbank aus und führen Sie dort einmalig folgendes SQL-Skript aus:

    SQL
    SET QUOTED_IDENTIFIER ON;
    SET ANSI_NULLS ON;
    GO
    
    CREATE TRIGGER [dbo].[trg_edoc_headvalue_trunc_vendor_street]
    ON [dbo].[edoc_transfer_headvalue$0f000123-ab88-44f0-9de8-73b0de545b98]
    AFTER INSERT
    AS
    
    BEGIN
        SET NOCOUNT ON;
        /*
          Shorten vendor_address_street to 50 characters
          for the rows that are being inserted.
        */
    
        UPDATE tgt
            SET tgt.[vendor_address_street] =
                CASE
                    WHEN i.[vendor_address_street] IS NULL THEN NULL
                    ELSE LEFT(i.[vendor_address_street], 50)
                END
    
        FROM [dbo].[edoc_transfer_headvalue$0f000123-ab88-44f0-9de8-73b0de545b98] AS tgt
        INNER JOIN inserted AS i
            ON tgt.event_id = i.event_id;
    END;
    
    GO
    

Der Tabellentrigger wurde erfolgreich erstellt.