Greške #25463
ZatvorenProblem sa otvaranjem dbf tabela nakon štampe, fin, fakt (ORDSETFOCUS bug)
80%
Povezani tiketi 1 (0 otvoreno — 1 zatvoren)
Izmjenjeno od Saša Vranić prije oko 13 godina
Izmjenjeno od Saša Vranić prije oko 13 godina
recimo u fakt-u je to na mjestu
https://github.com/knowhow/F18_knowhow/blob/master/fakt/fakt_unos_dokumenta.prg#L725
nakon što se odštampa dokument - fja StampTxt()
otvaraju se tabele ponovo zato što smo u pripremi da bi nastavili sa radom - o_fakt_edit()
i onda pukne na prvoj tabeli koja se otvara
a to je O_OPS
https://github.com/knowhow/F18_knowhow/blob/master/fakt/fakt_azuriranje.prg#L16
iako se na početku zatvore sve tabele
Izmjenjeno od Saša Vranić prije oko 13 godina
međutim evo sada gledam, kada smaknem f18_editor i kada se pozove štampa ali bez izvojenog procesa f18_editora sve radi normalno
kao da dok je editor aktivan da nešto ostane zauzeto ?!??
znači, uklonim editor desi se štampa ali se ne lansira ništa - sve radi kako treba
Izmjenjeno od Ernad Husremović prije oko 13 godina
nisi se pozicionirao na mjesto problema.
problem se dešava u o_fakt funkciji.
na sljedećemo komentaru sam napisao http://redmine.bring.out.ba/issues/25378#note-39
ali si to izgleda preskočio pa nastavio istraživati po svom nahođenju.
Ovo sam mislio:
https://github.com/knowhow/F18_knowhow/commit/07f1d8c23a905f4ce0d6ef67bd35b6563226b1af
ako je to rješenje onda se treba na sve tabele primjeniti
ako je to razlog, moguće je unutar O_XYZ napraviti:
select O_XYZ; use; pa onda open
Izmjenjeno od Saša Vranić prije oko 13 godina
da vidim konkretno šta se događa, evo recimo O_OPS
https://github.com/knowhow/F18_knowhow/blob/master/common/o_f18.ch#L47
select F_OPS; my_use("ops"); set order ....
u my_use() funkciji se dešava ovo:
https://github.com/knowhow/F18_knowhow/blob/master/common/semaphores.prg#L111
select (area) use .... pa otvara tabelu
Izmjenjeno od Saša Vranić prije oko 13 godina
sada sam testirao ovo što si stavio i ista stvar se događa
šta sam zaista uočio da se događa
- ako prozor sa vim izvještajem zatvorim prije nego onaj timeout iscuri ovo se ne dešava
- ako ga pustim da stoji otvoren, ovo se nakon 5 sekundi desi
još jedna stvar koja je interesantna, ako potvrdim ovaj error sa ENTER zatvori mi automatski i prozor aplikacije i izvještaj, što se recimo na mac-u nije slučaj, tamo se mvim pokrene kao vanjski proces
Izmjenjeno od Saša Vranić prije oko 13 godina
- Naslov promijenjeno iz Problem sa otvaranjem tabela nakon štampe, fin, fakt u Problem sa otvaranjem tabela nakon štampe, fin, fakt (ORDSETFOCUS bug)
Izmjenjeno od Ernad Husremović prije oko 13 godina
- Vrsta promijenjeno iz Podrška u Greške
Izmjenjeno od Ernad Husremović prije oko 13 godina
greška ordsetfocus se dešava onda kada u tabela nije otvorena
ovo bi takav problem moralo riješiti:
if !used() O_TABELU endif
Izmjenjeno od Ernad Husremović prije oko 13 godina
izvršiti naravno prije komande ordsetfocus
Izmjenjeno od Saša Vranić prije oko 13 godina
evo sad sam debagirao
O_OPS
i ušao u my_use() funkciju
1) varijanta kada izvještaj ostane otvoren¶
u varijanti kada ostane izvještaj otvoren linija
use (my_home() + table)
https://github.com/knowhow/F18_knowhow/blob/master/common/semaphores.prg#L104
se desi, ali se područje uopšte ne otvori
vjerovatno radi ovog EXCLUSIVE pristupa
očigledno da je proces neki još zadržao tabele, ta štampa
2) varijanta kada zatvorim izvještaj¶
radi normalno i normalno otvori tabele
ovo iz varijante 1) je izgleda identično ovome što sam primjetio kod generisanja epdv-a #25475
isto tako se sve lijepo odradi, ali se tabela ne otvori
Izmjenjeno od Saša Vranić prije oko 13 godina
ovo je test kada pokrenem štampu fakture, znači prije same štampe fakture i print dijaloga 3 puta se desi ova funkcija o_fakt_edit() i noramalno radi svaki put
to je do procesa koji uzme ova štampa
rekao sam već da je na mac-u skroz drugačije, koliko god puta pozovem štampu on će mi toliko prozora otvoriti i nakon zatvaranja f18 ti prozori mi ostaju kao individualni
Izmjenjeno od Saša Vranić prije oko 13 godina
baš me zanima kako na windows-u ovo radi ?
Izmjenjeno od Saša Vranić prije oko 13 godina
ako se tabela otvori ekskluzivno onda je to i logično
Izmjenjeno od Ernad Husremović prije oko 13 godina
vjerovatno radi ovog EXCLUSIVE pristupa
zato što nema potrebe za shared prisutpom koji je sporiji.
Izmjenjeno od Ernad Husremović prije oko 13 godina
radi na widnows-u zato što je low level locking fajl sistema očigledno drugačiji na pojedinim sistemima.
linux iskače jer se striktno drži pravila da se lockovan fajl ne može ponovo koristiti.
mac i windows to "preskaču" i to je izvjesno uzrok različitog ponašanja.
Ne radi problema sa linux-om nego radi nedostataka u našem kodu koji windows/mac "gutaju".
Ali ono što čitavo vrijeme govorim ovo ne smije biti nekakav veliki problem, a evidentno je postao. Veliki broj vaših komentara i generalno problema u portiranju FMK se vrti oko ovog problema.
nadam se da sada kada smo konstatovali uzroke ovo možemo brzo i efikasno zatvarati kada se pojavi.
Izmjenjeno od Ernad Husremović prije oko 13 godina
- Naslov promijenjeno iz Problem sa otvaranjem tabela nakon štampe, fin, fakt (ORDSETFOCUS bug) u Problem sa otvaranjem dbf tabela nakon štampe, fin, fakt (ORDSETFOCUS bug)
Izmjenjeno od Ernad Husremović prije oko 13 godina
level locking fajl sistema očigledno drugačiji na pojedinim sistemima.
ovo sam uočio kada smo zajedno radili u sarajevu.
i tada sam rekao da je close all/open rješenje. tada je da te podsjetim stvar na linux proradila, a mac bez toga nije pravio probleme. greška je bila identična ordsetfocus.
ista stvar se dešava u svim ovim greškama koje navodite. oko otvaranja tabela i setovanja ordera.
Izmjenjeno od Ernad Husremović prije oko 13 godina
vjerovatno radi ovog EXCLUSIVE pristupa
i zato je univerzalno rješenje
if !used() ...
ili if used() ...
Izmjenjeno od Saša Vranić prije oko 13 godina
Dohakao sam mu !
https://github.com/knowhow/F18_knowhow/commit/445b517a4c6f661f41f21827a3cbad09b5837826
https://github.com/knowhow/F18_knowhow/commit/ee689fa29676b919a70f516dda243fbc4ba0f75a
https://github.com/knowhow/F18_knowhow/commit/08cd3f12f1a7d747ea5000f2ae9cbf045464b51b
prvo sam upratio gdje se sve vrši close all kod štampe
u o_fakt_edit() uveo if !used() klauzule....
close all¶
1) prvo prilikom otvaranja pripreme
2) kod poziva štampe stamptxt()
3) pa zatim kod poziva pdv štampe (stdokpdv())
ovdje se kreiraju tabele DRN, RN... pa se desi da se sve zatvori opet radi dbcreate() funkcije
4) ponovo se otvaraju
5) dešava se štampa
6) kraj funkcije stdokpdv() je close all
sada nakon štampe više nemam te greške jer nisam zatvarao područja
Izmjenjeno od Saša Vranić prije oko 13 godina
hm... šta je onda najbolje
najbolje onda da u o_f18.ch gdje su definicije O_XYX da postavimo
umjesto
#define O_OPS; select F_OPS; my_use("ops");set order to tag "1"
======>
#define O_OPS; select F_OPS; if !used();my_use("ops"); endif; set order to tag "1"
Izmjenjeno od Saša Vranić prije oko 13 godina
- % završeno promijenjeno iz 20 u 80
ma da, lx proces lokuje fajl i kada kažemo close all područja se zatvore ali se fajl još koristi ! valjda...
Izmjenjeno od Saša Vranić prije oko 13 godina
- Status promijenjeno iz Novo u Zatvoreno
ovo se može zatvoriti