Projekat

Općenito

Profil

Akcije

Greške #25463

Zatvoren

Problem sa otvaranjem dbf tabela nakon štampe, fin, fakt (ORDSETFOCUS bug)

Dodano od Saša Vranić prije oko 13 godina. Izmjenjeno prije oko 13 godina.

Status:
Zatvoreno
Prioritet:
Normalan
Odgovorna osoba:
Saša Vranić
Početak:
30.11.2011
Završetak:
% završeno:

80%

Procjena vremena:

Povezani tiketi 1 (0 otvoreno1 zatvoren)

korelira sa F18 - Podrška #25378: višekorisnički rad - testiranjeZatvorenoSaša Vranić23.11.2011

Akcije
Akcije #2

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

Akcije #3

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

Akcije #4

Izmjenjeno od Saša Vranić prije oko 13 godina

  • % završeno promijenjeno iz 0 u 20
Akcije #5

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
Akcije #6

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
Akcije #7

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

Akcije #8

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)
Akcije #9

Izmjenjeno od Ernad Husremović prije oko 13 godina

  • Vrsta promijenjeno iz Podrška u Greške
Akcije #10

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

Akcije #11

Izmjenjeno od Ernad Husremović prije oko 13 godina

izvršiti naravno prije komande ordsetfocus

Akcije #12

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

Akcije #13

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

Akcije #14

Izmjenjeno od Saša Vranić prije oko 13 godina

baš me zanima kako na windows-u ovo radi ?

Akcije #15

Izmjenjeno od Saša Vranić prije oko 13 godina

ako se tabela otvori ekskluzivno onda je to i logično

Akcije #16

Izmjenjeno od Ernad Husremović prije oko 13 godina

vjerovatno radi ovog EXCLUSIVE pristupa

zato što nema potrebe za shared prisutpom koji je sporiji.

Akcije #17

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.

Akcije #18

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)
Akcije #19

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.

Akcije #20

Izmjenjeno od Ernad Husremović prije oko 13 godina

vjerovatno radi ovog EXCLUSIVE pristupa

i zato je univerzalno rješenje

if !used() 
 ...

ili if used() ...

Akcije #21

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

Akcije #22

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" 
Akcije #23

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...

Akcije #24

Izmjenjeno od Saša Vranić prije oko 13 godina

  • Status promijenjeno iz Novo u Zatvoreno

ovo se može zatvoriti

Akcije

Također dostupno kao Atom PDF