OPT074 – Dodawanie kolumn użytkownika na listach

Data aktualizacji: 25-01-2024


Spis treści

Wstęp

Przykłady z instrukcją tworzenia


Wstęp

Użytkownik Comarch ERP Optima ma możliwość dodawania na listach dokumentów kolumn o dowolnej definicji z dowolnej tabeli dostępnej w bazie danych. Dodawanie kolumn odbywa się z pomocą mechanizmu personalizacji okna. Możliwe jest wyłączenie personalizacji listy dla danego operatora, zwykła personalizacja kolumn, które zdefiniował użytkownik poprzez dodanie kolejnych instrukcji JOIN, dodanie wyrażeń definiujących nową kolumnę oraz testowanie całego zapytania.
Można w dowolny sposób dołączać tabele (również z bazy konfiguracyjnej) do zdefiniowanego zapytania SQL oraz definiować kolumny o dowolnej składni pobierania danych. Dodawanie kolumn może odbywać się w łatwy sposób poprzez „przeciągnięcie” wybranej kolumny na listę Kolumny użytkownika. Dodane kolumny można sortować, grupować oraz wykonywać operacje dostępne z wiersza sum.
Po dodaniu kolumn i tabel wydajność pobierania danych na liście może znacznie spaść. Należy rozważyć tutaj dwa przypadki: sama definicja kolumny nie spowoduje żadnego spowolnienia, jeśli kolumna nie będzie widoczna oraz dodatkowa instrukcja LEFT JOIN spowoduje spowolnienie tylko wtedy, gdy będzie widoczna jakaś kolumna wykorzystująca tą instrukcję lub kolumna zostanie użyta w filtrze. Powyższe problemy zostawiamy do rozwiązania wdrożeniowo przez partnera rozszerzającego funkcjonalność listy.

Wygląd okna personalizacji – definiowanie kolumn użytkownika

Funkcjonalność dostępna jest z poziomu personalizacji aktywnego okna <Shift>+<F9> po kliknięciu ikony . Na oknie Personalizacja listy jest możliwość:

  • Dodawania złączeń do kolejnych tabel bazy danych (również z bazy konfiguracyjnej).
  • Dodawania wyrażeń definiujących nową kolumnę danych,  po której będzie można sortować i grupować listę.
  • Testowania całego zapytania.

Okno personalizacji listy podzielone jest na 5 części:

  • Kolumny dostępne z aktualnie wybranych tabel (wraz z dodatkowymi instrukcjami JOIN) – Jest to lista prezentująca wszystkie pola możliwe do pokazania na liście przy aktualnie zdefiniowanej klauzuli FROM wraz z dodatkowymi złączeniami (instrukcjami JOIN) dodanymi przez użytkownika. Lista jest aktualizowana po dołączeniu nowej tabeli przez użytkownika w sekcji Tabele użytkownika. Lista wyświetlana jest w trybie tylko do odczytu, istnieje jednak możliwość „przeciągnięcia” wybranej kolumny na listę Kolumny użytkownika.
  • Kolumny użytkownika – lista kolumn dodanych przez użytkownika. Dla dodanej kolumny można określić jej nazwę dla użytkownika, instrukcję pobierania, typ i format wyświetlania, domyślną widoczność i dostępność kolumny oraz dodatkowy opis.
  • Tabele domyślne – treść zapytania FROM standardowo wysyłanego do serwera SQL – pole do odczytu.
  • Tabele użytkownika – sekcja umożliwiająca dołączenie kolejnych tabel przez użytkownika. Aby dołączyć nową tabelę należy wskazać jej nazwę (wraz z prefixem „CDN”) oraz podać instrukcję łączenia, czyli klauzulę potrzebną do wykonania połączenia tabel (np. TrN_KntID= Knt_KntID).
  • Wynikowe zapytanie SQL – zapytanie utworzone z kolumn zdefiniowanych przez użytkownika i instrukcji FROM z dodanymi złączeniami (instrukcjami JOIN) użytkownika, z możliwością sprawdzenia poprawności wykonania – pole do odczytu.

Rys. Personalizacja listy

Na oknie znajdują się przyciski:

  •  – Sprawdzenie poprawności utworzonego zapytania. Przycisk możliwy do wywołania w dwóch trybach (rozwijalna lista obok przycisku):
  • Sprawdź składnię – weryfikacja poprawności składni zapytań użytkownika, w przypadku poprawnego wykonania testu pojawia się komunikat: Kolumny zostały dodane poprawnie.
  • Sprawdź wydajność – zmierzenie czasu wykonania zapytania użytkownika; pierwsze wykonanie zmienionego zapytania SQL może nie być miarodajne, gdyż Serwer SQL nie będzie jeszcze miał w pamięci cache tego zapytania, w związku z czym pierwsze wykonanie zapytania może być dłuższe, niż kolejne.
  •  Zapis zmian. Jeżeli po wprowadzeniu zmian użytkownik nie sprawdzi poprawności zapytania, zostanie to wykonane w momencie zapisu zmian w dodatkowych kolumnach. Jeżeli zapytanie nie będzie poprawne, okna nie będzie można zapisać. Podczas zapisu okna personalizacji listy sprawdzane jest również, czy modyfikacja zapytania nie spowodowała efektu „rozmnożenia” wierszy na liście (np. faktura pokazuje się na liście tyle razy, ile ma elementów) – taka sytuacja jest błędna i niektóre funkcje programu mogą wówczas nie działać prawidłowo
  •  Eksport ustawień dodatkowych kolumn użytkownika, bez pozostałych ustawień personalizacji. Eksport wykonywany jest do formatu XML.
  •  Import ustawień dodatkowych kolumn użytkownika z pliku XML.

Kolumny użytkownika

Lista umożliwiająca dodanie przez użytkownika nowej kolumny na listę. Zawiera kolumny:

Nazwa dla użytkownika – pod jaką nazwą kolumna będzie widoczna na interfejsie.

Instrukcja pobrania danych – pole z bazy lub można wpisać treść, która występuje w klauzuli SELECT i dotyczy pojedynczej kolumny.

Format wyświetlania – można określić formatowanie zwracanych wartości w kolumnie np. jeżeli do pokazania będzie kolumna typu DateTime, a standardowo część czasowa jest ucinana, potrzebne będzie tu wprowadzenie odpowiedniej wartości formatującej pokazywaną treść. Formatowanie należy ustawić w kolumnie Typ formatu wyświetlania oraz w kolumnie Format wyświetlania. Kolumna Typ formatu wyświetlania przyjmuje 4 wartości:

  • None – dane w definiowanej kolumnie wyświetlane są sposób domyślny
  • Numeric – dane liczbowe
  • DateTime – data/czas
  • Custom – niestandardowy format wyświetlania

Ostatnie 3 opcje definiują w jaki sposób wartości mają być wyświetlane używając formatu z pola Format wyświetlania.

Kolumna Format wyświetlania

  • Standardowe formaty wyświetlania dla liczb.

Standardowy format wyświetlania dla liczb składa się z litery (określającej rodzaj formatu) oraz 2 cyfr (określających precyzję). Rodzaj formatu decyduje w jaki sposób wartość jest transformowana.

Rodzaj formatu

Opis

Przykład formatu

Przykładowa wartość

c lub CLiczba jest wyświetlana jako wartość walutowa. Specyfikacja precyzji określa żądaną ilość miejsc dziesiętnych. Jeżeli precyzja nie zostanie wpisana, zostanie użyta domyślna precyzja wartości formatu waluty z ustawień regionalnych.c2$1,234.00
n lub NLiczba jest wyświetlana w formie "-d,ddd,ddd.ddd...", gdzie każde 'd' oznacza cyfrę. Wartość będzie poprzedzona znakiem minus, jeżeli liczba jest ujemna. Separator tysięcy jest wstawiany między każdą grupę 3 cyfr na lewo od kropki dziesiętnej. Specyfikacja precyzji określa żądaną ilość miejsc dziesiętnych. Jeżeli precyzja nie zostanie wpisana, zostanie użyta domyślna precyzja wartości formatu waluty z ustawień regionalnych.n01.234
d lub DWartość jest wyświetlana jako liczba całkowita ze znakiem minus. Jeżeli wyświetlana będzie liczba z częścią dziesiętna, zostanie ona sformatowana domyślnie. Specyfikacja precyzji określa minimalną ilość cyfr, która ma zostać pokazana. Jeżeli będzie to potrzebne, liczba zostanie dopełniona „nieistotnymi” zerami z lewej strony, aby zapewnić odpowiednią długość wartości. Jeżeli precyzja nie zostanie wybrana, pokazane zostanie dokładnie tyle cyfr, ile potrzeba do reprezentowania wartości bez początkowych zer.D800004392
p lub PLiczba mnożona jest przez 100 i wyświetlana ze znakiem %. Specyfikacja precyzji określa żądaną ilość miejsc dziesiętnych. Jeżeli nie zostanie określona, pokazywane są 4 miejsca dziesiętne.P289,48 %

  • Standardowe formaty wyświetlania dla daty i czasu.

