Jerzy Biesiadowski 0 Napisano 23 Czerwca 2019 Udostępnij Napisano 23 Czerwca 2019 w Sfera Kalendarz Cykle Przepraszam za spam. Ten sam post wysłałem z innego konta ? Zadanie: stworzenie w Sferze indywidualnego miesięcznego kalendarza czyli planu pracy. W Gratyfikancie NEXO jest to obecnie możliwe. Spróbowałem zrobić to w Sferze. Skorzystałem z podpowiedzi zawartej w dokumentacji przy Interfejsie obiektu biznesowego Kalendarz, cytuję: InsERT.Moria.Kadry.Duze.IKalendarze mgr = sfera.PodajObiektTypu<InsERT.Moria.Kadry.Duze.IKalendarze>(); using (var bo = mgr.Utworz()) { // Tu należy umieścić kod wypełniający obiekt poprawnymi danymi. // Główna encja jest dostępna poprzez właściwość bo.Dane Zaciąłem się przy tworzeniu Cyklu. Klasa Kalendarz odwołuje się do kolekcji ICollection< CyklKalendarza> CyklKalendarza powstaje przy współpracy konstruktorów klas DzienKalendarza i DzienCyklu. Musi tak być, bo relacja CyklKalendarza do DzieńKalendarza byłaby typu wiele do wielu i konieczna jest tabela pośrednicząca DzieńCyklu. Znane mi są elementy tych trzech tabel, ale niestety nie wiem jak zrobić z tego kolekcję i przyporządkować polu Kalendarz.Cykle. Czy któryś z kolegów ma może doświadczenie w podanym temacie? Link to postu
Krzysztof W. 2 Napisano 24 Czerwca 2019 Udostępnij Napisano 24 Czerwca 2019 w Sfera Kalendarz Cykle Poniżej przykład utworzenia nowego planu pracy: public void DodaniePlanuPracy() { using ( var sfera = UruchomSfere() ) { IKalendarze kalendarze = sfera.PodajObiektTypu<IKalendarze>(); ISystemyRozliczaniaCzasuPracy systemyRozliczaniaCzasuPracy = sfera.PodajObiektTypu<ISystemyRozliczaniaCzasuPracy>(); using ( var kalendarzBO = kalendarze.Utworz() ) { var systemRozliczaniaCzasuPracy = systemyRozliczaniaCzasuPracy.Dane.Wszystkie().FirstOrDefault(x => x.Domyslny); kalendarzBO.Dane.SystemRozliczaniaCzasuPracy = systemRozliczaniaCzasuPracy; kalendarzBO.Dane.Nazwa = "Mój kalendarz"; var cykl = new CyklKalendarza(); kalendarzBO.Dane.Cykle.Add(cykl); cykl.ObowiazujeOd = DateTime.Now.Date.PoczatekTygodnia(); cykl.WyjatkiUstawowe = true; DzienCyklu dzienCyklu = null; //wpisanie 5 dni roboczych cyklu for ( int i = 0; i < 5; i++ ) { dzienCyklu = new DzienCyklu(); cykl.Dni.Add(dzienCyklu); dzienCyklu.Lp = i; dzienCyklu.TypDnia = (byte)TypDnia.Roboczy; //po podaniu typu dnia jako roboczy liczba godzin do przepracowania ustawi się automatycznie na liczbę zgodną z wymiarem dobowego pełnego zatrudnienia //ale można ją ustawić samodzielnie dzienCyklu.DoPrzepracowania = new CzasTrwaniaWymagany() { Ticks = new TimeSpan(8, 0, 0).Ticks }; dzienCyklu.DoPrzepracowaniaNocne = new CzasTrwaniaWymagany() { Ticks = new TimeSpan(0, 0, 0).Ticks }; dzienCyklu.Opis = ""; } //wpisanie wolnej soboty dzienCyklu = new DzienCyklu(); cykl.Dni.Add(dzienCyklu); dzienCyklu.Lp = 6; dzienCyklu.TypDnia = (byte)TypDnia.Wolny; //wpisanie niedzieli dzienCyklu = new DzienCyklu(); cykl.Dni.Add(dzienCyklu); dzienCyklu.Lp = 6; dzienCyklu.TypDnia = (byte)TypDnia.Wolny; if ( !kalendarzBO.Zapisz() ) kalendarzBO.WypiszBledy(); } } } Pozdrawiam Krzysztof Wesoły Link to postu
Polecane posty