Wdrożyłem u siebie sposób pozwalający na liście ŚT łatwo wyfiltrować środki, za które odpowiedzialny jest konkretny pracownik. Rozwiązanie jest kompleksowe, zachęcam do korzystania wszystkich, którym się spodoba. Polega na sprawdzeniu w historii ŚT ostatniego dokumentu ZO (zmiana osoby).
Po pierwsze: funkcja SQL. Definiujemy w bazie CDNXL funkcję BiezacaOsoba następującym skryptem:
Kod: Zaznacz cały
--
IF EXISTS (SELECT * FROM sysobjects WHERE name = 'BiezacaOsoba' AND type = 'FN')
DROP FUNCTION CDN.BiezacaOsoba
GO
CREATE FUNCTION CDN.BiezacaOsoba( @GIDNumer INT )
RETURNS INT
AS
BEGIN
DECLARE @PrcNumer INT;
SELECT @PrcNumer = (SELECT TOP 1 SHE_PrcNumer FROM CDN.SrtHistElem
WHERE SHE_GIDTyp=2144 AND SHE_SRTNumer = @GIDNumer
ORDER BY SHE_Data DESC, SHE_GIDNumer DESC)
IF @PrcNumer IS NULL
SELECT @PrcNumer = SRT_PrcNumer FROM CDN.SrtKarty WHERE SRT_GIDNumer = @GIDNumer
RETURN @PrcNumer
END
GO
--
Kod: Zaznacz cały
ALTER TABLE CDN.SrtKarty ADD PrcNumerBiez AS CDN.BiezacaOsoba( SRT_GIDNumer )
Po trzecie: filtr. Definiujemy konstruktorem na liście środków trwałych filtr o nazwie np. "Bieżący pracownik" wpisując na zakładce "Zaawansowane" takie zaklęcia:
Kod: Zaznacz cały
@PAR ?@LS20(CDN_KONF.DLL|CALLLOOKUPPRCLISTA())|Pracownik|&Pracownik:REG= @? PAR@
PrcNumerBiez=??Pracownik
Po włączeniu filtra zostaniemy poproszeni o podanie kodu pracownika. Można wspomóc się listą pracowników. Po wypełnieniu kodu lista zostaje ograniczona do środków trwałych, za które w danym momencie jest odpowiedzialny konkretny pracownik. Przydaje się np. gdy pracownik się zwalnia.
Wszystkie wydruki z listy ŚT powinny automatycznie także ograniczyć się do wyfiltrowanych kart ŚT.
Rozwiązanie sprawdzone w wersjach 5 i 6. Nie sądzę aby w 7 były jakieś problemy.