Хочу поделиться своим опытом интеграции сервиса с 1С. Начиная с версии платформы 1С 8.3.6.1977 разработчики включили
средства работы с JSON. Ниже представлю пример функции которая получает данные из сервиса.
PHP код:
|
Функция ЗапросНаСервисАвтограф(Сервер,РесурсНаСервере,_Параметры) Соответствие = Новый Соответствие; Попытка Соединение = Новый HTTPСоединение(Сервер, , , , , Ложь); Исключение ЗаписьЖурналаРегистрации("Автограф",,,, "Не удалось соединиться с сервером автограф" + ИнформацияОбОшибке().Описание); Возврат ""; КонецПопытки; ИмяФайлаРезультата = ПолучитьИмяВременногоФайла(); РесурсПараметры = РесурсНаСервере+""+_Параметры; Попытка Соединение.Получить(РесурсПараметры, ИмяФайлаРезультата); Соединение = Неопределено; Исключение Сообщить("Не удалось получить данные с сервера", СтатусСообщения.Важное); Возврат ""; КонецПопытки; ЧтениеJSON = Новый ЧтениеJSON; ЧтениеJSON.ОткрытьФайл(ИмяФайлаРезультата); Данные = ПрочитатьJSON(ЧтениеJSON); ЧтениеJSON.Закрыть(); Возврат Данные; КонецФункции
|
Выполнив функцию:
PHP код:
|
ДанныеТС = ЗапросНаСервисАвтографДанныеТС("localhost:8300","GetOnlineInfoAll/","Demo");
|
Мы получим все данные об устройствах в виде массива, которые можно обрабатывать как душе угодно: вывести в отчет, записать в регистр и т.д.
Спасибо разработчикам,что в последнем обновлении добавили в методы GetOnlineInfoAll и GetOnlineInfo вывод финальных параметров, это делает продукт еще более гибким. Теперь через дизайнер устройств я могу создать нужные показатели и получить их через сервис.
Например, я хочу видеть время стоянки устройства, создаю параметр с именем Parking и типом TimeSpan.
После создания параметров, сервис возвращает мне время стоянки в формате TimeSpan, к сожалению в 1С нет типовых механизмов конвертации времени из этого формата в формат 1С. Для себя накидал короткую функцию.
PHP код:
|
Функция ПарсингTimeSpan(Дата) Дата = СокрЛП(СтрЗаменить(Дата,"PT","")); Час = 0; Минута = 0; Секунда = 0; // Проверяем есть ли время Часы = Найти(Дата,"H"); Если Часы > 0 Тогда Час = Лев(Дата,Часы-1); Дата = СокрЛП(СтрЗаменить(Дата,""+Час+"H","")); КонецЕсли; Минуты = Найти(Дата,"M"); Если Минуты > 0 Тогда Минута = Лев(Дата,Минуты-1); Дата = СокрЛП(СтрЗаменить(Дата,""+Минута+"M","")); КонецЕсли; Секунды = Найти(Дата,"S"); Если Секунды > 0 Тогда Секунда = Лев(Дата,Секунды-1); КонецЕсли; Возврат Дата(1,1,1,Час,Минута,Секунда); КонецФункции
|
Данные о времени стоянке конвертируются и пишутся в регистр, позже вся эта информация в виде оперативного отчета выводится логисту.
Ниже представлен скриншот автоматизированного рабочего места логиста в 1С, в который собирательно выводится информация о рейсах ТС, некоторых показателях и времени стоянки (синхронизация с автограф).
P.S. Отдельное спасибо Денису за поддержку и развитие продукта.
Добавлено через 10 минут
В процессу работы с сервисом, собрался маленький список пожеланий
1. Было бы здорово, если бы в метод GetRoute добавили вывод планового времени маршрута.
2. Не хватает методов геокодинга, по адресной базе не всегда проходят координаты и приходится использовать внешние сервисы для определения адреса местоположения.