{}const=>[]async()letfn</>var
Développement1C

Intégration de 1C avec des services externes : REST, SOAP, JSON et API — un guide complet pour les débutants

Découvrez comment connecter n'importe quel service via l'API ! Nous analysons REST, SOAP, JSON sur des exemples réels avec du code — de la première requête à l'intégration complète. Après cet article, vous pourrez recevoir des taux de change, télécharger des commandes et synchroniser des données entre les systèmes.

К

Kodik

Auteur

8 min de lecture

Les processus d'entreprise modernes fonctionnent rarement de manière isolée. Le système de comptabilité 1C doit échanger des données avec des sites Web, des systèmes CRM, des services de livraison, des banques et des dizaines d'autres services. Pour ce faire, on utilise des API, des interfaces logicielles qui permettent aux systèmes de communiquer entre eux. Voyons comment cela fonctionne et comment commencer à créer des intégrations dans 1C.

Qu'est-ce qu'une API et pourquoi en avez-vous besoin ?

Une API (Application Programming Interface) est un ensemble de règles selon lesquelles un programme peut demander des données ou des fonctions à un autre. Imaginez que vous entrez dans un restaurant. Vous n'allez pas dans la cuisine pour cuisiner vous-même : vous dites au serveur ce que vous voulez commander, il passe la commande à la cuisine, puis vous apporte le plat fini. L'API fonctionne comme ce serveur : elle prend les demandes, les traite et renvoie le résultat.

Tâches typiques d'intégration 1C :

  • Chargement des commandes de la boutique en ligne

  • Envoi de documents à la banque

  • Obtention des taux de change

  • Synchronisation avec les systèmes CRM

  • Envoi des données aux services de livraison

  • Obtenir des informations sur les contreparties à partir de bases de données externes

🔥 100 000+ étudiants déjà avec nous

Marre de lire la théorie ?
Il est temps de coder !

Kodik — une appli où tu apprends à coder par la pratique. Mentor IA, leçons interactives, projets réels.

🤖 IA 24/7
🎓 Certificats
💰 Gratuit
🚀 Commencer
Ont rejoint aujourd'hui

REST et SOAP : deux approches pour créer une API

SOAP — l'approche classique

SOAP (Simple Object Access Protocol) est un protocole d'échange de données qui est apparu à la fin des années 90. Il utilise XML pour transmettre des messages et a une structure stricte.

Exemple de requête SOAP :

<?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>

Les services SOAP sont décrits à l'aide de WSDL (Web Services Description Language), un fichier spécial qui contient toutes les informations sur les méthodes, paramètres et types de données disponibles. C'est comme un guide détaillé sur l'utilisation de l'API.

Avantages de SOAP :

  • Typage strict et validation des données

  • Prise en charge intégrée de la sécurité

  • Prise en charge des opérations et transactions complexes

  • Traitement standardisé des erreurs

Inconvénients de SOAP :

  • Un XML volumineux augmente la taille des données transmises

  • Plus difficile à maîtriser et à configurer

  • Fonctionnement plus lent en raison du traitement XML

REST est une norme moderne

REST (Representational State Transfer) est un style architectural qui utilise des méthodes HTTP standard. REST est plus simple, plus léger et fonctionne plus rapidement que SOAP.

Méthodes HTTP de base dans REST :

  • GET - obtenir des données

  • POST - créer un nouvel enregistrement

  • PUT - mettre à jour l'enregistrement existant

  • DELETE - supprimer l'entrée

Exemple de requête REST (obtenir des informations sur le client) :

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

Avantages de REST :

  • Facilité d'utilisation

  • Travail rapide

  • Données compactes (généralement JSON)

  • Facile à tester via un navigateur ou Postman

Inconvénients de REST :

  • Moins de standardisation (chaque API peut être organisée à sa manière)

  • Pas de prise en charge intégrée des opérations complexes

JSON est un langage d'échange de données

