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
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/12345Avantages 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 !
