1

Remote API - выполнение отчета на расход топлива

(01/07/2015 10:37:30 отредактировано BelC)

Тема: Remote API - выполнение отчета на расход топлива

Здравствуйте!

Искал в описании SDK, но так и не нашел как же в целом работать с отчетами...

Нашел описание метода выполнения отчета по шаблону (report/exec_report).

Но как получить шаблоны отчетов?
Есть метод получения информации о шаблонах - report/get_report_data.
Но для него нужны идентификаторы шаблонов, которые непонятно где получить...
А если вызывать без параметров, то выдается ошибка 7.


Вообще нужно выполнить отчет на расход топлива...
Подскажите как до него добраться ?
И правильный ли метод я использую для его выполнения?

PS
Пусть, для упрощения, у шаблона отчета расхода топлива за период заранее известно имя.

2

Remote API - выполнение отчета на расход топлива

Re: Remote API - выполнение отчета на расход топлива

Здравствуйте,
зная нужный ресурс, можно получить все ID шаблонов отчетов или конкретный, если искать по параметрам. Смотрите core/search_items itemsType: avl_resource, а propName: reporttemplates с флагом 0x00002000. Если в критериях поиска укажите имя отчета, то в ответе найдете необходимые данные для выполнения report/exec_report. в примере Выполнение отчета  подробно описан процесс выполнения отчета.

По поиску есть пример: Поиск элементов.

3

Remote API - выполнение отчета на расход топлива

(01/07/2015 14:10:25 отредактировано BelC)

Re: Remote API - выполнение отчета на расход топлива

Спасибо, 
по запросу svc=core/search_items с параметрами: 

{
    "spec":{
        "itemsType":"avl_resource",
        "propName":"reporttemplates",
        "propValueMask":"*",
        "sortType":"reporttemplates"
     },
     "flags":"0x00002000",
     "force":1,
     "from":0,
     "to":0
}

Получил такой ответ:

{
    "searchSpec": {
        "itemsType": "avl_resource",
        "propName": "reporttemplates",
        "propValueMask": "*",
        "sortType": "reporttemplates",
        "propType": "",
        "or_logic": "0"
    },
    "dataFlags": 8192,
    "totalItemsCount": 1,
    "indexFrom": 0,
    "indexTo": 0,
    "items": [{
        "rep": {
            "1": {
                "id": 1,
                "n": "Датчик зажигания",
                "ct": "avl_unit",
                "c": 9583
            },
            "2": {
                "id": 2,
                "n": "Моточасы",
                "ct": "avl_unit",
                "c": 32845
            },
            "3": {
                "id": 3,
                "n": "Поездки",
                "ct": "avl_unit",
                "c": 43469
            },
            "4": {
                "id": 4,
                "n": "Пробег\/Скорость",
                "ct": "avl_unit",
                "c": 27369
            },
            "5": {
                "id": 5,
                "n": "Уровень топлива",
                "ct": "avl_unit",
                "c": 3641
            }
        },
        "repmax": 0
    }]
}

Отлично, ID отчета определен, но дальше опять подножка...

{
       "reportResourceId":1234567,
       "reportTemplateId":5,
       "interval":{
            "from":1435698000,
            "to":1435748453,
            "flags":0
       }
}

а в ответ ошибка 4

В методе report/exec_report есть два ID: reportResourceId и reportObjectId.
Если первый идентификатор техники, то откуда второй ( если отчет задается reportTemplateId ) ?
Или я заблуждаюсь?


PS
Пример использования report/exec_report я видел

4

Remote API - выполнение отчета на расход топлива

Re: Remote API - выполнение отчета на расход топлива

Все шаблоны отчета (reportTemplate с конкретным reportTemplateId) хранятся в ресурсе (resource с конкретным reportResourceId), иначе говоря, ресурс - контейнер, содержащий разные элементы, например, шаблоны отчёта. Чтобы получить информацию о ресурсе (reportResourceId), к которому принадлежит шаблон отчёта, надо в ваш search_item добавить базовый флаг 0x1.

