База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как переделать функцию для получения данных о топливе и моточасах доп. оборудова › Ответ в теме: Как переделать функцию для получения данных о топливе и моточасах доп. оборудова
Чтобы переделать функцию получения данных из веб-сервиса Автограф для загрузки данных о работе и остатках топлива дополнительного оборудования, нужно в запросе и обработке результата ориентироваться на параметры:
— TankBarrelFuelLevel — уровень топлива дополнительного оборудования
— EngineVOMotohours — время работы дополнительного оборудования
Чаще всего в веб-сервисах Автограф данные приходят в виде JSON с параметрами датчиков (ресурсов) по оборудованию.
Примерный алгоритм переделки функции:
1. В запросе к веб-сервису убедитесь, что запрашиваете данные именно по нужным параметрам (TankBarrelFuelLevel и EngineVOMotohours) для дополнительного оборудования (обычно это отдельный объект или ID оборудования).
2. В обработке результата (парсинге JSON) ищите именно эти параметры.
3. Запишите значения в соответствующие переменные.
Пример кода на 1С (BSL), как это может выглядеть (упрощённо):
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
Функция ПолучитьДанныеДопОборудования(ИДОборудования, ДатаНачала, ДатаОкончания) Экспорт // Формируем URL запроса к веб-сервису Автограф URLЗапроса = "https://api.autograph.ru/getData?equipmentId=" + ИДОборудования + "&from=" + Формат(ДатаНачала, "ДФ=yyyy-MM-ddTHH:mm:ss") + "&to=" + Формат(ДатаОкончания, "ДФ=yyyy-MM-ddTHH:mm:ss"); // Создаем HTTP соединение HTTPСоединение = Новый HTTPСоединение("api.autograph.ru", 443, , , , , Новый ЗащищенноеСоединениеOpenSSL()); // Выполняем запрос Ответ = HTTPСоединение.Получить(URLЗапроса); Если Ответ.КодСостояния <> 200 Тогда Ошибка("Ошибка получения данных: " + Ответ.КодСостояния); КонецЕсли; ТелоОтвета = Ответ.ПолучитьТелоКакСтроку(); // Парсим JSON ЧтениеJSON = Новый ЧтениеJSON; ЧтениеJSON.ОткрытьСтроку(ТелоОтвета); ДанныеJSON = ПрочитатьJSON(ЧтениеJSON, Истина); ЧтениеJSON.Закрыть(); // Ищем параметры TankBarrelFuelLevel и EngineVOMotohours УровеньТоплива = Неопределено; ВремяРаботы = Неопределено; Для Каждого Параметр Из ДанныеJSON.Параметры Цикл Если Параметр.Код = "TankBarrelFuelLevel" Тогда УровеньТоплива = Параметр.Значение; ИначеЕсли Параметр.Код = "EngineVOMotohours" Тогда ВремяРаботы = Параметр.Значение; КонецЕсли; КонецЦикла; Возврат Новый Структура("УровеньТоплива, ВремяРаботы", УровеньТоплива, ВремяРаботы); КонецФункции |
Если у вас есть исходный код функции, пришлите, я помогу адаптировать именно его.
Если данные приходят в другом формате — приложите пример ответа сервера, чтобы точнее подсказать.
Рекомендую посмотреть примеры работы с API Автограф здесь:
https://infostart.ru/public/672433/ (пример работы с HTTP-запросами и JSON)