Dokument w firmie ma dwa życia. Pierwsze to plik, czyli bajty zapisane na dysku pod jakąś nazwą. Drugie to informacja: kto dokument wystawił, do jakiej sprawy należy, w jakim jest stanie i kto może go zmienić. Folder sieciowy przechowuje tylko pierwsze życie, a system DMS zapisuje oba.

Moduł DMS (Document Management System) w enova365 opisano tu według materiału SoftwareStudio. Materiał wymienia cyfrowe przechowywanie dokumentów w formatach takich jak PDF oraz archiwizację. Opisuje też przeszukiwanie według kryteriów oraz listy dokumentów i spraw, a także integrację z obszarem Workflow. Mechanizmy ogólne, takie jak metadane i wersje, oraz techniczne, takie jak uprawnienia i indeksy, opisano jako wiedzę o systemach DMS, a nie specyfikację modułu.

enova365 DMS a folder sieciowy - co zmienia archiwum

Folder sieciowy jest wygodny, bo każdy zna Eksplorator plików, a uprawnienia nadaje się na poziomie katalogu. Problemy zaczynają się w skali. Nazwa pliku musi nieść całą informację, na przykład Umowa_dostawa_2026_final_v3.pdf. Uprawnienia NTFS obejmują cały katalog, a historia zmian kończy się na dacie modyfikacji pliku.

System DMS rozdziela plik od jego opisu. Plik trafia do repozytorium, a obok powstaje rekord z metadanymi i wersjami, a status obiegu jest polem tego rekordu. Wyszukiwanie i obieg działają na rekordzie, więc nie zależą od nazwy pliku ani od miejsca w drzewie katalogów.

CechaFolder sieciowySystem DMS
Opis dokumentuNazwa pliku i ścieżkaPola metadanych w rekordzie
WyszukiwaniePo nazwie, ewentualnie po treści przez indeks WindowsPo polach opisu oraz po treści dokumentu
WersjeKopie z dopiskiem w nazwieKolejne wersje jednego dokumentu
UprawnieniaLista ACL na kataloguRola, typ dokumentu lub sprawa
Ślad zmianData modyfikacji plikuDziennik: kto, kiedy, co zmienił
PowiązaniaBrak, poza konwencją nazewnictwaKontrahent, sprawa, proces

Reguła: informacja o dokumencie należy do metadanych, a nie do nazwy pliku. Zmiana nazwy przez użytkownika nie może zrywać powiązania z kontrahentem ani ze sprawą.

Ilustracja instrukcji i dokumentacji przechowywanej w cyfrowym repozytorium dokumentów firmy
Repozytorium przechowuje plik wraz z opisem, a użytkownik pracuje na rekordzie dokumentu, nie na ścieżce w katalogu

Migracja plików z folderu do DMS

Przeniesienie istniejącego zasobu z folderu sieciowego do DMS zaczyna się od inwentaryzacji. Trzeba ustalić, które katalogi zawierają dokumenty obowiązujące, a które kopie robocze i duplikaty. Nazwy plików często niosą część metadanych, na przykład numer umowy w stałym wzorcu, więc pola można wypełnić maszynowo wyrażeniem regularnym i tylko wyjątki opisać ręcznie.

  • Inwentaryzacja - lista plików z rozmiarem i datą oraz sumą kontrolną, na której wykrywa się duplikaty.
  • Mapowanie - przypisanie katalogów i wzorców nazw do typów dokumentów i kontrahentów.
  • Import - wczytanie plików wraz z metadanymi partiami, z dziennikiem błędów.
  • Weryfikacja - porównanie liczby plików i sum kontrolnych po obu stronach.

Suma kontrolna po imporcie jest jedynym dowodem, że plik w repozytorium jest identyczny z oryginałem. Sama zgodność liczby plików ukrywa uszkodzenia pojedynczych dokumentów.

Metadane dokumentu i listy spraw

Pola opisujące dokument

Typowy rekord dokumentu zawiera typ i datę oraz kontrahenta i numer sprawy. Status obiegu jest osobnym polem. Typ powinien pochodzić ze słownika, a nie z pola tekstowego. Gdy jeden użytkownik wpisze „Faktura”, drugi „faktura”, a trzeci „fv”, filtrowanie po typie zwraca trzy różne zbiory. Słownik wartości usuwa ten problem u źródła.

