S K.

S K. serwisant

Temat: IdUzytkownika w gniazdach rozszerzeń - problem

Witam.
Utworzyłem sobie procedurę wykonującą się "Po Zatwierdzeniu przychodu odłożonego w czasie", gdzie chciałem wykorzystać IdUzytkownika, niestety ale chyba występuje jakiś błąd ponieważ zawsze mam przekazywane 0.
Proszę o weryfikację.

Sama procedura jest prosta i składa się z krótkiego kodu:

UPDATE dokument_magazynowy SET ODEBRAL = (SELECT NAZWA FROM UZYTKOWNIK WHERE ID_UZYTKOWNIKA = @IdUzytkownika) WHERE ID_DOK_MAGAZYNOWEGO = @IdObiektu
Sebastian K. edytował(a) ten post dnia 12.03.12 o godzinie 00:38
Krzysztof Stachyra

Krzysztof Stachyra Szef Wydziału
Produkcji Systemów
Handlowo-Magazynowyc
h i ...

Temat: IdUzytkownika w gniazdach rozszerzeń - problem

Testuje na 7714 i nie potwierdzam, obydwie zmienne inicjowane są prawidłowo, przy założeniu, że korzystamy ze zmiennej @IdObiektu a nie nadrzednego.
Ewentualnie proszę podać kod techniczny gniazda.
ewentualnie proszę o skrypt tego gniazda (pod prawym przyciskiem myszy)Krzysztof Stachyra edytował(a) ten post dnia 12.03.12 o godzinie 12:21
S K.

S K. serwisant

Temat: IdUzytkownika w gniazdach rozszerzeń - problem

declare @ID_GNIAZDA numeric
declare @ID_Gniazda_Rodzic numeric

-- Dokumenty magazynowe\Lista dokumentów magazynowych\Operacje dodatkowe\Zatwierdzanie przychodu odłożonego w czasie (Ctrl+Shift+M)\Po
declare @ID_XGMLEXDOKMAG_BRWPZ_W_CZASIE_E2 numeric
select @ID_XGMLEXDOKMAG_BRWPZ_W_CZASIE_E2 = id_gniazda from magsrc_gniazda_rozszerzen where nazwa_sys = 'XGMLEXDOKMAG_BRWPZ_W_CZASIE_E2'
set @ID_GNIAZDA = @ID_XGMLEXDOKMAG_BRWPZ_W_CZASIE_E2

set @ID_Gniazda_Rodzic = @ID_XGMLEXDOKMAG_BRWPZ_W_CZASIE_E2
exec RM_MAGSRC_UtworzInstrukcje 'DOKMAG_BRW','ZatwierdzilMP','ZatwierdzilMP','',@ID_Gniazda_Rodzic,'',1,0,0,2,0,'@IdObiektuNadrzednego numeric, @IdUzytkownika numeric, @IdObiektu numeric',0,@ID_GNIAZDA OUTPUT
go
Krzysztof Stachyra

Krzysztof Stachyra Szef Wydziału
Produkcji Systemów
Handlowo-Magazynowyc
h i ...

Temat: IdUzytkownika w gniazdach rozszerzeń - problem

jaka wersja ?
S K.

S K. serwisant

Temat: IdUzytkownika w gniazdach rozszerzeń - problem

wersja 7.71.4
Krzysztof Stachyra

Krzysztof Stachyra Szef Wydziału
Produkcji Systemów
Handlowo-Magazynowyc
h i ...

Temat: IdUzytkownika w gniazdach rozszerzeń - problem

testy wykonane na wersji handlowej i na rozwojowej i na obydwu jest ok
Poniżej procedura jaką wykonałem z podanymi isntrukcjami - zmienna IdObiektuNadrzednego jest zbedna

if exists (select 1 from sysobjects where name = 'MAGSRC_ZatwierdzilMP' and type = 'P')
drop procedure MAGSRC_ZatwierdzilMP
go
create procedure MAGSRC_ZatwierdzilMP
@IdObiektuNadrzednego numeric, @IdUzytkownika numeric, @IdObiektu numeric
as
declare @errmsg varchar(255)
begin
set xact_abort on
set transaction isolation level REPEATABLE READ
begin transaction

UPDATE dokument_magazynowy SET ODEBRAL = (SELECT NAZWA FROM UZYTKOWNIK WHERE ID_UZYTKOWNIKA = @IdUzytkownika) WHERE ID_DOK_MAGAZYNOWEGO = @IdObiektu

if @@trancount>0 commit transaction
goto Koniec
Error:
raiserror (@errmsg,16,1)
if @@trancount>0 rollback tran
goto Koniec
Koniec:
set transaction isolation level READ COMMITTED
return
end
go
S K.

S K. serwisant

Temat: IdUzytkownika w gniazdach rozszerzeń - problem

