Optima, COM, dodanie nieobecności

Optima, COM, dodanie nieobecności
MB
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2
0

Cześć,

czy ktoś może byłby w stanie mnie nakierować w jaki sposób mogę dodać pracownikowi nieobecność?
Do pobrania nieobecności działa mi kod:

Kopiuj
            var nieobecnosci = (ICollection)_session.CreateObject("CDN.Nieobecnosci");
            var nieobecnosc = (Nieobecnosc)nieobecnosci["PNB_PnbId = 1"];

Na kolekcji jestem również w stanie z powodzeniem wywołać metodę AddNew()

Kopiuj
            var nowaNieobecnosc = (Nieobecnosc)nieobecnosci.AddNew();

i w tym miejscu zaczynają się schody, jak teraz spróbuję to zapisać to dostaję błąd wskazujący na to że trzeba ustawić propkę Typ i to samo w sobie jak najbardziej ma sens.
Tylko problem jest taki że propka Typ jest typu TypNieobecnosci i za nic nie jestem w stanie utworzyć obiektu tego typu.
Na bazie dane których potrzebuje są w tabeli TypNieobec, dostępny również mam obiekt TypyNieobecnosci więc wydawałoby się że taki kod powinien zadziałać

Kopiuj
            var typy = (TypyNieobecnosci)_session.CreateObject("CDN.TypyNieobecnosci");
            var typ = (TypNieobecnosci)typy["TNB_TnbId = 1"];

Ale przy użyciu CreateObject dostaję błąd "Invalid class string (Exception from HRESULT: 0x800401F3 (CO_E_CLASSSTRING))'"
Rozumiem że podane przeze mnie sCLSID jest niepoprawne ale za nic nie mogę dojść do tego jakie powinno być.
Zawsze tutaj działało mi podawanie nazwy obiektu, ale teraz ani to ani nic innego co przyszło mi do głowy nie działa.
Czy ktoś ma może pomysł jakie sCLSID muszę tutaj podać?

AdamWox
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Jastrzębie-Zdrój
  • Postów: 2180
2
Kopiuj
var pracownik = (Pracownik)session.CreateObject("CDN.Pracownicy", "PRA_KOD = 'kod_pracownika'");
var czasPracy = pracownik.CzasPracy;
var nieobecnosci = czasPracy.Nieobecnosci;

var nieobecnosc = nieobecnosci.AddNew();
var typNieobecnosci = (TypNieobecnosci)session.CreateObject("CDNKalend.TypyNieobecnosci", "TBN_Akronim = 'url.wyp.'");

nieobecnosc.Typ = typNieobecnosci;
nieobecnosc.Okres.Od = "2025-04-01";
nieobecnosc.Okres.Do = "2025-04-15";

session.Save();
MB
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2
0
AdamWox napisał(a):
Kopiuj
var pracownik = (Pracownik)session.CreateObject("CDN.Pracownicy", "PRA_KOD = 'kod_pracownika'");
var czasPracy = pracownik.CzasPracy;
var nieobecnosci = czasPracy.Nieobecnosci;

var nieobecnosc = nieobecnosci.AddNew();
var typNieobecnosci = (TypNieobecnosci)session.CreateObject("CDNKalend.TypyNieobecnosci", "TBN_Akronim = 'url.wyp.'");

nieobecnosc.Typ = typNieobecnosci;
nieobecnosc.Okres.Od = "2025-04-01";
nieobecnosc.Okres.Do = "2025-04-15";

session.Save();

Zadziałało praktycznie od strzała 😀.
Od 3 dni nad tym siedzę i kombinuję, w życiu bym nie wpadł na to że to ma być CDNKalend.
I od razu mam odpowiedź na problem który zaraz pewnie pojawiłby się jako następny, jak połączyć nieobecność z pracownikiem 😛
Naprawdę przeogromne dzięki.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.