Poniższy schemat jest przykładowy i nie odpowiada bazie enova365. Pokazuje, jak metadane zapisuje się w SQL Server oraz jak indeks przyspiesza listę dokumentów kontrahenta:

CREATE TABLE dbo.DokumentMeta (
    DokumentId    int IDENTITY(1,1) PRIMARY KEY,
    TypDokumentu  varchar(20) NOT NULL,
    KontrahentId  int NULL,
    NumerSprawy   varchar(30) NULL,
    DataDokumentu date NOT NULL,
    Status        varchar(20) NOT NULL DEFAULT 'Roboczy'
);

CREATE INDEX IX_DokumentMeta_Kontrahent
    ON dbo.DokumentMeta (KontrahentId, DataDokumentu DESC)
    INCLUDE (TypDokumentu, Status);

Indeks z klauzulą INCLUDE jest indeksem pokrywającym. Zapytanie o dokumenty jednego kontrahenta, posortowane od najnowszych, zostaje obsłużone wyłącznie z indeksu, bez odczytu tabeli. Kolejność kolumn w kluczu ma znaczenie: równość po kontrahencie stoi przed sortowaniem po dacie.

Listy spraw i kancelaria

Sprawa jest kontenerem, w którym gromadzi się dokumenty jednego przedsięwzięcia, na przykład wniosku albo umowy. Lista spraw to widok grupujący dokumenty według sprawy. Materiał SoftwareStudio wspomina o listach spraw dopasowanych do specyfiki działalności, takich jak kancelarie bezdziennikowe czy mieszane, czyli o różnych sposobach ewidencji korespondencji.

Mechanizm zostaje ten sam: dokument należy do sprawy, a sprawa ma numer i stan. Różni się jedynie sposób nadawania numerów oraz to, czy korespondencja przechodzi przez dodatkowy rejestr. Szersze omówienie dostosowania programu opisuje tekst o dostosowaniu enova365 do specyfiki firmy.

Wersjonowanie i archiwizacja dokumentów

Wersjonowanie polega na tym, że każdy zapis zmiany tworzy nową wersję dokumentu, a poprzednia zostaje w repozytorium. Zwykle wersje robocze numeruje się drobnymi krokami, na przykład 0.1 i 0.2, a wersja zatwierdzona dostaje numer całkowity, na przykład 1.0. Użytkownik może wrócić do dowolnej wcześniejszej wersji bez szukania kopii w katalogach.

Blokada edycji, czyli check-out, chroni przed nadpisaniem: dokument pobrany do edycji jest dla pozostałych tylko do odczytu, dopóki nie zostanie odblokowany. W folderze sieciowym ostrzega przed tym dopiero edytor, a gdy dwie osoby zapiszą kopie lokalne, powstają dwie rozbieżne wersje.

Reguła: zatwierdzona wersja dokumentu jest niezmienna. Poprawka oznacza nową wersję z własnym numerem i śladem w dzienniku, a nie edycję zatwierdzonego pliku.

Archiwizacja i kopie zapasowe

Według materiału SoftwareStudio funkcja archiwizacji zapewnia bezpieczeństwo i trwałość przechowywanych danych, a system wspiera tworzenie kopii zapasowych. Od strony bazy danych oznacza to kopię pełną i różnicową oraz kopię dziennika transakcji. Kopia bez sprawdzenia nie jest jeszcze kopią zapasową, ponieważ uszkodzony plik wychodzi na jaw dopiero przy odtwarzaniu.

Przykład dla SQL Server z sumą kontrolną i weryfikacją pliku (nazwa bazy i ścieżka są przykładowe):

BACKUP DATABASE DokumentyPrzyklad
TO DISK = N'D:\Kopie\Dokumenty_full.bak'
WITH CHECKSUM, COMPRESSION, INIT;

RESTORE VERIFYONLY
FROM DISK = N'D:\Kopie\Dokumenty_full.bak'
WITH CHECKSUM;

Pliki dokumentów można przechowywać w bazie albo poza nią. SQL Server oferuje mechanizm FileTable, który zapisuje pliki w bazie, a jednocześnie udostępnia je jako zwykły udział sieciowy. Opis funkcji zawiera dokumentacja FileTables w SQL Server. Materiał SoftwareStudio nie wskazuje, w jaki sposób enova365 zapisuje pliki, więc ten przykład ilustruje wyłącznie ogólną technikę.

