{}const=>[]async()letfn</>var
Entwicklung1C

1C-Integrationen mit externen Diensten: REST, SOAP, JSON und API – eine vollständige Anleitung für Anfänger

Erfahren Sie, wie Sie jeden Dienst über die API verbinden können! Wir analysieren REST, SOAP, JSON anhand von realen Beispielen mit Code – von der ersten Anfrage bis zur vollständigen Integration. Nach diesem Artikel können Sie Wechselkurse erhalten, Bestellungen hochladen und Daten zwischen Systemen synchronisieren.

К

Kodik

Autor

7 Min. Lesezeit

Moderne Geschäftsprozesse funktionieren selten isoliert. Das 1C-Buchhaltungssystem muss Daten mit Websites, CRM-Systemen, Lieferdiensten, Banken und Dutzenden anderer Dienste austauschen. Dazu werden APIs verwendet – Programmierschnittstellen, die es Systemen ermöglichen, miteinander zu kommunizieren. Lassen Sie uns herausfinden, wie das funktioniert und wie Sie mit der Erstellung von Integrationen in 1C beginnen können.

Was sind APIs und warum braucht man sie?

API (Application Programming Interface) ist eine Reihe von Regeln, nach denen ein Programm Daten oder Funktionen von einem anderen anfordern kann. Stellen Sie sich vor, Sie gehen in ein Restaurant. Sie gehen nicht selbst in die Küche, um zu kochen — Sie sagen dem Kellner, was Sie bestellen möchten, er gibt die Bestellung an die Küche weiter und bringt dann das fertige Gericht. Die API funktioniert wie dieser Kellner: Sie nimmt Anfragen entgegen, bearbeitet sie und gibt das Ergebnis zurück.

Typische Aufgaben der 1C-Integration:

  • Bestellungen aus dem Online-Shop laden

  • Senden von Dokumenten an die Bank

  • Abrufen von Wechselkursen

  • Synchronisation mit CRM-Systemen

  • Daten an Lieferdienste senden

  • Abrufen von Informationen über Gegenparteien aus externen Datenbanken

🔥 100.000+ Schüler sind bereits bei uns

Genug Theorie gelesen?
Zeit zu coden!

Kodik — eine App, in der du durch Praxis programmieren lernst. KI-Mentor, interaktive Lektionen, echte Projekte.

🤖 KI 24/7
🎓 Zertifikate
💰 Kostenlos
🚀 Jetzt starten
Heute beigetreten

REST und SOAP: zwei Ansätze zur Erstellung von APIs

SOAP — der klassische Ansatz

SOAP (Simple Object Access Protocol) ist ein Datenaustauschprotokoll, das Ende der 90er Jahre aufkam. Es verwendet XML für die Nachrichtenübertragung und hat eine strenge Struktur.

Beispiel einer SOAP-Anfrage:

<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <GetClientInfo xmlns="http://example.com/">
      <ClientID>12345</ClientID>
    </GetClientInfo>
  </soap:Body>
</soap:Envelope>

SOAP-Dienste werden mit WSDL (Web Services Description Language) beschrieben, einer speziellen Datei, die alle Informationen zu verfügbaren Methoden, Parametern und Datentypen enthält. Es ist wie eine Schritt-für-Schritt-Anleitung zur Verwendung der API.

Vorteile von SOAP:

  • Strenge Typisierung und Datenvalidierung

  • Integrierte Sicherheitsunterstützung

  • Unterstützung komplexer Operationen und Transaktionen

  • Standardisierte Fehlerbehandlung

Nachteile von SOAP:

  • Umfangreiches XML erhöht die Größe der übertragenen Daten

  • Schwieriger zu erlernen und einzurichten

  • Langsamer aufgrund der XML-Verarbeitung

REST ist ein moderner Standard

REST (Representational State Transfer) ist ein Architekturstil, der standardmäßige HTTP-Methoden verwendet. REST ist einfacher, leichter und schneller als SOAP.

Grundlegende HTTP-Methoden in REST:

  • GET — Daten erhalten

  • POST — neuen Eintrag erstellen

  • PUT — vorhandenen Eintrag aktualisieren

  • DELETE — Eintrag löschen

Beispiel einer REST-Anfrage (Abrufen von Kundeninformationen):

GET https://api.example.com/clients/12345

Vorteile von REST:

  • Benutzerfreundlichkeit

  • Schnelle Arbeit

  • Kompakte Daten (normalerweise JSON)

  • Einfach über Browser oder Postman zu testen

Nachteile von REST:

  • Weniger Standardisierung (jede API kann auf ihre eigene Weise eingerichtet werden)

  • Keine integrierte Unterstützung für komplexe Operationen

JSON — Datenaustauschsprache

JSON (JavaScript Object Notation) ist ein Textformat zum Übertragen strukturierter Daten. Aufgrund seiner Einfachheit und Lesbarkeit ist es zum Standard für REST-APIs geworden.

Beispiel für JSON-Daten:

{
  "clientId": "12345",
  "name": "Romashka LLC",
  "inn": "7701234567",
  "contacts": {
    "phone": "+7 495 123-45-67",
    "email": "info@romashka.ru"
  },
  "orders": [
    {
      "id": "ORD-001",
      "date": "2024-12-01",
      "amount": 45000
    }
  ]
}

JSON ist für Menschen leicht lesbar und kann einfach von Programmen verarbeitet werden. 1C verfügt über integrierte Tools für die Arbeit mit JSON.

Arbeiten mit HTTP-Anfragen in 1C

Zum Senden und Empfangen von Daten über die API in 1C wird das Objekt HTTPСоединение und HTTPЗапрос verwendet.

Einfache GET-Anfrage

// Verbindung zum Server wird hergestellt
Соединение = Новый HTTPСоединение(
    "api.example.com",  // Serveradresse
    443,                // Port (443 für HTTPS)
    ,                   // Login
    ,                   // Passwort
    ,                   // Proxy
    30,                 // Timeout in Sekunden
    Новый ЗащищенноеСоединениеOpenSSL() // für HTTPS
);

// Anfrage erstellen
Запрос = Новый HTTPЗапрос("/clients/12345");

// Wir senden eine Anfrage und erhalten eine Antwort
Ответ = Соединение.Получить(Запрос);

// Überprüfen Sie den Antwortcode
Если Ответ.КодСостояния = 200 Тогда
    ТелоОтвета = Ответ.ПолучитьТелоКакСтроку();
    Сообщить(ТелоОтвета);
Иначе
    Сообщить("Error: " + Ответ.КодСостояния);
КонецЕсли;

POST-Anfrage mit JSON-Daten

// Wir bereiten die Daten vor
ДанныеJSON = Новый Структура;
ДанныеJSON.Вставить("name", "Vasilyok LLC");
ДанныеJSON.Вставить("inn", "7702345678");

// Konvertieren in JSON
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, ДанныеJSON);
СтрокаJSON = ЗаписьJSON.Закрыть();

// Anfrage erstellen
Запрос = Новый HTTPЗапрос("/clients");
Запрос.Заголовки.Вставить("Content-Type", "application/json");
Запрос.УстановитьТелоИзСтроки(СтрокаJSON);

// Wird gesendet
Соединение = Новый HTTPСоединение("api.example.com", 443, , , , 30,
    Новый ЗащищенноеСоединениеOpenSSL());
Ответ = Соединение.ОтправитьДляОбработки(Запрос);

// Antwort wird bearbeitet
Если Ответ.КодСостояния = 201 Тогда
    Сообщить("Customer successfully created");
КонецЕсли;

JSON-Parsing in 1C

Zum Lesen von JSON wird ЧтениеJSON verwendet:

СтрокаJSON = Ответ.ПолучитьТелоКакСтроку();

ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(СтрокаJSON);

Данные = ПрочитатьJSON(ЧтениеJSON);
ЧтениеJSON.Закрыть();

// Jetzt können wir auf die Daten zugreifen
Имя = Данные["name"];
ИНН = Данные["inn"];
Телефон = Данные["contacts"]["phone"];

Wenn die JSON-Struktur im Voraus bekannt ist, können Sie die Deserialisierung in der Struktur verwenden:

ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(СтрокаJSON);

Данные = ПрочитатьJSON(ЧтениеJSON, Истина); // Wahrheit = in die Struktur lesen
ЧтениеJSON.Закрыть();

API-Authentifizierung

Die meisten APIs erfordern eine Authentifizierung. Die wichtigsten Methoden:

Basic Authentication

Login und Passwort werden im Header übertragen:

Запрос = Новый HTTPЗапрос("/api/data");

Логин = "user";
Пароль = "password";
СтрокаАвторизации = Base64Строка(Логин + ":" + Пароль);

Запрос.Заголовки.Вставить("Authorization", "Basic " + СтрокаАвторизации);

API Key

Ein spezieller Schlüssel wird in der Kopfzeile oder im Parameter übergeben:

Запрос = Новый HTTPЗапрос("/api/data");
Запрос.Заголовки.Вставить("X-API-Key", "your_secret_key");

Bearer Token (OAuth)

Der Zugriffstoken wird durch eine separate Anfrage erhalten:

Запрос = Новый HTTPЗапрос("/api/data");
Запрос.Заголовки.Вставить("Authorization", "Bearer " + Токен);

Fehlerbehandlung

Die Fehlerbehandlung muss immer berücksichtigt werden:

Попытка
    Ответ = Соединение.Получить(Запрос);
    
    Если Ответ.КодСостояния = 200 Тогда
        // Erfolgreiche Anfrage
        Данные = ПолучитьДанныеИзОтвета(Ответ);
    ИначеЕсли Ответ.КодСостояния = 404 Тогда
        ВызватьИсключение("Resource not found");
    ИначеЕсли Ответ.КодСостояния = 401 Тогда
        ВызватьИсключение("Authorization error");
    Иначе
        ВызватьИсключение("Server error: " + Ответ.КодСостояния);
    КонецЕсли;
    
Исключение
    Сообщить("Error while working with API: " + ОписаниеОшибки());
    ЗаписьЖурналаРегистрации("Integration.API", 
        УровеньЖурналаРегистрации.Ошибка,
        ,
        ,
        ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())
    );
КонецПопытки;

Arbeiten mit SOAP in 1C

Für die Arbeit mit SOAP-Diensten kann 1C automatisch ein Objekt auf Basis von WSDL erstellen:

// Wir definieren den SOAP-Dienst über WSDL
Попытка
    WSОпределения = Новый WSОпределения(
        "http://example.com/service?wsdl",
        "Login",
        "Password"
    );
    
    // Wir erstellen einen Proxy für die Arbeit mit dem Dienst
    WSПрокси = Новый WSПрокси(WSОпределения, 
        "ServiceNamespace",
        "ServiceName");
    
    // Wir rufen die Servicemethode auf
    Результат = WSПрокси.GetClientInfo("12345");
    
Исключение
    Сообщить("Error while working with SOAP: " + ОписаниеОшибки());
КонецПопытки;

Praktische Tipps

Verwenden Sie Konstanten für Adressen und Schlüssel. Speichern Sie URLs und API-Schlüssel nicht direkt im Code, sondern in Konstanten oder Einstellungen. Dies erleichtert das Ändern der Verbindungseinstellungen.

Protokollieren Sie alle Operationen. Protokollieren Sie alle Aufrufe externer APIs: Anfragen, Antworten, Fehler. Dies hilft beim Debuggen.

Timeouts verarbeiten. Externe Dienste sind möglicherweise nicht verfügbar oder reagieren langsam. Setzen Sie angemessene Zeitlimits und behandeln Sie Situationen, in denen der Dienst nicht reagiert, korrekt.

Testen Sie mit Postman. Testen Sie die API mit Postman oder einem ähnlichen Tool, bevor Sie Code in 1C schreiben. Dies hilft, die Struktur von Anfragen und Antworten zu verstehen.

