Baza wiedzy LINKSPOT › Wskazówki

Czy wiesz, że za pomocą procedury SQL do.OnAfterDocumentCreated możliwe jest automatyczne podpięcie wszystkich załączników z e-maila do dokumentu BPM, w tym logiczne rozdzielenie plików zOCR-owanych od pozostałych, które nie podlegają przetwarzaniu?

Wskazówki · Opublikowano 2025-10-14

Zastosowanie

Dzięki tej konfiguracji złożonej z dwóch punktów ACD (Współpraca ze skrzynką pocztową (pobieranie załączników i Współpraca z Comarch OCR) oraz procedury SQL (do.OnAfterDocumentCreated), możliwa jest precyzyjna kontrola nad załącznikami pobranymi z maila, które trafiają do tworzonego dokumentu BPM. Mechanizm ten ma zastosowanie w procesach, gdzie dokumenty są pobierane ze skrzynki pocztowej i w mailu oprócz dokumentu PDF, który ma zostać zOCR-owany, są również inne załączniki, które powinny zostać podpięte podczas tworzenia dokumentu BPM, ale nie są przeznaczone do przetwarzania przez OCR.

Celem jest pobranie wszystkich załączników dołączonych do maila i podpięcie ich na dokument BPM z zachowaniem logicznej separacji oraz zapewnieniem, że plik główny jest podpięty pod kontrolkę o nazwie Załącznik, a pozostałe pliki z maila są podpięte pod osobną kontrolkę o nazwie Pozostałe załączniki.

Zawartość przykładu

Uwaga

Kliknij tutaj, aby pobrać przykład

Zasada działania

Mechanizm opiera się na sekwencyjnym działaniu dwóch punktów ACD i procedury SQL:

Konfiguracja przykładu

  1. Utworzono kontrolkę Załącznik: Na karcie obiegu dodano kontrolkę typu Załącznik o nazwie Załącznik (identyfikatorze Zalacznik), do której będzie podpinany przetworzony przez OCR dokument.

Kontrolka typu Załącznika o nazwie Załącznik

  1. Utworzono kontrolkę Załącznik: Na karcie obiegu dodano kontrolkę typu Załącznik o nazwie Pozostałe załączniki (identyfikatorze PozostaleZalaczniki), do której będą podpinane pozostałe pliki z maila.

Kontrolka typu Załącznika o nazwie Pozostałe załączniki

  1. Utworzono kontrolkę ID_dokumentuOCR: Na karcie obiegu dodano kontrolkę typu Liczba całkowita o nazwie (identyfikatorze) ID_dokumentuOCR, do której będzie zapisywane ID OCR-owanego dokumentu.
  2. Punkt ACD: Utworzono punkt: ACD – Współpraca z Comarch OCR do odczytywania danych z dokumentów pdf.

Punkt ACD Współpraca z Comarch OCR – zakładka Ogólne

  1. Utworzono kontrolki: W punkcie ACD na zakładce Kontrolki dodano kontrolki:
select OCD_SourceContent, OCD_FileName from DO.OC_Documents left join do.DF_WorkAPProcess on OCD_ID = APW_DocumentID1 where OCD_ID=@ID1@
select @Id1@

Punkt ACD Współpraca z Comarch OCR – zakładka Kontrolki

  1. Punkt ACD: Utworzono punkt Współpraca ze skrzynką pocztową (pobieranie załączników).

Punkt ACD – Współpraca ze skrzynką pocztową (pobieranie załączników)

  1. Procedura SQL (do.OnAfterDocumentCreated): Na bazie BPM w Management Studio w procedurze do.OnAfterDocumentCreated został uruchomiony skrypt, który do kontrolki Załącznik podpina zOCR-owany dokument, a pod kontrolkę Pozostałe załączniki podpina pozostałe pliki z maila.
----------------------Pobieranie załączników z maila----------------------

DECLARE @DWCID_Glowne INT

DECLARE @DWCID_Inne INT

DECLARE @DDSID INT

DECLARE @OCDID INT

DECLARE @MLM_Id INT

DECLARE @MLA_Id_Glownego INT

DECLARE @OCD_FileName_String VARCHAR(MAX)

/* 1. POBIERANIE ZMIENNYCH */

/* Pobranie ID Kontrolki 'Załączniki' (kontrolka główna) */

SELECT @DWCID_Glowne = DWC_ID FROM do.RO_ControlsValue WHERE DWD_ID = @DocumentId AND DKO_Name = 'Zalacznik'

/* Pobranie ID Kontrolki 'Pozostałe załączniki' (kontrolka pomocnicza) */

SELECT @DWCID_Inne = DWC_ID FROM do.RO_ControlsValue WHERE DWD_ID = @DocumentId AND DKO_Name = 'PozostaleZalaczniki'

/*Pobranie ID dokumentu przetworzonego przez OCR(klucz do identyfikacji pliku głównego)*/

SELECT @OCDID = Value FROM do.RO_ControlsValue WHERE DWD_ID = @DocumentId AND DKO_Name = 'ID_dokumentuOCR'

/* Pobranie ID etapu (Stage ID), na którym znajduje się obecnie dokument */

SELECT @DDSID = DDS_ID FROM do.RO_StageActive WHERE DWD_ID = @DocumentId

/* 2. POBRANIE ID GŁÓWNEGO ZAŁĄCZNIKA (@MLA_Id_Glownego) - Poprawne Parsowanie */

SELECT @OCD_FileName_String = OCD_FileName

FROM do.OC_Documents

WHERE OCD_id = @OCDID

/* Użycie parsowania (Trzeci segment to MLA_Id, pierwszy to MLM_Id) */

DECLARE @Pos1 INT = CHARINDEX('_', @OCD_FileName_String);

DECLARE @Pos2 INT = CHARINDEX('_', @OCD_FileName_String, @Pos1 + 1);

DECLARE @Pos3 INT = CHARINDEX('_', @OCD_FileName_String, @Pos2 + 1);

IF @Pos3 > 0

BEGIN

SET @MLM_Id = CAST(SUBSTRING(@OCD_FileName_String, 0, @Pos1) AS INT);

SET @MLA_Id_Glownego = CAST(

SUBSTRING(

@OCD_FileName_String,

@Pos2 + 1,

@Pos3 - @Pos2 - 1

)

AS INT);

END

ELSE

BEGIN

SET @MLM_Id = 0;

SET @MLA_Id_Glownego = 0;

END

/* 3. CZYSZCZENIE: USUŃ PLIKI WCZEŚNIEJ WSTAWIONE DO KONTROLKI GŁÓWNEJ

To jest konieczne, aby usunąć plik o "długiej nazwie" wstawiony przez system OCR */

DELETE FROM do.DF_WorkCFBin

WHERE DWB_DWCID = @DWCID_Glowne;

/* 4. CZĘŚĆ 1: Wstawianie GŁÓWNEGO ZAŁĄCZNIKA (Załączniki)

Cel: Wstaw oryginalny plik (krótsza nazwa) */

INSERT INTO do.DF_WorkCFBin (DWB_ID, [DWB_DWCID], [DWB_BIN], [DWB_Name], [DWB_Size], [DWB_Archival], [DWB_CreateDate], [DWB_CompanyId], [DWB_ModificationData], [DWB_DDSID], [DWB_DCDID], [DWB_AngleOfRotation])

SELECT

    NEWID(),

    @DWCID_Glowne, /* Podpinanie pod główną kontrolkę */

    MLA_Content,

    MLA_FileName, /* Wstawia KRÓTSZĄ, ORYGINALNĄ NAZWĘ */

    DATALENGTH(MLA_Content),

    0,

    GETDATE(),

    1,

    GETDATE(),

    @DDSID,

    1,

    0

FROM do.ML_Mail_Attachments

WHERE

MLA_MailId = @MLM_Id

/* WARUNEK UNIKALNY: TYLKO ten załącznik, który ma ID głównego dokumentu */

AND MLA_Id = @MLA_Id_Glownego

/* 5. CZĘŚĆ 2: Wstawianie POZOSTAŁYCH ZAŁĄCZNIKÓW (PozostałeZałączniki)

-- Cel: Wstaw WSZYSTKO inne, co NIE jest plikiem GŁÓWNYM. */

INSERT INTO do.DF_WorkCFBin (DWB_ID, [DWB_DWCID], [DWB_BIN], [DWB_Name], [DWB_Size], [DWB_Archival], [DWB_CreateDate], [DWB_CompanyId], [DWB_ModificationData], [DWB_DDSID], [DWB_DCDID], [DWB_AngleOfRotation])

SELECT

    NEWID(),

    @DWCID_Inne, -- Podpinanie pod dodatkową kontrolkę

    MLA_Content,

    MLA_FileName,

    DATALENGTH(MLA_Content),

    0,

    GETDATE(),

    1,

    GETDATE(),

    @DDSID,

    1,

    0

FROM do.ML_Mail_Attachments

WHERE

    MLA_MailId = @MLM_Id

   

    /* WARUNEK WYKLUCZAJĄCY GŁÓWNY DOKUMENT: Wyklucz plik, który ma to samo MLA_Id */

    AND MLA_Id <> @MLA_Id_Glownego

    /* WYKLUCZENIA (Anty-Smime) */

    AND MLA_FileName NOT LIKE '%.smime' 

    AND MLA_FileName NOT LIKE '%smime%' 

    AND MLA_FileName NOT LIKE '%.p7s'

    AND MLA_FileName NOT LIKE 'ATT%DOC'

-------------------------------KONIEC---------------------

Podpięcie dokumentów pod odpowiednie kontrolki typu Załącznik po utworzeniu dokumentu z punktu ACD Comarch OCR

  1. Do punktu ACD Współpraca ze skrzynką pocztową (pobieranie załączników) pobrano wiadomość e-mail z załącznikami. Tylko jeden plik ma zostać przetworzony przez OCR, a pozostałe powinny zostać usunięte z listy ręcznie przez użytkownika.

Punkt ACD – pobranie wiadomości e-mail z załącznikami

  1. Po usunięciu pozostałych plików, które nie podlegają przetworzeniu przez OCR, został zaznaczony mail i dokument z listy zapisano do folderu, który jest wskazany z powiązanym punktem ACD Współpraca z Comarch OCR (Faktura kosztowa + załaczniki).

Zapis dokumentu pdf do przetworzenia

  1. Dokument został pobrany przez punkt OCR (Faktura kosztowa + załaczniki). Po zaznaczeniu dokumentu i kliknięciu na przycisk Generuj dokument został utworzony w Comarch BPM w ramach typu obiegu wskazanego w tym punkcie.

Generowanie dokumentu

Utworzony dokument na liście dokumentów

  1. Dokument główny został podpięty pod kontrolkę Załącznik, a pozostałe pliki z maila pod kontrolkę Pozostałe załączniki.

Podpięcie dokumentu przetworzonego przez OCR wraz z pozostałymi załącznikami.

Rozpoczynasz pracę z Comarch BPM (dawniej DMS) i chcesz dowiedzieć się, jak korzystać z programu? A może masz już podstawową wiedzę o Comarch BPM (dawniej DMS) i chcesz dowiedzieć się więcej?

Sprawdź Szkolenia Comarch BPM!

Powrót do początku artykułu

Czy ten artykuł był pomocny?

Wyślij opinie

+ Mam problem z tym tematem Otwórz w portalu bazy wiedzy »