Kas yra žiniatinklio paslauga. Žiniatinklio paslaugos Žiniatinklio paslaugos 1c pavyzdys

Naudojant žiniatinklio paslaugas 1C, tapo įmanoma organizuoti duomenų mainus tarp įvairių programų ir paslaugų. Tuo pačiu metu 1C gali veikti ir kaip bet kokių duomenų (kainoraštis, balansas, valdybos sudėtis ir kt.) ir paslaugų šaltinis, ir kaip informacijos iš kitų išteklių gavėjas:

  • Traukinių, autobusų, lėktuvų tvarkaraščiai;
  • Valiutų kursai;
  • Produktų iš konkretaus šaltinio sąrašas.

Duomenų mainai vyksta SOAP pagrindu, t.y. naudojant struktūrinius pranešimus. Patys pranešimai kuriami remiantis XML schemomis ir pagal šių išraiškų standartus. Interneto paslaugų specifikacijų kalba taip pat yra standartizuota – WDSL.

Pranešimai perduodami tarp programų ir išteklių naudojant HTTP protokolą.

Siekiant įgyvendinti šį principą, prie konfigūracijos buvo pridėta nauja metaduomenų objekto žiniatinklio paslauga (1 pav.)

Kaip matyti iš paveikslo, šį objektą galite rasti skirtuke „Bendra“.

Naujos žiniatinklio paslaugos kūrimas

Kaip ir bet kuris kitas metaduomenų objektas, iš konfigūratoriaus pridedama nauja žiniatinklio paslauga.

Paslaugos kūrimo langas parodytas 2 pav

2 pav

  1. Pirmajame skirtuke turite nurodyti naujo objekto pavadinimą ir atvaizdą;
  2. Kuriuose posistemiuose paslauga dalyvaus, nustatoma antrame skirtuke „Posistemiai“;
  3. Paslaugos atliekamų operatorių sąrašą ir apibrėžimą galite peržiūrėti skirtuke „Operacijos“, čia nurodome operacijos grąžinamos reikšmės tipą ir vykdomą algoritmą aprašančią procedūrą;
  4. Išteklius galite identifikuoti naudodami URI (Uniform Resource Identifier) ​​eilutę, URI vardų erdvę, taip pat XDTO paketo aprašymą rasite skirtuke „Kita“.

Taigi savo duomenų bazėje apibrėžiame žiniatinklio paslaugą, kurią galima pasiekti iš trečiųjų šalių išteklių.

Veiksmai, kurių reikia imtis prieš kuriant ir konfigūruojant žiniatinklio paslaugą

Prieš kurdami žiniatinklio paslaugą su trečiosios šalies prieiga, turite:

  • Paleiskite serverį;
  • Įdiegti „Web service“ plėtinių modulius;
  • Paskelbkite išteklių duomenų bazę.

Paprasčiausias „HelloBye“ paslaugos kūrimo pavyzdys

Norėdami parodyti, kaip veikia šis mechanizmas, sukursime žiniatinklio paslaugą, kuri, reaguodama į pateiktą užklausą, grąžins vieną iš trijų reikšmių: „Labas!“, „Iki!“, „Aš nesuprantu“:

Jei paskelbę žiniatinklio serveryje savo naršyklėje einate į paslaugai priskirtą adresą (sudarytą iš eilutės, nurodytos ypatybėje „URI vardų erdvė“, ir eilutės su įkeliamo failo pavadinimu), galite pamatyti scenarijus, automatiškai sukurtas mūsų projekto platformos.

Žiniatinklio paslauga skelbiama iš meniu punkto Administravimas->Paskelbimas žiniatinklio serveryje.

Nepaisant to, kad aukščiau pateiktame pavyzdyje naudojome kirilicos abėcėlę, o platforma jokio įspėjimo nepateikė, daug teisingiau lotyniškomis raidėmis rašyti paslaugos pavadinimą, operacijos apibrėžimus ir parametro pavadinimą.

Galite padidinti paslaugos funkcionalumą, apibrėžti duomenų rinkinius, prie kurių ji suteikia prieigą, ir žymiai išplėsti šio mechanizmo naudojimo efektyvumą naudodami XDTO sistemoje nurodytus paketus.

Paimkime duomenis iš mūsų šaltinio

Mūsų žiniatinklio paslaugą galite pasiekti iš kitos duomenų bazės naudodami specialiai šiam tikslui sukurtą metaduomenų objektą, vadinamą WS nuoroda.

1C suteikia dvi galimybes pasiekti trečiosios šalies žiniatinklio paslaugą:

  • Tiesiogiai sukuriant naują WS-link konfigūracijos objektą;
  • Programiškai sukurkite nuorodą nepaveikdami duomenų bazės struktūros.

Apsvarstykime pirmąjį variantą.

