HTTP-Dienste für diejenigen, die nichts vom WEB verstehen. Webdienste (SOAP), HTTP-Dienste, oData (automatischer REST-Dienst) Neue Kurs-1c-Dienstparameter

Wenn Sie nichts von WEB-Technologien verstehen und Wörter wie json, get, post usw. Ihnen nichts bedeuten und Sie durch und durch ein begeisterter 1C-Benutzer sind, müssen Sie sich mit 1C anfreunden Anwendungen von Drittanbietern oder eine Website. Dann ist dieser Artikel genau das Richtige für Sie.

Lassen Sie mich mit der Tatsache beginnen, dass ich einmal gezwungen war, mich alleine mit Webdiensten zu befassen. Dann habe ich es irgendwie nach und nach geschafft, diese Angelegenheit zu meistern und zu verstehen, was und wo ich drücken muss, damit alles funktioniert. Glücklicherweise war die Konfiguration, mit der ich arbeiten musste, bereits mit Webdiensten vollgestopft und es war möglich, einen Blick darauf zu werfen und dies analog zu tun, und ich habe es auch geschafft, im Internet genügend Artikel zu diesem Thema zu finden. Und so habe ich diese Angelegenheit anhand von Beispielen (für mich ist dies die beste Art zu lernen) gemeistert, und jetzt machen sie mir keine Angst mehr.

ALSO. Die Hauptaufgabe jeder Integration, sei es CD, Webdienste oder HTTP-Dienste, besteht darin, etwas von irgendwoher zu übertragen, etwas damit zu tun und eine Antwort zurückzusenden. In diesem Format werden wir die neue Technologie betrachten.

Im Metadatenbaum befinden sich HTTP-Dienste im Zweig „Allgemein“:

Ein neuer HTTP-Dienst wird auf die gleiche Weise hinzugefügt wie jedes andere Metadatenobjekt. Name und Synonym nach Ihren Wünschen. Hier ist nur die „Root URL“ wichtig – das ist eigentlich die Kennung des HTTP-Dienstes in dieser Datenbank, also Genau das, was Sie in diese Eigenschaft schreiben, übertragen Sie als Link zum Dienst an einen Drittentwickler (oder an sich selbst).

Ich weiß nicht, ob es möglich ist, hier auf Kyrillisch zu schreiben, aber um in der fortschrittlichen Welt nicht ausgelacht zu werden, schreiben Sie auf Latein.

Die Template-Eigenschaft selbst ist hier wichtig:

Mithilfe einer Vorlage können Sie später auf die Ihnen übermittelten Daten zurückgreifen. ALSO: Alle Daten, die Sie von außen erhalten möchten, können in 2 Blöcke unterteilt werden – obligatorisch und optional.

