Никто еще не написал JSON обертку для 1С и Форт-Монитора? А то может я велосипед изобретаю? Диллеры просят 100 грн за объект в месяц или 5000 у.е. за конфу разово.
Никто еще не написал JSON обертку для 1С и Форт-Монитора? А то может я велосипед изобретаю? Диллеры просят 100 грн за объект в месяц или 5000 у.е. за конфу разово.
Хоть бы ссылки написал, что еще за форт-монитор ?
(1) это как обычный монитор, но только форт, ты вообще в школе учился?
я написал
шорт я уже беременный этой оберткой полгода и вообще не только ради форта
форт 3 мощен бесспорно, многия алгоритмы я оттуда расковырял
что за Дилеры? Микротроник, Лукаут?
думаю что тебе предлагают полумою конфу, которую они сча допиливают уже без меня :)
а 100 грн за объект без своего сервера сбора данных и определенного парка навигаторов тебе не избежать
это работа не для одного
сливы и заправки считать там у них очень некислая скользящая среднняя
да и время там мрак точные алгоритмы которые тяжело оттестить
3 форт кто тебе парит?
(7) дык не раскусил, а они её не сдали, она там у них непростая, а комбинированнная какая-то, по описалову из википедии ни одна не подошла
(9) Громоздкий код выходит. Особенно после нормального терминала. Где на встроенном скрипте этот же индикатор считается одной строчкой кода.
(4) Микротроник
Да не вопрос, JSON деревья запаривает разбирать. Я уже список объектов за вчера получил в ТЗ. Остальное - дело времени. Думал, мож уже кто разбор сделал. Будем пилить...
слу, если надо я тебе на почту написал
я с форта в прошлом году новый метод выбил
интересно они его уже задокументировали али не стали, сомневась что ты меня перепилишь :)
пили не пили, а без гвонокода там не обойтись
Функция objectinfo(НТТРДанные,тзНавигаторов) Экспорт
ПроведениеДокументов.СообщениеСистемы("-Начало получения данных НТТР запросом objectinfo "+ТекущаяДата()+"", СтатусСообщения.Информация);
HTTP=НТТРДанные.Соединение;
ЗаголовкиHTTP=НТТРДанные.Заголовки;
тзНТТР = Новый ТаблицаЗначений;
//тзНТТР.Колонки.Добавить("Навигатор"); //Ссылка справочник Навигаторы
//тзНТТР.Колонки.Добавить("ID"); //ИМЕЙ
тзНТТР.Колонки.Добавить("object_id"); //номер таблицы/объекта
//тзНТТР.Колонки.Добавить("period_begin");
//тзНТТР.Колонки.Добавить("period_end");
тзНТТР.Колонки.Добавить("КАН_ДРТ",Новый ОписаниеТипов("Число"));
тзНТТР.Колонки.Добавить("ДРТ",Новый ОписаниеТипов("Число"));
тзНТТР.Колонки.Добавить("ДУТ",Новый ОписаниеТипов("Число"));
Для Каждого ТекСтрока Из тзНавигаторов Цикл
Если НЕ ЗначениеЗаполнено(ТекСтрока.object_id) Тогда
Продолжить;
КонецЕсли;
HTTPЗапросФорт3= Новый HTTPЗапрос("/api/Api.svc/objectinfo?oid="+ТекСтрока.object_id+"");
HTTPЗапросФорт3.Заголовки.Вставить("Cookie", ЗаголовкиHTTP.Получить("Set-Cookie"));
HTTPОтвет=HTTP.Получить(HTTPЗапросФорт3,);
СтрокаОтвета = HTTPОтвет.ПолучитьТелоКакСтроку();
Результат_objectinfo=JSON.ПрочитатьJSON(СтрокаОтвета, Истина, Ложь);
Для Каждого Элемент Из Результат_objectinfo Цикл
//Сообщить(Элемент.Ключ + " " + Элемент.Значение);
Если Элемент.Ключ="sensors" Тогда
СтрокатзНТТР = тзНТТР.Добавить();
МассивДатчиков=Элемент.Значение;
//"1Датчик уровня топлива"
//"CAN Датчик расхода топлива"
//"Датчик уровня топлива"
//"Сумматор датчиков уровня топлива"
Для ИндексДатчика = 0 По МассивДатчиков.Количество()-1 Цикл
Если Найти(МассивДатчиков[ИндексДатчика].name,"CAN Датчик расхода топлива")>0 Тогда
СтрокатзНТТР.КАН_ДРТ=МассивДатчиков[ИндексДатчика].sid;
ИначеЕсли Найти(МассивДатчиков[ИндексДатчика].name,"Сумматор датчиков уровня топлива")>0 Тогда
СтрокатзНТТР.ДУТ=МассивДатчиков[ИндексДатчика].sid;
ИначеЕсли Найти(МассивДатчиков[ИндексДатчика].name,"Датчик расхода топлива")>0 Тогда
СтрокатзНТТР.ДРТ=МассивДатчиков[ИндексДатчика].sid;
КонецЕсли;
КонецЦикла;
//доделать, делать делать и еще раз пределать
//могут не создавать сумматор ДУТ или один ДУТ
Если СтрокатзНТТР.ДУТ=0 Тогда
Для ИндексДатчика = 0 По МассивДатчиков.Количество()-1 Цикл
Если Найти(МассивДатчиков[ИндексДатчика].name,"Датчик уровня топлива")>0 Тогда
СтрокатзНТТР.ДУТ=МассивДатчиков[ИндексДатчика].sid;
КонецЕсли;
КонецЦикла;
КонецЕсли;
ИначеЕсли Элемент.Ключ="oid" Тогда
СтрокатзНТТР.object_id=Элемент.Значение;
КонецЕсли;
КонецЦикла;
КонецЦикла;
ПроведениеДокументов.СообщениеСистемы("-Окончание получения данных НТТР запросом objectinfo "+ТекущаяДата()+"", СтатусСообщения.Информация);
Возврат тзНТТР;
КонецФункции
Стандартным HTTPСоединение у меня не взлетело никак. Я через COM объект XMLHTTP работаю.
Хотя, да, код еще тот получается...
Вот моя функция: Список треккеров
Функция ПолучитьСписокОбъектов() Если не Соединить(Сервер,Путь,Логин,Пароль) Тогда Возврат Неопределено; КонецЕсли; Адрес = "http://"+Сервер+Путь+"gettree?all=true"; XMLHTTP.Open("get",Адрес,Ложь); XMLHTTP.setRequestHeader("Content-Type", "text/plain; charset=UTF-8"); XMLHTTP.Send(); ТекстОтвет = XMLHTTP.ResponseText(); //ПолеТекста = ПолеТекста+Символы.ПС+Символы.ВК+ТекстОтвет; Структура = РаботаСJSON.ЗаполнитьСтруктуруИзОтветаJSON(ТекстОтвет); Если не Структура.Количество() Тогда Возврат Неопределено; КонецЕсли; //Разберем структуру в ТЗ //Корневая запись дерева нам сразу неинтересна //из Структуры нам интересны поля: Таблица = Новый ТаблицаЗначений; Таблица.Колонки.Добавить("name"); Таблица.Колонки.Добавить("IMEI"); Таблица.Колонки.Добавить("block_reason"); Таблица.Колонки.Добавить("direction"); Таблица.Колонки.Добавить("dt"); Таблица.Колонки.Добавить("lat"); Таблица.Колонки.Добавить("leaf"); Таблица.Колонки.Добавить("lon"); Таблица.Колонки.Добавить("move"); Таблица.Колонки.Добавить("real_id"); Таблица.Колонки.Добавить("status"); Для каждого Строка из Структура.children[0].children[0].children Цикл Если Строка.isGroup = "false" Тогда НовСтрока = Таблица.Добавить(); НовСтрока.IMEI = Строка.IMEI; НовСтрока.block_reason = Строка.block_reason; НовСтрока.direction = Строка.direction; НовСтрока.dt = Строка.dt; //Последняя инфа по треккеру НовСтрока.lat = Строка.lat; НовСтрока.leaf = Строка.leaf; НовСтрока.lon = Строка.lon; НовСтрока.move = Строка.move; НовСтрока.name = Строка.name; НовСтрока.real_id = Строка.real_id; НовСтрока.status = Строка.status; КонецЕсли; КонецЦикла; Возврат Таблица; КонецФункции
Есть там одна говняшка, когда я сразу отсекаю корень дерева и группу, но меня пока что устраивало. Для старта мне понравилось.
(15) я почти 2-е недели протрах, сделал, потом через 2-а месяца нашёл на инфострате человек тоже подключился
(17) подожди, что-то не то, нафиг тебе то дерево, там никакой инфы нужной потом в конфе нет, там всего 5 методов нужных в результате
и вообще мы можем договорится я тебе сдам все свои функции, ты мне потом вернешь все что ты сделаешь, важно понимать цели...
потому что в результате ты упрешся в костыль
кинь сюда сыль на описание их апи, там в юрл в конце \api
у тебя есть расчетно-платёжная ведомость для ИНАГРО конфы?
эти почему то не сделали один из трёх ключевых отчетов по зп
Aistovich нафиг тебе то дерево
То дерево дает real_id каждого треккера, по которым я могу получить всю остальную инфу.
Если ты про заголовки и ИД сессии, то я знаю этот прикол.
(24) ладно, специально для тебя и всех расколюсь
апи на этой странице они ещё не обновили
есть ещё самый важный метод который я с них выбил, но они молодцы, спецы, работают быстро
(23) давай сделаем конфу что надо, я готов все тебе рассказать если ты сейчас будешь этим заниматься
красавцы мне вон такси уже светят то что тебе за пятерик впарить хотят
напишем совместно конфу и составим некислую конкуренцию ИНАГРО и прочим уатникам, если ты счас будешь тратить время нам есть смысл стать партнерами потому что это проект
даю наводку, тебе нужно также подглядеть айтоб поделку
(28) ИНАГРО_РасчетнаяВедомостьОрганизации
(27) А если я треккер поменяю (сдох, сгорел, водички попил)- и ИМЕИ и реал_ид уже будет другим. Ценность имеет пара значений, и ниодна из них не гарантирует соответствие автомобилю.