No to ja nie wiem. Wykonuję dokładnie taką samą instrukcję, tak IdObiektuNadrzednego zbędne oczywiście.

Jak ustawię jakiś dowolny tekst zamiast (SELECT NAZWA FROM UZYTKOWNIK WHERE ID_UZYTKOWNIKA = @IdUzytkownika) to wtedy pole rzeczywiście przy zatwierdzaniu jest aktualizowane, natomiast w tym SELECTem nie działa. Hmm... a wersja SQL może mieć znaczenie? Chociaż chyba nie, bo to podstawowe zapytanie.
Krzysztof Stachyra

Krzysztof Stachyra Szef Wydziału
Produkcji Systemów
Handlowo-Magazynowyc
h i ...

Temat: IdUzytkownika w gniazdach rozszerzeń - problem

nie, chyba, że jest tak, że pole nazwa użytkownika jest dłuższe niż pole odebrał (w co wątpie) sprawdź sobie na adminie czy działa- ja testowałem na koncie admin i wszystko było ok, podgląd dokumentu pokazywał właśnie słowo admin w polu odebrał
ewentualnie dodaj zabezpieczenie
select top 1 nazwa from uzytkownik where .....

edit:
wycofuje się z pomysłu firmie bo tam nie ma kolumny z id firmyKrzysztof Stachyra edytował(a) ten post dnia 12.03.12 o godzinie 15:20
S K.

S K. serwisant

Temat: IdUzytkownika w gniazdach rozszerzeń - problem

no właśnie testuję na adminie i za nic nie idzie,
pole odebrał w podglądzie dokumentu pozostaje puste, a w bazie uzupełnia się 'null',
kiedy zaś spróbuję umieścić w to pole @IdUzytkownika to uzupełnia się wartość 0.
no nie wiem, może coś jakimś cudem wymyślę...
Krzysztof Stachyra

Krzysztof Stachyra Szef Wydziału
Produkcji Systemów
Handlowo-Magazynowyc
h i ...

Temat: IdUzytkownika w gniazdach rozszerzeń - problem

Proponuję po 1 zainstalować wszystkie poprawki z plikowni, po drugie proponuję założyć pustą bazę danych i na niej wykonać ten sam test.
Albo jest jakiś czeski błąd, którego nie potrafię wskazać na odległość albo błąd zupełnie innej natury.
Jedyne co zrobiłem to uruchomiłem skrypt gniazda, następnie wygenerowałem kod procedury i zamieniłem 2 linijki dotyczące @errormsg na kod podany do Update.
Testowałem jeszcze na innym użytkowniku, żeby wykluczyć dodatkowy czynnik i cały czas efekt jest zgodny z oczekiwaniami.
S K.

S K. serwisant

Temat: IdUzytkownika w gniazdach rozszerzeń - problem

Ok, na pustej bazie testowałem i można powiedzieć nawet "działa", ale... jak działa. Przy zatwierdzeniu np po kolei 4 dokumentów, dla dwóch pojawił się oczekiwany zapis, dla dwóch nie. Później próbuję zatwierdzić jakiś jeden - jest okej. Wystawiam fakturę z WZ, i znów chcę coś zatwierdzić - teraz już się nie wpisuje. Więc nie wiem, losowe działanie?

(testowane dla dokumentów PW)
Krzysztof Stachyra

Krzysztof Stachyra Szef Wydziału
Produkcji Systemów
Handlowo-Magazynowyc
h i ...

Temat: IdUzytkownika w gniazdach rozszerzeń - problem

Czegoś tu nie czaję.
Skoro gniazdo wybrane to Zatwierdzanie przychodu odłożonego w czasie - PO]
to jak ma działać na PW (nie ma przychodu PW odłożonego w czasie), co ma WZ i FV ?
Skoro jest to konkretne gniazdo to działa tylko w przypadku:
1. Wystawiam Fakturę zakupu z opcją Przychód odłożony w czasie
2. Wchodzę do dokumentów magazynowych, zaznaczam PZ, które oczekuje na zatwierdzenie
3. Zatwierdzam poprzez ctrl+shift+m (zatwierdzanie przychodu odłożonego w czasie)
4. Dopiero tu gniazdo działa - a nie w innych przypadkach.
S K.

S K. serwisant

Temat: IdUzytkownika w gniazdach rozszerzeń - problem

Jak to nie ma PW odłożonego w czasie? Skoro można przy tworzeniu PW zaznaczyć "Przychód odłożony w czasie" i wtedy ląduje do "Przychodu odłożonego w czasie" i się go zatwierdza, więc to konkretne gniazdo powinno działać i w tym przypadku. Tak samo z MP odłożonymi w czasie.

WZ i FV ma to, tak jak napisałem, że po wystawieniu jakiejkolwiek faktury to gniazdo już nie działa poprawnie, znaczy się działa, ale tak jakby gubiło się IdUżytkownika.

Ponadto stworzyłem sobie kilka PZ odłożonych w czasie,
przy pierwszej zatwierdzonej pojawiła się żądana wartość,
w pozostałych już tego nie było.Sebastian K. edytował(a) ten post dnia 13.03.12 o godzinie 13:29
Krzysztof Stachyra

Krzysztof Stachyra Szef Wydziału
Produkcji Systemów
Handlowo-Magazynowyc
h i ...

Temat: IdUzytkownika w gniazdach rozszerzeń - problem

Co do PW fakt - nie załapałem, mój błąd co nie zmienia faktu, że to działa.
Efekt taki, że raz się pojawi a raz nie jest tylko wtedy kiedy jest na liście kilka/kilkanaście dokumentów i nie zamykając okna przychodu jest od razu wykonywane zatwierdzanie kilku na raz, wtedy zainicjowana wartość będzie tylko do jednego.

Zobaczymy czy da się coś z tym zrobić. Póki co jeśli jest operacja wykonywana pojedynczo to wszystko działa zgodnie z założeniami.

Dla FV i WZ to gniazdo nie ma prawa działać powtórzę jeszcze raz- jest to dla konkretnego okna w programie i konkretnej akcji czyli w tym przypadku zatwierdzanie przychodu a jak ma się do przychodu FV sprzedaży i WZ ?
S K.

S K. serwisant

Temat: IdUzytkownika w gniazdach rozszerzeń - problem

No tak, dla FV i WZ nie ma prawa działać. Ja to doskonale rozumiem.
Piszę tylko, że jeśli zatwierdzę jakiś dokument, następnie wykona się jakąś operację w programie (np. wystawienie FV, czy przyjście między oknami), to po ponownym przejściu do zatwierdzania dokumentów odłożonych w czasie, gdzie to gniazdo powinno działać - a już nie działa. A czasami działa.
Krzysztof Stachyra

Krzysztof Stachyra Szef Wydziału
Produkcji Systemów
Handlowo-Magazynowyc
h i ...

Temat: IdUzytkownika w gniazdach rozszerzeń - problem

raczej bym tego nie wiązał - bo nie widzę, żadnej prawidłowości.
Możemy ewentualnie się podpiąć do takiej bazy i zobaczyć czy zmiana okien kiedykolwiek wpłynie na brak tej wartości - moim zdaniem nie.
Jedyny bład jaki zauważyłem z powtarzalnością to scenariusz opisany wyżej i to już jest wpisane do poprawki.
S K.

S K. serwisant

Temat: IdUzytkownika w gniazdach rozszerzeń - problem

No ja nie wiem, ale wartość czasem się nie pojawia, ale niestety nie wiem co dokładnie wpływa na to, bo raz wykonam dany schemat i jej nie ma, za drugim razem już jest. Co do bazy - to stworzyłem pustą bazę, więc nie ma co się podpinać.
No nic, jakoś przeżyję jak niektóre dokumenty nie będą miały wpisanych tych danych.

Ps. czekam na poprawkę odnośnie zatwierdzania wielokrotnego.
Krzysztof Stachyra

Krzysztof Stachyra Szef Wydziału
Produkcji Systemów
Handlowo-Magazynowyc
h i ...

Temat: IdUzytkownika w gniazdach rozszerzeń - problem

Witam,

Niestety po analizie tematu nie da się zmienić tego wywołania w taki sposób.
Wynika to z faktu, że gniazdo jest uruchamiane dla okna a nie dla guzika zatwierdź.

Aby obejść ten problem trzeba wykonać następującą sztuczkę.

1. Zakładamy gniazdo przed zatwierdzeniem i do własnej tabelki odkładamy rekordy, które są w tabeli dokument_magazynowy z tryb_rejestracji=10 to jest przychód odłożony w czasie. (najlepiej z zapisaniem identyfikatora sesji do oddzielnej kolumny czyli id_uzytkownika - zabezpieczenie przed uruchomieniem na kilku stacjach
2. Użytkownik wykonuje zatwierdzanie tych dokumentów
3. Dodajemy gniazdo PO tak jak dotychczas po czym odczytujemy sobie te rekordy z tabelki własnej oraz porównujemy je ponownie z odczytem z tabeli magazynowej z warunkiem jak w pkt.1 i tylko dla tej różnicy dokumentów robimy wspomniany update

Można to opakować w podzapytania i zadziała zgodnie z oczekiwaniem. Należy oczywiście pamiętać aby skasować w tej samej procedurze zawartość tej tabelki pomocniczej aby nie było problemów w kolejnym cyklu.

Systmowo nie ma jak tego rozwiązać bo taka jest konstrukcja gniazd.
S K.

S K. serwisant

Temat: IdUzytkownika w gniazdach rozszerzeń - problem

Dzięki za informację, coś popróbuję.



Wyślij zaproszenie do