Welche wesentlichen Anforderungen gelten für Geschäftsapplikationen? Zu den wichtigsten zählen folgende Aufgaben:
- Die Anpassungsfähigkeit der Logik der Anwendung an sich ändernde Geschäftsanforderungen.
- Die einfache Integration mit anderen Anwendungen.
Wie die erste Aufgabe in 1C gelöst wird, wurde kurz im Abschnitt "Anpassung und Support" beschrieben; wir werden in einem der nächsten Artikel auf dieses interessante Thema zurückkommen. Heute geht es jedoch um die zweite Aufgabe, die Integration. ; wir werden dieses interessante Thema in einem der zukünftigen Artikel erneut aufgreifen. Heute sprechen wir jedoch über die zweite Aufgabe, die Integration.
Integrationsaufgaben
Integrationsaufgaben können unterschiedlich sein. Für einige reicht ein einfacher interaktiver Datenaustausch aus – beispielsweise um einer Bank eine Liste von Mitarbeitern zur Ausstellung von Gehaltskarten zu übermitteln. Für komplexere Anforderungen kann ein vollautomatisierter Datenaustausch notwendig sein, möglicherweise unter Einbeziehung der Geschäftslogik eines externen Systems. Es gibt auch spezialisierte Aufgaben, wie etwa die Integration mit externen Geräten (zum Beispiel Verkaufsstationen, mobilen Scannern usw.) oder mit ererbten oder spezialisierten Systemen (zum Beispiel mit RFID-Tag-Erkennungssystemen). Es ist von entscheidender Bedeutung, für jede Aufgabe den passendsten Integrationsmechanismus auszuwählen.
Integrationsmöglichkeiten mit 1C
Es gibt verschiedene Ansätze zur Implementierung der Integration mit 1C-Anwendungen, welcher davon gewählt wird, hängt von den Anforderungen der Aufgabe ab.
- Implementierung basierend auf , bereitgestellt von der Plattform, einer eigenen spezialisierten API auf der Seite der 1C-Anwendung (zum Beispiel einem Satz von Web- oder HTTP-Diensten, die externe Anwendungen anrufen, um Daten mit der 1C-Anwendung auszutauschen). Der Vorteil dieses Ansatzes liegt in der Robustheit der API gegenüber Änderungen in der Implementierung auf der Seite der 1C-Anwendung. Eine Besonderheit des Ansatzes ist, dass der Quellcode der typischen 1C-Lösung geändert werden muss, was potenziell Aufwand beim Zusammenführen von Quellcodes bei der Migration auf eine neue Konfigurationsversion erfordern könnte. In diesem Fall kann die neue, fortschrittliche Funktionalität hilfreich sein — . Erweiterungen sind im Wesentlichen ein Plugin-Mechanismus, der es ermöglicht, Ergänzungen zu Anwendungsanwendungen zu erstellen, ohne die Anwendungen selbst zu ändern. Die Auslagerung der Integrations-API in eine Konfigurationserweiterung wird helfen, Schwierigkeiten beim Zusammenführen von Konfigurationen zu vermeiden, wenn auf eine neue Version der typischen Lösung migriert wird.
- Der Einsatz von Integrationsmechanismen der Plattform, die externen Zugriff auf das Objektmodell der Anwendung ermöglichen, ohne dass Anpassungen der Anwendung oder die Erstellung von Erweiterungen erforderlich sind. Der Vorteil dieses Ansatzes liegt darin, dass die 1C-Anwendung nicht verändert werden muss. Der Nachteil ist, dass, wenn die 1C-Anwendung bereits angepasst wurde, möglicherweise Anpassungen in der zu integrierenden Anwendung notwendig sind. Ein Beispiel für diesen Ansatz ist die Verwendung des OData-Protokolls zur Integration, das auf der 1C:Enterprise-Plattform implementiert ist (näheres dazu weiter unten).
- Die Nutzung vorgefertigter Anwendungsschnittstellen, die in den Standardlösungen von 1C implementiert sind. Viele Standardlösungen von 1C und Partnern basieren auf den von der Plattform bereitgestellten Integrationsmechanismen und realisieren eigene Anwendungsschnittstellen, die auf spezifische Aufgaben ausgerichtet sind. Bei der Verwendung dieser Mechanismen ist keine Programmierung auf der Seite der 1C-Anwendung erforderlich, da wir die integrierten Funktionen der Anwendungslösung nutzen. Auf der Seite der 1C-Anwendung müssen lediglich bestimmte Einstellungen vorgenommen werden.
Integrationsmechanismen in der 1C:Enterprise-Plattform
Import/Export von Dateien
Stellen wir uns vor, wir müssen einen bidirektionalen Datenaustausch zwischen der 1C-Anwendung und einer beliebigen Anwendung realisieren. Zum Beispiel müssen wir die Produktliste (Stammdaten Nomenklatur) zwischen der 1C-Anwendung und einer beliebigen Anwendung synchronisieren.

