HTTP-tjenester for de som ikke forstår noe om WEB. Webtjenester (SOAP), HTTP-tjenester, oData (automatisk REST-tjeneste) Nye kurs 1c-tjenesteparametere

Hvis du ikke forstår noe om WEB-teknologier og ord som json, get, post og så videre betyr ikke noe for deg, og du er bare en ivrig 1C-bruker til kjernen, men du må bli venner med 1C med tredjepartsapplikasjoner eller et nettsted. Da er denne artikkelen noe for deg.

La meg begynne med det faktum at jeg en gang ble tvunget til å håndtere webtjenester på egen hånd. Så klarte jeg på en eller annen måte, litt etter litt, å mestre denne saken og forstå hva og hvor jeg skulle presse på for at alt skulle fungere. Heldigvis var konfigurasjonen som jeg måtte jobbe med allerede fylt med webtjenester, og det var mulig å titte og gjøre det analogt, og jeg klarte også å finne nok artikler om denne saken på Internett. Og så, ved å bruke eksempler (for meg er dette den beste måten å studere på), mestret jeg denne saken, og nå skremmer de meg ikke lenger.

SÅ. Hovedoppgaven til enhver integrasjon, det være seg CD, webtjenester eller HTTP-tjenester, er å overføre noe fra et sted, gjøre noe med det og returnere et svar. Dette er formatet vi vil vurdere den nye teknologien i.

I metadatatreet er HTTP-tjenester plassert i grenen Generelt:

En ny HTTP-tjeneste legges til på samme måte som ethvert annet metadataobjekt. Navn og synonym som du ønsker. Her er bare "Root URL" viktig - dette er faktisk identifikatoren til HTTP-tjenesten i denne databasen, dvs. akkurat det du skriver i denne egenskapen, vil du overføre til en tredjepartsutvikler (eller deg selv) som en lenke til tjenesten.

Jeg vet ikke om det er mulig å skrive her på kyrillisk, men for ikke å bli ledd av i den progressive verden, skriv på latin).

Selve malegenskapen er viktig her:

Ved hjelp av en mal kan du senere henvise til dataene som ble overført til deg. SÅ: alle dataene du ønsker å motta fra utsiden kan deles inn i 2 blokker - obligatoriske og valgfrie.

