1. Serviciu web simplu
Mai întâi, vom lua o configurație wireframe fără servicii web și vom trece prin pașii de creare a acestora.
Adăugați un nou serviciu web numit test1 și creați o operațiune de salut cu tipul de șir returnat. Numele de servicii și operațiuni web sunt cel mai bine întotdeauna solicitate în limba latină.
Când faceți clic pe lupă în câmpul "Nume procedură", modulul de serviciu web se va deschide și veți putea implementa funcția salută.
2. Publicarea unui serviciu web.
3. Testarea cu SoapUI
Pentru testare, vom crea un utilizator separat WsUser, cu o parolă simplă și să îi dea drepturi complete.
După aceea, instalați și rulați SoapUI. Acest program este foarte convenabil pentru testarea serviciilor web, poate primi descrierea lor și face post-solicitări către servicii.
Accesați meniul Fișier - Proiect SOAP nou, setați numele proiectului hellotest și în câmpul Initial WSDL vom scrie acest link:
Soap12Binding este diferit prin faptul că funcționează cu noua versiune a standardului SOAP 1.2. Deschideți elementul Request1 din test1Soap12Binding și vedeți acest lucru:
Acum, puteți executa interogarea la funcția de salut și puteți vedea răspunsul:
Excelent, totul a funcționat!
4. Transmiterea unor parametri simpli unei funcții.
Acum, face o nouă funcție cu parametri, cum ar fi munca de verificare cu datele, face funcția getSaleDocNumbersByDate, care va lua data documentului (factura de cheltuieli) și a reveni numerele documentelor pentru linia data. Adăugați la operație parametrul de dată cu tipul datetime:
Acum, în SoapUI, faceți clic dreapta pe elementul testSoap12Binding și selectați Actualizare definiție. Dupa aceasta, proiectul va primi functia getSaleDocNumbersByDate si o cerere gata. Pentru a completa data pe care doriți să utilizați formatul „AAAA-LL-ZZToo: mm: ss“ (puteți vedea W3Schools și este foarte recomandat pentru a utiliza acest site pentru înțelegerea de lucru cu XML)
Apoi primim urmatoarea interogare si raspuns:
5. Pachetele XDTO
Dacă aveți nevoie să transmiteți parametrii mai complexi (de exemplu, xml cu mai multe câmpuri) la funcția respectivă sau să obțineți structuri complexe xml ca răspuns, atunci nu putem face fără pachete XDTO.
Lucrul foarte detaliat cu XDTO este discutat în seria de articole XDTO este ușor. În esență, pachetul definește structura și tipul câmpurilor utilizate de fișierele xml.
Voi lua în considerare un exemplu de trecere și de obținere a unui fișier xml, al cărui tip este definit în pachet
- transferul în fișierul 1c xml, care nu este descris în pachet, în formatul base64
- obținerea de la 1c a unui document pdf în format base64 și decodarea acestuia
- primind dintr-un fișier xml cu o structură de elemente imbricate și determinând numărul elementelor
6. Transferați la 1c în parametrul xml-file, al cărui tip este definit în pachet.
Sarcina va fi următoarea: găsiți documentul facturii pentru factura dată în numărul și data xml primite și returnați documentul găsit. De asemenea, trebuie să îl returnați sub formă de xml cu numărul, data, contrapartida și codul său și tabelul de produse.
Creați un pachet pachet1 cu spațiul de nume packet1_ns. Pentru fișierul xml primit, definim tipul obiectului InDocSaleQuery cu câmpul de număr al șirului de tip și câmpul de dată de tip dateTime. Pentru fișierul de ieșire, definim mai întâi tipul pentru un rând al părții de masă a mărfurilor: SaleItem cu câmpuri de nume de tip șir, sumă de preț, cantitate de tip zecimal. Și documentul SaleDoc va avea un tip compozit: câmpul număr, dată, partenerName și câmpul SaleItems care va avea un tip SaleItem și un număr maxim de -1. Este un domeniu în care poate conține o serie de elemente. Așa arată configuratorul:
În continuare, în proprietățile serviciului web, trebuie să specificați utilizarea pachetului pachet1_ns XDTO. getSaleDoc cu tipul de retur SaleDoc și parametrul de intrare incomingXML al tipului InDocSaleQuery.
În primul rând, voi demonstra codul funcției și apoi voi explica ce se întâmplă
Iată două nuanțe de bază. În primul rând, deoarece parametrul de intrare incomingXML a fost specificat și a fost descris de acest tip în pachet, este imediat posibil să accesați câmpurile acestui xml primit. În al doilea rând: lucrați cu fabrica XDTO. Din acesta, a fost obținut un tip pentru parametrii de ieșire care rezultă și a fost creată o valoare XDTO de acest tip, în care s-au umplut câmpurile necesare. De asemenea, merită remarcat faptul că în tipul SaleDoc trebuie să introduceți un câmp separat pentru eroare, dar pentru scopurile testului erorile vor fi scrise în câmpul numeric.
Iată rezultatul acestei interogări în SoapUI:
După cum puteți vedea, totul funcționează, dar mai există ceva de îmbunătățit - de exemplu, aș dori să știu câte elemente din SaleItems le avem în document.
Exemplele mai complexe pe care le voi discuta în următorul articol.
În arhiva atașată - descărcarea bazei de informații și a proiectului SoapUI.