Darek Darek

Darek Darek Secjalista

Temat: Cecha data ostatniego dok handlowego na liscie kontrahentów

Witam
Na samym wstępie chciałbym powiedzieć że jestem amatorem a nie programistą, a enova zainspinirowała mnie do wstępu języka c#.,
Mianowicie chciałbym z poziomu listy kontrahentów widzieć datę ostatniego dokumentu wystawionego dla danego kontrahenta, w związku z czym "wymyśliłem" taki kod

public string Feature_OstatniDokument{
get {
// Tutaj umieść kod wyliczajacy wartość cechy

string kod = Convert.ToString(Row.Kod);
string data = "";

foreach(DokumentHandlowy dokument in Session.GetFrom(Table).GetHandel().DokHandlowe.Rows)
{
string koddokument = Convert.ToString(dokument.Kontrahent.Kod);

if(kod == koddokument)

{
data = Convert.ToString(dokument.Data);
break;
}

}

return Convert.ToString(data);

}
}

I odziwo zadziało dla kilku rekordów, jednak z tego co mi się udało ustalić to wyświetla informację dla tych kontrahentów do których został wystawiony dokument ZK lub BO i wyświetla pierwszy a nie ostatni więc należąło by odpowiednio posortować dane.
Tak jak wspominałem, tematem zajmuje się niejako hobbystycznie, bedę wdzięczny za pomoc i wyrozumiałość :).
Maciej Czajka

Maciej Czajka Win - Win. Brak
równowagi we
współpracy częściej
szkodzi ...

Temat: Cecha data ostatniego dok handlowego na liscie kontrahentów

Cześć.
Po pierwsze rozumiem, że cecha jest na Kontrahencie na co wskazuje Row.Kod? Typ danych to Tekst? A dlaczego nie Data?
Po co konwertujesz kod, skoro kod jest stringiem, ewentualnie możesz to zapisać jako Row.Kod.ToString()?

string data? Data to albo DateTime, albo Soneta.Types.Data

Nie testowałem nigdy takiej konstrukcji:
foreach(DokumentHandlowy dokument in Session.GetFrom(Table).GetHandel().DokHandlowe.Rows)

i nawet nie podejmuję się na gorąco sprawdzenia co zwraca, może zwraca i właściwą kolekcję, ale... Czemu nie dobrać się w foreach do Row.DokumentyHandlowe co jest bardziej naturalne?
Tu oczywiście wchodzimy jeszcze w temat jakiegoś dodatkowego filtrowania przed foreach, etc.

Wracając do kodu. Dając break w IF zobacz co robisz.
Przeglądasz dokumenty handlowe, znajdujesz w końcu jakiś gdzie kod kontrahenta jest zgodny i przerywasz pętlę, zwracasz jakąś datę. Z pierwszego znalezionego dokumentu, co by oznaczało też pierwszy wystawiony dla klienta. No to gdzie jest ten ostatni?

Dodatkowo nie obsługujesz klientów, dla których nie ma wystawionych dokumentów, inaczej cecha będzie sypała błędami.

Motywacja do nauki C# jest fajna, ale zanim zaczniesz z enova365 to musisz ogarnąć podstawy obiektowości, potem zakolegować się z obiektami enova, a dopiero na końcu tworzyć własny kod.

P.S. Nie jestem mistrzem C#, mnie też zmotywowała enova i wciąż się jej uczę. Ale by podstawy C# musisz zrobić na jakimś tutorialu.

Następna dyskusja:

Cecha na dok Handlowym




Wyślij zaproszenie do