artur17
Rejestracja: 2008-07-11, 13:33 Posty: 78
|
Problem z obiektem BTowar...
Witam,
Problem dotyczy aplikacji HMF 2008.
Otóż korzystam z obiektu BTowar, aby utworzyć nową pozycję towarową w kartotece.
Z dodaniem samego towaru nie mam problemu, jednak cały czas nie wychodzą mi dwie rzeczy.
Mianowicie mój raport nie dodaje mi kodu obcego i katalogu dla nowo utworzonego towaru. Próbuję to realizować tak:
Kod: (...) xTowar.UstawKatalog("id='zmienna_id_katalogu_z_tabeli_XT'") xTowar.UstawKodObcy("kod='id_kontrahenta' kodObcy='moj_kod_obcy'") (...)
Dodam, iż gdy dla ustawienia katalogu wpiszę jako parametr "na sztywno" np. "id=65000" to wtedy program poprawnie umieszcza mi towar w wybranym katalogu, jednak chciałbym aby to była zmienna...
Natomiast to dodawanie kodu obcego w żaden sposób nie idzie... :/
Proszę więc bardziej doświadczonych o pomoc :)
|
Autor |
Wiadomość |
Mix-soft.pl
|
|
|
rafal
Ekspert
Rejestracja: 2007-11-16, 15:08 Posty: 4000 Pomógł: 448
|
Kod: xTowar.UstawKatalog((using "id=%l",zmienna_id_katalogu_z_tabeli_XT)) xTowar.UstawKodObcy((using "kod='%s' kodObcy='%s'", kod_kontrahenta_a_nie_id, moj_kod_obcy))
|
2009-11-20, 11:00 |
|
|
artur17
Rejestracja: 2008-07-11, 13:33 Posty: 78
|
Dziękuję za szybką odpowiedź.
Co do katalogu - działa :)
Natomiast jeżeli chodzi o dodanie kodu obcego, to niestety dalej bez rezultatów...
Tak to póki co wygląda:
Kod: xTowar.UstawKod(kod) xTowar.nazwa=nazwa xTowar.ustawtyp("0") xTowar.jm="szt" xTowar.ustawaktywny("1") xTowar.ustawrodzaj("3200") xTowar.UstawKatalog((using "id= %l",id_katalog)) xTowar.UstawKodObcy((using "kod='%s' kodObcy='%s'", kod_kontrahenta, kod_obcy))
Oczywiście zarówno pod zmienną "kod_kontrahenta" i "kod_obcy" jest przesyłana właściwa wartość string.
|
2009-11-20, 13:26 |
|
|
rafal
Ekspert
Rejestracja: 2007-11-16, 15:08 Posty: 4000 Pomógł: 448
|
może tak?
Kod: xTowar.UstawKodObcy((using "kod=%s kodObcy=%s", kod_kontrahenta, kod_obcy))
|
2009-11-20, 14:06 |
|
|
artur17
Rejestracja: 2008-07-11, 13:33 Posty: 78
|
Hmmm... próbowałem już na różne warianty to obsłużyć...
A działa w ogóle ta metoda?
W dokumentacji jest tylko tyle:
Cytuj: UstawKodObcy Opis metody: Metoda ustawia nowy kod obcy dla danego towaru i wskazanego kontrahenta. Opis parametru: Parametr postaci: "kod=KOD_KONTRAHENTA kodObcy=NOWY_KOD_OBCY" Warunki wywołania: Zawsze Wartość Zwracana: 0 - zakończona pomyślnie lub numer błędu
Jeżeli chodzi o zwracaną wartość błędu, to jest to error: 771.
|
2009-11-20, 14:51 |
|
|
leonek
Rejestracja: 2009-05-14, 20:18 Posty: 53
|
Ostatecznie zawsze zadziała "INSERT INTO" lub "UPDATE ... SET"
|
2009-11-22, 22:35 |
|
|
Notos
Rejestracja: 2008-09-23, 08:30 Posty: 149 Pomógł: 2
|
Info co się kryje w 771 sprawdzisz tak:
Kod: string sErr for i = 1 to i > xFactory.komunikaty.count sErr+= using "%s %d - %s\n", iif(xFactory.komunikaty.item(i).status, "ERR", "WRN"),xFactory.komunikaty.item(i).id, xFactory.komunikaty.item(i).tresc next i message sErr
|
2009-11-23, 14:22 |
|
|
artur17
Rejestracja: 2008-07-11, 13:33 Posty: 78
|
Udało mi się już uprać z problemem.
Wyjaśnię krótko na czym on polegał:
Otóż okazuje się, że ustawienie kodu obcego musi odbywać się na już zdefiniowanym i wybranym towarze. To znaczy, że metody "UstawKodObcy" nie można uruchamiać podczas tworzenia towaru, ale dopiero PO zdefiniowaniu i zapisaniu go do tabel programu.
Ot co... :))
Dziękuję jeszcze raz za pomoc...
|
2009-11-24, 11:12 |
|
|
artur17
Rejestracja: 2008-07-11, 13:33 Posty: 78
|
Chciałbym odświeżyć temat, albowiem zetknąłem się z problemem dotyczącym obiektów BTowar i BKatalogTw.
Chodzi o metodę "UstawKatalog", która przy tworzeniu nowego towaru przydziela mi dany towar do już wcześniej zdefiniowanego katalogu w swojej hierarchii.
Otóż na początku próbuję załadować dane do obiektu :
Kod: Dispatch xKat = xFactory.NewObject("BKatalogTW") xKat.Clear() Dispatch xParams = xKat.Params() xParams.nazwa=katalog xKat.Load(xParams1)
Gdzie katalog to podana pod zmienna ścieżka do katalogu docelowego zaczynająca się od znaku "\" np."\katalog1\podkatalog2" Następnie przy tworzeniu towaru wykorzystuje wspomnianą metodę "UstawKatalog": Kod: xTowar.UstawKatalog(xKat)
Niestety nie daje to oczekiwanego rezultatu. Towar nie przydziela się do danego podkatalogu.
Będę bardzo wdzięczny za pomoc...
Próbowałem również bezskutecznie użyć metody Give w obiekcie "BKatalogTw"...
|
2010-01-08, 15:02 |
|
|
rafal
Ekspert
Rejestracja: 2007-11-16, 15:08 Posty: 4000 Pomógł: 448
|
Kod: Dispatch xKat = xFactory.NewObject("BKatalogTW") xKat.Load("nazwa='Towary'") xTw.UstawKatalog( xKat )
|
2010-01-08, 15:44 |
|
|
artur17
Rejestracja: 2008-07-11, 13:33 Posty: 78
|
Niestety takie rozwiązanie nie działa.
Poniższy kod stanowi odrębną całość. Na jego przykładzie testuję to rozwiązanie:
Kod: Dispatch xKat = xFactory.NewObject("BKatalogTW") xKat.Load("nazwa='Katalog1'")
Dispatch xTowar = xFactory.NewObject("BTowar") xTowar.Clear() xTowar.Edit() xTowar.UstawKod("Towar") xTowar.nazwa="Nazwa_towaru" xTowar.ustawtyp("0") xTowar.jm="szt" xTowar.ustawaktywny("1") xTowar.UstawKatalog( xKat )
If xTowar.Save() then xTowar.Undo() message using "Utworzenie nowego towaru nie powiodło się!" error "" Endif
P.S. Oczywiście w Handlu mam katalog o nazwie "Katalog1".
|
2010-01-08, 16:38 |
|
|
wrob
Ekspert
Rejestracja: 2008-04-18, 18:52 Posty: 5169 Pomógł: 59
|
Hmmm.... a moze zapisac towar do bazy a potem dodawac mu katalog???
|
2010-01-08, 16:39 |
|
|
artur17
Rejestracja: 2008-07-11, 13:33 Posty: 78
|
No nie bardzo... Poza tym metoda "UstawRodzaj" dla towaru działa prawidłowo (metoda użyta przed zapisaniem rekordu do bazy).
Możnaby to zrobić poprzez wywołanie metody tak:
Kod: xTowar.UstawKatalog((using "id= %l",id_katalog))
Wtedy owszem - działa, lecz bardzo nieefektywne jest wyszukiwanie id danego katalogu z tabli XT.
|
2010-01-08, 16:52 |
|
|
sqza
Rejestracja: 2009-01-13, 10:45 Posty: 86
|
Można to zrobić również w poniższy sposób:
Kod: dispatch xParams dispatch xKatalogTW = xFactory.NewObject("BKatalogTW") dispatch xTowar = xFactory.NewObject("BTowar") xTowar.Load("kod='Towar 3'")
xTowar.Edit() xKatalogTW.Load() xParams=xKatalogTW.Params() xParams.nazwa="\\test" dispatch xWybKatTw = xKatalogTW.Give(xParams)
xTowar.UstawKatalog(xWybKatTw) xTowar.Save()
Pytanie czy to szybsze rozwiązanie
|
2010-01-08, 23:06 |
|
|
artur17
Rejestracja: 2008-07-11, 13:33 Posty: 78
|
Idealnie! Bardzo dziękuję za pomoc :)
|
2010-01-11, 12:42 |
|
|