JSON (JavaScript Object Notation) est un format de texte pour le transfert de données structurées. Il est devenu la norme pour les API REST en raison de sa simplicité et de sa lisibilité.

Exemple de données JSON :

{
  "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 est facile à lire par l'homme et est simplement traité par logiciel. 1C dispose d'outils intégrés pour travailler avec JSON.

Gestion des requêtes HTTP dans 1C

Pour envoyer et recevoir des données via l'API dans 1C, l'objet HTTPСоединение et HTTPЗапрос est utilisé.

Requête GET simple

// Création d'une connexion avec le serveur
Соединение = Новый HTTPСоединение(
    "api.example.com",  // adresse du serveur
    443,                // port (443 pour HTTPS)
    ,                   // identifiant
    ,                   // mot de passe
    ,                   // serveur proxy
    30,                 // délai d'attente en secondes
    Новый ЗащищенноеСоединениеOpenSSL() // pour HTTPS
);

// Création d'une demande
Запрос = Новый HTTPЗапрос("/clients/12345");

// Nous envoyons une demande et recevons une réponse
Ответ = Соединение.Получить(Запрос);

// Vérification du code de réponse
Если Ответ.КодСостояния = 200 Тогда
    ТелоОтвета = Ответ.ПолучитьТелоКакСтроку();
    Сообщить(ТелоОтвета);
Иначе
    Сообщить("Error: " + Ответ.КодСостояния);
КонецЕсли;

Requête POST avec des données JSON

// Nous préparons les données
ДанныеJSON = Новый Структура;
ДанныеJSON.Вставить("name", "Vasilyok LLC");
ДанныеJSON.Вставить("inn", "7702345678");

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

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

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

// Traitement de la réponse
Если Ответ.КодСостояния = 201 Тогда
    Сообщить("Customer successfully created");
КонецЕсли;

Analyse JSON dans 1C

Pour lire JSON, on utilise ЧтениеJSON :

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

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

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

// Maintenant, nous pouvons accéder aux données
Имя = Данные["name"];
ИНН = Данные["inn"];
Телефон = Данные["contacts"]["phone"];

Si la structure JSON est connue à l'avance, vous pouvez utiliser la désérialisation dans la structure :

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

Данные = ПрочитатьJSON(ЧтениеJSON, Истина); // Vérité = lire dans la structure
ЧтениеJSON.Закрыть();

Authentification dans l'API

La plupart des API nécessitent une authentification. Méthodes principales :

Basic Authentication

Le login et le mot de passe sont transmis dans l'en-tête :

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

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

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

API Key

Une clé spéciale est transmise dans l'en-tête ou le paramètre :

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

Bearer Token (OAuth)

Le jeton d'accès est obtenu par une demande séparée :

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

Traitement des erreurs

Il faut toujours prévoir le traitement des erreurs :

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

Travailler avec SOAP dans 1C

Pour travailler avec les services SOAP, 1C peut créer automatiquement un objet basé sur WSDL :

// Définir le service SOAP par WSDL
Попытка
    WSОпределения = Новый WSОпределения(
        "http://example.com/service?wsdl",
        "Login",
        "Password"
    );
    
    // Créons un proxy pour travailler avec le service
    WSПрокси = Новый WSПрокси(WSОпределения, 
        "ServiceNamespace",
        "ServiceName");
    
    // Appel de la méthode de service
    Результат = WSПрокси.GetClientInfo("12345");
    
Исключение
    Сообщить("Error while working with SOAP: " + ОписаниеОшибки());
КонецПопытки;

Conseils pratiques

Utilisez des constantes pour les adresses et les clés. Ne stockez pas les URL et les clés API directement dans le code, placez-les dans des constantes ou des paramètres. Cela simplifiera la modification des paramètres de connexion.

Enregistrez toutes les opérations. Enregistrez tous les appels aux API externes dans le journal d'enregistrement : requêtes, réponses, erreurs. Cela aidera au débogage.

Traitez les délais d'attente. Les services externes peuvent être indisponibles ou répondre lentement. Fixez des délais raisonnables et gérez correctement les situations où le service ne répond pas.

Testez avec Postman. Avant d'écrire du code dans 1C, testez l'API via Postman ou un outil similaire. Cela vous aidera à comprendre la structure des questions et des réponses.

Tenez compte des limites de l'API. De nombreux services limitent le nombre de demandes par unité de temps. Prévoir des mécanismes pour limiter la fréquence des appels.

Utilisez le traitement asynchrone. Pour les opérations de masse, il est préférable d'utiliser des tâches en arrière-plan afin de ne pas bloquer le travail de l'utilisateur.

Exemple d'intégration réelle

Créons une intégration simple pour obtenir le taux de change du site de la Banque centrale de la Fédération de Russie :

Функция ПолучитьКурсВалюты(КодВалюты, Дата)
    
    СтрокаДаты = Формат(Дата, "DF=dd.MM.yyyy");
    
    Соединение = Новый HTTPСоединение("www.cbr.ru", 443, , , , 30,
        Новый ЗащищенноеСоединениеOpenSSL());
    
    Запрос = Новый HTTPЗапрос("/scripts/XML_daily.asp?date_req=" + СтрокаДаты);
    
    Попытка
        Ответ = Соединение.Получить(Запрос);
        
        Если Ответ.КодСостояния = 200 Тогда
            ТелоОтвета = Ответ.ПолучитьТелоКакСтроку();
            
            // Nous analysons XML
            Чтение = Новый ЧтениеXML;
            Чтение.УстановитьСтроку(ТелоОтвета);
            
            Пока Чтение.Прочитать() Цикл
                Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента
                    И Чтение.Имя = "Valute" Тогда
                    
                    ТекКод = "";
                    ТекКурс = 0;
                    
                    Пока Чтение.ПрочитатьАтрибут() Цикл
                        Если Чтение.Имя = "ID" И Чтение.Значение = КодВалюты Тогда
                            // Vous avez trouvé la devise dont vous avez besoin, lisez le taux de change
                            Пока Чтение.Прочитать() Цикл
                                Если Чтение.Имя = "Value" Тогда
                                    Чтение.Прочитать();
                                    СтрокаКурса = СтрЗаменить(Чтение.Значение, ",", ".");
                                    Возврат Число(СтрокаКурса);
                                КонецЕсли;
                            КонецЦикла;
                        КонецЕсли;
                    КонецЦикла;
                КонецЕсли;
            КонецЦикла;
            
            Чтение.Закрыть();
        КонецЕсли;
        
    Исключение
        Сообщить("Error getting the rate: " + ОписаниеОшибки());
        Возврат 0;
    КонецПопытки;
    
    Возврат 0;
    
КонецФункции

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

Conclusion

Les intégrations avec des services externes sont une partie importante du développement moderne dans 1C. L'API REST avec JSON est devenue la norme en raison de sa simplicité et de son efficacité, bien que SOAP soit toujours utilisé dans les systèmes d'entreprise. Il est préférable de commencer par des requêtes GET simples, en passant progressivement à des scripts plus complexes avec POST, PUT, authentification et gestion des erreurs.

Après avoir maîtrisé les principes de base du travail avec HTTP, JSON et API, vous pourrez connecter 1C à presque tous les services modernes, des boutiques en ligne aux systèmes bancaires.

Continuez votre formation !

Vous pouvez étudier ce sujet et bien plus encore dans Codique — une plateforme pour apprendre la programmation avec des exemples pratiques et des tâches réelles.

Et nous avons aussi un super Chaîne Telegram avec une communauté amicale de développeurs où vous pouvez poser des questions, partager votre expérience et être au courant des nouveaux matériaux !

🎯Arrête de reporter

Tu as aimé l'article ?
Place à la pratique !

Avec Kodik, tu ne lis pas seulement — tu codes immédiatement. Théorie + pratique = vraies compétences.

Pratique instantanée
🧠L'IA explique le code
🏆Certificat

Sans inscription • Sans carte