Um eine solche Aufgabe zu lösen, kann man eine Erweiterung schreiben, die das Stammdatenverzeichnis Nomenklatur in eine Datei eines bestimmten Formats (Text, XML, JSON, …) exportiert und dieses Format lesen kann.
In der Plattform ist ein Mechanismus zur Serialisierung von Anwendungsobjekten in XML implementiert, sowohl direkt über die Methoden des globalen Kontexts ЗаписатьXML/ЧтениеXML als auch mithilfe des Hilfsobjekts XDTO (XML Data Transfer Objects).
Jedes Objekt im System 1C:Unternehmen kann in eine XML-Darstellung serialisiert werden und umgekehrt.
Diese Funktion gibt die Darstellung des Objekts im XML-Format zurück:
Funktion Objekt_Im_XML(Objekt)
ЗаписьXML = Neuer ЗаписьXML();
ЗаписьXML.УстановитьСтроку();
ЗаписатьXML(ЗаписьXML, Objekt);
Rückgabe ЗаписьXML.Закрыть();
EndeFunktion
So wird der Export des Stammdatenverzeichnisses Nomenklatur in XML mithilfe von XDTO aussehen:
&AufDemServer
Prozedur ExportXMLAufServer()
NeuerSerialisiererXDTO = SerialisiererXDTO;
NeueAufzeichnungXML = Neuer AufzeichnungXML();
NeueAufzeichnungXML.ÖffneDatei("C:DataNomenklatur.xml", "UTF-8");
NeueAufzeichnungXML.SchreibeErklärungXML();
NeueAufzeichnungXML.SchreibeElementbeginn("VerzeichnisNomenklatur");
Auswahl = Verzeichnisse.Nomenklatur.Auswählen();
Während Auswahl.Nächster() Schleife
ObjektNomenklatur = Auswahl.HoleObjekt();
NeuerSerialisiererXDTO.SchreibeXML(NeueAufzeichnungXML, ObjektNomenklatur, ZielTypXML.Eindeutig);
EndeSchleife;
NeueAufzeichnungXML.SchreibeElementende();
NeueAufzeichnungXML.Schließe();
EndeProzedur
Durch eine einfache Anpassung des Codes exportieren wir das Verzeichnis im JSON-Format. Die Produkte werden in einem Array gespeichert; zur Abwechslung geben wir die englische Syntaxvariante an:
&AtServer
Procedure ExportJSONOnServer()
NewXDTOSerializer = XDTOSerializer;
NewJSONWriter = New JSONWriter();
NewJSONWriter.OpenFile("C:DataNomenklatur.json", "UTF-8");
NewJSONWriter.WriteStartObject();
NewJSONWriter.WritePropertyName("Nomenklaturverzeichnis");
NewJSONWriter.WriteStartArray();
Selection = Catalogs.Nomenklatur.Select();
While Selection.Next() Do
NomenclatureObject = Selection.GetObject();
NewJSONWriter.WriteStartObject();
NewJSONWriter.WritePropertyName("Nomenklatur");
NewXDTOSerializer.WriteJSON(NewJSONWriter, NomenclatureObject, XMLTypeAssignment.Implicit);
NewJSONWriter.WriteEndObject();
EndDo;
NewJSONWriter.WriteEndArray();
NewJSONWriter.WriteEndObject();
NewJSONWriter.Close();
EndProcedure
Anschließend müssen die Daten nur noch an den Endverbraucher übergeben werden. Die Plattform 1C:Enterprise unterstützt die gängigen Internetprotokolle HTTP, FTP, POP3, SMTP, IMAP, einschließlich ihrer sicheren Versionen. Zudem können zur Übertragung von Daten HTTP und/oder Webdienste verwendet werden.
HTTP- und Webdienste