Uprawnienia i dziennik dostępu

Uprawnienia NTFS opisują dostęp do katalogu, więc dwa dokumenty w jednym katalogu mają te same reguły, nawet jeśli jeden jest ofertą, a drugi umową z klauzulą poufności. W systemie DMS uprawnienia przypisuje się do roli, typu dokumentu lub sprawy. Materiał SoftwareStudio mówi o wielopoziomowych zabezpieczeniach, co w praktyce oznacza rozdzielenie kilku poziomów dostępu:

  • Odczyt - podgląd dokumentu i jego metadanych bez prawa zmiany.
  • Zapis - dodawanie dokumentów i nowych wersji w wybranych sprawach.
  • Zatwierdzanie - zmiana statusu wersji na obowiązującą.
  • Administracja - konfiguracja słowników oraz ról.

Rozdzielenie zapisu od zatwierdzania jest podstawą kontroli wewnętrznej: autor dokumentu nie akceptuje własnej wersji. Podobną zasadę ról opisuje artykuł o roli NAR w Studio TCS.net, gdzie uprawnienia decydują o zakresie operacji na danych.

Dziennik dostępu zapisuje, kto otworzył dokument, kto zmienił metadane i kiedy. Przy sporze o treść umowy albo o termin przekazania dokumentu dziennik jest jedynym źródłem, które nie zależy od pamięci użytkowników. W folderze sieciowym podobny ślad wymaga osobnego włączenia inspekcji dostępu do plików.

Statusy obiegu i integracja z Workflow

Materiał SoftwareStudio opisuje integrację DMS z obszarem Workflow: firma definiuje i realizuje procesy związane z przetwarzaniem dokumentów. Według tego samego materiału system kontroluje terminy realizacji zadań i powiadamia odpowiednie osoby o konieczności działania. Mechanizmem stojącym za takim obiegiem jest maszyna stanów.

Każdy dokument ma w danej chwili jeden status, a przejścia między statusami są z góry określone. Dokument roboczy może trafić do akceptacji, lecz nie może od razu zostać zarchiwizowany. Reguły przejść zapisuje się w konfiguracji ścieżki, dzięki czemu każda firma układa własny obieg.

StatusKto zmieniaKonsekwencja
RoboczyAutorEdycja swobodna, dokument niewidoczny dla innych działów
Do akceptacjiAutor, po zakończeniu redakcjiEdycja zablokowana, zadanie dla akceptującego z terminem
ZaakceptowanyOsoba z prawem zatwierdzaniaWersja obowiązująca, dalsze zmiany tylko jako nowa wersja
OdrzuconyOsoba z prawem zatwierdzaniaPowrót do autora z komentarzem
ZarchiwizowanyReguła procesu lub administratorDokument tylko do odczytu, liczony okres przechowywania

Poniższy fragment w C# pokazuje ideę tabeli przejść. Kod jest przykładem mechanizmu i nie pochodzi z enova365:

using System.Collections.Generic;
using System.Linq;

public enum Status { Roboczy, DoAkceptacji, Zaakceptowany, Odrzucony, Zarchiwizowany }

public static class Obieg
{
    private static readonly Dictionary<Status, Status[]> Przejscia = new()
    {
        [Status.Roboczy]       = new[] { Status.DoAkceptacji },
        [Status.DoAkceptacji]  = new[] { Status.Zaakceptowany, Status.Odrzucony },
        [Status.Odrzucony]     = new[] { Status.Roboczy },
        [Status.Zaakceptowany] = new[] { Status.Zarchiwizowany },
        [Status.Zarchiwizowany] = new Status[0]
    };

    public static bool CzyDozwolone(Status z, Status na) => Przejscia[z].Contains(na);
}

Przejście spoza tabeli jest odrzucane, więc nikt nie ominie akceptacji przez ręczną zmianę statusu. Terminy zadań kontroluje osobny mechanizm powiadomień, którego działanie w systemach ERP opisuje artykuł o powiadomieniach ERP.

Reguła: każde zadanie w obiegu ma termin i osobę odpowiedzialną. Zadanie bez terminu nie generuje powiadomienia, więc dokument czeka w statusie do akceptacji bez końca.

