Damian Szynkarczyn 0 Napisano 2 Marca 2023 Udostępnij Napisano 2 Marca 2023 w Integracja sfera dla subiekt GT + c# dodanie nowego Zamówienia Klienta Proszę o pomoc w dostępie do subiekta z poziomu aplikacji c#. Mam zakupioną sferę do subiekta gt jednak przykładowy plik połączenia *.cs wywala błędy. Importuje do projektu gta64.dll. Potrzebuje dodawać zamówienia klienta z poziomu aplikacji wpf c#. Resztę potrzebnych informacji odczytuje bezpośrednio z bazy danych jednak dodawanie dokumentów chciałbym zrobić za pomocą sfery żeby nie zepsuć bazy danych ponieważ nie znam wszystkich zależności. Jeżeli nie uda się bezpośrednio połączyć z poziomu c# zostaje skrypt vba odpalić jako process. Potrzebuje dodać Zamówienie Klienta dla jednego magazynu i jednego typu towaru. Zmienny jest opis, 2 pola własne, ilość towaru, cena i data realizacji. Link to postu
Daniel Kozłowski 1 171 Napisano 2 Marca 2023 Udostępnij Napisano 2 Marca 2023 w Integracja sfera dla subiekt GT + c# dodanie nowego Zamówienia Klienta Należy dodać referencję do: Wypadałoby podać komunikaty błędów. Link to postu
Krzysztof Wielgosz 0 Napisano 2 Marca 2023 Udostępnij Napisano 2 Marca 2023 w Integracja sfera dla subiekt GT + c# dodanie nowego Zamówienia Klienta W skrócie // podstawka InsERT.Subiekt uruchom_subiekta() { InsERT.GT gt = new InsERT.GT(); gt.Produkt = InsERT.ProduktEnum.gtaProduktSubiekt; gt.Serwer = Konf.MsSql_Subiekt.IpPort; gt.Baza = Konf.MsSql_Subiekt.Baza; gt.Autentykacja = InsERT.AutentykacjaEnum.gtaAutentykacjaMieszana; gt.Uzytkownik = Konf.MsSql_Subiekt.Login; gt.UzytkownikHaslo = Konf.MsSql_Subiekt.Haslo; gt.Operator = Konf.Subiekt.Operator; gt.OperatorHaslo = Konf.Subiekt.OperatorHaslo; // Uruchomienie Subiekta GT InsERT.Subiekt subiekt = (InsERT.Subiekt)gt.Uruchom((Int32)InsERT.UruchomDopasujEnum.gtaUruchomDopasuj, (Int32)InsERT.UruchomEnum.gtaUruchomNieArchiwizujPrzyZamykaniu); subiekt.Okno.Widoczne = Konf.Subiekt.WidocznoscOkna; // true = subiekt widoczny - false=subiekt nie widoczny return subiekt; } InsERT.Subiekt subiekt = uruchom_subiekta(); bool Istnieje = subiekt.Kontrahenci.Istnieje("JAKISSYMBOL"); // jak istnieje to go wczytujemy przy okazji możemy go edytować przed wstawieniem do zamówienia ale po edycji trzeba go najpierw zapisać i zamknąć InsERT.Kontrahent DoKontrahenta = subiekt.KontrahenciManager.WczytajKontrahenta("JAKISSYMBOL"); // okreśłamy magazyn id int - można to zrobić wyżej... ale przed tworzeniem zamówienia /faktury itp. subiekt.MagazynId =1; // tworzymy obiekt zamówienia przed dodaniem numeru zewnętrznego pasowało by sprawdzić czy czasem już nie istnieje jak nie istnieje to dodajemy nowe lub możemy wczytaj i edytować pod warunkiem ze możliwa jest edycja. po wczytaniu zamówienia można wykonać w try catch np. DokZamowienie.ZapiszSymulacja(); i odczytać błędy na podstawie których można stwierdzić że edycja jest nie możliwa jedna z prostych mołżiwości InsERT.SuDokument DokZamowienie = subiekt.SuDokumentyManager.DodajZKzal(); DokZamowienie.NumerOryginalny = "jakis numer 1"; // wstawiamy kontrachenta id to identyfikator z DoKontrahenta DokZamowienie.KontrahentId = DoKontrahenta.Identyfikator; //ponadto warto przetestować które wartości chcemy ustawiać ręcznie lub jak nie ustawimy ich to wstawią się domyślne.. takie jak np. kategoria dokumentu, waluta , rezerwacja, termin realizacji, itp.. // pasowało by też dodać listę towarów temat bardziej obszerny niż samo zamówienie moim zdaniem, najlepiej dodawać najpierw towary potem ustalać wartości i rabaty dla całego dokumentu jeśli mają być inne niż domyślne, tutaj jest sporo zabawy aby osiągnąć jakiś bardziej skomplikowany efekt = np. zgodność cen do grosza z innym systemem skąd pochodzą zamówienia // aby zapisać zamówienie lub wyświetlić dobre dla testów czy wstawiło to co chcemy Wyswietl() DokZamowienie.Zapisz(); // pola własne moim zdaniem najlepiej ustawiać po zapisie dokumentu wtedy jesteśmy w stanie też tymi samymi metodami aktualizować pola własne niezależnie od stanu realizacji dokumentu - jest jeden minus że jeśli w momencie dane zamówienie jest edytowane przez inną stacje roboczą a my zaktualizujemy pola własne to jak tamta stacja robocza da zapisz to może nadpisać naszą aktualizacje w polach własnych tutaj trzeba to dobrze rozważyć z której metody skorzystać subiekt.UstawPoleWlasne(); // można też ustawić flage za pomocą subiekt.UstawFlageWlasna(); // ważne aspekty aby walidować wartości i ich długości dozwolone znaki przed ładowaniem do właściwości/metod bo mamy Exception-a ale nie zawsze i można się zawiesić na długie minuty/godziny w poszukiwaniu dlaczego cos nie działa... w celu szybkiego dojścia co gdzie i typy można warto zerkać na scheme bazy danych i dozwolone typy dla danych tabel/kolumn bardzo to p To tak bardzo bardzo w skrócie i napisane na kolanie... ale pozwoli Ci zacząć cokolwiek znacznie szybciej niż mi Link to postu
Damian Szynkarczyn 0 Napisano 3 Marca 2023 Autor Udostępnij Napisano 3 Marca 2023 w Integracja sfera dla subiekt GT + c# dodanie nowego Zamówienia Klienta Dzięki ruszyło. Mam dołączone gta64.dll, tego com co daniel napisał. Dodatkowo brakowało adodb. Pobrałem z nuget i przykłady od Krzysztofa ruszyły. Dzieki! Link to postu
Daniel Kozłowski 1 171 Napisano 3 Marca 2023 Udostępnij Napisano 3 Marca 2023 w Integracja sfera dla subiekt GT + c# dodanie nowego Zamówienia Klienta 4 godziny temu, Damian Szynkarczyn napisał: Dzięki ruszyło. Mam dołączone gta64.dll, tego com co daniel napisał. Dodatkowo brakowało adodb. Pobrałem z nuget i przykłady od Krzysztofa ruszyły. Dzieki! Nie opisuje Pan tego co robi, ale prawdopodobnie coś Pan robi nie tak, adodb jest w systemie, nie trzeba go pobierać, powinno dodać się do referencji automatycznie po dodaniu biblioteki Sfery... Dodam jeszcze (dla innych), że opisane rozwiązanie nie zadziała dla aplikacji korzystających z .NET < 4.0. Link to postu
Polecane posty