1C-Anwendungen können ihre eigenen HTTP- und Webdienste implementieren und auch HTTP- sowie Webdienste aufrufen, die von Drittanwendungen bereitgestellt werden.
REST-Interfaces und das OData-Protokoll
Seit Version 8.3.5 kann die Plattform 1C:Enterprise automatisch für die gesamte Anwendungslösung. Jedes Konfigurationselement (Verzeichnis, Dokument, Informationsregister usw.) kann über die REST-Schnittstelle für den Zugriff auf und die Modifikation von Daten verfügbar gemacht werden. Die Plattform verwendet das Protokoll Version 3.0. Die Veröffentlichung von OData-Diensten erfolgt über das Menü Konfigurator "Verwaltung -> Veröffentlichung auf dem Webserver"; das Kontrollkästchen "Standard OData-Schnittstelle veröffentlichen" muss aktiviert sein. Die Formate Atom/XML und JSON werden unterstützt. Nachdem die Anwendungslösung auf dem Webserver veröffentlicht wurde, können externe Systeme über die REST-Schnittstelle mittels HTTP-Anfragen darauf zugreifen. Für die Arbeit mit der 1C-Anwendung über das OData-Protokoll ist keine Programmierung auf der 1C-Seite erforderlich.
So wird eine URL im Format http:////odata/standard.odata/Catalog_Номенклатура uns den Inhalt des Katalogs Nomenklatur im XML-Format zurückgeben — eine Sammlung von Einträgen (die Nachrichtensyntax wurde der Einfachheit halber weggelassen):
http://server/Config/odata/standard.odata/Catalog_Номенклатура(guid'35d1f6e4-289b-11e6-8ba4-e03f49b16074')
2016-06-06T16:42:17
35d1f6e4-289b-11e6-8ba4-e03f49b16074
AAAAAgAAAAA=
false
000000001
Mitsubishi Klimaanlage
Leistung 2,5 kW, Betriebsmodi: Heizung/Kühlung
http://server/Config/odata/standard.odata/Catalog_Номенклатура(guid'35d1f6e5-289b-11e6-8ba4-e03f49b16074')
...
Durch Hinzufügen der Zeichenkette «?$format=application/json» an die URL erhalten wir den Inhalt des Katalogs Номенклатура im JSON-Format (URL lautet http:////odata/standard.odata/Catalog_Номенклатура?$format=application/json ):
{
"odata.metadata": "http://server/Config/odata/standard.odata/$metadata#Catalog_Nomenklatur",
"value": [{
"Ref_Key": "35d1f6e4-289b-11e6-8ba4-e03f49b16074",
"DataVersion": "AAAAAgAAAAA=",
"DeletionMark": false,
"Code": "000000001",
"Description": "Mitsubishi Klimaanlage",
"Описание": "Leistung 2,5 kW, Betriebsarten: Heizung/Kühlung"
},{
"Ref_Key": "35d1f6e5-289b-11e6-8ba4-e03f49b16074",
"DataVersion": "AAAAAwAAAAA=",
"DeletionMark": false,
"Code": "000000002",
"Description": "Daikin Klimaanlage",
"Описание": "Leistung 3 kW, Betriebsarten: Heizung/Kühlung"
}, …
Externe Datenquellen

In einigen Fällen kann der Datenaustausch über die optimale Lösung sein. Externe Datenquellen sind ein Anwendungsobjekt in 1C, das die Interaktion mit jeder ODBC-kompatiblen Datenbank sowohl zum Lesen als auch zum Schreiben ermöglicht. Externe Datenquellen sind sowohl unter Windows als auch unter Linux verfügbar.
Der Datenaustauschmechanismus
ist sowohl für die Erstellung von geografisch verteilten Systemen basierend auf 1C:Unternehmen als auch für die Organisation des Datenaustauschs mit anderen Informationssystemen, die nicht auf 1C:Unternehmen basieren, vorgesehen.
Dieser Mechanismus wird aktiv in Implementierungen von 1C verwendet und deckt ein breites Spektrum an Aufgaben ab. Dazu gehört der Datenaustausch zwischen den 1C-Anwendungen, die in den Filialen des Unternehmens installiert sind, der Austausch zwischen der 1C-Anwendung und der Website des Online-Shops sowie der Datenaustausch zwischen der serverseitigen 1C-Anwendung und dem mobilen Client (der mit der mobilen Plattform 1C:Unternehmen erstellt wurde) und vieles mehr.
Ein zentrales Konzept im Datenübertragungsmechanismus ist der Austauschplan. Der Austauschplan ist eine spezielle Art von Objekt in der 1C-Plattform, das unter anderem den Inhalt der Daten definiert, die am Austausch teilnehmen werden (welche spezifischen Verzeichnisse, Dokumente, Register usw.). Der Austauschplan enthält auch Informationen über die Beteiligten des Austauschs (sogenannte Austausch-Knoten).
Der zweite Bestandteil des Datenübertragungsmechanismus ist der Änderungsregistrierungsmechanismus. Dieser Mechanismus verfolgt automatisch die im System vorgenommene Datenänderungen, die im Rahmen des Austauschplans an die Endverbraucher übermittelt werden müssen. Mit diesem Mechanismus verfolgt die Plattform die Änderungen, die seit der letzten Synchronisierung aufgetreten sind, und ermöglicht es, das Datenvolumen, das im Rahmen der nächsten Synchronisierungssitzung übertragen wird, zu minimieren.
Der Datenaustausch erfolgt über XML-Nachrichten mit einer bestimmten Struktur. Die Nachricht enthält Daten, die sich seit der letzten Synchronisierung mit dem Knoten geändert haben, sowie einige Kontrollinformationen. Die Struktur der Nachrichten unterstützt die Nummerierung der Nachrichten und ermöglicht es, Empfangsbestätigungen vom Empfängerknoten zu erhalten. Solch eine Bestätigung ist in jeder Nachricht enthalten, die vom Empfängerknoten kommt, in Form der Nummer der zuletzt empfangenen Nachricht. Die Nummerierung der Nachrichten ermöglicht es der Plattform zu erkennen, welche Daten bereits erfolgreich an den Empfängerknoten übermittelt wurden, und vermeidet eine mehrfache Übertragung, indem nur die seit dem Empfang der letzten Nachricht mit der Quittierung von den empfangenden Knoten geänderten Daten übermittelt werden. Bei diesem Arbeitsmodell wird eine garantierte Zustellung auch bei unzuverlässigen Übertragungswegen und beim Verlust von Nachrichten gewährleistet.
Externe Komponenten
In vielen Fällen, bei der Lösung von Integrationsaufgaben, muss man sich mit spezifischen Anforderungen auseinandersetzen, wie beispielsweise Interaktionsprotokollen und Datenformaten, die in der Plattform 1C:Unternehmen nicht vorgesehen sind. Für solche Aufgaben bietet die Plattform , die es ermöglicht, dynamisch ladbare Module zu erstellen, die die Funktionalität von 1C:Unternehmen erweitern.
Ein typisches Beispiel für eine Aufgabenstellung mit solchen Anforderungen könnte die Integration einer 1C-Anwendung mit Handelsgeräten sein, beginnend bei Waagen und endend bei Kassensystemen und Barcode-Scannern. Externe Komponenten können sowohl auf der Seite des 1C:Unternehmen-Servers als auch auf der Client-Seite (einschließlich, unter anderem, des Web-Clients sowie 1C:Unternehmen) angeschlossen werden. Die Technologie für externe Komponenten sieht eine relativ einfache und verständliche Programmier-Schnittstelle (C++) für die Interaktion der Komponente mit der 1C:Unternehmen-Plattform vor, die vom Entwickler implementiert werden muss.
Die Möglichkeiten, die sich durch die Verwendung externer Komponenten eröffnen, sind äußerst vielfältig. Es ist möglich, die Kommunikation über spezifische Datenprotokolle mit externen Geräten und Systemen zu implementieren sowie spezielle Datenverarbeitungsalgorithmen und Datenformate einzubinden usw.
Veraltete Integrationsmechanismen
In der Plattform stehen Integrationsmechanismen zur Verfügung, die nicht für neue Lösungen empfohlen werden; sie wurden aus Gründen der Abwärtskompatibilität beibehalten und im Falle, dass die Gegenstelle nicht mit moderneren Protokollen arbeiten kann. Ein Beispiel dafür ist die Arbeit mit Dateien im DBF-Format (unterstützt in der integrierten Sprache über das Objekt XBase).
Ein weiterer veralteter Integrationsmechanismus ist die Nutzung der COM-Technologie (verfügbar nur auf der Windows-Plattform). Die Plattform 1C:Enterprise bietet zwei Integrationsmethoden für Windows an, die die COM-Technologie verwenden: den Automationsserver und die externe Verbindung. Diese sind sehr ähnlich, jedoch besteht ein wesentliches Unterscheidungsmerkmal darin, dass beim Automationsserver eine vollwertige Clientanwendung 1C:Enterprise 8 gestartet wird, während bei der externen Verbindung ein relativ kleiner, intraprocessualer COM-Server gestartet wird. Das heißt, bei der Arbeit über den Automationsserver kann die Funktionalität der Clientanwendung genutzt werden, um Aktionen auszuführen, die interaktiven Benutzeraktionen ähnlich sind. Bei der Verwendung der externen Verbindung können nur die Funktionen der Geschäftslogik genutzt werden, und diese können sowohl auf der Clientseite der Verbindung, wo der intraprocessuale COM-Server erstellt wird, als auch auf der Serverseite von 1C:Enterprise aufgerufen werden.
Die COM-Technologie kann auch verwendet werden, um aus dem Code einer Anwendung auf der Plattform 1C:Enterprise auf externe Systeme zuzugreifen. In diesem Fall fungiert die 1C-Anwendung als COM-Client. Es sei jedoch daran erinnert, dass diese Mechanismen nur funktionieren, wenn der 1C-Server in einer Windows-Umgebung arbeitet.
Integrationsmechanismen, die in typischen Konfigurationen implementiert sind
Format EnterpriseData

In einigen 1C-Konfigurationen (siehe Liste unten) wurde auf der Grundlage des oben beschriebenen plattformübergreifenden Mechanismus ein bereitgestellter Mechanismus für den Datenaustausch mit externen Anwendungen implementiert, der keine Änderungen am Source-Code der Konfigurationen erfordert (die Vorbereitung für den Datenaustausch erfolgt in den Einstellungen der Anwendungsprodukte):
- „1C:ERP Unternehmensmanagement 2.0“
- „Komplexe Automatisierung 2“
- „Buchhaltung für Unternehmen“, Ausgabe 3.0
- „Buchhaltung für Unternehmen KORP“, Ausgabe 3.0
- „Einzelhandel“, Ausgabe 2.0
- „Grundlegendes Handelsmanagement“, Ausgabe 11
- „Handelsmanagement“, Ausgabe 11
- „Löhne und Personalmanagement KORP“, Ausgabe 3
Für den Datenaustausch wird das Format , basierend auf XML. Das Format ist geschäftsorientiert – die darin beschriebenen Datenstrukturen entsprechen geschäftlichen Entitäten (Dokumenten und Verzeichniselementen), die in den Programmen 1C dargestellt sind, wie z. B.: Leistungsnachweis, Eingangsrechnung, Geschäftspartner, Warennomenklatur usw.
Der Datenaustausch zwischen der 1C-Anwendung und einer Drittanwendung kann erfolgen:
- über ein dediziertes Verzeichnis
- über ein FTP-Verzeichnis
- über einen Webdienst, der auf der Seite der 1C-Anwendung bereitgestellt wird. Die Datei mit den Daten wird als Parameter der Web-Methoden übergeben
- über E-Mail
Im Falle des Austauschs über den Webdienst wird die Drittanwendung die Datenaustausch-Sitzung initiieren, indem sie die entsprechenden Web-Methoden der 1C-Anwendung aufruft. In den anderen Fällen ist die 1C-Anwendung der Initiator der Austausch-Sitzung (indem sie die Datei mit den Daten in das entsprechende Verzeichnis legt oder die Datei mit den Daten an die konfigurierte E-Mail-Adresse sendet).
Außerdem wird auf der 1C-Seite konfiguriert, in welcher Häufigkeit die Synchronisation erfolgen soll (für die Varianten mit Dateiaustausch über Verzeichnis und E-Mail):
- nach Zeitplan (mit festgelegter Häufigkeit)
- manuell; der Benutzer muss die Synchronisierung jedes Mal manuell starten, wenn er es benötigt
Nachrichtenzähler
1C-Anwendungen protokollieren gesendete und empfangene Synchronisierungsnachrichten und erwarten dasselbe von Drittanbieteranwendungen. Dies ermöglicht die Nutzung des oben im Abschnitt „Datenaustauschmechanismus“ beschriebenen Nachrichtennummerierungsmechanismus.
1C-Anwendungen übermitteln während der Synchronisierung nur die Informationen zu den Änderungen, die an den Geschäftseinheiten seit der letzten Synchronisierung vorgenommen wurden, um das Übertragungsvolumen zu minimieren. Bei der ersten Synchronisierung exportiert die 1C-Anwendung alle Geschäftseinheiten (z. B. Elemente des Verzeichnisses der Warenstruktur) im EnterpriseData-Format in eine XML-Datei, da diese für die externe Anwendung als „neu“ gelten. Die Drittanbieteranwendung muss die Informationen aus der von 1C erhaltenen XML-Datei verarbeiten und beim nächsten Synchronisierungssitzung in einer speziellen Sektion der zu sendenden XML-Datei an 1C eintragen, dass die Nachricht von 1C mit einer bestimmten Nummer erfolgreich empfangen wurde. Die Empfangsbestätigung fungiert für die 1C-Anwendung als Signal, dass alle Geschäftseinheiten erfolgreich von der externen Anwendung verarbeitet wurden und keine weiteren Informationen übermittelt werden müssen. Neben der Empfangsbestätigung kann die XML-Datei der Drittanbieteranwendung auch Daten zur Synchronisierung von Seiten der Anwendung enthalten (z. B. Dokumente zur Realisierung von Waren und Dienstleistungen).
Nach dem Erhalt der Quittungsnachricht kennzeichnet die Anwendung 1C alle Änderungen, die im vorherigen Nachricht übermittelt wurden, als erfolgreich synchronisiert. Nur nicht synchronisierte Änderungen in den Geschäftseinheiten (Erstellung neuer Einheiten, Änderung und Löschung bestehender) werden bei der nächsten Synchronisationssitzung an die externe Anwendung gesendet.

Beim Datenübertrag von einer externen Anwendung an die Anwendung 1C ändert sich das Bild in die entgegengesetzte Richtung. Die externe Anwendung muss den Quittungsabschnitt in der XML-Datei entsprechend ausfüllen und die Geschäftsdaten für die Synchronisation in ihrem Format EnterpriseData bereitstellen.

Vereinfachter Datenaustausch ohne Quittierung
Für Fälle einer einfachen Integration, bei denen es ausreichend ist, Informationen von einer externen Anwendung an die Anwendung 1C zu übertragen und eine Rückübertragung von Daten aus der Anwendung 1C an die externe Anwendung nicht erforderlich ist (z. B. Integration eines Online-Shops, der Verkaufsinformationen an '1C: Buchhaltung' übermittelt), gibt es eine vereinfachte Arbeitsweise über einen Webservice (ohne Quittierung), die keine Einstellungen auf der Seite der Anwendung 1C erfordert.
Spezialisierte Integrationslösungen
Es gibt eine Standardlösung '1C:Datakonvertierung', die die Mechanismen der Plattform nutzt, um Daten zwischen Standardkonfigurationen von 1C zu konvertieren und auszutauschen, aber auch für die Integration mit Drittanwendungen verwendet werden kann.
Integration mit Banklösungen
Standard , entwickelt von 1C-Experten vor über 10 Jahren, ist faktisch zum Branchenstandard in Russland geworden. Der nächste Schritt in diese Richtung ist die Technologie , die es ermöglicht, Zahlungsdokumente direkt aus den Programmen des Systems '1C:Unternehmen' mit einem Klick zu senden und Bankauszüge zu erhalten, ohne dass zusätzliche Programme auf dem Client-Computer installiert oder gestartet werden müssen.
Es gibt auch .
Sonstiges
Erwähnenswert sind , der Standard für den Austausch kommerzieller Informationen (entwickelt in Zusammenarbeit mit Microsoft, Intel, Price.ru und anderen Unternehmen), .
Quelle: habr.com