Sukūrę žiniatinklio paslaugą „Komunikacija“, gavome tam tikrą šaltinį, esantį mums žinomu adresu. Būtent šį adresą turėsime įvesti į dialogo langą, rodomą kurdami WS nuorodą (5 pav.)

5 pav

Virtualus mūsų paslaugos žemėlapis bus sukurtas automatiškai ir atsispindės Configurator medyje. Visų pirma bus rodoma operacija „Pasveikinimas“ ir vienintelis jos parametras.

Dabar iš savo duomenų bazės galime pasiekti žiniatinklio paslaugą kaip ir bet kurį kitą objektą. Visų pirma naudokite jį ataskaitose ir tvarkydami.

Paprasčiausias kodas, leidžiantis gauti atsakymą iš mūsų žiniatinklio tarnybos, pateiktas 6 pav

Pirmoje kodo eilutėje sukuriame ir apibrėžiame ryšio parametrus, antroje paleidžiame operaciją su jai perduotu parametru (jo įvedimui galite sukurti formos atributą).

Norint naudotis mūsų paslauga nekeičiant konfigūracijos, pirmąją kodo eilutę, pateiktą 6 pav., būtina pakeisti dviem (7 pav.):

7 pav

Taigi naujo metaduomenų objekto kūrimą pakeitėme jo apibrėžimu, o veiksmų seka ir algoritmas liko tie patys.

Dėl to gavome visiškai veikiantį mechanizmą, leidžiantį keistis informacija tarp dviejų duomenų bazių; informacijos gavimas iš trečiųjų šalių išteklių nedaug skiriasi nuo aukščiau pateikto kodo.

Šiandien WEB paslaugos yra naudojamos beveik visur – jos mums suteikia informaciją apie lėktuvų ir traukinių skrydžius, valiutų kursus ir orus. Nenuostabu, kad 1C taip pat turi galimybę kurti savo WEB paslaugas, leidžiančias veikti tiek tiekėjui, tiek vartotojui. Šis mechanizmas yra integruotas į 1C:Enterprise 8.3 platformą, o kūrėjai netgi gali pridėti savo WEB paslaugų tipo objektus prie standartinės konfigūracijos. Jų architektūra sukurta remiantis paslaugų rinkiniu, leidžiančiu keistis informacija su kita programine įranga.

1C žiniatinklio paslaugos kūrimas

Vienas iš pagrindinių 1C WEB paslaugų pranašumų yra tai, kad nereikia suteikti tiesioginės prieigos prie informacijos saugos duomenų. Teisingai sukonfigūruota 1C žiniatinklio paslauga leidžia kitoms programoms naudoti funkcijas iš išorės. Tokiais atvejais pati funkcija turėtų nustatyti teisę naudoti duomenis pagal nurodytus parametrus pagal kūrėjo nustatytas taisykles.

Kaip sukurti žiniatinklio paslaugą 1C?

Kad tam tikra 1C sistemos funkcija taptų prieinama išorinei programinei įrangai, būtina atlikti šį veiksmų algoritmą:

  1. Eikite į konfigūraciją ir pridėkite WEB paslaugos objektą tam tikroje medžio šakoje;
  2. Aprašykite visas operacijas, kurias gali atlikti mūsų funkcionalumas. Funkcijų aprašymas atliekamas modulyje integruota 1C kalba;
  3. Pridėkite žiniatinklio paslaugos funkcijų parametrų aprašymą. Atkreipkite dėmesį, kad duomenų tipai aprašyti atsižvelgiant į esamus XDTO mechanizmo tipus, įdiegtus platformos 8.1 versijoje;
  4. Paskelbkite sukurtą WEB paslaugą serveryje. 1C platformoje įmontuotas mechanizmas palaiko šiuos standartus:
  • SSL/TLS
  • WS-I BP

Paprastos WEB paslaugos kūrimo pavyzdys

Kad aiškiausiai parodytume WEB paslaugų mechanizmo veikimą, sukurkime pavyzdį – funkcionalumą, kuris nustato įvestos eilutės ilgį. Programinė įranga perduos eilutę kaip užklausos parametrą, o 1C aprašyta funkcija grąžins simbolių skaičių. Kurdami turite atsiminti, kad paskelbus šį mechanizmą įvairi programinė įranga galės jį pasiekti. Kadangi ne kiekviena programinė įranga gali priimti kirilicos abėcėlę, konfigūracijos objektus pavadinsime lotyniškais rašmenimis.

Atidarykite konfigūratorių, medyje raskite šaką „WEB services“ ir pridėkite naują paslaugą „wa_LengthString“. Taip pat turite pridėti naują operaciją skirtuke „Operacijos“. Pavadinkime jį „CalcLengthString“, ypatybėse nurodykite grąžinamos vertės tipą - int arba integer ir jame sukurkite parametrą „InputString“. Vertės tipą paliekame kaip eilutę.

