Отримуємо прайси постачальника через API у форматі JSON
Останнім часом постачальники дають можливість отримувати прайси з товарами, цінами та залишками через API. Це зручно, не потрібно робити розсилки з залишками, кожен клієнт у зручний час може отримати ці дані у свою облікову систему. Моє завдання зробити це в 1С.
План роботи такий:
- Підключаємось до сайту постачальника і отримуємо дані
- Отриманий результат розбираємо і завантажуємо дані в базу
1. Як підключитись до сайту постачальника через API та отримати дані.
Механізм підключення у різних випадках може трохи відрізнятись, і нюанси різних підключень як правило описані в документації по роботі з API в кожному окремому випадку. Також дані які ми отримуємо у відповідь можуть бути у різних форматах. Частіше це XML і зараз все частіше використовують JSON. В нашому випадку отримання даних виглядає так::
Підключаємось і отримуємо дані.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
//Готуємо рядок з логіном та паролем ЛогинПароль = "login=хххх&password=ххх"; //Ініціалізуємо підключення WinHttp = Новый COMОбъект("WinHttp.WinHttpRequest.5.1"); //Вказуємо кодування даних WinHttp.Option(2,"Windows-1251"); //Відкриваємо з'єднання з API сервером WinHttp.Open("POST", "http://server.com/api/"); //Додаємо заголовки WinHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=Windows-1251"); //Відправляємо запит WinHttp.Send(ЛогинПароль); //Отримуємо дані СтрокаДанных = Строка(WinHttp.ResponseText()); |
Якщо дані отримані успішно, то можемо з ними працювати, в інакшому випадку строка з даними буде порожня а статус поверне помилку.
2. Як отриманий результат JSON розібрати і завантажити дані в базу 1С
Ми отримуємо дані у форматі JSON, платформа в нас 8.3.8, яка вже вміє працювати з цим форматом, тому отримання даних дуже просте.
1 2 3 4 5 6 7 8 |
//Створюємо об'єкт JSON тЧтение = Новый ЧтениеJSON; //Завантажуємо в нього наш рядок з даними тЧтение.УстановитьСтроку(СтрокаДанных); //Читаємо дані тДанные = ПрочитатьJSON(тЧтение, Истина); |
Далі отримані дані завантажуємо в 1С.
1 2 3 4 5 6 7 |
для Каждого ТекСтрока Из тДанные Цикл если ТекСтрока.Ключ = "properties" Тогда Для Каждого Хар ИЗ ТекСтрока.Значение Цикл //Створення потрібних даних в базі 1С. КонецЕсли; КонецЕсли; КонецЦикла; |
Все.