Hydra - podstawienie daty i zapis dokumentu

Zapytania SQL, widoki, Crystal, definicje filtrów, szybkich raportów, wydruków, API, Hydra, .NET

Moderator: mikey

Tyriado
Posty: 62
Rejestracja: 07 kwie 2023, 09:30
Rola: Użytkownik CDN XL
Wersja: 2023

Hydra - podstawienie daty i zapis dokumentu

Post autor: Tyriado »

Dzień dobry;

Zrobiłem sobie dodatek, który sprawdza czy daty na dokumencie są prawidlowe. Chciałbym, aby po wybraniu odpowiednieog przycisku w MessageBox dodatek ustawiał aktualną datę i zapisywał dokument.

Niestety nie do końca wiem jak zrobić to dobrze.
Mam taki kod:

Kod: Zaznacz cały

Runtime.WindowController.Change(DataDstControl.Id, ""+ datadzisiaj +"");
Runtime.WindowController.PostEvent(DataDstControl.Id, Events.Accepted);
Thread.Sleep(1000);

Runtime.WindowController.Change(DataWysControl.Id, "" + datadzisiaj + "");
Runtime.WindowController.PostEvent(DataWysControl.Id, Events.Accepted);
Thread.Sleep(1000);

Runtime.WindowController.Change(DataWydControl.Id, "" + datadzisiaj + "");
Runtime.WindowController.PostEvent(DataWydControl.Id, Events.Accepted);
Thread.Sleep(1000);
Sleepy dodałem, aby zobaczyć co jest nie tak. datadzisiaj to format Clarion. Jak zmienię sobie o 1 dzień w dół datę dostawy i nacisnę przycisk to owszem daty się zmieniają na aktualną i to działa, ale przed samym zapisem data wystawienia i data wydania zmieniają się "na starą" i dokument się zapisuje z dwiema różnymi datami. Jakby to przed samym zapisem "czytało" z bazy wartość i podmieniało ją ponownie na "starą".

Jakaś sugestia?

StabiL
Posty: 69
Rejestracja: 28 cze 2017, 15:41
Rola: Konsultant CDN XL

Re: Hydra - podstawienie daty i zapis dokumentu

Post autor: StabiL »

Na ZS, OS zmieniam datę realizacji i działa, także Twój kod jest poprawny.

Kod: Zaznacz cały

                    Runtime.WindowController.Change(_dtpDataRealizacji.Id, _hydraInfo._intDataRealizacji.ToString());
                    Runtime.WindowController.PostEvent(_dtpDataRealizacji.Id, Events.Accepted);
Nie wiem na jakim jesteś obiekcie konkretnie, ale istnieje możliwość aktualizacji tabeli 'buforowej' w hydrze i to by Ci prawdopodobnie rozwiązało problem. Comarch tego nie zaleca, jest to czynność niebezpieczna, ale możliwość jest :)

Od strony interfejsu jak wykonujesz to samo z pominięciem dodatku to data nie wraca Ci do poprzedniej wartości przy zapisie?

Tyriado
Posty: 62
Rejestracja: 07 kwie 2023, 09:30
Rola: Użytkownik CDN XL
Wersja: 2023

Re: Hydra - podstawienie daty i zapis dokumentu

Post autor: Tyriado »

Obiekt to okno FS (Procedures.TrN_FS), jeśli o to pytasz. W ogóle zastanawiam się jak zrobić to samo dla (S)FS, trzeba zrobić oddzielny dodatek, czy skopiować kod w jeden i go zduplikować zmieniając procedurę. Bo nie wiem jak wpisać, aby stosowało dla dwóch "procedur".

Nie, właśnie jak zmienię "za palca" to działa. Choćbym wpisał i 01.01.2030

Co ciekawe ustawiłem już to z timeoutem na 3 sekundy, aby zobaczyć te kkroki wolniej robiąc tak:

Kod: Zaznacz cały

Runtime.WindowController.Change(DataDstControl.Id, ""+ datadzisiaj +"");
Runtime.WindowController.PostEvent(DataDstControl.Id, Events.Accepted);
Thread.Sleep(3000);

Runtime.WindowController.Change(DataWysControl.Id, "" + datadzisiaj + "");
Runtime.WindowController.PostEvent(DataWysControl.Id, Events.Accepted);
Thread.Sleep(3000);

Runtime.WindowController.Change(DataWydControl.Id, "" + datadzisiaj + "");
Runtime.WindowController.PostEvent(DataWydControl.Id, Events.Accepted);
Thread.Sleep(3000);
w celu zmiany wszystkich dat. I co dziwne "krokowo" pojawia się poprawnie zmiana daty dostawy, potem wystawienia, a na końcu wydania i już "po tym" data wystawienia i wydania zmienia się na "starą" i dokument się zapisuje. Ale datę dostawy zmienia i zapisuje poprawnie. Więc zupełnie nie rozumiem co jest źle, skoro jedną z dat zapisuje dobrze.

StabiL
Posty: 69
Rejestracja: 28 cze 2017, 15:41
Rola: Konsultant CDN XL

Re: Hydra - podstawienie daty i zapis dokumentu

Post autor: StabiL »

Tyriado pisze:
25 cze 2025, 09:43
Obiekt to okno FS (Procedures.TrN_FS), jeśli o to pytasz. W ogóle zastanawiam się jak zrobić to samo dla (S)FS, trzeba zrobić oddzielny dodatek, czy skopiować kod w jeden i go zduplikować zmieniając procedurę. Bo nie wiem jak wpisać, aby stosowało dla dwóch "procedur".
Robisz sobie kolejną klasę, która dziedziczy po Twojej klasie (która to dziedziczy po Callback). 'Nad' tą klasą dodajesz subskrypcje ze spinaczem. W przypadku FS i (S)FS nie powinno być problemu. Może się zdarzyć, jakbyś np. robił to samo dla FS i MMW, że brakuje jakiejś kontrolki w jednym oknie, a w drugim są. Trzeba o tym pamiętać, tak samo jak o tym, że coś może się wyświetlać w oknie FS, a w (S)FS nie, a Ty robisz w tym miejscu przycisk.

Wracając do Twojego głównego problemu, pobawiłbym się jeszcze w dodanie Events.NewSelection, MouseDown bodajże i inne :) Jakby mi nie działało to bym zapiął subksrypcje ze wszystkimi Eventami i patrzył, który event się jeszcze wykonuje po kliknięciu na dyskietkę.

No i tabela buforowa, w jednym miejscu tego kiedyś użyłem, póki co działa, ale strach pozostał ;P

ODPOWIEDZ