Dabar WEB paslaugų modulyje turite užregistruoti funkcijos CalcLengthString veiksmą. Norėdami tai padaryti, atidarykite sukurtos funkcijos ypatybes ir spustelėkite didinamojo stiklo mygtuką dešinėje, šalia įvesties lauko „Procedūros pavadinimas“. 1C automatiškai sukurs funkciją mūsų WEB paslaugų modulyje ir atidarys ją, kad galėtume aprašyti veiksmą CalcLengthString. Pasinaudokime tuo ir parašykime funkcijos veiksmą – įvesties eilutės ilgio nustatymą.


Tiesą sakant, tai užbaigia paprastos WEB paslaugos sukūrimą. Dabar šią paslaugą reikia „įleisti“ į viešą domeną, kad trečiosios šalies programinė įranga ar kitos 1C sistemos galėtų naudotis šia funkcija.

Tam, kad galėtume paskelbti sukurtą žiniatinklio paslaugą su jos funkcionalumu, turime turėti prieigą prie svetainės. Prieš pradėdami skelbti paslaugą, turime patikrinti failo pavadinimą sukurto wa_LengthString modulio ypatybėse. Jis turėtų būti aiškus, paprastas ir turėti plėtinį „1cws“.


Dabar atėjo laikas paskelbti WEB paslaugą, kurią sukūrėme serveryje. Ši funkcija pasirodė 8.3 platformos versijoje ir daugelis įmonių jau suprato visus šios funkcijos pranašumus. Norint pradėti publikuoti, konfigūravimo priemonėje reikia atidaryti formą „Administravimas/Paskelbimas žiniatinklio serveryje...“.


Atsidariusiame lange turime sukonfigūruoti 1C žiniatinklio paslaugas ir užpildyti tam tikrus laukus:

  • Vardas. Nurodo aplanką žiniatinklio serveryje, kuriame bus saugomas mūsų žiniatinklio paslaugos aprašymas. Būkite atsargūs su didžiosiomis raidėmis, nes kartais serveriai išskiria didelius ir mažus raidžių simbolius;
  • Tinklapio serveris. Turite pasirinkti serverį iš įdiegtų jūsų kompiuteryje;
  • Katalogas. Turite pasirinkti kelią į aplanką, kuriame saugomi tinklo serverio duomenys ryšiui nustatyti. Naudojamos tik lotyniškos raidės;
  • Du Būlio tipo ženklai. Pirmasis bus mums naudingas, jei turėsime sukonfigūruoti prieigą prie konfigūracijos per žiniatinklio klientą. Norėdami paskelbti 1C paslaugą, turite pažymėti antrą langelį.

Belieka tik patikrinti, ar norimos WEB paslaugos pirmajame stulpelyje yra pažymėtas langelis ir paspausti „Paskelbti“.


Kadangi šis mechanizmas vis dar gana naujas, galite susidurti su tokia klaida kaip „Atliekant failo operaciją įvyko klaida...“. Tokiu atveju tereikia dar kartą spustelėti „Paskelbti“. Daugeliu atvejų tai padės ir pamatysite pranešimą, nurodantį, kad žiniatinklio paslauga buvo paskelbta.

<имяСервера>.ru/<ИмяУказанногоКаталогаНаСервере>/ws/<НаименованиеФайла>.1cws?wsdl

Atsakydama į tokį adreso prašymą, naršyklė turi rodyti XML failo struktūrą. Jei matote tuščią puslapį, klaidą ar keistus simbolius (kodavimo problemos), turite dar kartą patikrinti visus veiksmus. Taip pat verta įsitikinti, kad serveris yra tinkamai sukonfigūruotas ir turite prieigą prie jo. Sėkmingai paskelbus, 1C WEB paslauga galės naudotis trečiųjų šalių programos.

Keitimai naudojant žiniatinklio paslaugų technologiją tampa vis dažnesni. Tai patogu, nes pagrindinei duomenų bazei pakanka įdiegti Web Service plėtinį ir duomenų procesorių, o Clint sprendimui prisijungti prie Web Service. Technologija yra daugiaplatformė ir šiuo metu jos naudojimas yra labai aktualus.