Wir übertragen die erforderlichen Daten/Parameter in die Vorlage. Wenn also die Person, die auf den Dienst zugreift, diese nicht ausfüllt, generiert der Dienst a priori einen Fehler, und bei der Entwicklung des Textes des Handler-Moduls können Sie sicher sein, dass diese Daten vorhanden sind ist da. So geht das: In der Zeile Muster schreiben wir in geschweiften Klammern „()“, abwechselnd mit dem „/“-Zeichen, die Namen der Variablen. Wir brauchen zum Beispiel unbedingt einen Artikel – dann schreiben wir /(artikul). Wenn wir den Artikel, den Namen und den Benutzernamen benötigen, sieht die Vorlagenzeichenfolge wie folgt aus: /(artikul)/(name)/(user) usw. Jeder dieser Parameter im Text des Handler-Moduls kann wie folgt abgerufen werden: Request.ParametersURL["<имя параметра>"]. Wenn keine erforderlichen vorhanden sind, sieht die Vorlage wie folgt aus: /*.

Die optionalen Daten, die wir über den Dienst erhalten möchten, sind in der Vorlage NICHT beschrieben. Beim Aufbau eines Links zum Zugriff auf einen Dienst werden diese am Ende des Links nach dem „?“-Zeichen beschrieben, durch das kaufmännische Und-Zeichen „&“ getrennt und haben die Struktur<имя параметра>=<значение параметра>. Im Text des Handler-Moduls kann auf sie mit folgendem Konstrukt zugegriffen werden: Request.RequestParameters.Get("<имя параметра>"). ABER: Es ist wichtig zu bedenken, dass sie möglicherweise nicht vorhanden sind, da sie nicht erforderlich sind. Dementsprechend überprüfen wir den Wert auf Undefiniert.

Als nächstes fügen wir eine neue Methode für unsere Vorlage hinzu. Wichtig ist hierbei die HTTP-Methodeneigenschaft. Es gibt eine große Anzahl davon, ABER wir werden nicht auf alle Details eingehen. Um eine Ihrer Aufgaben umzusetzen, benötigen Sie nur 2: GET und POST.

So wählen Sie: Wenn das, was wir in den beiden vorherigen Absätzen beschrieben haben, für Ihre Arbeit ausreicht, d. h. Sie können alle benötigten Daten mithilfe der obligatorischen und optionalen Parameter der Anfrage selbst abrufen. Anschließend verwenden wir GET. In diesem Fall sehen Sie in jedem Browser bei korrekter Eingabe der Adressleiste das Ergebnis Ihres HTTP-Dienstes – PROFIT! Wenn Sie plötzlich Daten in einer komplexeren Form (z. B. XML oder etwas anderes) benötigen, damit Ihr Dienst funktioniert, etwas, das nicht in eine einfache Adressleiste gestopft werden kann, dann nehmen Sie POST. Der Nachteil ist, dass eine so einfache Überprüfung über die Adressleiste des Browsers wie mit GET nicht funktioniert, aber im Internet können Sie leicht einige Websites finden, auf denen Sie Dienste mithilfe der POST-Methode überprüfen können (z. B. die Website https:/ /www.hurl.it) . Wenn die POST-Methode ausgewählt ist, verfügt die Anfrage zusätzlich zur URL (Adresse) über einen Textkörper, in den Sie alles einfügen können, was Sie möchten, und im Methodenhandler über das Konstrukt Request.GetBodyAsString() darauf zugreifen. Jede Vorlage kann sowohl eine GET- als auch eine POST-Methode haben. Sie verfügen über entsprechend unterschiedliche Handler und 1C wählt je nach Versandart der Anfrage die eine oder andere Methode.

Ein HTTP-Service-Handler ist eine Funktion, die immer einen Wert vom Typ HTTPServiceResponse zurückgibt, der vom Konstruktor New HTTPServiceResponse( erstellt wird.<КодСостояния>). <КодСостояния>- Dies ist eine Zahl, damit Sie sich keine Gedanken darüber machen müssen, was geschrieben werden soll. Wir schreiben: 200 - wenn alles in Ordnung ist und Sie einen logischen Wert zurückgeben, 400 - wenn ein Fehler vorliegt und Sie eine Beschreibung des Fehlers zurückgeben . Dieser Typ verfügt über verschiedene Methoden (Sie können es im Syntaxassistenten nachlesen, dort ist alles klar geschrieben). Auch hier können Sie jederzeit alles, was Sie benötigen, als String zurückgeben – die SetBodyFromString()-Methode. (Ein kleiner Trick: Wenn Sie HTML zurückgeben und möchten, dass der Browser es schön auf dem Bildschirm anzeigt, wenn Sie die Adresse Ihres Dienstes in die Adressleiste eingeben, schreiben Sie in die Antwort-Headings-Eigenschaft: Answer.Headers.Insert("Content-Type „“, „text/html; charset=utf-8“) – damit geben Sie an, dass es sich nicht nur um einen Zeichensatz, sondern um HTML handelt und entsprechend dargestellt werden muss)

Nachdem Sie alles erledigt haben, muss der HTTP-Dienst veröffentlicht werden. Dies geschieht auf einem Computer mit installiertem Webserver (ich werde nicht über die Einstellungen schreiben, es gibt viele Artikel) über das Menü:

Administration – Veröffentlichung auf einem Webserver.

Es gibt eine Registerkarte „HTTP-Dienste“. Aktivieren Sie die Kontrollkästchen und klicken Sie auf „Veröffentlichen“.




Ich stand vor der Notwendigkeit, den aktuellen Konfigurationsstatus abzurufen. Sie müssen Folgendes erhalten:

  • Anzahl der Dokumente mit einer bestimmten Auswahl;
  • Der Zeitraum des letzten erfassten Preises für das Produkt;
  • Die Anzahl der vom Benutzer in den letzten 10 Minuten verarbeiteten Dokumente.

Unter Berücksichtigung der Erfahrungen bei der Implementierung einer mobilen Anwendung in Projekten blitzte zunächst der Gedanke auf, eine Konfiguration für Android zu schreiben. Nach Abwägung aller Vor- und Nachteile kam ich zu dem Schluss, dass dieser Ansatz zur Lösung meines Problems nicht geeignet wäre. Dann wurde der Kurs belegt, den http-Dienst zu nutzen. Dazu wurde der http-Dienst „Statistics“ in der Konfiguration registriert und das URL-Template AnyURL hinzugefügt, dem eine get-Methode hinzugefügt wurde.


Nachdem wir die Objekte des Konfigurationsbaums generiert haben, beginnen wir mit dem Schreiben eines Algorithmus zum Generieren einer Antwort. Die Methode gibt eine Antwort vom Typ HTTPServiceResponse zurück:

Nachdem wir den Antwortcode geschrieben haben, veröffentlichen wir den http-Dienst aus dem Konfigurator und greifen über den Browser darauf zu. Um auf den http-Dienst zuzugreifen, müssen Sie die Adresse wie im Webclient kontaktieren, indem Sie „/hs/statistic/“ hinzufügen. hs teilt der Plattform mit, dass auf einen http-Dienst zugegriffen wird, und statistic ist der Name unseres Dienstes.

Meiner Meinung nach können http-Dienste in folgenden Fällen nützlich sein:
— Erstellung von Konfigurationsstatistiken;
— Funktionalität zum Abrufen des Bestellstatus anhand seiner Nummer;
— Vorbereiten von Daten für den Import in andere Systeme.

Ein Webdienst in 1C 8.3 und 8.2 ist ein Metadatenobjekt, das es Ihnen ermöglicht, die 1C-Plattform mithilfe einer serviceorientierten Architektur (SOA) in andere Informationssysteme zu integrieren.

Schauen wir uns das Erstellen und Konfigurieren des Beispiels eines Webdienstes an, der den bidirektionalen Austausch zwischen 1C 8-Datenbanken mithilfe von SOAP ermöglicht.

Schauen wir uns zunächst die Registerkarte an Andere:

Holen Sie sich 267 Video-Lektionen zu 1C kostenlos:

  • Auf dem Feld Namespace-URI beschreibt den Speicherort der Ressourcenkennung.
  • – eine Beschreibung der Typen, mit denen der zukünftige Webdienst arbeiten kann.
  • Name der Veröffentlichungsdatei– Name der *.1CWS-Datei, die auf dem Webserver abgelegt wird

Struktur des 1C-Webdienstes

Schauen wir uns die Struktur des Webservices an:

DataExchange ist der Webdienst selbst. UnloadData, LoadData – Operationen, im Wesentlichen Beschreibungen von Funktionen, die über das SOAP-Protokoll aufgerufen werden können. ExchangePlanName, NodeCode usw. — An den Webdienst übermittelte Werte.

Webservice-Modul

Das Modul enthält das Interessanteste – eine Beschreibung der Funktionen des zukünftigen Webdienstes. In unserem Fall beschreiben wir Funktionen, die es Ihnen ermöglichen, Daten mithilfe standardmäßiger 1C-Austauschmechanismen zu empfangen und zu senden. Weil Der Austausch findet zwischen einer Plattform statt – 1C, dann ist keine Datenserialisierung erforderlich.

Überprüfen des Betriebs des 1C-HTTP-Dienstes auf einem Webserver

Lassen Sie mich mit der Tatsache beginnen, dass ich einmal gezwungen war, mich alleine mit Webdiensten zu befassen. Dann habe ich es irgendwie nach und nach geschafft, diese Angelegenheit zu meistern und zu verstehen, was und wo ich drücken muss, damit alles funktioniert. Glücklicherweise war die Konfiguration, mit der wir arbeiten mussten, bereits voll Es war möglich, es mithilfe von Webdiensten zu betrachten und analog durchzuführen, und im Internet konnte ich genügend Artikel zu diesem Thema finden. Und so habe ich diese Angelegenheit anhand von Beispielen (für mich ist dies die beste Art zu lernen) gemeistert, und jetzt machen sie mir keine Angst mehr.

ALSO. Die Hauptaufgabe jeder Integration, sei es CD, Webdienste oder HTTP-Dienste, besteht darin, etwas von irgendwoher zu übertragen, etwas damit zu tun und eine Antwort zurückzusenden. In diesem Format werden wir die neue Technologie betrachten.

Im Metadatenbaum befinden sich HTTP-Dienste im Zweig „Allgemein“:

Ein neuer HTTP-Dienst wird auf die gleiche Weise hinzugefügt wie jedes andere Metadatenobjekt. Name und Synonym nach Ihren Wünschen. Wichtig ist hier nur die „Root URL“ – das ist eigentlich die Kennung HTTP-Dienst in dieser Datenbank, d.h. Genau das, was Sie in diese Eigenschaft schreiben, übertragen Sie als Link zum Dienst an einen Drittentwickler (oder an sich selbst).

Ich weiß nicht, ob es möglich ist, hier auf Kyrillisch zu schreiben, aber um in der fortschrittlichen Welt nicht ausgelacht zu werden, schreiben Sie auf Latein.

Die Template-Eigenschaft selbst ist hier wichtig:

Mithilfe einer Vorlage können Sie später auf die Ihnen übermittelten Daten zurückgreifen. ALSO: Alle Daten, die Sie von außen erhalten möchten, können in zwei Blöcke unterteilt werden – obligatorisch und optional.

Erforderliche Daten/Parameter Wir fügen sie in die Vorlage ein. Wenn also die Person, die auf den Dienst zugreift, sie nicht ausfüllt, generiert der Dienst a priori einen Fehler, und bei der Entwicklung des Textes des Handler-Moduls können Sie sicher sein, dass diese Daten vorhanden sind. So geht das: In der Zeile Muster schreiben wir in geschweiften Klammern „()“, abwechselnd mit dem „/“-Zeichen, die Namen der Variablen. Wir brauchen zum Beispiel unbedingt einen Artikel – dann schreiben wir /(artikul). Wenn wir den Artikel, den Namen und den Benutzernamen benötigen, sieht die Vorlagenzeichenfolge wie folgt aus: /(artikul) /(name)/(user) usw. Jeder dieser Parameter im Text des Handler-Moduls kann wie folgt abgerufen werden: Request.ParametersURL["<имя параметра>"]. Wenn keine erforderlichen vorhanden sind, sieht die Vorlage wie folgt aus: /*.

Optionale Daten, die wir über den Dienst erhalten möchten, sind in der Vorlage NICHT beschrieben. Beim Aufbau eines Links zum Zugriff auf einen Dienst werden diese am Ende des Links nach dem „?“-Zeichen beschrieben, durch das kaufmännische Und-Zeichen „&“ getrennt und haben die Struktur<имя параметра>=<значение параметра>. Im Text des Handler-Moduls kann auf sie mit folgendem Konstrukt zugegriffen werden: Request.RequestParameters.Get("<имя параметра>"). ABER: Es ist wichtig zu bedenken, dass sie möglicherweise nicht vorhanden sind, da sie nicht erforderlich sind. Dementsprechend überprüfen wir den Wert auf Undefiniert.

Als nächstes fügen wir eine neue Methode für unsere Vorlage hinzu. Wichtig ist hierbei die HTTP-Methodeneigenschaft. Es gibt eine große Anzahl davon, ABER wir werden nicht auf alle Details eingehen. Um eine Ihrer Aufgaben umzusetzen, benötigen Sie nur 2: ERHALTEN Und POST.

So wählen Sie: Wenn das, was wir in den beiden vorherigen Absätzen beschrieben haben, für Ihre Arbeit ausreicht, d. h. Sie können alle benötigten Daten mithilfe der obligatorischen und optionalen Parameter der Anfrage selbst abrufen. Anschließend verwenden wir GET. In diesem Fall sehen Sie in jedem Browser bei korrekter Eingabe der Adressleiste das Ergebnis Ihres HTTP-Dienstes – PROFIT! Wenn Sie plötzlich Daten in einer komplexeren Form (z. B. XML oder etwas anderes) benötigen, damit Ihr Dienst funktioniert, etwas, das nicht in eine einfache Adressleiste gestopft werden kann, dann nehmen Sie POST. Der Nachteil ist, dass eine so einfache Überprüfung über die Adressleiste des Browsers wie mit GET nicht funktioniert, aber im Internet können Sie leicht einige Websites finden, auf denen Sie Dienste mithilfe der POST-Methode überprüfen können (z. B. die Website https:/ /www.hurl.it) . Wenn die Methode ausgewählt ist POST, dann die Anfrage dazu URL (Adressen) erscheint ein Textkörper, in den Sie alles stopfen können, und im Methodenhandler können Sie über das Konstrukt Request.GetBodyAsString() darauf zugreifen. Jede Vorlage kann sowohl eine GET- als auch eine POST-Methode haben. Sie verfügen über entsprechend unterschiedliche Handler und 1C wählt je nach Versandart der Anfrage die eine oder andere Methode.

Ein HTTP-Service-Handler ist eine Funktion, die immer einen Wert vom Typ HTTPServiceResponse zurückgibt, der vom Konstruktor New HTTPServiceResponse( erstellt wird.<КодСостояния>). <КодСостояния>- Dies ist eine Zahl, damit Sie sich keine Gedanken darüber machen müssen, was geschrieben werden soll. Wir schreiben: 200 - wenn alles in Ordnung ist und Sie einen logischen Wert zurückgeben, 400 - wenn ein Fehler vorliegt und Sie eine Beschreibung des Fehlers zurückgeben . Dieser Typ verfügt über verschiedene Methoden (Sie können es im Syntaxassistenten nachlesen, dort ist alles klar geschrieben). Auch hier können Sie jederzeit alles, was Sie benötigen, als String zurückgeben – die SetBodyFromString()-Methode. (Ein kleiner Trick: Wenn Sie HTML zurückgeben und möchten, dass der Browser es schön auf dem Bildschirm anzeigt, wenn Sie die Adresse Ihres Dienstes in die Adressleiste eingeben, schreiben Sie in die Antwort-Headings-Eigenschaft: Answer.Headers.Insert("Content-Type „“, „text/html; charset=utf-8“) – damit geben Sie an, dass es sich nicht nur um einen Zeichensatz, sondern um HTML handelt und entsprechend dargestellt werden muss)

Nachdem Sie alles erledigt haben, muss der HTTP-Dienst veröffentlicht werden. Dies geschieht auf einem Computer mit installiertem Webserver (ich werde nicht über die Einstellungen schreiben, es gibt viele Artikel) über das Menü:

Administration – Veröffentlichung auf einem Webserver.

Es gibt eine Registerkarte „HTTP-Dienste“. Aktivieren Sie die Kontrollkästchen und klicken Sie auf „Veröffentlichen“.

Also haben wir einen fertigen HTTP-Dienst erhalten. WIE kontaktiere ich ihn? Wenn wir die GET-Methode verwenden, schreiben wir in die Adressleiste des Browsers: http://<имя веб сервера>/<имя базы>/hs/<корневой URL>/<обязательный параметр1>/<обязательный параметр2> <имя не обязательного параметра 1>=<значение не обязательного параметра 1>&<имя не обязательного параметра 2> =<значение не обязательного параметра 2> .

Und zum Schluss noch einmal in Bildern))):

Aufmerksamkeit! Nun findet der Kurs auch abends von 18:30 bis 21:30 Uhr im Immersionsformat statt.

Während des Kurses erwerben Sie praktische Fähigkeiten im Umgang mit den folgenden Mechanismen der 1C:Enterprise 8-Plattform:

  • WEB-Dienste (SOAP-Protokoll)
  • JSON-Format
  • oData-Schnittstelle (automatisch REST-Service)
  • HTTP-Dienste

WICHTIG!!! Der Kurs richtet sich an Programmierer, die über Kenntnisse im Umgang mit dem XDTO-Mechanismus verfügen oder den Kurs bereits abgeschlossen haben.

Beschreibung und Programm des Kurses:

Im Preis des WEB-Kurses sind enthalten:

  • 2 Wochen Kurs, 2 Webinare mit einem Lehrer
  • Zertifikat des 1C Training Center Nr. 3 (vorbehaltlich praktischer Ausbildung)

Die Kosten für den Vollzeit-Immersionskurs beinhalten:

  • 2 Tage von 10:00 bis 17:00 Uhr oder 16:00 Uhr von 18:30 bis 21:30 Uhr
  • Notizen, Kopfhörer
  • Mittagessen, Kaffeepausen
  • Zugriff auf aktualisierte Videomaterialien für 2 Jahre nach Abschluss des Kurses
  • Zertifikat des 1C-Schulungszentrums Nr. 3

Trainingsformate

WEB-Schulung

Was ist dieses Format:Das vorgeschlagene Format kombiniert viele Vorteile des Fernunterrichts mit einer Präsenzkomponente, die durch Videomaterialien und Online-Beratungen dargestellt wird.
Der WEB-Kurs besteht aus Videos, praktischen Aufgaben und Webinaren mit Lehrern. Alle Kursmaterialien sind rund um die Uhr über das Internet verfügbar, sodass Sie zu einem für Sie passenden Zeitpunkt lernen können. Der Kurs ist in Klassen unterteilt. Während des Unterrichts werden Materialien zum aktuellen Thema studiert, Workshops durchgeführt und Fragen an den Lehrer gestellt. Am Ende jeder Unterrichtsstunde findet ein Webinar statt, bei dem der Lehrer alle eingegangenen Fragen, typische Fehler untersucht und die richtige Lösung erklärt. Aufzeichnungen von Webinaren sind im Portal verfügbar. Auf diese Weise werden mehrere Kurse nacheinander abgehalten. Am Ende gibt es eine abschließende eigenständige Arbeit und ein abschließendes Webinar.

Dauer: 2 Wochen

Was ist dieses Format:


Dauer:16 akademische Stunden

Was ist dieses Format:Ein Vollzeit-Immersionskurs ist ein Format, das alle Vorteile einer Vollzeitausbildung, eines Fernstudiums und einer Einzelausbildung vereint. Der Unterricht findet in einem ausgestatteten Klassenzimmer statt, Sie studieren selbstständig die Kursmaterialien (Schritt-für-Schritt-Videos) und führen Workshops durch. Gleichzeitig befindet sich im Publikum ein Lehrer, der jederzeit bereit ist, Fragen zu beantworten, bei der Lösung praktischer Probleme zu helfen und die Richtigkeit der Umsetzung zu überprüfen.
Vorteile – individuelle Beratung durch den Lehrer zu Ihren Fragen, das Tempo der Bearbeitung des Stoffes ist für Sie persönlich geeignet.
All dies ermöglicht ein tiefergehendes Studium des Kursmaterials.
Dieser Kurs kann von Ihrem Arbeitsplatz aus belegt werden, mit der vollen Wirkung der Anwesenheit des Lehrers dort, wo sich der Schüler befindet! Wenn Sie an dieser Möglichkeit interessiert sind, rufen Sie uns an!

Dauer:16 akademische Stunden