Wyszukiwanie po metadanych i w treści

Materiał SoftwareStudio wskazuje, że moduł generuje listę dokumentów z możliwością analizy i przeszukiwania oraz filtrowania po określonych parametrach. Wyszukiwanie po metadanych korzysta z indeksów opisanych wcześniej i działa szybko nawet przy milionach rekordów, ponieważ porównuje wartości pól, a nie otwiera plików.

Filtry i tagi uzupełniają pola słownikowe tam, gdzie stała lista wartości byłaby za sztywna. Tag jest dowolnym słowem przypisanym do dokumentu, więc szybko powstaje bogaty, ale nieuporządkowany zbiór. Dobrą praktyką jest okresowy przegląd tagów: łączenie synonimów i usuwanie pojedynczych wystąpień utrzymuje użyteczność filtrowania.

Przeszukiwanie treści wymaga osobnego mechanizmu. Skan zapisany jako obraz w PDF nie zawiera tekstu, dopóki nie przejdzie rozpoznawania znaków (OCR). Po wydobyciu tekstu system zapisuje go w indeksie pełnotekstowym, który przechowuje odwzorowanie słów na dokumenty. SQL Server udostępnia takie indeksy oraz predykat CONTAINS:

SELECT m.DokumentId, m.TypDokumentu, m.DataDokumentu
FROM dbo.DokumentMeta AS m
JOIN dbo.DokumentTresc AS t ON t.DokumentId = m.DokumentId
WHERE m.TypDokumentu = 'Umowa'
  AND CONTAINS(t.TekstDokumentu, N'"klauzula poufności"')
ORDER BY m.DataDokumentu DESC;
Ilustracja skorowidzów i indeksów pomagających odnaleźć dokument w dużym zbiorze
Indeks metadanych zawęża zbiór, a indeks pełnotekstowy wskazuje dokumenty zawierające szukaną frazę

Zapytanie łączy oba mechanizmy: pole typu zawęża zbiór szybkim indeksem, a CONTAINS sprawdza treść tylko w pozostałych dokumentach. Odwrócenie tej kolejności, czyli przeszukiwanie całej treści bez zawężenia, jest najczęstszą przyczyną wolnego wyszukiwania w archiwach.

Dokumenty w procesach księgowych i handlowych

Archiwum dokumentów ma sens dopiero wtedy, gdy plik jest powiązany z rekordem, którego dotyczy. Według materiału SoftwareStudio moduł DMS integruje się z obszarem systemu księgowego i pełni rolę narzędzia do ewidencji oraz przetwarzania danych. Dla faktury oznacza to, że skan leży obok dokumentu i jego dekretu, więc kontrola zapisu nie wymaga szukania pliku. Przebieg dekretacji i zamknięcia okresu opisuje artykuł o enova365 księgowość.

To samo powiązanie działa w obszarze handlowym. Umowa i dokumenty dostawy przypisane do zlecenia tworzą komplet, który można otworzyć jednym kliknięciem. Obsługę zamówień i zleceń opisuje tekst o obsłudze zamówień i zleceń w enova365.

DokumentPowiązany rekordCo daje powiązanie
Faktura zakupuDokument w księgach i jego dekretKontrola zapisu bez szukania skanu
UmowaKontrahent lub zlecenieKomplet dokumentów do wglądu w jednym miejscu
Dokument magazynowyRuch towaru i numer zamówieniaWeryfikacja ilości i daty przyjęcia lub wydania

Rejestry dokumentów występują również w innych produktach SoftwareStudio. Dokumenty magazynowe, takie jak PZ i WZ, opisuje artykuł o dokumentach magazynowych. Obieg dokumentów wypożyczeń w narzędziowni wyjaśnia tekst o dokumentach wypożyczeń w Studio TCS.net, a dokumenty w transporcie omawia artykuł o Linkway.TMS.

Bazę danych i procedury składowane, na których opiera się taki obieg, opisuje tekst o programowaniu baz danych. Pozycję enova365 wśród systemów ERP omawia artykuł o Soneta enova, a ofertę wdrożeniową SoftwareStudio prezentuje strona usług SoftwareStudio. Oficjalny opis produktu producenta zawiera serwis enova.pl.