Tokių žiniatinklio paslaugų pavyzdžiai:
http://www.cbr.ru/scripts/Root.asp?Prtid=DWS Centrinio banko žiniatinklio paslauga, skirta kasdieniams duomenims gauti.
http://api.yandex.ru/speller/doc/dg/concepts/api-overview.xml „Yandex“ rašybos tikrinimo žiniatinklio paslauga.
https://www.flightstats.com/developers/bin/view/Web+Services/WSDL daugybė aviacijos statistikos žiniatinklio paslaugų, skirtų skrydžių stebėjimui, orų informacijai ir kt.
WSDL (žiniatinklio paslaugų aprašo kalba) yra žiniatinklio paslaugoms apibūdinti ir prieigai prie jų skirta kalba, pagrįsta XML kalba. (specifikacija http://www.w3.org/TR/wsdl).

SOAP (angl. Simple Object Access Protocol) – tai protokolas, skirtas keistis struktūrizuotais pranešimais paskirstytoje skaičiavimo aplinkoje. SOAP naudojamas keistis savavališkais pranešimais XML formatu ir nuotolinių procedūrų iškvietimams (RPC). (specifikacija http://www.w3.org/TR/soap/).

XDTO (XML duomenų perdavimo objektai) yra duomenų objektų modeliavimo mechanizmas, aprašytas naudojant XML schemą (daugiau informacijos http://v8.1c.ru/overview/xdto.htm).

Dauguma primityvių serializuotų objektų tipų yra sukurti W3 ir yra aprašyti vardų erdvėje „http://www.w3.org/2001/XMLSchema“.
Taigi:
1 užduotis: 1C: Enterprise platformos diegimas, IIS serverio komponentų įdiegimas, 1C žiniatinklio plėtinio prijungimas prie IIS serverio.

Diegdami 1C: Enterprise platformą, turite įdiegti žiniatinklio plėtinį.

Ryžiai. 1. 1C montavimo metu pasirinkti komponentai

Meniu „Valdymo skydas Visi valdymo skydelio elementai Programos ir funkcijos“ Turite įdiegti papildomus „Windows“ komponentus „Įjungti arba išjungti Windows funkcijas“, kur nurodote visus IIS komponentus (išskyrus FTP, dabartinei operacijai tai nereikia). Po įdiegimo rekomenduojama iš naujo paleisti operacinę sistemą.

Ryžiai. 2. IIS diegimo metu pasirinkti komponentai

Meniu „Control Panel All Control Panel ItemsAdministration“ paleiskite „IIS Services Manager“ konsolę, kur atidarykite elementą „Application Pools“, kontekstiniame meniu atidarykite „DefaultAppPool“ telkinį, pasirinkite „Išplėstiniai nustatymai ...“ elementas „32 bitų programos leidžiamos“ turi būti nustatytas kaip „True“. Tai būtina norint veikti 1C žiniatinklio plėtiniui, nes tai 32 bitų programa.

Toje pačioje „IIS paslaugų tvarkyklės“ konsolėje pasirinkite elementą „Numatytoji svetainė“, pasirinkite veiksmą „Autentifikavimas“, kuriame turite įjungti parinktis: „Anoniminis autentifikavimas“, „Pagrindinis autentifikavimas“, „Windows autentifikavimas“.

Dabar IIS serveryje galima paskelbti 1C žiniatinklio paslaugas. Bet kad šis leidinys būtų įmanomas, turite paleisti „1C: Enterprise Configurator“ kaip „Administratoriaus“ vartotoją.

2 užduotis: Sukurkite paprastą 1C konfigūraciją.
Manome, kad duomenų bazėje yra informacija apie visus užsakymus, nurodant užsakytos prekės kiekį ir tipą, vienas užsakymas gali turėti sąrašą su preke ir kiekiu, užsakymas taip pat turi savo numerį ir sukūrimo datą. Informacija apie visus užsakymus turi būti perduodama per Web Service.
Norėdami tai apibūdinti, turite sukurti duomenų bazės objektus:

Ryžiai. 3. Duomenų struktūra sukurtoje 1C konfigūracijoje

Katalogas „Nomenklatūra“, be papildomos informacijos. „Numatytuosiuose“ duomenyse pateikiama informacija apie prekės pavadinimą ir kodą.

Dokumentas "Pirkėjo užsakymas", kuriame bus lentelės dalis "Prekės", kurios kiekvienoje eilutėje bus informacija apie prekę (tipo "DirectoryLink.Nomenclature" elementas) ir kiekį ("Skaičiaus" elementas "Kiekis"). tipas, nepasirašytas 15 skaitmenų po kablelio ir 3 po kablelio).

3 užduotis: 1C žiniatinklio paslaugos sukūrimas ir paskelbimas.
Konfigūracijos grupėje „Bendra“ sukurkite naują „XDTO paketų“ tipo elementą, iš pradžių norėdami perkelti elementus. Jis gali būti vadinamas, pavyzdžiui, „NomenclatureXDTO“. URL vardų sritis pagal WSDL specifikaciją turi būti priskirta kaip URL šio paketo specifikacijai, pvz.
„company.com/1C/Nomenclature“. Šiame pakete turite sukurti objekto tipą, pvz., „Nomenklatūra“ su išsamia informacija „Kodas“ ir „Pavadinimas“, su atitinkamu tipu „string“ (http://www.w3.org/2001/XMLSchema )“.
Dabar turime sukurti antrą XDTO paketą, kuriame bus informacija apie klientų užsakymus, vardų srityje „company.com/1C/ClientOrder“ jis gali būti vadinamas „ClientOrderXDTO“. Pirmiausia turite prijungti importo direktyvą „company.com/1C/Nomenclature“, kad galėtumėte naudoti mūsų sukurtą nomenklatūros serializavimo paketą. Tai būtina norint perkelti prekes, esančias dokumento „Klientų užsakymai“ lentelės dalyje.

Dabar turime sukurti objekto tipą „ClientOrderRow“, kuriame būtų viena lentelės dalies eilutė. Šį tipą sudarys atitinkamai duomenų rinkinys „Nomenklatūra“ ir „Skaičius“, nomenklatūrai reikia nurodyti objekto tipą „Nomenklatūra (http://company.com/1C/Nomenclature)“, o kiekiui. , „dvigubas (http:// www.w3.org/2001/XMLSchema)“.
Objekto tipas, kuriame yra pats užsakymas, gali būti vadinamas „ClientOrder“ ir turi turėti užsakymo numerį, sukūrimo datą ir elementų masyvą iš užsakymo lentelės dalies. Tipo eilutės „numeris“, „dateTime“ (http://www.w3.org/2001/XMLSchema) tipo „Data“ ir „ClientOrderRow“ tipo „Produktai“ (http://company.com/1C/ClientOrder) )“, šiuo atveju būtina nurodyti, kad mažiausias kiekis yra „0“, o didžiausias – „-1“, tai reiškia, kad šis objektas bus masyvas.

Tačiau kadangi reikia grąžinti užsakymų sąrašą, būtina sukurti objekto tipą, kuriame būtų šis masyvas, todėl reikia sukurti kitą elementą pavadinimu „ArrayOfClientOrders“, kuris turės tik vieną atributą pavadinimu „ClientOrder“ tipo. „ClientOrder (http://company .com/1C/ClientOrder)“.


4 pav. XDTO paketų struktūros 1C

Šiuo metu perduotų verčių aprašymo sukūrimas gali būti laikomas užbaigtu. Būtina apibūdinti pačią žiniatinklio paslaugą ir jos metodus.
Konfigūracijos grupėje „Bendra“ turite sukurti žiniatinklio paslaugų objektą. Tai gali būti vadinama „Paslauga“. Skirtuke „Kita“ turite nurodyti vardų sritį, kuriai priklauso žiniatinklio paslauga, pvz., „company.com/1C“, taip pat XDTO paketų, kuriuose yra naujai sukurti paketai „company.com/1C/“, sąrašą. Nomenklatūra, company.com/ 1C/ClientOrder“. Skirtuke „Operacijos“ sukurkite metodą „GetClientOrders“, kuris grąžins „ArrayOfClientOrders“ (http://company.com/1C/ClientOrder) reikšmes, nustatydami galimybę grąžinti tuščias reikšmes ir spustelėkite laukelį su padidinamuoju stiklu pavadinimu „Metodo pavadinimas“, tokiu būdu žiniatinklio paslaugų modulyje bus sukurta funkcija, kuri bus iškviesta iškvietus šį žiniatinklio paslaugos metodą.

Norint teisingai apibūdinti funkciją, kuri gauna iš duomenų bazės ir grąžina klientų užsakymų sąrašą, reikia mokėti vidinę 1C kalbą, todėl šios funkcijos kodas yra 1 priede. Reikia paaiškinti, kad „XDTO Factory“ yra vadybininkas, kuris atlieka serializavimo objektus, ir šis serializuotas objektas turi būti grąžintas. Tokiu atveju pasirenkami visi duomenų bazėje esantys užsakymai, numeriai, data ir lentelės eilutės suskirstomos, o prekė reikalauja papildomo serializavimo, o jau supakuotas objektas įterpiamas į bendrą struktūrą. Supakuotų objektų masyvas surenkamas ir suskirstytas į masyvo paketą. Ir jis siunčiamas klientui kaip iškviestos funkcijos rezultatas.
Norėdami paskelbti žiniatinklio paslaugą, 1C konfigūratoriaus meniu pasirinkite „AdministrationPublishing on a web server...“, tada nurodykite žiniatinklio paslaugos leidinio pavadinimą, pvz., „Įmonė“, paslaugos pavadinimą, pvz., „Paslauga“. “ ir adresas „service.1cws“, taip pat Taip pat galite nurodyti paskelbimo kelią, pavyzdžiui, „C:\inetpub\www\root\Company“.

Po to žiniatinklio paslaugos WSDL struktūra bus pasiekiama adresu "localhost/Company/ws/service.1cws?wsdl"

4 užduotis: kliento sukūrimas C# .NET 4.0 platformoje.
„Visual Studio“ sukurkite naują C# konsolės programą.

Tada iškvieskite kontekstinį meniu virš projekto elemento „Nuoroda“ ir atlikite veiksmą „Pridėti paslaugos nuorodą...“, atsidariusiame meniu spustelėkite mygtuką „Advanced...“, atsidarys langas, kuriame turėsite reikia spustelėti mygtuką „Pridėti žiniatinklio nuorodą...“.
Atsidarys meniu, kuriame turėsite įterpti nuorodą į žiniatinklio paslaugos WSDL aprašymą.


Ryžiai. 5. Žiniatinklio paslaugos prijungimas prie C# projekto

1C sukurtai žiniatinklio paslaugai ši nuoroda atrodys taip: „localhost/Company/ws/service.1cws?wsdl“, teisingai gavę žiniatinklio paslaugos aprašymą, turite nurodyti .NET vardų srities, iš kurios galima pasiekti, pavadinimą. žiniatinklio paslaugai bus prieinama paslauga, pvz. „CompanyService“, tada spustelėkite mygtuką „Pridėti nuorodą...“, „Visual Studio“ automatiškai sugeneruos klases pagal šį aprašymą. Projekte pakaks iškviesti sugeneruotos klasės metodus, o serializavimą ir iškvietimą atliks .NET platforma.

Tada turite parašyti programą, kuri pasieks žiniatinklio paslaugą ir parodys gautus duomenis vartotojui. Tam reikia mokėti C# kalbą, programos kodas pateiktas 2 priede. Iš šio kodo reikėtų paaiškinti, kad objekto „Paslauga“ sukūrimas yra ne kas kita, kaip tvarkyklės prieigai prie paslaugos sukūrimas. Šiuo vardu bus iškviesti žiniatinklio paslaugų metodai.
„_1CWebServiceClientConsole“ yra bendra projekto vardų sritis ir pasirenkama jį kuriant. Žiniatinklio paslaugų vardų sritis, gauta iš WSDL struktūros, yra visiškai įtraukta į projekto vardų erdvę, kuri leidžia iškviesti nuotolinius metodus, tarsi jie būtų jūsų.

Tokios architektūros kūrimas programišiams yra skaidrus, tačiau būtina suprasti, kokiais momentais ir kas yra serijinė, kad būtų galima perduoti vėliau. Ši kliento-serverio programų architektūra šiuo metu yra pati populiariausia.

1 priedas: GetClientOrders funkcijos kodas 1C kalba
Kodas 1C v 8.2 UE Funkcija GetClientOrders()
CustomerOrdersType masyvas = FactoryXDTO.Type("http://company.com/1C/ClientOrder", "ArrayOfClientOrders");
CustomerOrderType = FactoryXDTO.Type("http://company.com/1C/ClientOrder", "ClientOrder");
BuyerOrderRowType = FactoryXDTO.Type("http://company.com/1C/ClientOrder", "ClientOrderRow");
NomenclatureType = FactoryXDTO.Type("http://company.com/1C/Nomenclature", "Nomenclature");
Užklausa = nauja užklausa;
Užklausa.Tekstas =
"PASIRINKITE
| Pirkėjo užsakymas.Nuoroda,
| Pirkėjo užsakymo numeris,
| Pirkėjo užsakymas.Data
|NUO
| Dokumentas.Pirkėjo užsakymas AS Pirkėjo užsakymas“;
Rezultatas = Query.Run();
Pasirinkimas = Result.Select();
Jei Sample.Quantity() = 0 Tada
Return Null;
endIf;
Klientų užsakymų masyvas = FactoryXDTO.Create(Array of Customer OrdersType);

Nors Select.Next() Loop
Pirkėjo užsakymas = FactoryXDTO.Create(BuyerOrderType);
Kliento užsakymas.Number = Sample.Number;
BuyerOrder.Date = Selection.Date;
Kiekvienai eilutei iš Selection.Link.Products ciklo
BuyerOrderString = FactoryXDTO.Create(BuyerOrderStringType);
Prekė = FactoryXDTO.Create(NomenclatureType);
Nomenclature.Code = String.Nomenclature.Code;
Nomenclature.Name = String.Nomenclature.Name;
BuyerOrderString.Nomenclature = Nomenklatūra;
BuyerOrderString.Count = String.Quantity;
PirkėjoUžsakymas.Produktai.Pridėti(BuyerOrderString);
EndCycle;
Klientų užsakymų masyvas.ClientOrder.Add(Customer Order);
EndCycle;
Pirkėjų užsakymų grąžinimas;
EndFunction

2 priedas: programos kodas C#, kuris pasiekia žiniatinklio paslaugą
Kodas

naudojant sistemą;
naudojant _1CWebServiceClientConsole.CompanyService;

Vardų sritis _1CWebServiceClientConsole
{
klasės programa
{
statinė tuštuma Main (eilutės args)
{
naudojant (paslaugų paslauga = nauja paslauga())
{
var arrayOfClientOrders = service.GetClientOrders();

Jei (arrayOfClientOrders == null)
Console.WriteLine("Nerasta");

Foreach (var clientOrder į arrayOfClientOrders)
{
Console.WriteLine("Kliento užsakymo Nr." + klientoUžsakymas.Number + " from " + clientOrder.Date);
Console.WriteLine("************************************************ ********* ********");
foreach (variklis clientOrderRow, esantis clientOrder.Products)
{
Console.WriteLine(clientOrderRow.Nomenclature.Name + " " + clientOrderRow.Count);
}
Console.WriteLine("************************************************ ********* ********n");
}
}
Console.ReadKey();
}
}
}

Interneto paslaugos yra vienas iš platformos mechanizmų, naudojamų integruojant su kitomis informacinėmis sistemomis. Tai priemonė palaikyti SOA (į paslaugas orientuotą architektūrą), į paslaugas orientuotą architektūrą, kuri yra modernus taikomųjų programų ir informacinių sistemų integravimo standartas.

Reikšmingas į paslaugas orientuotos architektūros pranašumas yra tas, kad ji leidžia vienodai plėtoti įmonės infrastruktūrą, nesunaikinant esamų sprendimų. Jo naudojimas leidžia sumažinti išlaidas integruojant nevienalytes ir senas sistemas į šiuolaikinę įmonės aplinką. Tai leidžia įdiegti laisvai susietus programinės įrangos komponentus, siekiant maksimaliai padidinti jų pakartotinį naudojimą.

Į paslaugas orientuota architektūra intensyviai kuriama ir palaikoma pagrindinių tiekėjų. Jis sukurtas paslaugų pagrindu, autonominis arba valdomas iš išorės. Pageidautinas būdas juos įgyvendinti yra naudojant žiniatinklio paslaugas. Jie yra nepriklausomi nuo platformos, atskiri ir palaikomi visur.

Programos sprendimas 1C:Enterprise 8 gali būti ir žiniatinklio paslaugų teikėjas, ir kitų teikėjų paskelbtų žiniatinklio paslaugų vartotojas.

Sistemos, kuriose naudojamos savavališkos techninės ir programinės įrangos platformos, gali veikti kaip vartotojai. Žiniatinklio paslaugų technologija nepriklauso nuo platformos.


Techninis interneto paslaugų įgyvendinimas

Jei taikomosios programos sprendimas yra žiniatinklio paslaugų teikėjas, tada tiek failo, tiek kliento-serverio veikimo režimuose sąveika tarp taikomosios programos sprendimo ir žiniatinklio paslaugų vartotojų vykdoma per žiniatinklio serverį, naudojant žiniatinklio serverio plėtinio modulį.

Tokiu atveju, kai vartotojas pasiekia taikomosios programos sprendimo žiniatinklio paslaugą, vykdomas žiniatinklio paslaugų modulis. Šis modulis yra konfigūracijoje ir jame yra procedūros, kurios vykdomos iškviečiant tam tikras žiniatinklio paslaugų operacijas.

Kliento-serverio darbo versijos atveju šis modulis bus vykdomas klasteryje. Darbo failo versijos atveju - žiniatinklio serverio plėtinio modulyje.

Jei programos sprendimas yra trečiosios šalies žiniatinklio paslaugų teikėjo vartotojas, tokiu atveju vykdoma programos sprendimo ir žiniatinklio paslaugų teikėjo sąveika.

Sveiki.

Aš nesigilinsiu į klausimą, kas yra 1C žiniatinklio paslaugos, nes internete yra daug straipsnių šia tema. Tik pabandysiu trumpai parodyti, kaip galima dirbti su 1C žiniatinklio paslaugomis PHP.

Taigi, pradėkime.

Visų pirma, PHP reikia prijungti modulį, kad jis veiktų per SOAP protokolą. Jei naudojate „Windows“, php.ini faile turite panaikinti komentarą arba pridėti eilutes
extension=php_soap.dll

„Windows“ sistemoje pastebėta tokia funkcija – php.ini failas turi būti patalpintas aplanke C:\Windows. Taip pat būtina iš naujo paleisti žiniatinklio serverį, jei PHP yra įdiegtas kaip modulis.

Panagrinėkime 2 atvejus:

  1. Kai reikia perduoti eilutę žiniatinklio paslaugos metodo parametrui
  2. Kai reikia perduoti XDTO paketo objektą, aprašytą 1C, žiniatinklio paslaugos metodo parametrui

Priimkime vieną sąlygą: 1C žiniatinklio paslauga siunčia atsakymą JSON formatu. Deja, JSON formato palaikymas platformos metodų lygiu pasirodė tik versijoje 1C Enterprise 8.3.6. Jei norite naudoti JSON formatą ankstesnėse platformos versijose, yra geras apdorojimas, kurį galite naudoti arba galite parašyti ką nors savo, nes Šis duomenų perdavimo formatas nėra sudėtingas.
Atsakymas iš 1C žiniatinklio tarnybos bus JSON formatu su parametrais „Būsena“ ir „Pranešimas“ (šiame pavyzdyje aš nenaudojau apdorojimo, bet pats aprašiau atsakymą):

OurMessage = "Kažkoks pranešimas" WebServicesResponseText = "(" + Simboliai.PS + """Būsena""" + ":" + """Gerai""" + "," + Symbols.PS + """Pranešimas "" " + ":" + """" + OurMessage + """" + Simboliai.PS + ")";

1 atvejis. Parametras perduodamas kaip eilutė.

// SOAP talpyklą reikia išjungti. Jei to nepadarysite, // žiniatinklio paslaugos funkcijos tinkamai neveiks. ini_set("soap.wsdl_cache_enabled", 0); ini_set("soap.wsdl_cache_ttl", 0); $client = new SoapClient("//localhost:8080/ExampleBase/ws/ExampleWebService.1cws?wsdl", array("login" => "1C", //vartotojo prisijungimas prie 1C duomenų bazės "password" => "54321" " , //1C duomenų bazės vartotojo slaptažodis "soap_version" => SOAP_1_2, //SOAP versija "cache_wsdl" => WSDL_CACHE_NONE, "trace" => true, "features" => SOAP_USE_XSI_ARRAY_TYPE)); //Užpildykite perduodamų parametrų masyvą $ParametrStroka = "TestStroka"; $params["ParametrStroka"] = $ParametrStroka; //Atlikti operaciją $result = $client->ExampleMethod($params); //ExampleMethod yra 1C žiniatinklio paslaugos metodas, aprašytas konfigūracijoje. //Apdoroti grąžintą rezultatą $jsResult = $result->return; $dataResult = json_decode($jsResult); $StatusResult = $dataResult->Būsena; //gauti būsenos parametro reikšmę, kuri buvo sugeneruota, kai 1C žiniatinklio paslauga atsakė $MessageResult = $dataResult->

2 atvejis. Parametras perduodamas kaip XDTO 1C paketas.
Tarkime, kad XDTO parametras yra „kliento užsakymo“ dokumentas, kuriame yra tokia informacija: dokumento numeris, pilnas pirkėjo vardas, lentelės dalis „Produktai“ (detaliau – prekės brūkšninis kodas, prekės pavadinimas, kaina, kiekis, suma). Mūsų pavyzdyje atrodys XDTO paketas

// SOAP talpyklą reikia išjungti. Jei to nepadarysite, // žiniatinklio paslaugos funkcijos tinkamai neveiks. ini_set("soap.wsdl_cache_enabled", 0); ini_set("soap.wsdl_cache_ttl", 0); $client = new SoapClient("//localhost:8080/ExampleBase/ws/ExampleWebService.1cws?wsdl", array("login" => "1C", //vartotojo prisijungimas prie 1C duomenų bazės "password" => "54321" " , //1C duomenų bazės vartotojo slaptažodis "soap_version" => SOAP_1_2, //SOAP versija "cache_wsdl" => WSDL_CACHE_NONE, "trace" => true, "features" => SOAP_USE_XSI_ARRAY_TYPE)); //Užpildykite perduodamų parametrų masyvą $ParametrXDTO= Array("Dokumento numeris" => "0000001", "VardasCustomer" => "Andrey Petrovich", "Goods" => Array("Produktas" => array("ProductBarCod" => " 8718863003152", "ProductName" => "PHILIPS 40PFT4100/60 TV", "Skaičius" => 1, "Kaina" => 25000, "Summa" => 25000); $params["ParametrXDTO"] = $ ParametrXDTO; / /Atlikite operaciją $result = $client->ExampleMethod($params); //ExampleMethod yra 1C žiniatinklio paslaugos metodas, aprašytas konfigūracijoje. //Apdorokite grąžintą rezultatą $jsResult = $result -> grąžinti; $dataResult = json_decode ($jsResult); $StatusResult = $dataResult->Status; //gaukite būsenos parametro reikšmę, kuri buvo sugeneruota atsakant 1C žiniatinklio paslauga $MessageResult = $dataResult->Message ; //gaukite pranešimo parametro, kuris buvo sugeneruotas atsakant iš 1C žiniatinklio tarnybos, reikšmę

Tai viskas. Kaip matote, nėra nieko sudėtingo. Jei turite klausimų, tiesiog klauskite.