И, как было сказано, reportObjectId - идентификатор объекта (техники)

5

Remote API - выполнение отчета на расход топлива

(01/07/2015 16:41:07 отредактировано BelC)

Re: Remote API - выполнение отчета на расход топлива

Взял reportResourceId отсюда

{
    "searchSpec": {
        "itemsType": "avl_resource",
        "propName": "reporttemplates",
        "propValueMask": "*",
        "sortType": "reporttemplates",
        "propType": "",
        "or_logic": "0"
    },
    "dataFlags": 8193,
    "totalItemsCount": 1,
    "indexFrom": 0,
    "indexTo": 0,
    "items": [{
        "nm": "АПК",
        "cls": 3,
        "id": reportResourceId,               <-----
        "mu": 0,
        "rep": {
            "5": {
                "id": reportTemplateId,       <-----
                "n": "Уровень топлива",
                "ct": "avl_unit",
                "c": 3641
            }
        },
        "repmax": 0,
        "uacl": -1
    }]
}

reportObjectId назначил ID техники, и все равно получил ошибку 4...

Т.е. записал параметры report/exec_report так

{
       "reportResourceId": reportResourceId,      <---- полученный из запроса core/search_items
       "reportTemplateId": reportTemplateId,      <----               ---//---
       "reportObjectId": vehicleId,               <---- ранее заведенный идентификатор техники в систему (трек вижу)
       "interval":{
            "from": Math.round( dateStart.getTime() / 1000 ),      <---- начальная дата
            "to": Math.round( dateEnt.getTime() / 1000 ),          <---- конечная дата
            "flags": 0x00
       }
}

Такой вариант не заработал... Пришлось добавить параметр reportObjectSecId: 0
В описании вроде бы сказано, что он не обязателен...
Можете пояснить почему в данном случае его присутствие обязательно ?



PS
И я правильно понял, что получив данные о шаблоне методом report/get_report_data
Т.е. с параметрами

{
    "itemId": reportResourceId,
    "col": [ reportTemplateId ]
}

Я могу именно эти полученные данные (единственный элемент возвращенного массива) подставить в параметр reportTemplate метода report/exec_report (при этом заменив значение reportTemplateId на 0) и получить расчет согласно настройкам данного отчета как под этой же учетной записью, так и под другой, где такового отчета не имеется ?

6

Remote API - выполнение отчета на расход топлива

Re: Remote API - выполнение отчета на расход топлива

BelC пишет:

Можете пояснить почему в данном случае его присутствие обязательно ?

Документация явно говорит, что значение этого параметра должно быть задано

ID подэлемента, например геозоны или уведомления, если у элемента нету подэлементов, то 0

И в общем это стандартная ситуация для Remote API - проверяется наличие всех перечисленных в документации параметров

7

Remote API - выполнение отчета на расход топлива

Re: Remote API - выполнение отчета на расход топлива

Хм... действительно.... smile Похоже заработался - пора в отпуск)

Не могли бы вы ещё ответить на вопрос в  послесловии (PS) моего предыдущего поста.

8

Remote API - выполнение отчета на расход топлива

Re: Remote API - выполнение отчета на расход топлива

BelC пишет:

... получив данные о шаблоне методом report/get_report_data ...
Я могу именно эти полученные данные ... подставить в параметр reportTemplate метода report/exec_report ... и получить расчет согласно настройкам данного отчета как под этой же учетной записью, так и под другой, где такового отчета не имеется ?

Да, всё верно.
Соответствующий пример

9

Remote API - выполнение отчета на расход топлива

Re: Remote API - выполнение отчета на расход топлива

Пример ругается на логин/пароль...
Но спасибо за ответ, мне этого достаточно.

Спасибо!

10

Remote API - выполнение отчета на расход топлива

Re: Remote API - выполнение отчета на расход топлива

Thanks for post!