Показать сообщение отдельно
Старый 14.07.2015, 22:10    | »»» |  #12
Zircool
Начинающий
 
Аватар для Zircool
 
Новороссийск, Краснодарский край, Южная Транспортная Компания
Регистрация: 16.04.2013
Сообщений: 46
Zircool is on a distinguished road
Отправить сообщение для Zircool с помощью ICQ Отправить сообщение для Zircool с помощью Skype™
По умолчанию

Хочу поделиться своим опытом интеграции сервиса с 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. Не хватает методов геокодинга, по адресной базе не всегда проходят координаты и приходится использовать внешние сервисы для определения адреса местоположения.
Zircool вне форума   Ответить с цитированием
Сказал «Я - ЗА»: