W skrócie
W opisywanym wdrożeniu edycja pozycji w osobnych oknach zastępuje jeden długi formularz kontraktu. Kontrakty i ich pozycje są tłem tej strony i pochodzą z systemu zewnętrznego, a my opisujemy wyłącznie edycję pozycji w programie. Operator wybiera w zestawieniu przycisk „Edycja” i otwiera ekran, który zapisze tylko swoją część pozycji.
W opisywanym wdrożeniu jedna pozycja kontraktu nie ma jednego długiego formularza, tylko kilka ekranów edycji otwieranych z różnych zestawień. Każdy ekran odczytuje pozycję po tym samym numerze i zapisuje własny zestaw kolumn, a nagłówek pozycji pokazuje tylko do odczytu.
Jedna pozycja ma kilka ekranów edycji zamiast jednego długiego formularza
Według konfiguracji opisywanego wdrożenia zestawienia pozycji kontraktu mają przycisk „Edycja”, który otwiera własny ekran. Zestawienie główne ma przyciski edycji pozycji i nagłówka kontraktu. Ekrany otwierają się w oknie rozwiniętym na cały ekran.
Ekran odczytuje numer pozycji z adresu jako klucz, a zapisy ekranów aktualizują wiersz o tym numerze. Pasek każdego ekranu ma te same cztery przyciski: „Notatki” i „Pliki” oraz „Załączniki” i „Zdjęcia”, wszystkie z numerem pozycji jako kluczem. Ekran edycji otwiera się z zestawienia, w którym operator wybrał pozycję, a numer tej pozycji staje się kluczem odczytu.
Według konfiguracji opisywanego wdrożenia pozycję czytają trzy zapytania odczytu: jedno obsługuje dwa ekrany, drugie trzy ekrany, a trzecie ekran kosztów. Każdy z sześciu ekranów ma własne zapytanie zapisu. Zapis aktualizuje jedną lub dwie tabele przez numer pozycji.
Każdy ekran pokazuje nagłówek pozycji tylko do odczytu
Każdy ekran ma własną kopię nagłówka tylko do odczytu, w której są między innymi klient i numer seryjny. Nagłówek służy informacji: operator widzi w nim, której pozycji dotyczy ekran, ale edytować można tylko dane w sekcji pozycji. Według dokumentacji wdrożenia sekcja pozycji jest jedyną częścią ekranu przeznaczoną do edycji, a poniżej przytaczamy jej zdanie z dokumentacji.
„Samej edycji podlegają wyłącznie dane w sekcji Pozycja kontraktu.” (dokumentacja wdrożenia)
Cytat dotyczy polecenia „Edycja” ekranu pozycji, a nie wszystkich ekranów. Zapis ekranu pozycji wysyła tylko pola z sekcji edytowalnej. Sekcja informacyjna nie jest wysyłana przy zapisie, więc z tego ekranu nie da się zmienić nagłówka.
Zapis każdego ekranu dotyka własnego zestawu kolumn
Zapis ekranu aktualizuje wiersz o numerze pozycji, a każdy ekran ma własne zapytanie zapisu i własny zestaw kolumn. Poniższa tabela pokazuje, co zapisują poszczególne ekrany pozycji. Tabela opisuje pięć z sześciu ekranów.
| Ekran | Co zapisuje |
|---|---|
| Ekran pozycji | Status i lokalizacja egzemplarza oraz numer seryjny i terminy |
| Ekran rozliczeń | Dane rozliczeniowe pozycji |
| Ekran zwolnienia | Dane zwolnienia i uwagi |
| Ekran protokołu | Dane protokołu |
| Ekran kosztów | Ceny i rabaty oraz sumy kosztów składowych |
Według konfiguracji opisywanego wdrożenia zapis dopisuje także wpis w historii pozycji. Część pól wylicza baza przy zapisie, a pole wyliczane jest na ekranie zablokowane. Podział przebiega po ekranach i zestawieniach, z których się je otwiera.
Koszty składowe mają osobne okno z listą wpisów
W ekranie kosztów pola sum są zablokowane, a przy każdym stoi przycisk „Zapisz koszty”, który otwiera okno „Modyfikacja pozycji” z listą wpisów. Wpis kosztu ma opis do 50 znaków i wartość. Zapis dopisuje wiersz, a tabela w oknie się odświeża.
Na makiecie u góry stoją pola „Opis pozycji” i „Wartość” z przyciskiem „Dodaj”. Pod nimi po lewej leży tabela wpisów, a po prawej nazwa grupy kosztów z przyciskiem „Zapisz koszty”, bez pola sumy.
Operator widzi więc dwa momenty: wpis pojawia się w tabeli od razu po zapisie, a pole pozycji dostaje nową sumę dopiero po naciśnięciu „Zapisz koszty”. Usunięcie wpisu ma pytanie i oznacza wpis jako usunięty, a wiersz zostaje w bazie. Przycisk „Zapisz koszty” w oknie sumuje aktywne wpisy danej grupy do pola pozycji i oznacza wpisy jako zapisane. Okno się zamyka, a ekran odczytuje sumy z bazy. Usunięcie wpisu zmienia więc sumę dopiero przy kolejnym „Zapisz koszty”.
Według konfiguracji opisywanego wdrożenia ten sam wzorzec obsługuje okno „Korekty”. Lista numerów faktur korygujących stoi w tej samej tabeli wpisów, a odróżnia ją typ wpisu. Liczba wpisów trafia do zablokowanego pola.
Przykład (dane wymyślone): dwóch operatorów pracuje na tej samej pozycji, jeden na ekranie pozycji, a drugi na ekranie kosztów. Kolejne kroki pokazuje lista numerowana.
- Operator A otwiera ekran pozycji kontraktu i zmienia status oraz lokalizację egzemplarza.
- W tym samym czasie Operator B otwiera ekran kosztów tej samej pozycji i dopisuje do jednej grupy dwa wpisy.
- Naciska „Zapisz koszty”, a pole sumy pokazuje sumę obu wpisów.
- Operator A zapisuje swój ekran. Ekran zapisuje własne kolumny, między innymi status i lokalizację, więc wpisy kosztów Operatora B zostają.
- Przyciski paska „Notatki” i „Pliki” używają w obu ekranach numeru pozycji jako klucza, więc oba ekrany pracują na notatkach i plikach tej samej pozycji.
- Gdy Operator B usunie później jeden wpis, suma w pozycji zmieni się dopiero po kolejnym „Zapisz koszty”.
Nagłówek kontraktu i pozycja są dwoma różnymi zapisami
Nagłówek kontraktu ma osobny ekran, a zestawienie główne otwiera go własnym przyciskiem. Według dokumentacji wdrożenia edycja kontraktu jest osobnym poleceniem, odrębnym od edycji pozycji.
- Zapis pozycji. Ekran odczytuje numer pozycji i aktualizuje wiersz o tym numerze.
- Zapis nagłówka kontraktu. Osobny ekran otwierany własnym przyciskiem w zestawieniu głównym.
Inne ekrany opisywanego wdrożenia opisujemy w artykułach o zleceniu transportowym w oddziałach i o protokole stanu przy wydaniu. Zapis nagłówka bez zerowania numerów na pozycjach opisujemy na stronie T-SQL o zapisie nagłówka bez naruszania pozycji.
Co uwzględnić, projektując podział na okna
Reguły opisane wyżej przekładają się na cztery decyzje przy podziale formularza na ekrany. Usuwanie pól z jednego formularza opisujemy w artykule o odchudzaniu formularza, a tutaj zestawiamy tylko skutki podziału.
- Kopia nagłówka. Każdy ekran ma własną kopię nagłówka tylko do odczytu.
- Klucz pozycji. Ekrany i przyciski paska używają numeru pozycji jako klucza.
- Wartości wyliczane. Część pól wylicza baza przy zapisie, a pole wyliczane jest zablokowane na ekranie.
- Odświeżenie sumy. Usunięcie wpisu kosztu zmienia sumę dopiero przy kolejnym zapisie kosztów.
Dla operatora oznacza to cztery obserwacje. Nagłówek widzi w każdym ekranie osobno, a numer pozycji łączy ekrany i przyciski paska. Pola wyliczane przez bazę widzi jako zablokowane, więc ich nie wpisuje. Sumę kosztów składowych widzi zmienioną dopiero po zapisie kosztów, także po usunięciu wpisu.
Pytania do analizy
Przed wdrożeniem podobnego rozwiązania zadajemy cztery pytania. To pytania do czytelnika, a nie fakty o opisywanym wdrożeniu.
- Które pola rekordu zmieniają różne osoby i czy da się je rozdzielić na osobne ekrany bez wspólnych kolumn?
- Czy nagłówek rekordu ma być kopiowany do każdego ekranu, czy czytany z jednego wspólnego źródła?
- Które sumy mają powstawać z listy wpisów, a które z pól wpisywanych ręcznie?
- Jak ekran ma informować o wyniku zapisu, jeśli zamyka się po otrzymaniu odpowiedzi?
Pytania i odpowiedzi o edycji pozycji kontraktu w osobnych oknach
Dlaczego pozycja ma kilka ekranów edycji?
W opisywanym wdrożeniu każdy ekran zapisuje własną część rekordu, a otwiera się z innego zestawienia pozycji.
Czy nagłówek można zmienić w ekranie pozycji?
Nie, sekcja informacyjna nie jest wysyłana przy zapisie, a nagłówek kontraktu ma osobny ekran.
Skąd bierze się suma kosztów składowych?
Z listy aktywnych wpisów danej grupy, po naciśnięciu „Zapisz koszty”; pole sumy na ekranie jest zablokowane.
Czy usunięty wpis kosztu znika z sumy od razu?
Nie, wpis dostaje oznaczenie usunięcia, a suma zmienia się przy kolejnym „Zapisz koszty”.
Czy zapis ekranu zostaje w historii pozycji?
Według konfiguracji opisywanego wdrożenia zapytanie zapisu każdego z sześciu ekranów dopisuje wpis w historii pozycji, a treść wpisu bywa wspólna dla dwóch ekranów.
Słownik pojęć o edycji pozycji kontraktu w osobnych oknach
Terminy używane przez operatora i wdrożeniowca, gdy jedna pozycja kontraktu ma kilka ekranów edycji.
- Pozycja kontraktu
- Pojedynczy wiersz kontraktu, rozpoznawany własnym numerem.
- Ekran edycji
- Osobny ekran otwierany z przycisku „Edycja” w zestawieniu pozycji.
- Nagłówek tylko do odczytu
- Sekcja pól informacyjnych, kopiowana do każdego ekranu.
- Wpis kosztu
- Wiersz z opisem i wartością w oknie „Modyfikacja pozycji”.
- Suma kosztów składowych
- Wartość wyliczona z aktywnych wpisów grupy i zapisana w polu pozycji.
- Oznaczenie usunięcia
- Znacznik, który wyłącza wpis, ale nie kasuje wiersza z bazy.
Opisz nam swoje formularze
Podaj, które pola edytują różne osoby i jak dziś dzielisz formularz, a przygotujemy plan analizy podziału na okna.
