mojaSymfonia FORUM https://forum.mix-soft.pl/ |
|
WYMIARY Towarów, nazwa na dokumentach WartosciWymiarow https://forum.mix-soft.pl/viewtopic.php?f=15&t=9333 |
Strona 1 z 1 |
Autor: | sniez [ 2019-11-26, 17:09 ] |
Tytuł: | WYMIARY Towarów, nazwa na dokumentach WartosciWymiarow |
Kod: dispatch xGetParams=xFactory.NewObject("XParams") string sGetError Dispatch xTw xTw = xFactory.NewObject("BTowar") string sub Wymiary( string sKod) int iWym xTw.Load(sKod) xGetParams.Clear() xGetParams.kod=sKod xTw=xFactory.GetObject("BTw",xGetParams) Wymiary = xTw.nazwa for iWym = 1 to iWym > xTw.WartosciWymiarow.Count() Wymiary += xTw.WartosciWymiarow.Item(iWym).wymiar.definicja.nazwa+ ": " + xTw.WartosciWymiarow.Item(iWym).wartosc + lf next iWym endsub Message Wymiary("504343") Pogrzebałem na forum i mam powyższy kod. Dostaję informację Obiekt nie obsługuje właściwości lub metody o nazwie: "WartosciWymiarow" Gdy najzwyczajniej pobieram np. nazwę towaru xTw.nazwa to oczywiście działa. Dodatkowo - posłużyłem się kodem zaproponowanym przez eksperta Rafała http://www.forum.mojasymfonia.pl/viewtopic.php?f=2&t=5080&hilit=wymiary+na+wz Na niektórych stanowiskach pojawia się komunikat Kod: Problem pojawia się taki: Błąd wykonania Obiekt OLE nie został zainicjowany Wersja SymfoniaERP 2020.1 |
Autor: | Zenek N [ 2019-12-02, 14:56 ] |
Tytuł: | Re: WYMIARY Towarów, nazwa na dokumentach WartosciWymiarow |
jaki to program ? |
Autor: | sniez [ 2019-12-03, 00:44 ] |
Tytuł: | Re: WYMIARY Towarów, nazwa na dokumentach WartosciWymiarow |
Sage Symfonia ERP 2020.1. Jest to moduł Handel i kod z ambasic'a. Nie dostałem odpowiedzi, dałem sobie spokój z dostępem do wymiarów przez obiekty i napisałem sobie takiego inklud'a Kod: dispatch xConn=GetAdoConnection() dispatch xConnTmp=GetAdoConnection() dispatch xConnTemp=GetAdoConnection() dispatch xRec="ADODB.Recordset" dispatch xRTmp="ADODB.Recordset" dispatch xRTemp="ADODB.Recordset" dispatch cmdAdo = "ADODB.Command" cmdAdo.ActiveConnection = xConnTemp cmdAdo.CommandTimeout = 50000 xRec.CursorType=1 xRec.LockType=3 xRTmp.CursorType=1 xRTmp.LockType=3 string sSQL long lCount //------------------------------------------------------------------------------------------------------------- int sub funWymiarylist() string sKodTowaru int dIdElementu string sMiejsceMag sSQL="SELECT kod FROM TW " sSQL+="WHERE typ = 0 " xRec.Open(sSQL,xConn) While !xRec.EOF() lCount+=1 sKodTowaru = xRec.Fields("kod").value print xRec.Fields("kod").value print LF; print using "%d",lCount; print LF; xRtmp.Open("SELECT ElementId From SSCommon.STElements WHERE SSCommon.STElements.Title='"+sKodTowaru+"'",xConnTmp) While !xRtmp.EOF() dIdElementu = xRtmp.Fields("ElementId").value xRtmp.MoveNext() wend xRtmp.Close() xRtmp.Open("SELECT CDim_Miejsce#składowaniaHM_6780_1 FROM SSCommon.ProductClassification WHERE SSCommon.ProductClassification.ElementId ="+(using "%d",dIdElementu),xConnTmp) While !xRtmp.EOF() if xRtmp.Fields("CDim_Miejsce#składowaniaHM_6780_1").value then // to jest potrzebne, bo jak pusta komórka, to element jest int (chyba 0 albo null), jak pełna - to string sMiejsceMag = xRtmp.Fields("CDim_Miejsce#składowaniaHM_6780_1").value endif xRtmp.MoveNext() wend xRtmp.Close() print sMiejsceMag print LF; xRec.MoveNext() wend xRec.Close() : lCount=0 Endsub string sub funDajTwWymiar(string sKodTowaru) int dIdElementu string sMiejsceMag xRtmp.Open("SELECT ElementId From SSCommon.STElements WHERE SSCommon.STElements.Title='"+sKodTowaru+"'",xConnTmp) While !xRtmp.EOF() dIdElementu = xRtmp.Fields("ElementId").value xRtmp.MoveNext() wend xRtmp.Close() xRtmp.Open("SELECT CDim_Miejsce#składowaniaHM_6780_1 FROM SSCommon.ProductClassification WHERE SSCommon.ProductClassification.ElementId ="+(using "%d",dIdElementu),xConnTmp) While !xRtmp.EOF() if xRtmp.Fields("CDim_Miejsce#składowaniaHM_6780_1").value then // to jest potrzebne, bo jak pusta komórka, to element jest int (chyba 0 albo null), jak pełna - to string funDajTwWymiar = xRtmp.Fields("CDim_Miejsce#składowaniaHM_6780_1").value ELSE funDajTwWymiar = "" endif xRtmp.MoveNext() wend xRtmp.Close() Endsub int sub funZmienTwWymiar(string sKodTowaru, string sNoweMiejsce) int dIdElementu string sMiejsceMag print sKodTowaru; print " nowe miejsce: "; print sNoweMiejsce; print " "; xRtmp.Open("SELECT ElementId From SSCommon.STElements WHERE SSCommon.STElements.Title='"+sKodTowaru+"'",xConnTmp) While !xRtmp.EOF() dIdElementu = xRtmp.Fields("ElementId").value xRtmp.MoveNext() wend xRtmp.Close() if dIdElementu then xRtmp.Open("SELECT CDim_Miejsce#składowaniaHM_6780_1 FROM SSCommon.ProductClassification WHERE SSCommon.ProductClassification.ElementId ="+(using "%d",dIdElementu),xConnTmp) While !xRtmp.EOF() if xRtmp.Fields("CDim_Miejsce#składowaniaHM_6780_1").value then // to jest potrzebne, bo jak pusta komórka, to element jest int (chyba 0 albo null), jak pełna - to string print "znalazłem stare miejsce "; sMiejsceMag = xRtmp.Fields("CDim_Miejsce#składowaniaHM_6780_1").value print sMiejsceMag; cmdAdo.CommandText = "UPDATE SSCommon.ProductClassification SET CDim_Miejsce#składowaniaHM_6780_1 = '"+sNoweMiejsce+"' WHERE SSCommon.ProductClassification.ElementId="+(using "%d",dIdElementu) cmdAdo.Execute() print " zmienione"; //print xRtmp.Fields("CDim_Miejsce#składowaniaHM_6780_1").value ELSE print "nie znalazłem rekordu miejsca" print LF endif xRtmp.MoveNext() wend xRtmp.Close() else print " nie znalazłem kartoteki" endif print LF; Endsub int sub funImportMiejscatxt() int id, idWyst String Plik_w ="C:\\MIEJSCA\\MIEJSCA.txt" Int Numer_plik = Open Plik_w For input Int tw2, err String strLine, strKod, strMiejsce, konc Float cena, ilosc buf = "" Input # Numer_plik, strLine Do buf = strLine konc = Find Regular "{;*}\{;*}\{;*}" strKod = Regular 1 strMiejsce = Regular 2 buf = strKod delete ";" strKod = buf buf = strMiejsce delete ";" strMiejsce = buf funZmienTwWymiar(strKod,strMiejsce) Input # Numer_plik, strLine Loop Until strLine=="EOF" endsub Moja baza ma wymiar, który mnie interesuje tutaj: CDim_Miejsce#składowaniaHM_6780_1 - trzeba sobie zmienić. int sub funWymiarylist() - listuje nam co mamy wpisane przy kodzie towarowym funDajTwWymiar(string sKodTowaru) - daje nam element wymiaru na podstawie kodu towarowego (ta funkcja wkleja mi wymiar na dokumenty magazynowe) funZmienTwWymiar(string sKodTowaru, string sNoweMiejsce) - wprowadza zmianę do wymiaru dla zadanego towaru Ostatnia funkcja to bonus - potrzebowałem zaimportować wymiary do towarów z excela/pliku tekstowego - musi wyglądać jak poniżej. ;KODTOWARU1;ELEMENTWYMIARU1; ;KODTOWARU2;ELEMENTWYMIARU2; ;KODTOWARU3;ELEMENTWYMIARU3; ;KODTOWARU4;ELEMENTWYMIARU4; EOF To moje kodowanie jest brzydkie i paździeżowe, ale działa lepiej niż obiekty biznesowe BY SAGE. |
Strona 1 z 1 | Strefa czasowa UTC+1godz. [letni] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |