- Tabela odpowiada na pytanie, które pliki zostały dodane lub zmienione na potrzeby konkretnego wdrożenia.
- Znacznik
INDYWIDUALNYrozdziela pliki wdrożeniowe od standardowych. - Kolumna
DEFFOLDERwskazuje folder specjalny, w którym plik jest umieszczony. - Kolumna
LASTUPDATEpozwala ustalić, kiedy plik był ostatnio modyfikowany — istotne przy aktualizacji systemu.
Do czego służy tabela [dbo].[_menu_pliki]
Każde wdrożenie systemu magazynowego zostawia po sobie ślad: dodatkowy wydruk, zmieniony formularz, własny szablon etykiety. Po dwóch latach i kilku aktualizacjach pytanie „które z tych plików są nasze, a które przyszły z instalacją” przestaje być oczywiste. Tabela [dbo].[_menu_pliki] istnieje po to, żeby na nie odpowiedzieć.
Struktura jest minimalna, bo zadanie jest wąskie. Nazwa pliku, folder specjalny, w którym się znajduje, znacznik odróżniający plik indywidualny od standardowego oraz data ostatniej modyfikacji. Tyle wystarcza, żeby przed aktualizacją systemu sporządzić listę rzeczy wymagających zabezpieczenia.
Praktyczne znaczenie tej ewidencji ujawnia się dokładnie raz — przy aktualizacji, gdy pliki standardowe są zastępowane nowymi wersjami. Bez listy plików indywidualnych operacja ta bywa jednokierunkowa: zmiany wprowadzone dla klienta znikają, a odtworzenie ich wymaga sięgnięcia po kopię zapasową całego katalogu i porównania go z nową instalacją.
Bez tej listy aktualizacja bywa jednokierunkowa — zmiany wprowadzone dla klienta znikają razem z podmienionymi plikami standardowymi.
Budowa tabeli — wykaz kolumn
Pięć kolumn wystarcza do jednoznacznego wskazania pliku i jego statusu we wdrożeniu.
| Kolumna | Typ | Wymagana | Znaczenie |
|---|---|---|---|
DEFFOLDER | varchar(3) tekst do 3 znaków | nie | Identyfikator folderu specjalnego |
ID_MENU_PLIKI | int liczba całkowita | tak | Unikalny identyfikator wiersza tabeli |
INDYWIDUALNY | bit wartość logiczna 0/1 | tak | Oznaczenie czy dany plik jest indywidualny |
LASTUPDATE | datetime data i godzina | tak | Data i czas aktualizacji zapisu |
NAZWAPLIKU | varchar(100) tekst do 100 znaków | tak | Nazwa pliku specjalnego |
Kolumna DEFFOLDER ma zaledwie trzy znaki i przechowuje symbol folderu specjalnego, nie ścieżkę. Odwzorowanie symboli na katalogi leży po stronie konfiguracji aplikacji.
Indeksy i wydajność zapytań
Tabela zawiera zwykle od kilku do kilkudziesięciu wierszy i jest odczytywana przy operacjach serwisowych, nie w trakcie normalnej pracy.
| Indeks | Kolumny | Rodzaj |
|---|---|---|
PK__menu_pliki | ID_MENU_PLIKI | klucz główny |
Klucz główny na kolumnie ID_MENU_PLIKI jest wystarczający. Dodatkowy indeks na NAZWAPLIKU miałby sens dopiero przy ewidencji obejmującej setki pozycji, co przy typowym wdrożeniu się nie zdarza.
Dlaczego indywidualne pliki giną przy aktualizacji
Utrata zmian wdrożeniowych podczas aktualizacji to jeden z najczęstszych i najbardziej irytujących problemów w utrzymaniu systemów. Mechanizm jest zawsze ten sam.
- Aktualizacja zastępuje pliki standardowe nowymi wersjami — to jej podstawowe zadanie i nie da się go pominąć.
- Plik zmieniony dla klienta nadal nosi standardową nazwę, więc z punktu widzenia procedury niczym się nie wyróżnia.
- Podmiana odbywa się bez ostrzeżenia, bo procedura nie ma skąd wiedzieć, że plik był modyfikowany.
- Problem ujawnia się dopiero w pracy — użytkownik zgłasza, że wydruk wygląda inaczej niż wczoraj.
- Odtworzenie wymaga kopii zapasowej katalogu sprzed aktualizacji i ręcznego porównania z nową instalacją.
Ewidencja rozwiązuje ten problem, ale tylko wtedy, gdy jest prowadzona konsekwentnie. Plik dopisany w pośpiechu i nieodnotowany w tabeli zachowa się dokładnie tak jak wcześniej — zniknie przy najbliższej aktualizacji. Dlatego wpis do ewidencji powinien być częścią procedury wprowadzania zmiany, a nie czynnością wykonywaną przy okazji porządków.
Zmiana pliku standardowego a plik własny
Nie każdą modyfikację trzeba wprowadzać przez podmianę pliku standardowego. Wybór podejścia decyduje o tym, ile pracy będzie kosztować każda kolejna aktualizacja.
| Podejście | Zachowanie przy aktualizacji | Kiedy stosować |
|---|---|---|
| Zmiana pliku standardowego | Plik zostaje nadpisany, zmiana przepada | Ostateczność, gdy nie ma innej drogi |
| Nowy plik o własnej nazwie | Pozostaje nietknięty, aktualizacja go nie dotyczy | Wydruki, szablony i formularze dodatkowe |
| Konfiguracja w tabeli parametrów | Zachowana, o ile wiersz nie jest systemowy | Ustawienia sterujące zachowaniem, nie wyglądem |
| Blok kodu w tabeli _code_js | Zachowany, o ile nie jest oznaczony jako systemowy | Zmiany zachowania formularzy |
Trzy ostatnie warianty przechodzą aktualizację bez uszczerbku — pierwszy wymaga ewidencji i ręcznego przywrócenia.
Wniosek praktyczny jest taki, że ewidencja plików powinna być krótka. Jeżeli rośnie do kilkudziesięciu pozycji, zwykle oznacza to, że zmiany wprowadza się przez podmianę plików standardowych tam, gdzie wystarczyłby parametr albo osobny plik o własnej nazwie. Każdy taki wiersz to praca do wykonania przy każdej kolejnej aktualizacji.
Jak korzystać z tabeli w praktyce
Przy prowadzeniu ewidencji plików wdrożeniowych obowiązują następujące zasady:
- Odnotowuj plik w tabeli w tym samym momencie, w którym go dodajesz — ewidencja uzupełniana później zawsze jest niekompletna.
- Ustawiaj znacznik
INDYWIDUALNYzgodnie ze stanem faktycznym; to on decyduje o zabezpieczeniu pliku przy aktualizacji. - Sprawdzaj zawartość tabeli przed każdą aktualizacją systemu i sporządzaj kopię wymienionych w niej plików.
- Porównuj kolumnę
LASTUPDATEz datą pliku na dysku — rozbieżność oznacza zmianę wprowadzoną poza procedurą. - Stosuj spójną konwencję symboli w kolumnie
DEFFOLDER; trzy znaki nie zostawiają miejsca na improwizację. - Usuwaj wpisy dotyczące plików wycofanych z użycia, żeby lista przed aktualizacją pozostawała wiarygodna.
Lista plików wymagających zabezpieczenia przed aktualizacją systemu:
SELECT DEFFOLDER,
NAZWAPLIKU,
LASTUPDATE,
DATEDIFF(DAY, LASTUPDATE, GETDATE()) AS DNI_OD_ZMIANY
FROM dbo._menu_pliki
WHERE INDYWIDUALNY = 1
ORDER BY DEFFOLDER, NAZWAPLIKU;
Wynik tego zapytania warto zapisać razem z kopią plików — po aktualizacji stanowi listę kontrolną tego, co należy przywrócić.
Ewidencja plików indywidualnych jest jedną z tych rzeczy, których wartość poznaje się dopiero po pierwszej aktualizacji przeprowadzonej bez niej. Kilkanaście wierszy w tabeli zastępuje godziny porównywania katalogów z kopią zapasową.
Powiązane tabele i dokumentacja
Ewidencja plików wiąże się z pozostałymi mechanizmami rozróżniającymi instalację standardową od zmian wdrożeniowych: