Livingston Ierakstīts Aprīlis 14, 2015 Share Ierakstīts Aprīlis 14, 2015 Sveiki, Vai kādam ir pieredze ar Horizon (FMS resursu un grāmatvedības programma) REST interfeisu? Galvenā problēma ir ar jaunu ierakstu pievienošanu. Cik sapratu no paskopā dokumenta ( http://www.fmssoftware.lv/tools/download.php?file=files/doclist/REST_interfeiss_20140818.pdf ), ar GET metodi jāpaņem pareizā sagatave, jāizmaina vajadzīgie dati un ar POST jāsūta atpakaļ. Tālāk gan apraksts nesniedzas un pieredze ar REST arī nav pietiekama ... Ja kādam ir pieredze un var padalīties ar praktiskiem piemēriem, novērtēšu! Link to comment Share on other sites More sharing options...
Eric Aprīlis 14, 2015 Share Aprīlis 14, 2015 Reiz ar šo saskāros. Labākais padoms, ko saņēmu no supporta bija sazināties ar sistēmas uzturētāju/ieviesēju un noskaidrot kādi lauki ko nozīmē, jo konfigurācijas esot ļoti atšķirīgas. Ja Tavs jautājums bija par to kā nosūtīt GET un POST, tad precizē ko un kā tu tur mēģini darīt. Link to comment Share on other sites More sharing options...
Ronalds Aprīlis 14, 2015 Share Aprīlis 14, 2015 Horizons strādā ar MSSQL datu bāzi. Tur tabulu struktūra salīdzinoši vienkārša Es vismaz rakstu/lasu pa tiešo no mssql bāzes un nekādu problēmu! Link to comment Share on other sites More sharing options...
Livingston Aprīlis 14, 2015 Author Share Aprīlis 14, 2015 Datu bāzes es pārzinu perfekti, bet pagaidām vēl mēģinu izmantot REST. Ja godīgi, tad pat normāla informācijas izgūšana pagaidām sagaidām grūtības. Piemēram, ja skatās klientus: http://hostname/rest/TDdmKlSar/default atgrieztais XML ir (saīsināta versija): <resource> <collection xmlns="TDdmKlSar.xsd"> <metadata> -- kolonu apraksti .. </metadata> <row> <K> <KODS> <NOSAUK> <PK_KLIENTS> <href> <REG_NR> .. </K> </row> </collection> </resource> Parsējot esmu izmēģinājis dažādus XPATH (/resource/collection/row/K/KODS ) u.c., bet klienta kodu atlasīt nevaru. Ja ar regexp nedaudz piemodificēju rezultāta XML, tad varu atlasīt man vajadzīgos datus bez problēmām, BET tāda metode nestrādās veidojot jaunu ierakstu. Šo iemeslu dēļ interesē, vai kādam ir kāds piemērs, ko paskatīties - kā ierakstu pievienošana un atlase jātaisa pareizi, pēc tam jau varu strādāt ar konkrētiem parametriem. Link to comment Share on other sites More sharing options...
Knagis Aprīlis 14, 2015 Share Aprīlis 14, 2015 XPath vienmēr nepieciešams apstrādāt "xmlns" atribūtu. Tur nav elements "<row>", tas īstenībā ir "<TDdmKlSar.xsd:row>" (atkarīgs no konkrētā framework realizācijas, bet kaut kādā formā namespace tur figurē). Piemērs PHP: http://stackoverflow.com/questions/5285570/xpath-fails-if-an-element-has-a-a-xmlns-attribute Piemērs C#: http://stackoverflow.com/questions/585812/using-xpath-with-default-namespace-in-c-sharp Link to comment Share on other sites More sharing options...
Mezavecis Aprīlis 14, 2015 Share Aprīlis 14, 2015 Attiecībā uz lielām grāmatvedības sistēmām, tajā skaitā Horizon, es šo ieteikumu uzskatītu par kaitīgu un kuru kā pašu pēdējo var izmantot datu rakstīšanai. Ja reiz izstrādātājs paredzējis datu apmaiņas interfeisu, tad tāds ir jāizmanto, pretējā gadījumā jebkuru problēmu gadījumu integrators atbild par sekām ar savu galvu, bet uzņēmums nesaņem bezmaksas problēmu novēršanu uzturēšanas vai garantijas ietvaros. Horizons strādā ar MSSQL datu bāzi. Tur tabulu struktūra salīdzinoši vienkārša Es vismaz rakstu/lasu pa tiešo no mssql bāzes un nekādu problēmu! P.S. Es esmu taisījis datu importu/eksportu ar IFTG OLE. 2 Link to comment Share on other sites More sharing options...
Ronalds Aprīlis 14, 2015 Share Aprīlis 14, 2015 Mežaveci, nepiekritīšu! Ftg par saviem datu apmaiņas interfeisiem prasa diezgan kosmiskus, pa manam neadekvātus ciparus! Bez tam vismaz ole interfeiss ir lēns un ar diezgan ierobežotām iespējām, un apmēram 5 gadi atpakaļ dokumentācija tam bija švaka.... Vienīgā neērtība - updeiti jāliek uz testa vides sākumā - šad tad ftg maina db struktūru. Link to comment Share on other sites More sharing options...
Mezavecis Aprīlis 14, 2015 Share Aprīlis 14, 2015 Lēnums neattaisno šādu rīcību kāpt iekšā pa logu, jo atslēga par smagu un durvis par lēnu veras vaļā. Acīmredzot neviens no taviem apkalpotiem kantoriem nav lasījis līgumus ar FMS un/vai saskāries ar reālām problēmām, kas skar pamatīgas finanses. Link to comment Share on other sites More sharing options...
Ronalds Aprīlis 14, 2015 Share Aprīlis 14, 2015 saskāries ar reālām problēmām Ar horizon problēmām esam saskārušies ne reizi vien. Un visas reizes fms konsultanti ir mācējuši tikai pamatīgus rēķinus piestādīt, ne ko atrisināt! Nu vismaz tāda ir mana pieredze..... Link to comment Share on other sites More sharing options...
Vilx- Aprīlis 14, 2015 Share Aprīlis 14, 2015 Žetons par REST izmantošanu. MSSQL pa tiešo līst iekšā nav labi, tā toč var kādas ziepes savārīt. Ja vēl tikai datu izgūšana, tad vēl tā (ļaunākajā gadījumā process vairs nestrādās), taču rakstīt toč nevajag. Tur ir kolonnas un tabulas, kurās dati ir saistīti savā starpā; kaut ko nomudīsi, un pēc tam sūdi būs pēc pilnas programmas. Par datu izgūšanu - Tu jau esi uz pareizās takas. Ja ar XML grūti, vēl vari pamēģināt ar JSON, padodot HTTP headeri "Accept-Type: application/json". Tikai tas nav tik daudz testēts, tāpēc tur var būt vairāk bugu. Tāpat arī metadati tur nav tik daudz kā XML. Runājot par metadatiem, noteikti apskaties XSD shēmas arī. Tur ir daudz vērtīgas informācijas par pieejamajām kolonnām un to datu tipiem. OLE interfeiss skaitās novecojis un to neiesaka izmantot, taču compatibility nolūkā tas vēl eksistē. Par XPATH taisnība būs Knagim - ja ar to nevari izvilkt, tad līkas rokas pašam strādājot ar XML. Tajā dokumentā (links nestrādā, btw) nav piemēri? 2 Link to comment Share on other sites More sharing options...
Livingston Aprīlis 14, 2015 Author Share Aprīlis 14, 2015 URL uz dokumentāciju ir šeit: http://www.fmssoftware.lv/tools/download.php?file=files/doclist/REST_interfeiss_20140818.pdf (aiz pdf nevejadzētu būt nekādiem simboliem). Normālu piemēru tur nav. Par līkām rokām nestrīdos. XSD shēma (TDdmKlSar.xsd ) ir 1007 rindiņas, ieskatam: <xsd:schema xmlns="TDdmKlSar.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:global="global.xsd" xmlns:TadmTerit="TadmTerit.xsd" xmlns:TDdmCustomer="TDdmCustomer.xsd" xmlns:TddmKlKatBL="TddmKlKatBL.xsd" xmlns:TDdmSaviRek="TDdmSaviRek.xsd" xmlns:TddmUDFormaBL="TddmUDFormaBL.xsd" xmlns:TdmAccEd="TdmAccEd.xsd" xmlns:TdmAccEdOrGroup="TdmAccEdOrGroup.xsd" xmlns:TdmBLDValsts="TdmBLDValsts.xsd" xmlns:TdmDKPers="TdmDKPers.xsd" xmlns:TdmDocType="TdmDocType.xsd" xmlns:TdmDSektBL="TdmDSektBL.xsd" xmlns:TdmGrupa="TdmGrupa.xsd" xmlns:TdmKvAktiv="TdmKvAktiv.xsd" xmlns:TdmKvAktV="TdmKvAktV.xsd" xmlns:TdmNACEClassifBL="TdmNACEClassifBL.xsd" xmlns:TdmPvnKat="TdmPvnKat.xsd" xmlns:TdmUsersOBL="TdmUsersOBL.xsd" xmlns:TKSortimentsBL="TKSortimentsBL.xsd" xmlns:TNdmAdr="TNdmAdr.xsd" xmlns:TNdmApmveids="TNdmApmveids.xsd" xmlns:TNdmCenv="TNdmCenv.xsd" xmlns:TNdmPard="TNdmPard.xsd" xmlns:TsdmValName="TsdmValName.xsd" targetNamespace="TDdmKlSar.xsd"> <xsd:import schemaLocation="../global/global.xsd" namespace="global.xsd"/> <xsd:import schemaLocation="../TadmTerit/TadmTerit.xsd" namespace="TadmTerit.xsd"/> <xsd:import schemaLocation="../TDdmCustomer/TDdmCustomer.xsd" namespace="TDdmCustomer.xsd"/> <xsd:import schemaLocation="../TddmKlKatBL/TddmKlKatBL.xsd" namespace="TddmKlKatBL.xsd"/> <xsd:import schemaLocation="../TDdmSaviRek/TDdmSaviRek.xsd" namespace="TDdmSaviRek.xsd"/> <xsd:import schemaLocation="../TddmUDFormaBL/TddmUDFormaBL.xsd" namespace="TddmUDFormaBL.xsd"/> <xsd:import schemaLocation="../TdmAccEd/TdmAccEd.xsd" namespace="TdmAccEd.xsd"/> <xsd:import schemaLocation="../TdmAccEdOrGroup/TdmAccEdOrGroup.xsd" namespace="TdmAccEdOrGroup.xsd"/> <xsd:import schemaLocation="../TdmBLDValsts/TdmBLDValsts.xsd" namespace="TdmBLDValsts.xsd"/> <xsd:import schemaLocation="../TdmDKPers/TdmDKPers.xsd" namespace="TdmDKPers.xsd"/> <xsd:import schemaLocation="../TdmDocType/TdmDocType.xsd" namespace="TdmDocType.xsd"/> <xsd:import schemaLocation="../TdmDSektBL/TdmDSektBL.xsd" namespace="TdmDSektBL.xsd"/> <xsd:import schemaLocation="../TdmGrupa/TdmGrupa.xsd" namespace="TdmGrupa.xsd"/> <xsd:import schemaLocation="../TdmKvAktiv/TdmKvAktiv.xsd" namespace="TdmKvAktiv.xsd"/> <xsd:import schemaLocation="../TdmKvAktV/TdmKvAktV.xsd" namespace="TdmKvAktV.xsd"/> <xsd:import schemaLocation="../TdmNACEClassifBL/TdmNACEClassifBL.xsd" namespace="TdmNACEClassifBL.xsd"/> <xsd:import schemaLocation="../TdmPvnKat/TdmPvnKat.xsd" namespace="TdmPvnKat.xsd"/> <xsd:import schemaLocation="../TdmUsersOBL/TdmUsersOBL.xsd" namespace="TdmUsersOBL.xsd"/> <xsd:import schemaLocation="../TKSortimentsBL/TKSortimentsBL.xsd" namespace="TKSortimentsBL.xsd"/> <xsd:import schemaLocation="../TNdmAdr/TNdmAdr.xsd" namespace="TNdmAdr.xsd"/> <xsd:import schemaLocation="../TNdmApmveids/TNdmApmveids.xsd" namespace="TNdmApmveids.xsd"/> <xsd:import schemaLocation="../TNdmCenv/TNdmCenv.xsd" namespace="TNdmCenv.xsd"/> <xsd:import schemaLocation="../TNdmPard/TNdmPard.xsd" namespace="TNdmPard.xsd"/> <xsd:import schemaLocation="../TsdmValName/TsdmValName.xsd" namespace="TsdmValName.xsd"/> <xsd:element name="collection"> <xsd:complexType> <xsd:sequence> <xsd:element name="metadata" type="global:ColMetadataType"/> <xsd:element name="row" maxOccurs="unbounded" type="TDdmKlSarCollection"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:complexType name="TDdmKlSarCollection"> <xsd:complexContent> <xsd:extension base="TDdmKlSar_qryEmptyStructure"> <xsd:sequence> <xsd:element name="K"> <xsd:annotation> <xsd:documentation xml:lang="lv">Klients</xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:complexContent> <xsd:extension base="TDdmCustomer:TDdmCustomerStructure"> <xsd:sequence> <xsd:element name="M" type="TDdmCustomer:TDdmCustomerStructure"> <xsd:annotation> <xsd:documentation xml:lang="lv">Piesaistītā organizācija</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="CV" type="TNdmCenv:TNdmCenvStructure"> <xsd:annotation> <xsd:documentation xml:lang="lv">Cenas veids</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="KON" type="TdmAccEdOrGroup:TdmAccEdOrGroupStructure"> <xsd:annotation> <xsd:documentation xml:lang="lv">Konts vai grupa</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="NP" type="TNdmPard:TNdmPardStructure"> <xsd:annotation> <xsd:documentation xml:lang="lv">Klienta atbildīgais</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="GRU" type="TdmGrupa:TdmGrupaStructure"> <xsd:annotation> <xsd:documentation xml:lang="lv">Klienta grupa</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="VAL" type="TsdmValName:TsdmValNameStructure"> <xsd:annotation> <xsd:documentation xml:lang="lv">Valūta</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="PVN" type="TdmPvnKat:TdmPvnKatStructure"> <xsd:annotation> <xsd:documentation xml:lang="lv">PVN kategorija</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="KVA"> <xsd:annotation> <xsd:documentation xml:lang="lv">Pēdējā aktivitāte</xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:complexContent> <xsd:extension base="TdmKvAktiv:TdmKvAktivStructure"> <xsd:sequence> <xsd:element name="KVE" type="TdmKvAktV:TdmKvAktVStructure"> <xsd:annotation> <xsd:documentation xml:lang="lv">Aktivitātes veids</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="NPV" type="TNdmPard:TNdmPardStructure"> <xsd:annotation> <xsd:documentation xml:lang="lv">Autors</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="NPAD" type="TNdmPard:TNdmPardStructure"> <xsd:annotation> <xsd:documentation xml:lang="lv">Atbildīgais</xsd:documentation> </xsd:annotation> </xsd:element> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> </xsd:element> ... Link to comment Share on other sites More sharing options...
Ronalds Aprīlis 15, 2015 Share Aprīlis 15, 2015 MSSQL pa tiešo līst iekšā nav labi, tā toč var kādas ziepes savārīt. Ja vēl tikai datu izgūšana, tad vēl tā (ļaunākajā gadījumā process vairs nestrādās), taču rakstīt toč nevajag. Tur ir kolonnas un tabulas, kurās dati ir saistīti savā starpā; kaut ko nomudīsi, un pēc tam sūdi būs pēc pilnas programmas. Ziepes var savārīt arī caur kādu no interfeisiem - sarakstot muļķības iekš bāzes. Protams ka dati glabājas saistītās tabulās - kurai nopietnai db ir savādāk? protams ka fms nepatīk un viņi nekad nerekomendēs līst pa tiešo db jo tad klients nemaksā viņiem par datu apmaiņas interfeisu... Bet manējās datu apmaiņas programmas jau kādus gadus 7 strādā un problēmu nav. Tieši otrādi - zināšanas par db struktūru man ir pāris reizes palīdzējušas salabot db, kad konsultants pateica ka vienīgais ko viņš var izdarīt ir piestādīt rēķinu... Un gļuki bija tabulās kuras neaiztieku - ne dēļ manas datu importa programmas! Link to comment Share on other sites More sharing options...
versatile Aprīlis 15, 2015 Share Aprīlis 15, 2015 Read only no datu bāzes pa tiešo nav nekas traks, lai gan arī, jāskatās, ko licences saka. Rakstīt nevajadzētu, un tur ir čupa iemeslu, daļa no kuriem te ir uzskaitīta un daļa nav. Link to comment Share on other sites More sharing options...
rubb Aprīlis 15, 2015 Share Aprīlis 15, 2015 (labots) Emm... stipri apšaubu to, ka lietojot REST/Ole tiek rakstīts pa tiešo DB. Noteikti tas notiek pielietojot Horizon objektus, kuri ievadīto infu validē atbilstoši atbilstošā objekta biznesa loģikai utt, un tikai kad viss ir OK - ieraksts notiek. Tas ir - pēc būtības tas ir tas pats, kas veidot konkrēto klientu (whatever Hor objektu baksti) no paša Horizon. Labots Aprīlis 15, 2015 - rubb Link to comment Share on other sites More sharing options...
jurij 21 Marts 14, 2019 Share Marts 14, 2019 es daudzus gadus arī strādāju pa tiešo ar Horizon SQL. Sabojāt neko nevar, ja izdari tikai datu pieprasījumus (SELECTi). Tas ir 100%. Tad nākamais solis (teorētiski riskantāks) ir pamainīt kaut kādas konkrētas lietas (piemēram purchase ordera statusu apstiprināšanas procesā). Vai kontaktpersonas datus (email, telefons utt). Protams, ka FMS (un neviens cits) nekad nerekomendēs strādāšanu pa tiešo ar datubāzi, jo tas ir viņu bizness - pārdot FTG serveri, pārdot lietotāju licences utml. Un izmanto bailes kaut ko sabojāt kā motivējošu elementu. Bet tas viss ir bulšits. Pa tiešo var strādāt ar jebkuru SQL datubāzi, ja zini ko dari. Esmu strādājis gan ar Tildi, gan Navision, visur viens un tas pats. To, ko saku, sapratīs jebkurš programmētājs. Bez tam... sabojāt tur nemaz nav tik vienkārši (pat gribot, vēl jo vairāk nejauši), jo labi uzprogrammētā SQL datubāzē ir dažādi 'constraints', kas neļauj veikt izmaiņas vienā tabulā, ja vienlaicīgi to nedara citā, saistītā. Tādi ir, piemēram, Tildes SQL datubāzē, jo vairāk esmu strādājis ar to. Visticamāk ir arī Horizon, jo tas arī nav nekāds 'pagrīdes' produkts. Link to comment Share on other sites More sharing options...
unknovn Marts 15, 2019 Share Marts 15, 2019 Šis ir reāls nekrofīls. Link to comment Share on other sites More sharing options...
Murlo Marts 15, 2019 Share Marts 15, 2019 166.pants. Pornogrāfiska vai erotiska rakstura materiālu ievešanas, izgatavošanas un izplatīšanas noteikumu pārkāpšana (2) Par tādu pornogrāfiska vai erotiska rakstura materiālu lejupielādi, iegādāšanos, ievešanu, izgatavošanu, publisku demonstrēšanu, reklamēšanu vai citādu izplatīšanu, kuros aprakstīta vai attēlota bērnu seksuāla izmantošana, cilvēku seksuālas darbības ar dzīvniekiem, nekrofilija vai pornogrāfiska vai erotiska rakstura vardarbība, kā arī par šādu materiālu glabāšanu — soda ar brīvības atņemšanu uz laiku līdz trim gadiem vai ar piespiedu darbu, vai ar naudas sodu līdz piecdesmit minimālajām mēnešalgām, konfiscējot mantu vai bez mantas konfiskācijas. 1 Link to comment Share on other sites More sharing options...
Anonīms Alkoholiķis Marts 15, 2019 Share Marts 15, 2019 (labots) Murlo, par tevi ir jāziņo liberastu un pederastu tiesībi aizstāvjiem, jo pat līķiem ir tiesības uz īstu mīlestību, bet tu mēģini uztaisīt mīlestības trijstūri starp topiku, juriju21 un sevi.. Un kā savādāk šis mironis tiks pie tam pienākošās mīlestības devas, ja ne ar nolādēto nekromanceru un nekrofīlu palīdzību? Labots Marts 15, 2019 - Anonīms Alkoholiķis 1 Link to comment Share on other sites More sharing options...
Recommended Posts
Izveido kontu, vai pieraksties esošajā, lai komentētu
Jums ir jābūt šī foruma biedram, lai varētu komentēt tēmas
Izveidot jaunu kontu
Piereģistrējies un izveido jaunu kontu, tas būs viegli!
Reģistrēt jaunu kontuPierakstīties
Jums jau ir konts? Pierakstieties tajā šeit!
Pierakstīties tagad!