====== Listy ======

**Lista** jest mechanizmem, który został zaprojektowany i stworzony w celu dokładniejszego i szybszego wyszukiwania danych. Tworzenie Listy polega na zgrupowaniu elementów interesującej nas kartoteki według ściśle określonych warunków, lub wobec ich braku na dodaniu elementów ręcznie. Lista może zawierać elementy jednej wybranej kartoteki (np. kontrahenci, nagłówki faktur, towary i usługi).

Utworzone listy są dostępne w wielu miejscach programu. Przykładowo można tworzyć zestawienia dla przygotowanej wcześniej listy towarów, kontrahentów czy akwizytorów.

Listy są dostępne w menu **Specjalne->Listy**.


Okno wyboru służy do otwierania istniejących i tworzenia nowych list. Są w nim dostępne następujące pola:


**Użytkownik -** przygotowane listy mogą być widoczne dla konkretnego użytkownika lub dla wszystkich użytkowników systemu. To czy dany użytkownik ma dostęp do wszystkich list czy tylko do swoich jest określone odpowiednim uprawnieniem. W tym polu wpisujemy identyfikator użytkownika, dla którego widoczna jest lista. Najczęściej jest to identyfikator operatora. Jeśli chcemy, aby lista była widoczna dla wszystkich użytkowników systemu, pozostawiamy to pole puste.


**Symbol -** w tym polu nadajemy tworzonej liście identyfikator (nazwę). Może on być dowolny, jednak system czuwa nad tym, aby nie powtórzyły się dwa jednakowe w całym systemie.

**Kartoteka -** w tym polu znajduje się lista dostępnych w systemie kartotek. W tym rozumieniu również kartotek (zbiorów) dokumentów (np. nagłówków i linii faktur, raportów kasowych itp.). Wybranie konkretnej kartoteki spowoduje, że lista będzie tworzona z elementów należących do niej. Wybraną kartotekę można zmienić w nagłówku listy.



===== Listy – Nagłówek =====

W nagłówku listy dostępne są następujące pola:

**Symbol -** symbol listy przepisuje się z okienka wyboru, jednak można go tu jeszcze zmienić.

**Opis -** pole typu tekstowego, służy do zamieszczenia dowolnego opisu listy.

**Użytkownik -** zawartość pola przepisuje się z okna wyboru.

**Warunek –** wartość TAK oznacza, że z daną listą jest związany automatyczny warunek. 

Przyciski widoczne w nagłówku opisane są poniżej.


===== Ręczne dodawanie elementów do listy =====

Elementy do listy można dodawać ręcznie. Po wybraniu kartoteki, której elementy chcemy dodać i wejściu do nagłówka listy należy przejść do treści listy przy użyciu klawisza **PgDn**. W poszczególnych liniach dokonujemy wyboru elementów listy - można wyszukiwać je za pomocą funkcji Lista (**Ctrl-F**) i Wyszukiwanie rozszerzone (**Alt-Q**).

Po dodaniu do listy żądanych elementów, należy powrócić do nagłówka dokumentu (klawisz **Esc**) i wyjść z listy - spowoduje to jej zapisanie.

===== Automatyczne dodawanie elementów do listy przy użyciu warunku =====

Elementy do listy można dodawać również w sposób zautomatyzowany, wykorzystywane są do tego warunki. Warunek jest filtrem nałożonym na elementy kartoteki, który powoduje, że tylko elementy spełniające określone kryteria są dodawane do listy.

W celu zadania warunku należy kliknąć przycisk **"Zadaj warunek"**. Po jego kliknięciu otworzy się ekran wyboru warunku - jego zawartość zależy od wybranej wcześniej kartoteki. Zawiera on wszystkie pola dostępne w danej kartotece. Przykładowo, w trakcie tworzenia listy kontrahentów, okno wyboru warunku będzie zawierało wszystkie pola występujące w kartotece kontrahentów (np.: nazwa, symbol, NIP, miasto, przypisany akwizytor). 

**Dodaj element** - kliknięcie tego przycisku powoduje dodanie do listy tych elementów wskazanej wcześniej kartoteki, które spełniają związany z listą warunek (jeżeli został wprowadzony).

__Przykład__

W celu stworzenia listy kontrahentów przypisanych do jednego przedstawiciela handlowego należy w polu **"Kartoteka"** wpisać "Kontrahenci", kliknąć przycisk **"Zadaj warunek"** i w oknie wyboru warunku, w polu **"Akwizytor"** wybrać żądanego przedstawiciela handlowego. Następnie należy zapisać warunek naciskając klawisz **F1** i w nagłówku listy kliknąć przycisk **"Dodaj element"**. Spowoduje to wpisanie do treści listy tych kontrahentów, którzy mają przypisanego w kartotece danego akwizytora.

Jeżeli naszym celem jest sporządzenie listy elementów, które nie mają wypełnionego określonego pola, wtedy w planszy warunku w tym polu wpisujemy słowo brak w nawiasach kwadratowych - [brak]. Np., w celu stworzenia listy kontrahentów, którzy nie mają przypisanego akwizytora, w oknie wyboru warunku w polu "Akwizytor" należy wpisać "[brak]" po czym dodać elementy do listy za pomocą przycisku "**Dodaj element**".

Listy tworzone automatyczne z aktywnym warunkiem są podtrzymywane przez system, tzn. każdy nowy element kartoteki związanej z listą, który spełni warunek z nią związany, zostanie dopisany do listy. Podobnie każdy element, który przestanie spełniać warunek zostanie z listy usunięty. Operacje dodawania i usuwania elementów do listy dokonują się w momencie edycji danej kartoteki. Informacja ta jest o tyle istotna, że **istnienie wielu list z zadanym warunkiem może w zauważalnym stopniu spowolnić działanie systemu**. Z tego powodu nie należy tworzyć wielu list z aktywnym warunkiem.

Jeśli chcemy dodać do listy elementy przy użyciu warunku a jednocześnie zależy nam na szybkości działania systemu, można postąpić w następujący sposób:
  * zadać warunek;
  * dodać do listy elementy spełniające zadany warunek;
  * usunąć warunek przyciskiem **"Usuń warunek"**;

po usunięciu warunku, wszystkie dodane elementy pozostaną zapisane w liście, ale lista nie będzie automatycznie aktualizowana przez system. Dzięki temu można uzyskać niezbędne informacje nie powodując wolniejszego działania systemu w przyszłości.

Z obsługą warunków związane są jeszcze dwa przyciski znajdujące się w nagłówku listy:

**"Usuń element"** - przycisk usuwa z listy elementy, które nie spełniają warunku związanego z listą.

**"Usuń warunek"** - usuwa wcześniej zdefiniowany warunek dla bieżącej listy.

===== Operacje na listach =====

Na istniejących listach można wykonywać następujące operacje: 
  * mnożenie (część wspólna) - operacja wybiera część wspólną listy aktualnie wyświetlanej i wybranej;
  * suma - operacja dodaje elementy listy aktualnie wyświetlanej i innej, wybranej listy;
  * różnica - operacja od listy aktualnie wyświetlanej odejmuje elementy innej, wybranej listy;
  * usunięcie powtarzających się elementów - operacja usuwa powtarzające się elementy wyświetlanej listy.

Po wejściu do nagłówka listy, można wykonywać powyższe operacje. Operacja zmienia zawartość aktualnie wyświetlanej listy. Oznacza to, że jeśli wejdziemy do nagłówka listy A i zsumujemy jej zawartość z listą B, wtedy lista A przestanie istnieć - w jej miejsce pojawi się lista A+B.