Berücksichtigen Sie die API-Limits. Viele Dienste begrenzen die Anzahl der Anfragen pro Zeiteinheit. Stellen Sie Mechanismen zur Begrenzung der Häufigkeit von Anfragen bereit.

Verwenden Sie die asynchrone Verarbeitung. Für Massenoperationen ist es besser, Hintergrundaufgaben zu verwenden, um die Arbeit des Benutzers nicht zu blockieren.

Beispiel für echte Integration

Erstellen Sie eine einfache Integration, um den Wechselkurs von der Website der Zentralbank der Russischen Föderation abzurufen:

Функция ПолучитьКурсВалюты(КодВалюты, Дата)
    
    СтрокаДаты = Формат(Дата, "DF=dd.MM.yyyy");
    
    Соединение = Новый HTTPСоединение("www.cbr.ru", 443, , , , 30,
        Новый ЗащищенноеСоединениеOpenSSL());
    
    Запрос = Новый HTTPЗапрос("/scripts/XML_daily.asp?date_req=" + СтрокаДаты);
    
    Попытка
        Ответ = Соединение.Получить(Запрос);
        
        Если Ответ.КодСостояния = 200 Тогда
            ТелоОтвета = Ответ.ПолучитьТелоКакСтроку();
            
            // XML-Analyse
            Чтение = Новый ЧтениеXML;
            Чтение.УстановитьСтроку(ТелоОтвета);
            
            Пока Чтение.Прочитать() Цикл
                Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента
                    И Чтение.Имя = "Valute" Тогда
                    
                    ТекКод = "";
                    ТекКурс = 0;
                    
                    Пока Чтение.ПрочитатьАтрибут() Цикл
                        Если Чтение.Имя = "ID" И Чтение.Значение = КодВалюты Тогда
                            // Wir haben die richtige Währung gefunden, lesen Sie den Kurs
                            Пока Чтение.Прочитать() Цикл
                                Если Чтение.Имя = "Value" Тогда
                                    Чтение.Прочитать();
                                    СтрокаКурса = СтрЗаменить(Чтение.Значение, ",", ".");
                                    Возврат Число(СтрокаКурса);
                                КонецЕсли;
                            КонецЦикла;
                        КонецЕсли;
                    КонецЦикла;
                КонецЕсли;
            КонецЦикла;
            
            Чтение.Закрыть();
        КонецЕсли;
        
    Исключение
        Сообщить("Error getting the rate: " + ОписаниеОшибки());
        Возврат 0;
    КонецПопытки;
    
    Возврат 0;
    
КонецФункции

// Anwendung
Курс = ПолучитьКурсВалюты("R01235", ТекущаяДата()); // USD
Сообщить("Dollar exchange rate: " + Курс);

Befund

Integrationen mit externen Diensten sind ein wichtiger Bestandteil der modernen Entwicklung in 1C. REST-APIs mit JSON sind aufgrund ihrer Einfachheit und Effizienz zum Standard geworden, obwohl SOAP in Unternehmenssystemen immer noch verwendet wird. Es ist besser, mit einfachen GET-Anfragen zu beginnen und schrittweise zu komplexeren Szenarien mit POST, PUT, Authentifizierung und Fehlerbehandlung überzugehen.

Nachdem Sie die Grundlagen von HTTP, JSON und API erlernt haben, können Sie 1C mit fast jedem modernen Dienst verbinden – von Online-Shops bis hin zu Bankensystemen.

Weiter geht's!

Sie können dieses Thema und vieles mehr studieren in Kodike – einer Plattform zum Erlernen der Programmierung mit praktischen Beispielen und realen Aufgaben.

Und wir haben auch einen coolen Telegram-Kanal mit einer freundlichen Entwickler-Community, in der Sie Fragen stellen, Erfahrungen teilen und über neue Materialien auf dem Laufenden bleiben können!

🎯Hör auf zu zögern

Artikel gefallen?
Zeit zum Üben!

Bei Kodik liest du nicht nur — du schreibst sofort Code. Theorie + Praxis = echte Skills.

Sofortige Praxis
🧠KI erklärt Code
🏆Zertifikat

Keine Registrierung • Keine Karte