Vi skyver de nødvendige dataene/parametrene inn i malen, så hvis personen som får tilgang til tjenesten ikke fyller dem ut, vil tjenesten på forhånd generere en feil, og når du utvikler teksten til behandlermodulen, vil du være sikker på at disse dataene er det. Hvordan dette gjøres: i linjen Mønster i krøllete parentes "()", vekslende med "/"-tegnet, skriver vi navnene på variablene. For eksempel trenger vi definitivt en artikkel - da skriver vi /(artikul). Hvis vi trenger å få artikkelen, navn og brukernavn, vil malstrengen se slik ut: /(artikul)/(navn)/(bruker), etc. Hver av disse parameterne i teksten til behandlermodulen kan fås slik: Request.ParametersURL["<имя параметра>"]. Hvis det ikke er noen påkrevde, ser malen slik ut: /*.

De valgfrie dataene som vi ønsker å motta gjennom tjenesten er IKKE beskrevet i malen. Når du bygger en kobling for å få tilgang til en tjeneste, er de beskrevet på slutten av lenken etter "?"-tegnet, atskilt med og-tegnet "&" og har strukturen<имя параметра>=<значение параметра>. I teksten til behandlermodulen kan de nås med følgende konstruksjon: Request.RequestParameters.Get("<имя параметра>"). MEN: det er viktig å huske at siden de ikke er påkrevd, kan det hende at de ikke eksisterer, derfor sjekker vi verdien for Undefined.

Deretter legger vi til en ny metode for malen vår. HTTP-metodeegenskapen er viktig her. Det er et enormt antall av dem, MEN vi vil ikke gå inn på alle detaljene. For å implementere noen av oppgavene dine trenger du bare 2: GET og POST.

Hvordan velge: Hvis det vi beskrev i de to foregående avsnittene er nok for arbeidet ditt, dvs. Du kan få alle dataene du trenger ved å bruke de obligatoriske og valgfrie parameterne for selve forespørselen, så tar vi GET. I dette tilfellet, i en hvilken som helst nettleser, hvis du skriver inn adressefeltet riktig, vil du se resultatet av HTTP-tjenesten din - PROFIT! Hvis du plutselig trenger data i en mer kompleks form (for eksempel xml eller noe annet), for at tjenesten skal fungere, noe som ikke kan stappes inn i en enkel adresselinje, så ta POST. På minussiden vil en slik enkel sjekk gjennom nettleserens adresselinje, som med GET, ikke fungere, men på Internett kan du enkelt finne noen nettsteder hvor du kan sjekke tjenester ved hjelp av POST-metoden (for eksempel nettstedet https:/ /www.hurl.it). Hvis POST-metoden er valgt, har forespørselen i tillegg til URL-en (adressen), en kropp der du kan legge inn hva du vil, og i metodebehandleren få tilgang til den gjennom Request.GetBodyAsString()-konstruksjonen. Enhver mal kan ha både en GET- og en POST-metode. De vil ha tilsvarende forskjellige behandlere, og 1C, avhengig av hvordan forespørselen ble sendt, vil velge en eller annen metode.

En HTTP-tjenestebehandler er en funksjon som alltid returnerer en verdi av typen HTTPServiceResponse, som er bygget av konstruktøren New HTTPServiceResponse(<КодСостояния>). <КодСостояния>- dette er et tall, for å slippe å bekymre deg for å velge hva du skal skrive, skriver vi: 200 - hvis alt er i orden og du returnerer en logisk verdi, 400 - hvis det er en feil og du returnerer en beskrivelse av feilen . Denne typen har forskjellige metoder (du kan lese den i syntaksassistenten, alt er tydelig skrevet der). Igjen, du kan alltid returnere alt du trenger som en streng - SetBodyFromString()-metoden. (ett lite triks: hvis du returnerer html og vil at nettleseren skal vise det vakkert på skjermen når du skriver inn adressen til tjenesten din i adressefeltet, skriver du i responsen Headings-egenskapen: Answer.Headers.Insert("Content-Type ","text/html; charset=utf-8") - dermed indikerer du at dette ikke bare er et sett med tegn, men HTML og det må vises deretter)

Etter at du har gjort alt, må HTTP-tjenesten publiseres. Dette gjøres på en datamaskin med en webserver installert (jeg vil ikke skrive om innstillingene, det er mange artikler) gjennom menyen:

Administrasjon - Publisering på en webserver.

Det er en HTTP-tjenester-fane. Merk av i boksene og klikk "Publiser"




Jeg ble møtt med behovet for å få den nåværende konfigurasjonstilstanden. Du må motta:

  • Antall dokumenter med et visst utvalg;
  • Perioden for den siste registrerte prisen for produktet;
  • Antall dokumenter behandlet av bruker i løpet av de siste 10 minuttene.

Tatt i betraktning opplevelsen av å implementere en mobilapplikasjon i prosjekter, falt tanken først gjennom å skrive en konfigurasjon for Android. Etter å ha veid alle fordeler og ulemper, kom jeg til den konklusjon at denne tilnærmingen ikke ville være egnet for å løse problemet mitt. Da ble kurset tatt for å bruke http-tjenesten. For å gjøre dette ble http-tjenesten "Statistics" registrert i konfigurasjonen, og url-malen AnyURL ble lagt til, som hadde en get-metode lagt til.


Etter å ha generert objektene til konfigurasjonstreet, begynner vi å skrive en algoritme for å generere et svar. Metoden vil returnere et svar av typen HTTPServiceResponse:

Etter å ha skrevet svarkoden, publiserer vi http-tjenesten fra konfiguratoren og får tilgang til den fra nettleseren. For å få tilgang til http-tjenesten må du kontakte adressen som i webklienten ved å legge til "/hs/statistic/". hs forteller plattformen at en http-tjeneste blir aksessert, og statistikk er navnet på tjenesten vår.

Etter min mening kan http-tjenester være nyttige i følgende tilfeller:
— Generering av konfigurasjonsstatistikk;
— Funksjonalitet for å få ordrestatus etter nummeret;
— Forberede data for import til andre systemer.

En webtjeneste i 1C 8.3 og 8.2 er et metadataobjekt som lar deg integrere 1C-plattformen med andre informasjonssystemer ved hjelp av tjenesteorientert arkitektur (SOA).

La oss se på å lage og konfigurere eksempelet på en webtjeneste som tillater toveis utveksling mellom 1C 8-databaser ved hjelp av SOAP.

La oss først se på fanen Annen:

Få 267 videotimer på 1C gratis:

  • I felt Navneområde-URI beskriver plasseringen av ressursidentifikatoren.
  • — en beskrivelse av typene den fremtidige nettjenesten vil kunne jobbe med.
  • Navn på publikasjonsfil— navnet på *.1CWS-filen som vil bli plassert på webserveren

Strukturen til 1C-webtjenesten

La oss se på strukturen til nettjenesten:

DataExchange er selve webtjenesten. UnloadData, LoadData - operasjoner, i hovedsak beskrivelser av funksjoner som kan kalles via SOAP-protokollen. ExchangePlanName, NodeCode, etc. — verdier overført til nettjenesten.

Netttjenestemodul

Modulen inneholder det mest interessante - en beskrivelse av funksjonene til den fremtidige nettjenesten. I vårt tilfelle beskriver vi funksjonalitet som lar deg motta og sende data ved hjelp av standard 1C-utvekslingsmekanismer. Fordi Utvekslingen foregår mellom en plattform - 1C, da krever de ikke dataserialisering.

Kontrollere driften av 1C http-tjenesten på en webserver

La meg begynne med det faktum at jeg en gang ble tvunget til å håndtere webtjenester på egen hånd. Så klarte jeg på en eller annen måte, litt etter litt, å mestre denne saken og forstå hva og hvor jeg skulle presse på for at alt skulle fungere. Heldigvis var konfigurasjonen vi måtte jobbe med allerede full Det var mulig å se på det ved hjelp av webtjenester og gjøre det analogt, og på Internett kunne jeg finne nok artikler om denne saken. Og så, ved å bruke eksempler (for meg er dette den beste måten å studere på), mestret jeg denne saken, og nå skremmer de meg ikke lenger.

. Hovedoppgaven til enhver integrasjon, det være seg CD, webtjenester eller HTTP-tjenester, er å overføre noe fra et sted, gjøre noe med det og returnere et svar. Dette er formatet vi vil vurdere den nye teknologien i.

I metadatatreet er HTTP-tjenester plassert i grenen Generelt:

En ny HTTP-tjeneste legges til på samme måte som ethvert annet metadataobjekt. Navn og synonym som du ønsker. Bare "Root URL" er viktig her - dette er faktisk identifikatoren HTTP-tjeneste i denne databasen, dvs. akkurat det du skriver i denne egenskapen, vil du overføre til en tredjepartsutvikler (eller deg selv) som en lenke til tjenesten.

Jeg vet ikke om det er mulig å skrive her på kyrillisk, men for ikke å bli ledd av i den progressive verden, skriv på latin).

Selve malegenskapen er viktig her:

Ved hjelp av en mal kan du senere henvise til dataene som ble overført til deg. SÅ: all data du ønsker å motta fra utsiden kan deles inn i 2 blokker - obligatorisk og valgfri.

Nødvendige data/parametre vi skyver den inn i malen, så hvis personen som får tilgang til tjenesten ikke fyller dem ut, vil tjenesten a priori generere en feil, og når du utvikler teksten til behandlermodulen, vil du være sikker på at disse dataene er der. Hvordan dette gjøres: i linjen Mønster i krøllete parentes "()", vekslende med "/"-tegnet, skriver vi navnene på variablene. For eksempel trenger vi definitivt en artikkel - da skriver vi /(artikul). Hvis vi trenger å få artikkelen, navn og brukernavn, vil malstrengen se slik ut: /(artikul) /(navn)/(bruker), etc. Hver av disse parameterne i teksten til behandlermodulen kan fås slik: Request.ParametersURL["<имя параметра>"]. Hvis det ikke er noen påkrevde, ser malen slik ut: /*.

Valgfrie data, som vi ønsker å motta gjennom tjenesten, er IKKE beskrevet i malen. Når du bygger en kobling for å få tilgang til en tjeneste, er de beskrevet på slutten av lenken etter "?"-tegnet, atskilt med og-tegnet "&" og har strukturen<имя параметра>=<значение параметра>. I teksten til behandlermodulen kan de nås med følgende konstruksjon: Request.RequestParameters.Get("<имя параметра>"). MEN: det er viktig å huske at siden de ikke er påkrevd, kan det hende at de ikke eksisterer, derfor sjekker vi verdien for Undefined.

Deretter legger vi til en ny metode for malen vår. HTTP-metodeegenskapen er viktig her. Det er et enormt antall av dem, MEN vi vil ikke gå inn på alle detaljene. For å implementere noen av oppgavene dine trenger du bare 2: Og POST.

Hvordan velge: Hvis det vi beskrev i de to foregående avsnittene er nok for arbeidet ditt, dvs. Du kan få alle dataene du trenger ved å bruke de obligatoriske og valgfrie parameterne for selve forespørselen, så tar vi GET. I dette tilfellet, i en hvilken som helst nettleser, hvis du skriver inn adressefeltet riktig, vil du se resultatet av HTTP-tjenesten din - PROFIT! Hvis du plutselig trenger data i en mer kompleks form (for eksempel xml eller noe annet), for at tjenesten skal fungere, noe som ikke kan stappes inn i en enkel adresselinje, så ta POST. På minussiden vil en slik enkel sjekk gjennom nettleserens adresselinje, som med GET, ikke fungere, men på Internett kan du enkelt finne noen nettsteder hvor du kan sjekke tjenester ved hjelp av POST-metoden (for eksempel nettstedet https:/ /www.hurl.it). Hvis metoden er valgt POST, så forespørselen i tillegg URL (adresser) vises en kropp der du kan stappe hva som helst, og i metodebehandleren få tilgang til den gjennom Request.GetBodyAsString()-konstruksjonen. Enhver mal kan ha både en GET- og en POST-metode. De vil ha tilsvarende forskjellige behandlere, og 1C, avhengig av hvordan forespørselen ble sendt, vil velge en eller annen metode.

En HTTP-tjenestebehandler er en funksjon som alltid returnerer en verdi av typen HTTPServiceResponse, som er bygget av konstruktøren New HTTPServiceResponse(<КодСостояния>). <КодСостояния>- dette er et tall, for å slippe å bekymre deg for å velge hva du skal skrive, skriver vi: 200 - hvis alt er i orden og du returnerer en logisk verdi, 400 - hvis det er en feil og du returnerer en beskrivelse av feilen . Denne typen har forskjellige metoder (du kan lese den i syntaksassistenten, alt er tydelig skrevet der). Igjen, du kan alltid returnere alt du trenger som en streng - SetBodyFromString()-metoden. (ett lite triks: hvis du returnerer html og vil at nettleseren skal vise det vakkert på skjermen når du skriver inn adressen til tjenesten din i adressefeltet, skriver du i responsen Headings-egenskapen: Answer.Headers.Insert("Content-Type ","text/html; charset=utf-8") - dermed indikerer du at dette ikke bare er et sett med tegn, men HTML og det må vises deretter)

Etter at du har gjort alt, må HTTP-tjenesten publiseres. Dette gjøres på en datamaskin med en webserver installert (jeg vil ikke skrive om innstillingene, det er mange artikler) gjennom menyen:

Administrasjon - Publisering på en webserver.

Det er en HTTP-tjenester-fane. Merk av i boksene og klikk "Publiser"

, mottok vi en ferdig HTTP-tjeneste. HVORDAN kontakte ham? Hvis vi bruker GET-metoden, skriver vi i adressefeltet til nettleseren: http://<имя веб сервера>/<имя базы>/hs/<корневой URL>/<обязательный параметр1>/<обязательный параметр2> <имя не обязательного параметра 1>=<значение не обязательного параметра 1>&<имя не обязательного параметра 2> =<значение не обязательного параметра 2> .

Og til slutt, nok en gang i bilder))):

Merk følgende! Nå holdes kurset også på kveldstid fra 18:30 til 21:30 i fordypningsformat.

I løpet av kurset vil du få praktiske ferdigheter i å bruke følgende mekanismer på 1C:Enterprise 8-plattformen:

  • WEB-tjenester (SOAP-protokoll)
  • JSON-format
  • oDatagrensesnitt (automatisk REST-tjeneste)
  • HTTP-tjenester

VIKTIG!!! Kurset er laget for programmerere som har ferdigheter i å arbeide med XDTO-mekanismen, eller som tidligere har fullført kurset.

Beskrivelse og program for kurset:

Prisen på WEB-kurset inkluderer:

  • 2 uker selvfølgelig, 2 webinarer med lærer
  • sertifikat for 1C Training Center nr. 3 (med forbehold om praktisk opplæring)

Kostnaden for fordypningskurset på heltid inkluderer:

  • 2 dager fra 10:00 til 17:00 eller 16:00 fra 18:30 til 21:30
  • notater, hodetelefoner
  • lunsjer, kaffepauser
  • tilgang til oppdatert videomateriell i 2 år etter fullført kurs
  • sertifikat av 1C-Treningssenter nr. 3

Opplæringsformater

WEB opplæring

Hva er dette formatet:Det foreslåtte formatet kombinerer mange av fordelene med fjernundervisning med en ansikt-til-ansikt-komponent representert av videomateriell og online konsultasjoner.
WEB-kurset består av videoer, praktiske oppgaver og webinarer med lærere. Alt kursmateriell er tilgjengelig 24/7 via Internett, slik at du kan studere på et tidspunkt som passer deg. Kurset er delt inn i klasser. I løpet av leksjonen studeres materiell om det aktuelle emnet, det gjennomføres workshops og spørsmål stilles til læreren. På slutten av hver leksjon holdes et webinar, der læreren undersøker alle mottatte spørsmål, typiske feil og forklarer den riktige løsningen. Opptak av webinarer er tilgjengelig i portalen. På denne måten holdes flere klasser etter hverandre. På slutten er det et siste selvstendig arbeid og et avsluttende webinar.

Varighet: 2 uker

Hva er dette formatet:


Varighet:16 akademiske timer

Hva er dette formatet:Et fordypningskurs på heltid er et format som kombinerer alle fordelene med fulltidsopplæring, fjernundervisning og individuell opplæring. Klassene holdes i et utstyrt klasserom, du studerer selvstendig kursmateriellet (trinn-for-trinn-videoer) og gjennomfører workshops. Samtidig er det en lærer i publikum som til enhver tid er klar til å svare på spørsmål og hjelpe til med å løse praktiske problemer, samt sjekke om implementeringen er korrekt.
Fordeler - individuelle konsultasjoner fra læreren på spørsmålene dine, tempoet for å fullføre materialet passer for deg personlig.
Alt dette gir en mer inngående studie av kursmaterialet.
Dette kurset kan tas fra din arbeidsplass med full effekt av lærerens tilstedeværelse der studenten er! Hvis denne muligheten interesserer deg, ring oss!

Varighet:16 akademiske timer