1. Die Wahl der Austauschmethode. API-Beschreibung.2. Implementierung der API auf der Seite von 1C.
3.
Anwendung auf TSD und Kommunikation mit 1C: Enterprise 8.3 über HTTP-Service. Teil 3 (BroadcastReceiver. Daten abrufen)Es gibt viele Handbücher zum Erstellen eines HTTP-Dienstes im Internet. Daher werde ich die Implementierung sofort beschreiben. Unser Service besteht aus drei URL-Mustern:
- Verzeichnisse - / v1 / kataloge / {Verzeichnis} / {Aktion}
- Dokumente - / v1 / documents / {Document} / {Action}
- Dienste - / v1 / services / {Aktion}
Um den Artikel nicht aufzublasen, betrachten Sie das Beispiel mit dem Nachschlagewerk "Nomenklatur". 1C erlaubt uns nicht, unterschiedliche Pfade für HTTP-Methoden zu haben. Daher lautet das URL-Muster (/ v1 / catalog / wares / {Action}, für das zwei HTTP-Methoden GET, POST definiert sind. In anderen Mustern verwenden wir auch GET, POST.
- / v1 - ermöglicht es uns, in Zukunft mehrere API-Optionen zu unterstützen. Wir können die URL-Vorlage v_V2_Directories und dementsprechend den Pfad hinzufügen, der mit / v2 beginnen soll
- / kataloge / wares / - kataloge integriert alle verzeichnisse. Dies ist der statische Teil des Weges. Waren entsprechen dem Nomenklaturverzeichnis. 1C fügt "Waren" in die URL- Parameter ein . Es sollte beachtet werden, dass wir selbst Wege finden. Und dann überlegen wir uns auch, wie wir sie in 1C selbst verarbeiten können
- {Action} - hier übergeben wir, was wir von 1C erhalten möchten. Zum Beispiel getByParam oder getAll
Unter dem Gesichtspunkt der Nachrüstung sieht baseUrl ungefähr so aus:
"http://192.168.0.1/unf/hs/inntsd/v1/"
wobei:
- 192.168.0.1 - Server, auf dem der HTTP-Dienst veröffentlicht wird
- / unf - 1C Datenbankname
- / hs - statischer Teil für HTTP-Dienste
- / inntsd ist die Stamm-URL für den gesamten Dienst. Rufen Sie an, wie wir wollen
Betrachten Sie das Verfahren zum Empfangen einer Anfrage.
Get()
In diesem Beispiel gibt es viele schlechte Tipps. Beispielsweise muss
Verzeichnisname, Aktion in eine Aufzählung oder ein neues Verzeichnis mit Übereinstimmungen konvertiert werden. Aber wie elegant es ist, in der Beilage umzusetzen, habe ich noch nicht entschieden.
Lassen Sie uns
die getByParam- Anfrage
analysieren . Vollständige Adresse: / v1 / kataloge / wares / getByParam? Prop = byCode & compare = ähnlich & searchString = 239
Finden Sie heraus, mit welchem Verzeichnis wir arbeiten.
() . = "" = (); . = "" = () = (100, " " + .); ; ;
Holen Sie sich die Anforderungsmethode. Und wir überprüfen, ob alle Parameter an die Methode angehängt sind. Hier sollte ein tiefer Check beachtet werden, den ich nicht mache. Da schreibe ich sowohl für 1C als auch für Android.
() . = "" = ..("prop"); = ..("comparison"); = ..("searchString"); ( = ) ( = ) ( = ) = (103, " / "); ; ; = (, , ); = (0, ""); .("payload", ); . = "" = (); = (0, ""); .("payload", ); = ("102", " " + .); ; ;
Wenn alles in Ordnung ist. Wir bereiten die Daten für die Antwort vor.
(, , ) = ; = " | . , | . , | . , | . , | .. | | . | | . | {}"; = ""; () = ("byCode") = "."; () = ("byArticle") = "."; () = ("byName") = "."; ; () = ("equally") = + " = &"; () = ("similarly") = + " &"; ; = (, "{}", ); . = ; () = ("similarly") = "%" + + "%"; ; .("", ); = .().(); = .(); = ; .( ("code,article, name, fullName, unit", ., ., ., ., .)); ; = ; .("quantity", ); .("wares", ); ;
Und schließlich vereinen wir alles miteinander. Wir setzen dies in JSON und senden die Antwort.
= (0, ""); .("payload", ); ; (, ) = (); HTTP = HTTP(); HTTP.["Content-Type"] = "application/json; charset=utf-8";
Und wir geben alles an den Kunden.
= (200, ) ;
Egal was wir von 1C bekommen haben. Wir versuchen immer richtig zu antworten.
(, ) = ; = (); .("code", ); .("description", ); .("result", ); .("payload", ); ;
Das ist alles. Alle anderen Methoden werden auf ähnliche Weise implementiert. Stellen Sie Fragen. Ich werde gerne antworten.