АПИ для Форт-Монитора

  1. 8 г. назад
    02.03.2016 17:23:42 отредактировано alex_shkut

    Никто еще не написал JSON обертку для 1С и Форт-Монитора? А то может я велосипед изобретаю? Диллеры просят 100 грн за объект в месяц или 5000 у.е. за конфу разово.

  2. Хоть бы ссылки написал, что еще за форт-монитор ?

    Ответы: (2)
  3. (1) это как обычный монитор, но только форт, ты вообще в школе учился?

  4. я написал

  5. 02.03.2016 17:49:35 отредактировано Aistovich

    шорт я уже беременный этой оберткой полгода и вообще не только ради форта
    форт 3 мощен бесспорно, многия алгоритмы я оттуда расковырял
    что за Дилеры? Микротроник, Лукаут?

    Ответы: (11)
  6. 02.03.2016 17:58:02 отредактировано Aistovich

    думаю что тебе предлагают полумою конфу, которую они сча допиливают уже без меня :)
    а 100 грн за объект без своего сервера сбора данных и определенного парка навигаторов тебе не избежать
    это работа не для одного
    сливы и заправки считать там у них очень некислая скользящая среднняя
    да и время там мрак точные алгоритмы которые тяжело оттестить
    3 форт кто тебе парит?

    Ответы: (7)
  7. (5)

    там у них очень некислая скользящая среднняя

    А в чем проблема со скользящей средней? Когда писал торгового робота, одним из индикаторов закодил ее родимую. Некрасиво такое делать на 1С, но решаемо.

    Ответы: (8) (9)
  8. 02.03.2016 18:19:27 отредактировано Aistovich

    (7) дык не раскусил, а они её не сдали, она там у них непростая, а комбинированнная какая-то, по описалову из википедии ни одна не подошла

  9. (7) и что там некарсиво на 1с делать, с 1с-ом там кстати все в порядке

    Ответы: (10)
  10. (9) Громоздкий код выходит. Особенно после нормального терминала. Где на встроенном скрипте этот же индикатор считается одной строчкой кода.

  11. (4) Микротроник

  12. Да не вопрос, JSON деревья запаривает разбирать. Я уже список объектов за вчера получил в ТЗ. Остальное - дело времени. Думал, мож уже кто разбор сделал. Будем пилить...

  13. 03.03.2016 00:36:05 отредактировано Aistovich

    слу, если надо я тебе на почту написал
    я с форта в прошлом году новый метод выбил
    интересно они его уже задокументировали али не стали, сомневась что ты меня перепилишь :)

    Ответы: (17)
  14. пили не пили, а без гвонокода там не обойтись

    Функция 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 "+ТекущаяДата()+"", СтатусСообщения.Информация);

    Возврат тзНТТР;
    КонецФункции

  15. Стандартным HTTPСоединение у меня не взлетело никак. Я через COM объект XMLHTTP работаю.
    Хотя, да, код еще тот получается...

    Ответы: (18)
  16. Вот моя функция: Список треккеров

    Функция ПолучитьСписокОбъектов()
    	
    	Если не Соединить(Сервер,Путь,Логин,Пароль) Тогда
    		Возврат Неопределено;
    	КонецЕсли;
    	
    	Адрес = "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;
    		КонецЕсли;
    	КонецЦикла;
    	
    	Возврат Таблица;
    	
    КонецФункции

    Есть там одна говняшка, когда я сразу отсекаю корень дерева и группу, но меня пока что устраивало. Для старта мне понравилось.

  17. (13) Имя метода? Я скачал доки свежие с .ru, может там ужо есть?

    Ответы: (18)
  18. 03.03.2016 15:52:18 отредактировано Aistovich

    (15) я почти 2-е недели протрах, сделал, потом через 2-а месяца нашёл на инфострате человек тоже подключился
    (17) подожди, что-то не то, нафиг тебе то дерево, там никакой инфы нужной потом в конфе нет, там всего 5 методов нужных в результате

    и вообще мы можем договорится я тебе сдам все свои функции, ты мне потом вернешь все что ты сделаешь, важно понимать цели...
    потому что в результате ты упрешся в костыль

    Ответы: (22) (23)
  19. кинь сюда сыль на описание их апи, там в юрл в конце \api

  20. у тебя есть расчетно-платёжная ведомость для ИНАГРО конфы?
    эти почему то не сделали один из трёх ключевых отчетов по зп

    Ответы: (21)
  21. (20) Есть ведомость выдачи через кассу - стандартная. Есть сводная ведомость по з/п где все расчеты и выплаты и долги. Есть расчетные листки. Но вроде эти все доки ИНАГРО-вские.
    Какая форма? Ее номер?

    Ответы: (28)
  22. (18) http://fm3.fort-monitor.com.ua/help/api.html

  23. Aistovich нафиг тебе то дерево

    То дерево дает real_id каждого треккера, по которым я могу получить всю остальную инфу.

    Ответы: (26) (27)
  24. Если ты про заголовки и ИД сессии, то я знаю этот прикол.

    Ответы: (25)
  25. (24) ладно, специально для тебя и всех расколюсь
    апи на этой странице они ещё не обновили
    есть ещё самый важный метод который я с них выбил, но они молодцы, спецы, работают быстро

  26. 03.03.2016 19:35:25 отредактировано Aistovich

    (23) давай сделаем конфу что надо, я готов все тебе рассказать если ты сейчас будешь этим заниматься
    красавцы мне вон такси уже светят то что тебе за пятерик впарить хотят
    напишем совместно конфу и составим некислую конкуренцию ИНАГРО и прочим уатникам, если ты счас будешь тратить время нам есть смысл стать партнерами потому что это проект
    даю наводку, тебе нужно также подглядеть айтоб поделку

  27. (23) и еще real_id - гуано, важен имей

    Ответы: (30)
  28. 03.03.2016 20:22:51 отредактировано Aistovich

    (21) "сводная ведомость по з/п где все расчеты и выплаты и долги" глянь пож-та как она в конфигураторе у тебя называется

    Ответы: (29)
  29. (28) ИНАГРО_РасчетнаяВедомостьОрганизации

  30. (27) А если я треккер поменяю (сдох, сгорел, водички попил)- и ИМЕИ и реал_ид уже будет другим. Ценность имеет пара значений, и ниодна из них не гарантирует соответствие автомобилю.

или зарегистрируйтесь чтобы ответить!