Standardowy format daty/czasu składa się z jednej litery, która określa wzorzec, wg którego wartości będą wyświetlane (czy i w jaki sposób wyświetlać lata, miesiące itd.).

FormatOpisPrzykład
dWzorzec daty krótkiej.04-06-2014
DWzorzec daty długiej.4 czerwca 2014
tWzorzec czasu krótkiego.14:08
TWzorzec czasu długiego.14:08:00
fWzorzec daty długiej i czasu krótkiego.4 czerwca 2014 14:08
FWzorzec daty długiej i czasu długiego.4 czerwca 2014 14:08:00
gWzorzec daty krótkiej i czasu krótkiego.04-06-2014 14:08
GWzorzec daty krótkiej i czasu długiego.04-06-2014 14:08:00
m lub MWzorzec miesiąca i dnia.4 czerwca
y lub YWzorzec roku i miesiąca.czerwiec 2014
sWzorzec sortowalny.2014-06-04T14:08:00

  • Niestandardowe formaty dla liczb

Formaty niestandardowe używane są do ręcznego stworzenia odpowiedniego wzorca. Tego sposobu formatowania należy używać tylko wtedy, gdy standardowe formaty nie są wystarczające. Wszystkie formaty składające się z litery, za którą występują jedna lub dwie cyfry, traktowane są jako formaty standardowe. Wszystkie pozostałe są interpretowane jako formaty niestandardowe. Poniżej znajdują się najczęściej używane symbole do konstruowanie niestandardowych formatów.

ZnakZnaczenie
0Cyfra jest wyświetlana zawsze.
#Cyfra jest wyświetlana, gdy jest potrzebna (używane np, aby nie wyświetlać początkowych zer).
.Określa miejsce kropki dziesiętnej. Wygląd symbolu dziesiętnego zależy od ustawień regionalnych.
,Wyznacza użycie separatora tysięcy. Wygląd separatora zależy od ustawień regionalnych.
%Mnoży liczbę przez 100 i wstawia symbol % zgodny z ustawieniami regionalnymi.
\Kolejny znak jest wstawiany literalnie do wyniku.

  • Niestandardowe formaty daty i czasu

Aby stworzyć wzorzec daty i czasu należy połączyć symbole z tabel poniżej, reprezentujące rok, miesiąc, dzień itd. w różnych formatach.

Symbole dotyczące dat:

SymbolZnaczenieWynik formatownia przykładowej daty (22.06.2014)
yyOstatnie dwie cyfry roku.14
yyyyCztery cyfry roku.2014
MMNumer miesiąca.06
MMMSkrót nazwy miesiąca.cze
MMMMPełna nazwa miesiąca.czerwiec
ddNumer dnia.22
dddSkrót dnia tygodnia.N
ddddPełna nazwa dnia tygodnia.niedziela
/Separator daty. Pobierany z ustawień regionalnych.

  • Symbole dotyczące czasu:

SymbolZnaczenie
hhGodziny.
mmMinuty.
ssSekundy.
:Separator czasu. Pobierany z ustawień regionalnych.

Szczegółowe informacje na temat formatowania danych można odnaleźć na stronach MSDN w obszarze dotyczącym formatowania wartości (Formatting types: http://msdn.microsoft.com/en-us/library/dwhawy9k(v=vs.100).aspx).

Domyślnie Widoczna/Dostępna – domyślne wartości, jakie ustawią się dla tej kolumny na liście.

Opis – dodatkowy opis pokazujący się po najechaniu myszką na nagłówek kolumny.

Tabele użytkownika

Lista umożliwiająca dołączenie kolejnych tabel lub innych obiektów dozwolonych przez SQL do wykonywanego już zapytania. Zawiera kolumny:

Lp – liczba porządkowa, służy do ustalenia kolejności dołączania tabel w zapytaniu.

Nazwa tabeli – nazwa tabeli ze struktury bazy danych.

Instrukcja łączenia – klauzula potrzebna do wykonania połączenia tabel np. TrN_KntID= Knt_KntID.

Parametr kolumny użytkownika na oknie personalizacji

Na oknie personalizacji znajduje się kolumna Kolumny użytkownika. Domyślnie każdy operator ma zaznaczoną tę wartość, co oznacza, że dla tego operatora są dostępne do wyboru dodatkowo zdefiniowane kolumny. Jeżeli parametr dla operatora będzie odznaczony – wówczas pomimo dodanych nowych kolumn w personalizacji, lista dla tego operatora będzie miała dostępne tylko standardowe kolumny. Na rozwijanej liście z dostępnymi kolumnami, te dodane przez użytkownika wraz z przeniesionymi domyślnymi ustawieniami w kolumnach Widoczna i Dostępna będą widoczne na końcu listy, dodatkowo pisane kursywą dla łatwego ich odróżnienia od kolumn standardowych.

Rys. Okno personalizacji

Dodawanie kolumn na listach

Podczas uruchamiania okna programu z listą, która ma dodane przez użytkownika niestandardowe tabele, zostanie najpierw wykonane sprawdzenie, czy zapytanie użytkownika nie zwraca większej ilości wierszy, niż zapytanie standardowe. Jeżeli ilość wierszy będzie taka sama, wówczas okno uruchomi się w spersonalizowanym trybie. Jeżeli natomiast ilość wierszy będzie różna, wówczas wygenerowany zostanie komunikat: Dodatkowe tabele dodane w personalizacji powodują powielanie wierszy na liście. Lista zostanie uruchomiona w trybie standardowym., po czym nastąpi uruchomienie okna bez dodatkowych kolumn i tabel.

Uwaga
Dodanie każdej tabeli użytkownika powoduje modyfikację treści FROM zapytania. W związku z tym wskazanie np. tabeli z elementami dokumentu (nawet bez wybrania kolumn z tej tabeli) będzie powodować zduplikowanie wyświetlanych wierszy i generowanie powyższego komunikatu przy otwieraniu listy.

Jeżeli nie uda się pobieranie danych na listę z dodatkowymi kolumnami i/lub tabelami, pokazany zostanie komunikat Błąd pobierania danych na listę. Lista zostanie uruchomiona w trybie standardowym., a następnie okno programu zostanie uruchomione bez dodatkowych kolumn i tabel.

W przypadku ustawienia filtrowania lub sortowania wg dodanej przez użytkownika kolumny, wydruki z list mogą nie działać poprawnie, jednakże wydruk bieżącego widoku powinien zawsze działać poprawnie.

W menu Narzędzia/ Testy integralności jest dostępny test Okna z dodatkowymi kolumnami sprawdzający, do których okien dodane zostały kolumny lub tabele użytkownika i prezentujący w logu nazwy tych okien.

Przekazywanie zmiennych dynamicznych

W polach Instrukcja wprowadzania danych oraz Instrukcja łączenia istnieje możliwość przekazania wybranych wartości ze zmiennych dynamicznych oraz wartości z panelu filtra. Otrzymujemy możliwość uzależnienia wartości pokazywanych w dodatkowych kolumnach od wartości ze zmiennych dynamicznych (np. uzależnienie od Operatora), czy wartości z panelu filtra (np. uzależnienie od daty aktualności listy).

W polach wprowadzania instrukcji, gdzie podajemy konkretne wartości (np. 2017-11-21) mamy możliwość wykorzystania specjalnych aliasów, odpowiadających tym wartościom (np. #CDN_DataBiezaca#), przekazujących wybrane zmienne dynamiczne lub wartości z panelu filtra. Aby ułatwić wstawienie odpowiedniego aliasu menu kontekstowe wyświetla listę dostępnych wartości:

Parametry standardowe - przy dodawaniu kolumn udostępnione zostały wybrane wartości ze zmiennych dynamicznych. Po wybraniu opcji Parametry standardowe rozwija się dodatkowe menu z następującymi wartościami:

Parametry filtra - po wybraniu opcji Parametry filtra rozwija się dodatkowe menu z wartościami przekazywanymi z panelu filtra danej listy. Między różnymi listami mogą być różne parametry filtra. Poniżej przykład z wartościami przekazywanymi z listy pracowników:

Po wybraniu wartości w miejsce kursora zostanie wstawiony odpowiedni alias.

Przykłady z instrukcją tworzenia

Handel

1. Lista zasobów/cennik. Kolumny: kod PLU, nazwa fiskalna oraz waga towaru

Potrzebne pola znajdują się w tabeli CDN.Towary. Na oknie personalizacji listy w sekcji Kolumny dostępne z aktualnie wybranych tabel należy odnaleźć pole Twr_PLU i przeciągnąć do sekcji Kolumny użytkownika oraz nadać nazwę dla kolumny. Tak samo należy postąpić w przypadku pozostałych kolumn czyli Twr_NazwaFiskalna oraz Twr_WagaKG. Dodatkowo dla pola Waga ustawiamy w kolumnie Typ formatu wyświetlania na Numeric a Format wyświetlania na N4 (N- wartość numeryczna, 4 – wyświetlanie do czterech miejsc dziesiętnych).

2. Lista zasobów/cennik. Kolumny: kod CN oraz kraj pochodzenia

Potrzebne pola znajdują się w tabeli CDN.Towary oraz CDN.KodyCN. Na oknie personalizacji listy w sekcji Tabele użytkownika należy połączyć powyższe tabele aby mieć dostęp do pól związanych z kodami CN. W związku z powyższym w kolumnie Nazwa tabeli podajemy tabelę CDN.KodyCN a w kolumnie Instrukcja łączenia wprowadzamy pola klucze łączące obie tabele Twr_KCNId=KCN_KCNId zgodnie ze strukturą bazy danych. Teraz w sekcji Kolumny dostępne z aktualnie wybranych tabel pojawią się pola z tabeli CDN.KodyCN. Należy odnaleźć pole KCN_Kod i przeciągnąć do sekcji Kolumny użytkownika oraz nadać nazwę dla kolumny. Tak samo należy postąpić w przypadku kolumny Twr_KrajPochodzenia.

3. Lista zasobów/cennik. Kolumna marża procentowa dla ceny hurtowa1 - szybkie sprawdzenie przewidywanej marży

Ceny zapisywane są w tabeli CDN.TwrCeny i wiązane z tabelą CDN.Towary po kluczu TwC_TwrId=Twr_TwrId. Ponieważ chcemy uzyskać marżę dla ceny o numerze drugim rozwiązaniem będzie zastosowanie zapytania SQL w kolumnie Instrukcja pobierania danych w sekcji Kolumny użytkownika. Ponieważ dodawanie kolumn odbywa się na oknie towarów należy w zapytaniu aliasować pole Twr_TwrId. Zapytanie będzie mieć następującą postać:
(SELECT TwC_Marza From CDN.TwrCeny WHERE TwC_TwrId=A.Twr_TwrId And TwC_TwCNumer=2)

Kolumna ta ma pokazywać wartość w procentach w związku z tym ustawiamy w kolumnie Typ formatu wyświetlania typ na Custom oraz w kolumnie Format wyświetlania ustawiamy maskę 00.00”%” (0 – oznacza że cyfra jest zawsze wyświetlana, . – oznacza miejsca dziesiętne, „%” – dodanie na końcu znaku procent).

4. Lista zasobów. Ilość dni zalegania towaru na magazynie/ach na podstawie najstarszej dostawy.

W sekcji Kolumny użytkownika należy dodać kolumnę o instrukcji pobierania danych:

(SELECT TOP 1 CASE WHEN #filtrMagazynGridLookup_ID# = 0 then 
(SELECT DATEDIFF(DAY, min(TwZ_Data), GETDATE()) AS DateDiff

FROM CDN.TwrZasoby

WHERE Twr_TwrId = TwZ_TwrId)

else (SELECT DATEDIFF(DAY, min(TwZ_Data), GETDATE()) AS DateDiff

FROM CDN.TwrZasoby

WHERE Twr_TwrId = TwZ_TwrId AND TwZ_MagId = #filtrMagazynGridLookup_ID#) end)

5. Lista zasobów/cennik. Kolumna średnia cena zakupu dla dostaw, które nie zostały zdjęte z magazynu

Wyświetla średnią ważoną dla cen, po których dostawy danego towaru zostały wprowadzone do magazynu. Brane pod uwagę są tylko dostawy, które ciągle znajdują się w magazynie. Listę tych dostaw można sprawdzić otwierając formularz towaru i przechodząc na zakładkę Zasoby.

(SELECT CONVERT(DECIMAL(10, 2), AVG(TwZ_Wartosc/TwZ_Ilosc)) FROM CDN.TwrZasoby
WHERE TwZ_TwrId=Twr_TwrId)

6. Lista zasobów/cennik. Kolumna wyświetlająca ‘Tak’ jeśli towar/usługa jest udostępniany w przynajmniej jednym e-Sklepie oraz ‘Nie’ jeśli nie jest udostępniany

CASE WHEN EXISTS 
(SELECT * FROM Cdn.TwrESklep WHERE Twes_TwrID=Twr_TwrId AND Twes_Udostepnij=1) 
THEN 'Tak' ELSE 'Nie' END

7. Lista kontrahentów. Kolumna z listą atrybutów przypisanych do kontrahenta

Atrybuty przedstawiane są w formie Nazwa_atrybutu: Wartość.

STUFF(
(SELECT ', ' + DA.DeA_Kod + ': ' + KA.KnA_WartoscTXT
FROM CDN.KntAtrybuty KA
JOIN CDN.DefAtrybuty DA ON KA.KnA_DeAId=DA.DeA_DeAId
WHERE KA.KnA_PodmiotId=Knt_KntId 
FOR XML PATH (''))
,1,2,'')

8. Lista zestawów promocyjnych. Kolumna z maksymalną liczbą zestawów jakie można utworzyć, biorąc pod uwagę ilości towarów wchodzących w skład zestawu znajdujące się w magazynach

Łączna ilość ze wszystkich magazynów, dla towaru wchodzącego w skład zestawu promocyjnego jest dzielona przez ilość, w jakiej ten towar występuje w składzie zestawu. Kolumna wyświetla najniższy wynik takich obliczeń (zaokrąglony w dół do liczb całkowitych), wykonanych dla wszystkich towarów wchodzących w skład zestawu.

(SELECT FLOOR(MIN(t.sum1)) FROM
(SELECT SUM(TZ.TwZ_Ilosc) sum1 FROM CDN.TwrZasoby TZ 
JOIN CDN.ZestawyTwr ZT ON TZ.TwZ_TwrId=ZT.ZTw_TwrId
WHERE ZT.ZTw_ZTwId=ZTw_ZTwId
UNION
SELECT SUM(TZ.TwZ_Ilosc/ZTS.ZTS_Ilosc) sum1 FROM CDN.TwrZasoby TZ 
JOIN CDN.ZestawyTwrSkladniki ZTS ON TZ.TwZ_TwrId=ZTS.ZTS_TwrId
WHERE ZTS.ZTS_ZTwId=ZTw_ZTwId
GROUP BY TwZ_TwrId) t)

9. Lista dokumentów w module Handel. Kolumna Mail

Jeśli użytkownik korzysta ze skrzynki pocztowej w module CRM i wysyła wydruki faktur do swoich klientów drogą mailową to korzystając z powiązania faktura sprzedaży – mail może na liście faktur wyświetlić informację, czy faktura została wysłana do klienta. Informacja ta jest oparta o sprawdzenie czy z fakturą skojarzony jest jakikolwiek mail.

Mail - w sekcji Kolumny użytkownika dodać kolumnę o instrukcji pobierania danych:
CASE WHEN EXISTS (SELECT * FROM CDN.DokRelacje WHERE Dor_DokumentId=A.TrN_TrnId AND Dor_ParentTyp=1011 AND DoR_DokumentTyp = 302) THEN 'Tak' ELSE 'Nie' END

10. Lista dokumentów w module Handel. Kolumna Wydruk

Jeśli użytkownik wykonuje kopie elektroniczne wydruków faktur sprzedaży to korzystając z powiązania faktura sprzedaży – wydruk w archiwum może na liście faktur wyświetlić informację czy faktura została wydrukowana. Dla przypomnienia: kopie elektroniczne wydruków są tworzone po zaznaczeniu parametru na definicji wydruku.

Wydruk - w sekcji Kolumny użytkownika dodać kolumnę o instrukcji pobierania danych:
CASE WHEN EXISTS (SELECT * FROM CDN.WdrKopieElektroniczne WHERE WdKE_ObjId=A.TrN_TrNId AND WdKE_ObjType=A.TrN_typDokumentu) THEN 'Tak' ELSE 'Nie' END

11. Lista dokumentów w module Handel. Kolumna e-mail kontrahenta (Nabywcy)

Należy skorzystać z widoku CDN.PodmiotyView i dostępnego pola Pod_Email. W zapytaniu sql pola z tego widoku muszą być aliasowane. Należy odnaleźć pole Pod_Email i przeciągnąć do sekcji Kolumny użytkownika nadać nazwę dla kolumny, a następnie edytować kolumnę Instrukcja pobierania danych i ustawić alias. Ostateczna postać wyrażenia Pod.Pod_Email.

12. Lista dokumentów w module Handel. Kolumna z informacją o akronimie operatora, który zmodyfikował dokument

Dane o operatorach zapisane są w bazie konfiguracyjnej w tabeli CDN. Operatorzy. Należy wykonać złączenie do bazy konfiguracyjnej i powyższej tabeli. Na oknie personalizacji listy w sekcji Tabele użytkownika w kolumnie Nazwa tabeli podajemy tabelę i nazwę bazy do której jest ona podpięta, obie tabele muszą istnieć na serwerze SQL. Wprowadzamy [CDN_KNF_Konfiguracja].[CDN].[Operatorzy] a w kolumnie Instrukcja łączenia wprowadzamy pola klucze łączące tabele CDN.Operatorzy i CDN.TraNag czyli Ope_OpeId=TrN_OpeModId zgodnie ze strukturą bazy danych. Należy odnaleźć pole Ope_Kod i przeciągnąć do sekcji Kolumny użytkownika oraz nadać nazwę dla kolumny.

13. Lista dokumentów w module Handel. Kolumna z nazwą dnia tygodnia terminu płatności

Należy skorzystać z funkcji sqlowej CDN. NazwaDnia i podać dla niej parametry TrN_Termin oraz tryb 0. W związku z powyższym w sekcji Kolumny użytkownika w kolumnie Instrukcja łączenia wprowadzamy wyrażenie:
(SELECT CDN.NazwaDnia(A.TrN_Termin, 0))

14. Lista dokumentów w module Handel. Sumaryczna waga dokumentu

Na karcie towaru można podać jego wagę, a informacja ta jest zapisywana w tabeli CDN.Towary. Aby wyświetlić na liście sumaryczną wagę dla danego dokumentu należy skorzystać z poniższego zapytania:

(SELECT CAST(SUM(TRE.TrE_Ilosc * TWR.Twr_WagaKG) as numeric(36,4)) FROM CDN.TraElem TRE LEFT JOIN CDN.Towary TWR on TWR.Twr_TwrId = TRE.TrE_TwrId WHERE TRE.Tre_TrNID = A.Trn_TrnId)

15. Lista dokumentów w module Handel. Kolumna z formą płatności

Kolumna wyświetla nazwę formy płatności, która została wybrana na formularzu dokumentu.

(SELECT FPl_Nazwa FROM CDN.FormyPlatnosci WHERE FPl_FPlId=TrN_FPlId)

16. Lista dokumentów w module Handel. Akronim operatora lub pracownika, który jest opiekunem kontrahenta, dla którego został wystawiony dokument

Wyświetla akronim operatora lub pracownika, który został wskazany na formularzu kontrahenta (zakładka Dodatkowe) wybranego na dokumencie.

Dane o operatorach zapisane są w bazie konfiguracyjnej. Zamiast CDN_KNF_Konfiguracja należy wprowadzić nazwę własnej bazy konfiguracyjnej.

(SELECT Ope_Kod 
FROM CDN_KNF_Konfiguracja.CDN.Operatorzy O 
JOIN CDN.Kontrahenci Knt ON TrN_PodID=Knt.Knt_KntId
WHERE Knt.Knt_OpiekunId=O.Ope_OpeID AND Knt.Knt_OpiekunTyp=8
UNION
SELECT Pre_Kod FROM CDN.PracEtaty PE 
JOIN CDN.Kontrahenci Knt ON TrN_PodID=Knt.Knt_KntId
WHERE Knt.Knt_OpiekunId=PE.Pre_PreId AND Knt.Knt_OpiekunTyp=3)

17. Lista dokumentów w module Handel. Kolumna pokazująca łączną wysokość opłaty cukrowej naliczonej dla pozycji danego dokumentu

(SELECT CONVERT(DECIMAL(10,2), SUM(TrE_Ilosc*Tre_OplataCukrowaDoliczDoCeny*
TrE_OplataCukrowaPrzelicznikML/1000)) FROM CDN.TraElem 
WHERE TrE_TrNId=TrN_TrNId)

18. Wyświetlanie na listach dokumentów numerów powiązanych dokumentów Zlecenia Nadania Przesyłek.

  • Kolumna wyświetla wszystkie zlecenia rozdzielone przecinkami.

W sekcji Kolumny użytkownika należy dodać kolumnę o instrukcji pobierania danych:

Dla dokumentów handlowo-magazynowych:

 (SELECT SZL.SZL_NumerPelny + ', ' FROM CDN.SenditZleceniePrzesylki SZL
WHERE A.Trn_TrnID IN (select [Data] from CDN.SplitString(SZL.SZL_DokZrodlowe,','))
and SZL_DokZrodloweTyp = A.Trn_TypDokumentu
ORDER BY SZL.SZL_SZLID FOR XML PATH (''))

Dla dokumentów Zleceń serwisowych:

 (SELECT SZL.SZL_NumerPelny + ', ' FROM CDN.SenditZleceniePrzesylki SZL
WHERE A.SrZ_SrZId (select [Data] from CDN.SplitString(SZL.SZL_DokZrodlowe,','))
and SZL_DokZrodloweTyp = 900
ORDER BY SZL.SZL_SZLID FOR XML PATH (''))
  • Kolumna wyświetla pierwsze powiązane zlecenie wg ID, a po najechaniu na ten numer wszystkie powiązane.

W sekcji Kolumny użytkownika należy dodać kolumnę o instrukcji pobierania danych:

Dla dokumentów handlowo-magazynowych:

 (SELECT SZL.SZL_NumerPelny + char(10) FROM CDN.SenditZleceniePrzesylki SZL
WHERE A.Trn_TrnID IN (select [Data] from CDN.SplitString(SZL.SZL_DokZrodlowe,','))
and SZL_DokZrodloweTyp = A.Trn_TypDokumentu
ORDER BY SZL.SZL_SZLID FOR XML PATH (''))

Dla dokumentów Zleceń serwisowych:

(SELECT SZL.SZL_NumerPelny + char(10) FROM CDN.SenditZleceniePrzesylki SZL
WHERE A.SrZ_SrZId IN (select [Data] from CDN.SplitString(SZL.SZL_DokZrodlowe,','))
and SZL_DokZrodloweTyp = 900
ORDER BY SZL.SZL_SZLID FOR XML PATH (''))

19. Lista faktur sprzedaży. Kolumna pozostaje do zapłaty

Należy skorzystać z tabeli CDN.BnkZdarzenia. Kolumna Pozostaje do zapłaty musi zostać wyliczona poprzez odjęcie od pola Razem pola Zapłacono. Trzeba stworzyć wyrażenie, które będzie sprawdzać, czy faktura została utworzona z paragonu, gdyż w przypadku, gdy faktura została przekształcona z paragonu zapisy kasowo/bankowe są tworzone dla paragonu. Do sprawdzenia, czy faktura została utworzona z paragonu, posłuży pole TrN_Rodzaj oraz pole TrN_TrNFaId z tabeli CDN.TraNag. W sekcji Kolumny użytkownika należy dodać kolumnę o nazwie Pozostaje do zapłaty i następującej instrukcji pobierania danych:

CASE WHEN TrN_Rodzaj=302006 THEN (SELECT SUM(Bzd_Kwota * BZd_Kierunek) FROM CDN.BnkZdarzenia WHERE Bzd_DokumentTyp=1 AND Bzd_DokumentId=A.TrN_FaId) - (SELECT SUM(Bzd_KwotaRoz * Bzd_Kierunek) FROM CDN.BnkZdarzenia WHERE Bzd_DokumentTyp=1 AND Bzd_DokumentId =A.TrN_FaId) ELSE (SELECT SUM(Bzd_Kwota * BZd_Kierunek) FROM CDN.BnkZdarzenia WHERE Bzd_DokumentTyp=1 AND Bzd_DokumentId=A.TrN_TrNId) - (SELECT SUM(Bzd_KwotaRoz * Bzd_Kierunek) FROM CDN.BnkZdarzenia WHERE Bzd_DokumentTyp=1 AND Bzd_DokumentId =A.TrN_TrNId) END

Jeśli płatności do dokumentów są w różnych walutach, to powyższe zapytanie należy zmodyfikować i dostosować do potrzeb użytkownika.

20. Lista Faktur Sprzedaży oraz Faktur Zakupu. Wyświetlanie rozliczających dokumentów KP/KW.

W sekcji Kolumny użytkownika należy dodać kolumnę o instrukcji pobierania danych:

ISNULL(STUFF((SELECT '# ' + CASE WHEN BRK_LDokTyp=1 AND BRK_LDokID=BZd_BZdID THEN
BRK_PNumer ELSE BRK_LNumer END
FROM cdn.BnkZdarzenia A JOIN
cdn.BnkRozKwoty B ON (B.BRK_LDokTyp=1 AND B.BRK_LDokID=A.BZd_BZdID OR
B.BRK_PDokTyp=1 AND B.BRK_PDokID=A.BZd_BZdID)
WHERE ((((BZd_DokumentTyp = 1 AND BZd_DokumentID = TrN_TrNID)))) FOR XML
PATH('')),1,1,''),'nierozliczony')

21. Lista Faktur Sprzedaży oraz Faktur Zakupu. Wyświetlanie daty rozliczenia dokumentu.

W sekcji Kolumny użytkownika należy dodać kolumnę o instrukcji pobierania danych:

(ISNULL((Select DataRoz=STUFF( (SELECT ', ' + cast(Bzd_dataRoz as nvarchar(25))
From CDN.BnkZdarzenia T1 WHERE T1.BZd_DokumentID = T2.BZd_DokumentID
FOR XML PATH ('')), 1, 1, '')
FROM CDN.BnkZdarzenia T2 Where BZd_DokumentTyp = 1
And BZd_DokumentId = TrN_TrNId group
by BZd_DokumentID),' nierozliczony'))

22. Lista Faktur Sprzedaży oraz Paragonów. Wyświetlanie powiązanych dokumentów Wydania Zewnętrznego.

W sekcji Kolumny użytkownika należy dodać kolumnę o instrukcji pobierania danych:

STUFF((select ', ' + POW.TrN_NumerPelny from CDN.Powiazania(A.Trn_TrnId,
A.TrN_TypDokumentu) POW where POW.TrN_TypDokumentu = 306 
FOR XML PATH('')), 1, 2, '')

23. Lista Faktur Sprzedaży oraz Wydań Zewnętrznych. Wyświetlanie powiązanych korekt.

W sekcji Kolumny użytkownika należy dodać kolumnę o instrukcji pobierania danych:

(select TRN.TrN_NumerPelny + ', ' from cdn.tranag TRN where 
TrN_ZwrId = A.TrN_TrNID AND TRN.TrN_Anulowany = 0 for xml path (''))

24. Lista dokumentów WZ. Kolumna marża

Marża wyliczana jest jako różnica pomiędzy sumą Wartości Netto pozycji dokumentu a sumą ich Wartości Zakupu. Zastosujemy zapytanie SQL w kolumnie Instrukcja pobierania danych w sekcji Kolumny użytkownika. Zapytanie wyliczające marżę dokumentu będzie wyglądać następująco:
(SELECT SUM(TrE_WartoscNetto) - SUM(TrE_WartoscZakupu) FROM CDN.TraElem WHERE TrE_TrnId=A.TrN_TrnId)

25. Wyświetlanie na liście Wydań Zewnętrznych informacji, czy do powiązanego z nim zamówienia (Rezerwacji Odbiorcy) ma być wystawiony Paragon/Faktura.

W sekcji Kolumny użytkownika należy dodać kolumnę o instrukcji pobierania danych:

(SELECT
CASE TRN.TrN_eSklepRodzajDokumentu
       WHEN 1 THEN 'Paragon'
       WHEN 2 THEN 'Faktura'
       ELSE '' END
FROM CDN.Tranag TRN
where TRN.TrN_TrNID = (Select top 1 ISNULL(TrN_TrnID,0) from
cdn.Powiazania(A.Trn_TrnID,306) where TrN_TypDokumentu = 308 
order by Trn_DataOpe))

26. Wyświetlanie na liście Rezerwacji Odbiorcy informacji, czy do zamówienia ma być wystawiony Paragon/Faktura.

W sekcji Kolumny użytkownika należy dodać kolumnę o instrukcji pobierania danych:

(CASE A.TrN_eSklepRodzajDokumentu WHEN 1 THEN 'Paragon' WHEN 2 THEN 'Faktura' ELSE '' END)

27. Lista Faktur Pro Forma. Kolumna wyświetlająca sumę wartości netto wszystkich powiązanych Faktur Zaliczkowych

(SELECT SUM(TN.TrN_RazemNetto) 
FROM CDN.TraNag TN
JOIN CDN.TraNagRelacje TNR ON TNR.TrR_TrNId = TN.TrN_TrNID 
WHERE TNR.TrR_FaId = A.TrN_TrNID AND TN.TrN_Rodzaj=302200)

28. Lista zgłoszeń przewozu towaru SENT – Kod CN.

W sekcji Kolumny użytkownika należy dodać kolumnę o instrukcji pobierania danych:

STUFF(
(
SELECT ', ' + CAST(SNEL_KodCN AS VARCHAR(MAX))
FROM CDN.SentElement WHERE SNEL_SentID = Sent_SentID

FOR XML PATH('')
) ,1,2,'' )

29. Formularz dokumentu w module Handel. Ostatnia cena zakupu

W pierwszej kolejności należy dołączyć tabelę CDN.TwrCeny – instrukcja łączenia: twc_twrid = tre_twrid

Kolejny krok to samo zapytanie wyciągające cenę zakupu z cennika. Będzie to zawsze ostatnia cena zakupu zgodnie z konfiguracją programu (uwzględnianie korekt itp.):
(SELECT TwC_Wartosc from CDN.TwrCeny WHERE TwC_TwCNumer =1 AND TwC_TwrId = TrE_TwrId)

30. Formularz dokumentu w module Handel. Sumaryczna waga pozycji

Na karcie towaru można podać jego wagę, a informacja ta jest zapisywana w tabeli CDN.Towary. Aby wyświetlić na formularzu dokumentu sumaryczną wagę dla danej pozycji, należy skorzystać z poniższego zapytania:

(SELECT CAST(_DATASOURCE_.TrE_Ilosc * TWR.Twr_WagaKG as numeric(36,4)) FROM cdn.Towary TWR WHERE TWR.Twr_TwrId = _DATASOURCE_.TrE_TwrId)

31. Formularz dokumentu w module Handel. Kolumny: Ilość dostępna i braki towaru, na magazynie z dokumentu i z datą wystawienia dokumentu

Na oknie konfiguracji kolumn dodatkowych dodajemy w obszarze dodatkowych tabel tabelę CDN.TraNag z łączem UsrA.Trn_TrnID = Tre_TrnID

Następnie w oknie dodatkowych kolumn dodajemy kolumnę Ilość dostępna:
(select case when TwI_Ilosc - TwI_Rezerwacje >0 then TwI_Ilosc - TwI_Rezerwacje else 0 end from
CDN.TwrIlosci B
where
B.TwI_TwrId = Tre_TwrId and
B.TwI_MagId = TrE_MagId --MagID
And B.TwI_Data = (
Select Top 1 H.TwI_Data From CDN.TwrIlosci H Where H.TwI_TwrId = B.TwI_TwrID --A.Twr_TwrId
and H.TwI_MagId = TrE_MagId --magId
And H.TwI_Data <= TrN_DataDok --'2016-03-10'
Order By H.TwI_Data Desc ))

A dla kolumny Braki:
(select TwI_Braki from
CDN.TwrIlosci B
where
B.TwI_TwrId = Tre_TwrId and
B.TwI_MagId = TrE_MagId --MagID
And B.TwI_Data = (
Select Top 1 H.TwI_Data From CDN.TwrIlosci H Where H.TwI_TwrId = B.TwI_TwrID --A.Twr_TwrId
And H.TwI_MagId = TrE_MagId --magId
And H.TwI_Data <= TrN_DataDok --'2016-03-10'
Order By H.TwI_Data Desc ))

32. Formularz dokumentu w module Handel. Ostatnia cena zakupu, data ostatniej dostawy oraz średnia cena zakupu

Ostatnia cena zakupu:

Należy dodać tabelę CDN.TwrCeny z łączeniem Tre_TwrId = Twc_TwrId and Twc_TwCNumer = 1

Instrukcja pobierania danych dla kolumny ma postać:

TwC_Wartosc

Data ostatniej dostawy:

Należy dodać tabelę CDN.TraSElem z łączeniem Tre_TwrId = Trs_TwrId

Instrukcja pobierania danych dla kolumny ma postać:

(select MAX(trs_dataope) from cdn.traselem where trs_typ = 1)

Średnia cena zakupu:

Należy dodać tabelę CDN.TraSElem z łączeniem Tre_TwrId = Trs_TwrId

Instrukcja pobierania danych dla kolumny ma postać:

(select CONVERT(decimal(10,2), AVG(trs_cena)) from cdn.traselem where trs_typ = 1)

33. Formularz dokumentu w module Handel. Kolumna wartość atrybutu pozycji

W sekcji Kolumny użytkownika należy dodać kolumnę o instrukcji pobierania danych:

STUFF( (SELECT ', ' + CASE trA_Wartosc WHEN '' THEN '{pusty}' ELSE CASE DEA.DeA_Format WHEN 4 THEN CAST(FORMAT(DATEADD(DAY,CAST(trA_Wartosc AS INT),'1800/12/28'),'yyyy-MM-dd') AS NVARCHAR) ELSE TrA_Wartosc END END FROM cdn.TraElemAtr TRA LEFT JOIN cdn.DefAtrybuty DEA ON TRA.TrA_DeAId = DEA.DeA_DeAId WHERE TRA.TrA_Kod='KOD_ATRYBUTU' AND TRA.TrA_TrEID = TrE_TrEId FOR XML PATH ('')) ,1,2,'')

gdzie w miejsce KOD_ATRYBUTU trzeba wprowadzić konkretny kod.

34. Formularz dokumentu w module Handel. Kolumna pokazująca, z którego dokumentu agregowanego pochodzi dana pozycja

W przypadku gdy dokument, którego formularz jest aktualnie otwarty powstał w wyniku przekształcenia więcej niż jednego dokumentu, możliwe będzie zidentyfikowanie z jakiego dokumentu pochodzi dana pozycja.

STUFF(
(SELECT ', ' + TRN.TrN_NumerPelny
FROM CDN.TraNag TRN
JOIN CDN.TraElem TE ON TE.TrE_TrNId=TRN.TrN_TrNId
JOIN CDN.TraElemRelacje TER ON TER.TeR_ParentId=TE.TrE_TrEID
WHERE TER.TeR_ChildId=_DATASOURCE_.TrE_TrEID
FOR XML PATH (''))
,1,2,'')

35. Formularz dokumentu w module Handel. Kolumna z listą atrybutów przypisanych do pozycji dokumentu

Atrybuty przedstawiane są w formie Nazwa_atrybutu: Wartość. Prawidłowe wartości w tej kolumnie będą się wyświetlać dopiero po zapisaniu i ponownym otwarciu dokumentu.

STUFF(
(SELECT ', ' + ATR.TrA_Kod + ': ' + ATR.TrA_Wartosc 
FROM CDN.TrAElemAtr ATR 
WHERE ATR.TrA_TrEId=_DATASOURCE_.TrE_TrEID 
FOR XML PATH (''))
,1,2,'')

36. Formularz Inwentaryzacji. Średnia cena zakupu dostaw znajdujących się w magazynie, dla którego wykonywana jest inwentaryzacja

Kolumna dla każdego z towarów wprowadzonych na Arkusz Inwentaryzacyjny wyświetla średnią cenę zakupu dostaw, które ciągle znajdują się w magazynie, dla którego wykonywana jest inwentaryzacja.

(SELECT CONVERT(DECIMAL(10,2), AVG(TwZ_Wartosc/TwZ_Ilosc)) 
FROM CDN.TwrZasoby 
WHERE TwZ_TwrId=TrE_TwrId AND TrE_MagId=TwZ_MagId)

37. Okno historii Towaru - kolumna opis dokumentu

W sekcji Kolumny użytkownika należy dodać kolumnę o instrukcji pobierania danych:
(Select Trn_Opis from cdn.TraNag TRN where TRN.TrN_TrNId = _DATASOURCE_.TrNId)

Serwis, CRM, Obieg dokumentów

1. Lista zleceń serwisowych. Kolumny: nazwa urządzenia, opis urządzenia, priorytet zlecenia

Nazwa urządzenia - należy skorzystać z dostępnej na liście kolumny: SrU_Nazwa

Opis urządzenia - należy skorzystać z dostępnej na liście kolumny: SrU_Opis

Priorytet zlecenia - w sekcji „Kolumny użytkownika” dodać kolumnę o instrukcji pobierania danych:CASE SrZ_Priorytet WHEN 1 THEN 'najwyższy' WHEN 2 THEN 'wysoki' WHEN 3 THEN 'niski' WHEN 4 THEN 'najniższy' END

2. Zlecenie serwisowe. Zakładka Części. Kolumna z numerem dokumentu wydającego część

W sekcji Tabele użytkownika należy wykonać złączenie do trzech tabel:

  • CDN.TraElemRelacje po polach TeR_ParentId = SrC_SrCId and TeR_ParentTyp = 902,
  • CDN.TraElem po polach TrE_TrEId = TeR_ChildId,
  • CDN.TraNag po polach TrN_TrNId = TrE_TrNId.

Następnie w sekcji Kolumny użytkownika należy dodać kolumnę o instrukcji pobierania danych TrN_NumerPelny.

3. Lista Ofert Handlowych. Kolumna zawierająca numery dokumentów powiązanych

Kolumna wyświetla dokumenty, które powstały z przekształcenia danej Oferty Handlowej.

STUFF(
(SELECT ', ' + TRN.TrN_NumerPelny
FROM CDN.TraNag TRN
JOIN CDN.DokRelacje DR ON DR.DoR_DokumentId=TRN.TrN_TrNID
WHERE DR.DoR_ParentId = OfD_OfDId AND DR.DoR_ParentTyp=800 
FOR XML PATH (''))
,1,2,'')

4. Oferta Handlowa. Dodanie kolumny zawierającej cenę zakupu w liście elementów

W sekcji Tabele użytkownika należy wykonać złączenie do jednej tabeli : CDN.TwrCeny

W polu instrukcja łączenie wpisujemy TwC_TwCNumer=1 and TwC_TwrID =TwrId

W obszarze Kolumny użytkownika dodajemy nową kolumnę Cena Zakupu o instrukcji TwC_Wartosc

5. Formularz Oferty Handlowej, zakładka Kontrahent. Kolumna z numerami dokumentów, które zostały wygenerowane dla danego Kontrahenta poprzez przekształcenie aktualnie otwartej Oferty

STUFF(
(SELECT ', ' + TRN.TrN_NumerPelny
FROM CDN.TraNag TRN
JOIN CDN.DokRelacje DR ON TRN.TrN_TrNId=DR.DoR_DokumentId
JOIN CDN.OfertyKnt OK ON DR.DoR_ParentId=OK.OfK_OfDId
WHERE OK.OfK_OfKId=_DATASOURCE_.Ofk_OfkId AND DR.DoR_ParentTyp=800 AND 
TRN.TrN_PodID=_DATASOURCE_.Ofk_PodID
FOR XML PATH (''))
,1,2,'')

6. Lista biblioteki dokumentów. Kolumny: schemat obiegu oraz etap bieżący

Schemat obiegu - należy skorzystać z dostępnej na liście kolumny: DNV_ProcesKod

Etap bieżący - Należy w sekcji Tabele użytkownika wykonać złączenie do bazy konfiguracyjnej i tabeli CDN. SekEtapy. W kolumnie Nazwa tabeli należy wprowadzić [CDN_KNF_Konfiguracja].[CDN].[SekEtapy] a w kolumnie Instrukcja łączenia wprowadzić DNV_EtapBiezacyLP=SE_SEID. Teraz w sekcji Kolumny użytkownika skorzystać z dostępnej na liście kolumny: SE_Symbol

Księgowość i Kasa/Bank

1. Rejestr VAT. Kolumna do jakiego dziennika został zapis z rejestru zaksięgowany oraz jaki ma numer w dzienniku

Potrzebne pola znajdują się w tabeli CDN.DekretyNag. Na oknie personalizacji listy w sekcji Tabele użytkownika należy połączyć powyższe tabele aby mieć dostęp do pól związanych z dziennikami. W związku z powyższym w kolumnie Nazwa tabeli podajemy tabelę CDN.DekretyNag a w kolumnie Instrukcja łączenia wprowadzamy pola klucze łączące obie tabele VaN_DekId = DeN_DeNId zgodnie ze strukturą bazy danych. Teraz w sekcji Kolumny dostępne z aktualnie wybranych tabel pojawią się pola dostępne z tabeli CDN.DekretyNag. Należy odnaleźć pole DeN_Dziennik i przeciągnąć do sekcji Kolumny użytkownika oraz nadać nazwę dla kolumny. Tak samo dla kolumny DeN_NrKsiegi.

2. Rejestr VAT. Kolumny: forma płatności, termin, kwota zaksięgowania do KPiR-kwota, data księgowania, numer korekty, numer dziennika cząstkowego

Forma płatności -  należy skorzystać z dostępnej na liście kolumny: Fpl_Nazwa

Termin -  należy skorzystać z dostępnej na liście kolumny: VaN_Termin

Kwota zaksięgowana do KPiR -  Kwota:   Należy w sekcji Tabele użytkownika wykonać złączenie do tabeli CDN.ZapisyKPR po polach VaN_KPRID=KpR_KPRID. Teraz w sekcji Kolumny użytkownika dodać kolumnę o instrukcji pobierania danych:

KPR_Sprzedaz+KPR_Pozostale+KPR_Towary+KPR_Uboczne+KPR_Reklama+KPR_Wynagrodz+KPR_Inne+KPR_Zaszlosci

Data księgowania - należy skorzystać z dostępnej na liście kolumny: KPR_DataOpe

Numer korekty - należy skorzystać z dostępnej na liście kolumny: VaN_Korekta

Numer dziennika cząstkowego - Należy w sekcji Tabele użytkownika wykonać złączenie do tabeli CDN.DekretyNag po polach VaN_DekID=DeN_DeNID. Teraz w sekcji Kolumny użytkownika dodać kolumnę o instrukcji pobierania danych:
DeN_Dziennik+'/'+CONVERT(varchar(20),DeN_NrDziennika)

3. Lista środków trwałych. Kolumny: metoda amortyzacji, opis

Metoda amortyzacji - w sekcji Kolumny użytkownika dodać kolumnę o instrukcji pobierania danych:
CASE SrT_Metoda WHEN 1 THEN 'Liniowa' WHEN 2 THEN 'Degresywna' WHEN 3 THEN 'Jednorazowy' WHEN 4 THEN 'Naturalna' WHEN 5 THEN 'Nie amortyzowany' ENDOpis - należy skorzystać z dostępnej na liście kolumny: Srt_Opis.

4. Lista dokumentów środków trwałych. Kolumny: osoba przekazująca, osoba przyjmująca, miejsce użytkowania przekazujące, miejsce użytkowania przyjmujące

Osoba przekazująca - należy skorzystać z dostępnej na liście kolumny: SrH_PrcImieNazwisko1

Osoba przyjmująca - należy skorzystać z dostępnej na liście kolumny: SrH_PrcImieNazwisko2

Miejsce użytkowania przekazujące - należy skorzystać z dostępnej na liście kolumny: SrH_MiejsceUzytkowania1

Miejsce użytkowania przyjmujące - należy skorzystać z dostępnej na liście kolumny: SrH_MiejsceUzytkowania2

5. Lista ewidencji dodatkowej. Kolumna kod kategorii

Kod kategorii: Należy w sekcji Tabele użytkownika wykonać złączenie do tabeli CDN. Kategorie po polach EDN_KatID=Kat_KatID. Teraz w sekcji Kolumny użytkownika dodać kolumnę o instrukcji pobierania danych Kat_KodSzczegol

6. Lista not odsetkowych, ponagleń zapłaty, potwierdzeń sald. Kolumna kod podmiotu

Kod podmiotu -  należy skorzystać z dostępnej na liście kolumny: Pod_Kod

7. Lista dokumentów rozliczonych. Kolumna pokazująca czy rozliczenie zostało uwzględnione na dokumencie kompensaty

Należy w sekcji Tabele użytkownika wykonać złączenie do tabeli CDN.KompensatyElem po polach BrK_BrkId=Kpe_BrkId. Teraz w sekcji Kolumny użytkownika dodać kolumnę o instrukcji pobierania danych:
CASE Brk_BrkId WHEN Kpe_BrkId THEN 'Tak' ELSE '' END

8. Lista deklaracji. Kolumna z polem kwotowym z deklaracji utworzonej w Comarch Deklaracje Podatkowe

Należy w sekcji Kolumny użytkownika dodać kolumnę o instrukcji pobierania danych:

(select convert(decimal (18,2),replace(JSON_VALUE(DkE_WartoscTekst, '$.Deklaracja.PozycjeSzczegolowe.P_66'),',','.') ) AS kwota from cdn.DeklElem where DkE_DkNID= DkN_DkNID and DkE_Numer=50 and DkN_TypDeklar=17 and DkN_Wersja =32)CASE Brk_BrkId WHEN Kpe_BrkId THEN 'Tak' ELSE '' END

Jest to przykład, który z deklaracji CIT-8 w wersji 32 zwraca wartość pola 66. Ta definicja działa dla Windows Server 2016 I późniejszych.

 

Płace i Kadry

1. Lista pracowników. Kolumna z wartością atrybutu o nazwie Atrybut 1 na dzień bieżący

Potrzebne pola znajdują się w tabeli CDN.OAtrybuty oraz CDN.OAtrybutyHist. Na oknie personalizacji listy w sekcji Tabele użytkownika należy dołączyć powyższe tabele, aby mieć dostęp do ich pól. W związku z tym w kolumnie Nazwa tabeli dodajemy tabelę CDN.OAtrybuty, a w kolumnie Instrukcja łączenia wprowadzamy pola łączące obie tabele oraz dodatkowy warunek dla atrybutu o nazwie Atrybut 1, wprowadzamy zatem:
OAT_PrcId = PRI_PraId AND OAT_NazwaKlasy = 'Atrybut 1'Następnie podajemy drugą tabelę CDN.OAtrybutyHist, a w kolumnie Instrukcja łączenia wprowadzamy pola łączące obie tabele oraz dodatkowy warunek filtrujący zakres dat na dzień bieżący, wprowadzamy zatem:
ATH_OatId = OAT_OatId AND ATH_DataOd <= GETDATE() AND ATH_DataDo >= GETDATE()Teraz w sekcji Kolumny dostępne z aktualnie wybranych tabel pojawią się pola dostępne z tabeli CDN.OAtrybutyHist. Należy odnaleźć pole ATH_Wartosc i przeciągnąć do sekcji Kolumny użytkownika oraz nadać nazwę dla kolumny.

2. Lista pracowników. Kolumna z wartością atrybutu o nazwie Atrybut 1 na dzień daty aktualności listy

Potrzebne pola znajdują się w tabeli CDN.OAtrybuty oraz CDN.OAtrybutyHist. Na oknie personalizacji listy w sekcji Tabele użytkownika należy dołączyć powyższe tabele, aby mieć dostęp do ich pól. W związku z tym w kolumnie Nazwa tabeli dodajemy tabelę CDN.OAtrybuty, a w kolumnie Instrukcja łączenia wprowadzamy pola łączące obie tabele oraz dodatkowy warunek dla atrybutu o nazwie Atrybut 1, wprowadzamy zatem:
OAT_PrcId = PRI_PraId AND OAT_NazwaKlasy = 'Atrybut 1'Następnie podajemy drugą tabelę CDN.OAtrybutyHist, a w kolumnie Instrukcja łączenia wprowadzamy pola łączące obie tabele oraz dodatkowy warunek filtrujący zakres dat na dzień daty aktualności listy, wprowadzamy zatem:
ATH_OatId = OAT_OatId AND ATH_DataOd <= #filtr_dtDataAkt# AND ATH_DataDo >= #filtr_dtDataAkt#Teraz w sekcji Kolumny dostępne z aktualnie wybranych tabel pojawią się pola dostępne z tabeli CDN.OAtrybutyHist. Należy odnaleźć pole ATH_Wartosc i przeciągnąć do sekcji Kolumny użytkownika oraz nadać nazwę dla kolumny.

3. Lista pracowników. Kolumna z pełnym kodem ubezpieczenia pracownika na dzień daty aktualności listy

Na oknie personalizacji listy w sekcji Kolumny użytkownika należy dodać kolumnę o instrukcji pobierania danych:
CASE WHEN LEN(PRE_UBZTyuId) = 3 THEN '0' + CAST(PRE_UBZTyuId as CHAR(3)) + CAST(PRE_PrawoER as CHAR(1)) + CAST(PRE_StNiepelnosp as CHAR(1)) WHEN PRE_UBZTyuId = 99999 THEN '' ELSE CAST(PRE_UBZTyuId as CHAR(4)) + CAST(PRE_PrawoER as CHAR(1)) + CAST(PRE_StNiepelnosp as CHAR(1)) END

4. Lista pracowników. Kolumna z wyszczególnioną datą ważności badań okresowych, która upłynęła lub upłynie w okresie 30 dni od daty

W sekcji Kolumny użytkownika należy dodać kolumnę o instrukcji pobierania danych:

(select PRE_WaznoscBadanOkres from cdn.pracetaty a where 
pri_praid = a.pre_praid and year(a.pre_datado) = 2999)

W celu wyróżnienia kolorem daty ważności badań okresowych, która upłynęła lub upłynie w okresie 30 dni od daty aktualności w Stylach wartości należy dodać poniższy warunek:

(select PRE_WaznoscBadanOkres from cdn.pracetaty a where pri_praid = a.pre_praid 
and year(a.pre_datado) = 2999) <= #filtr_dtDataAkt# + 30 AND 
(select PRE_WaznoscBadanOkres from cdn.pracetaty a where 
pri_praid = a.pre_praid and year(a.pre_datado) = 2999) >= #filtr_dtDataAkt# -30

5. Lista pracowników. Kolumna z wyszczególnioną datą zwolnienia, która upłynęła lub upłynie w okresie 5 dni od daty aktualności.

W sekcji Kolumny użytkownika należy dodać kolumnę o instrukcji pobierania danych:

(select PRE_ZatrudnionyDo from cdn.pracetaty a where pri_praid = a.pre_praid 
and year(a.pre_datado) = 2999)

W celu wyróżnienia kolorem daty zwolnienia, która upłynęła lub upłynie w okresie 5 dni od daty aktualności w Stylach wartości należy dodać poniższy warunek:

(select PRE_ZatrudnionyDo from cdn.pracetaty a where pri_praid = a.pre_praid 
and year(a.pre_datado) = 2999) <= #filtr_dtDataAkt# + 5 AND 
(select PRE_ZatrudnionyDo from cdn.pracetaty a where pri_praid = a.pre_praid 
and year(a.pre_datado) = 2999) >= #filtr_dtDataAkt# -5

6. Lista pracowników. Kolumna z datą rozwiązania nierozliczonej umowy, która zakończyła się 10 dni temu w stosunku do daty aktualności.

W sekcji Kolumny użytkownika należy dodać kolumnę o instrukcji pobierania danych:

(select top 1 umw_datado from cdn.umowy where umw_splacona < UMW_Brutto 
and UMW_Praid = Pra_Praid and UMW_DataDo <= #filtr_dtDataAkt# - 10)

7. Lista pracowników. Kolumna z wyszczególnioną datą ważności uprawnienia Szkolenie BHP (UPR_UprId=52), która upłynęła lub upłynie w okresie 30 dni od daty aktualności.

Potrzebne pole znajduje się w tabeli CDN.Uprawnienia. Na oknie personalizacji listy w sekcji Tabele użytkownika należy dołączyć powyższą tabelę, aby mieć dostęp do jej pól. W związku z tym w kolumnie Nazwa tabeli dodajemy tabelę CDN.Uprawnienia, a w kolumnie Instrukcja łączenia wprowadzamy pola łączące obie tabele oraz dodatkowy warunek dla uprawnienia o Id=52, wprowadzamy zatem:

upr_praid=pra_praid and upr_dkmid=52

W sekcji Kolumny dostępne z aktualnie wybranych tabel pojawią się pola dostępne z tabeli CDN.Uprawnienia. Należy odnaleźć pole UPR_KursTermin i przeciągnąć do sekcji Kolumny użytkownika oraz nadać nazwę dla kolumny.
W celu wyróżnienia kolorem daty ważności uprawnienia, która upłynęła lub upłynie w okresie 30 dni od daty aktualności w Stylach wartości należy dodać poniższy warunek:

UPR_KursTermin <= #filtr_dtDataAkt# + 30 AND UPR_KursTermin>= 
#filtr_dtDataAkt# -30

8. Lista wypłat pracowników. Kolumna z sumą naliczonej zaliczki podatku (bez zaokrągleń) w wypłacie pracownika dla wybranej listy płac

Potrzebne pola znajdują się w tabeli CDN.Wyplaty. Należy wykonać złączenie do powyższej tabeli. Na oknie personalizacji listy w sekcji Tabele użytkownika w kolumnie Nazwa tabeli podajemy tabelę CDN.Wyplaty, a w kolumnie Instrukcja łączenia wprowadzamy pola łączące obie tabele oraz dodatkowy warunek przekazujący ID wybranej listy płac, wprowadzamy zatem:
WPL_PraId = PRI_PraId and WPL_LplId = #filtr_LookupListaPlac_ID#
Następnie w sekcji Kolumny użytkownika należy dodać kolumnę o instrukcji pobierania danych:
(SELECT SUM(WPE_NalFis) FROM CDN.WypElementy WHERE WPE_WplId = WPL_WplId)

9. Lista wypłat pracowników. Kolumna z sumą naliczonej zaliczki podatku (bez zaokrągleń) w wypłacie pracownika dla wybranej listy płac – przypadek, gdy dwie wypłaty (np. umowy cywilnoprawne) policzone są w jednej wypłacie

Na oknie personalizacji listy w sekcji Kolumny użytkownika należy dodać kolumnę o instrukcji pobierania danych:
(SELECT Suma FROM (
SELECT WPE_WplId, WPE_PraId, SUM(WPE_NalFis) OVER(PARTITION BY WPE_PraID) AS Suma, WPL_LplId, ROW_NUMBER() OVER(PARTITION BY WPE_PraID ORDER BY WPE_NalFis) AS "Row Number"
FROM CDN.WypElementy
JOIN CDN.Wyplaty ON WPL_WplId = WPE_WplId
WHERE WPL_LplId = #filtr_LookupListaPlac_ID#
GROUP BY WPL_LplId, WPE_PraId, WPE_NalFis, WPE_WplId, WPE_WpeId) AS T
WHERE "Row Number" = 1 AND WPE_PraId = PRI_PraId)

10. Deklaracje PIT pracowników. Kolumna z kwotą przychodu ze stosunku pracy (pozycja 29) z deklaracji PIT-11 za wybrany rok.

Potrzebne pola znajdują się w tabeli CDN.DeklElem. Należy wykonać złączenie do powyższej tabeli. W oknie personalizacji listy, w sekcji Tabele użytkownika w kolumnie Nazwa tabeli podajemy tabele CDN.DeklElem, a w kolumnie Instrukcja łączenia wprowadzamy pola łączące obie tabele oraz dodatkowy warunek dke_numer=1, który wskazuje na wypełnioną deklarację web w formacie JSON:

dkn_dknid=dke_dknid and dke_numer=1

Następnie w sekcji Kolumny użytkownika należy dodać kolumnę o instrukcji pobierania danych:

(select convert(decimal (18,2),replace(JSON_VALUE(DkE_WartoscTekst, '$.Deklaracja.PozycjeSzczegolowe.P_29'),',','.') ))

W przypadku potrzeby odwołania się do innej pozycji z deklaracji PIT należy podać odpowiedni numer pola z pliku JSON.