Введение в SDK: выполнение отчетов

В данной статье будет рассмотрена работа с шаблонами отчетов при помощи Remote API. Выполнение отчетов через SDK подразумевает последовательность обязательных действий, которые не заметны при работе в веб-интерфейсе. Для полноты картины будут приведены примеры работы с отчетами с группировкой и без группировки.

Создание отчетов

В большинстве случаев пользователи создают шаблоны отчетов в веб-интерфейсе и потом выполняют их с помощью API-запросов. Далее мы будем рассматривать именно такие случаи.

Однако создание шаблонов отчетов доступно и через SDK, для чего нужно использовать запрос report/update_report.

Последовательность действий

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

  1. Авторизация через запрос token/login и настройка локализации через запрос render/set_locale.

  2. Получение необходимых системных ID для:

    • элемента, для которого необходимо выполнить отчет;

    • ресурса, в котором содержится шаблон отчета;

    • самого шаблона отчета.

  3. Выполнение отчета через запрос report/exec_report.

  4. Проверка статуса выполнения отчета через запрос report/get_report_status.
    После подтверждения готовности отчета можно будет продолжать движение по инструкции.

  5. Получение результата отчета через запрос report/apply_report_result.
    Результат данного запроса предоставит количество строк, столбцов и уровней вложенности при наличии группировки.

  6. Получение строк таблицы через запрос report/get_result_rows для отчета без группировки или через запрос report/select_result_rows для отчета с группировкой.
    Выбор таблицы, уровней вложенности и отображаемых строк осуществляется на основе данных из ответа на предыдущий запрос.

  7. Экспорт в файл через запрос report/export_result.
    Данный шаг является необязательным, но достаточно несложным и полезным, поэтому мы рассмотрим и его.

  8. Удаление результата предыдущего отчета через запрос report/cleanup_result.
    Данный шаг является обязательным, если в одной сессии необходимо выполнить несколько отчетов.

Следующие запросы не могут выполняться одновременно:

Далее рассмотрим два примера работы с отчетами (без группировки и с группировкой).

Работа с отчетом без группировки

Необходимо получить результаты выполнения отчета Список поездок, доступного авторизованному по токену пользователю, для объекта Грузовик 0769 (системный ID 55555) за интервал времени с 2023 Июнь 30 20:00 до 2023 Июль 01 03:59 (GMT+0) в виде ответа на API-запрос и PDF-файла.

В веб-интерфейсе результат выглядит следующим образом:

1. Авторизация и настройка локализации

Используем запрос token/login.

Copied!
https://hst-api.wialon.com/wialon/ajax.html?svc=token/login&params={"token":"ЗНАЧЕНИЕ_ТОКЕНА"}

Более подробно авторизация описана в одной из предыдущих статей.

Настройка локализации включает в себя установку часового пояса (она также была рассмотрена ранее), формата даты и других параметров.

Используем запрос render/set_locale.

Copied!
https://hst-api.wialon.com/wialon/ajax.html?svc=render/set_locale&params={"tzOffset":134217728,"language":"ru","formatDate":"%25E.%25m.%25Y%20%25H:%25M:%25S"}&sid=ИДЕНТИФИКАТОР_СЕССИИ
Параметр и его значение Описание
“tzOffset”:134217728 Будет применен часовой пояс GMT+0 (без перехода на летнее время).
“language”:“ru” Будет использоваться русский язык.
“formatDate”:“%25Y.%25m.%25E%20%25H:%25M:%25S” Будет использоваться формат даты yyyy.MM.dd и формат времени HH:mm:ss.
Невыполнение настройки локализации может приводить к различию результатов при выполнении отчета через Remote API и веб-интерфейс.

2. Получение системных ID

В одной из предыдущих статей мы уже описывали, как выполнять поиск элементов по критериям, поэтому сейчас обратим внимание только на поиск ресурса и шаблона отчета.

Получим список всех ресурсов, в которых создан шаблон отчета с именем Список поездок, доступных пользователю, для которого выполнена авторизация по токену. Используем запрос core/search_items:

Copied!
https://hst-api.wialon.com/wialon/ajax.html?svc=core/search_items&params={"spec":{"itemsType":"avl_resource","propType":"propitemname","propName":"reporttemplates","propValueMask":"Список%20поездок","sortType":"sys_name"},"force":1,"flags":8193,"from":0,"to":0}&sid=ИДЕНТИФИКАТОР_СЕССИИ
Параметр и его значение Описание
“itemsType”:“avl_resource” Поиск будет выполнен по ресурсам.
“propType”:“propitemname” Поиск будет выполнен по имени подэлемента.
“propName”:“reporttemplates” Поиск будет выполнен по имени шаблона отчета.
“propValueMask”:“Список%20поездок” В ответе будет отображен список ресурсов, в котором создан шаблон отчета с названием Список поездок.
“sortType”:“sys_name” Сортировка будет выполнена по имени элемента.
“force”:1 Результаты предыдущих поисков не будут учитываться.
“flags”:8193 В ответе будет содержаться информация об основных свойствах и о созданных шаблонах отчетов. 1 + 8192 = 8193
“from”:0;“to”:0 Ограничения по количеству найденных элементов не будут применяться.

Ответ

Copied!
{
    "searchSpec":{
        "itemsType":"avl_resource",
        "propName":"reporttemplates",
        "propValueMask":"Список поездок",
        "sortType":"sys_name",
        propType:"propitemname",
        or_logic:"0"
        },
    "dataFlags":8193,
    "totalItemsCount":1,
    "indexFrom":0,
    "indexTo":0,
    "items":[
        {
            "nm":"sdk_account",
            "cls":3,
            "id":12345678,
            "mu":0,
            "rep":{
                1:{
                    "id":1,
                    "n":"Список поездок",
                    "ct":"avl_unit",
                    "c":59352
                },
                2:{
                    "id":2,
                    "n":"Поездки с группировкой",
                    "ct":"avl_unit",
                    "c":6883
                }
            },
            "repmax":-1,
            "uacl":-1
        }
    ]
}

Обратим внимание на следующие параметры из ответа:

  • nm — имя ресурса;

  • rep — массив шаблонов отчетов, созданных в ресурсе;

  • n — имя подэлемента;

  • id — системный ID.

В данном случае пользователю доступен ресурс sdk_account с системным ID 12345678, в котором находится шаблон отчета Список поездок с системным ID 1.

3. Выполнение отчета

Используем запрос report/exec_report.

Copied!
https://hst-api.wialon.com/wialon/ajax.html?svc=report/exec_report&params={"reportResourceId":12345678,"reportTemplateId":1,"reportObjectId":55555,"reportObjectSecId":0,"interval":{"flags":0,"from":1688144400,"to":1688173199},"remoteExec":1}&sid=ИДЕНТИФИКАТОР_СЕССИИ
Параметр и его значение Описание
“reportResourceId”:12345678 Шаблон отчета будет выбран из ресурса с системным ID 12345678.
“reportTemplateId”:1 Будет выполнен шаблон отчета с системным ID 1.
“reportObjectId”:55555 Отчет будет выполнен для объекта с системным ID 55555.
“reportObjectSecId”:0 Отчет будет выполняться не для подэлемента.
“flags”:0 Отчет будет выполнен за указанный интервал.
“from”:1688144400 Началом интервала будет 2023 Июнь 30 20:00 (GMT+0).
“to”:1688173199 Концом интервала будет 2023 Июль 01 03:59 (GMT+0).
“remoteExec”:1 Отчет будет выполнен в фоновом режиме на сервере.

Ответ

Copied!
{
    "remoteExec":1
}

4. Проверка статуса выполнения

Так как отчет выполняется в фоновом режиме на сервере, то проверим статус его выполнения, используя запрос report/get_report_status.

Copied!
https://hst-api.wialon.com/wialon/ajax.html?svc=report/get_report_status&params={}&sid=ИДЕНТИФИКАТОР_СЕССИИ

Ответ

Copied!
{
    "status":4
}

Код статуса 4 означает, что отчет выполнен. Интерпретацию остальных значений можно найти на странице с описанием запроса.

5. Получение результата отчета

Используем запрос report/apply_report_result.

Copied!
https://hst-api.wialon.com/wialon/ajax.html?svc=report/apply_report_result&params={}&sid=ИДЕНТИФИКАТОР_СЕССИИ

Ответ

Copied!
{
    "reportResult":{
        "msgsRendered":0,
        "stats":[],
        "tables":[
            {
                "name":"unit_trips",
                "label":"Поездки",
                "grouping":{},
                "flags":4224,
                "rows":4,
                "level":1,
                "columns":5,
                "header":[
                    "№",
                    "Начало",
                    "Конец",
                    "Длительность",
                    "Пробег"
                ],
                "header_type":[
                    "",
                    "time_begin",
                    "time_end",
                    "duration",
                    "mileage"
                ]
            }
        ],
        "attachments":[]
    }
}

Три ключевых параметра из ответа, интересующих нас, выглядят следующим образом:

  • tables — показывает количество таблиц в отчете в виде массива. В данном случае упоминается только одна таблица — Поездки, следовательно, ее индекс будет равен 0.
  • rows — количество строк в таблице, в данном случае их 4. Следовательно, их индексы лежат в диапазоне от 0 до 3.
  • level — количество уровней вложенности, в данном случае оно равно 1, так как в отчете отсутствует группировка.

Также можно коротко перечислить другие параметры из ответа. Параметр columns говорит о количестве столбцов, далее их имена описаны в параметре header. Нулевое значение параметра msgsRendered говорит о том, что в шаблоне отчета не включено отображение сообщений на карте. Пустые параметры stats и attachments говорят о том, что в шаблоне отчета отсутствует Статистика и приложения (например, графики).

6. Получение строк таблицы

Зная индекс содержимого таблицы, отобразим ее, используя запрос report/get_result_rows.

Copied!
https://hst-api.wialon.com/wialon/ajax.html?svc=report/get_result_rows&params={"tableIndex":0,"indexFrom":0,"indexTo":3}&sid=ИДЕНТИФИКАТОР_СЕССИИ
Параметр и его значение Описание
“tableIndex”:0 Будет отображено содержимое таблицы с индексом 0.
“indexFrom”:0 Первая отображаемая строка будет иметь индекс 0.
“indexTo”:3 Последняя отображаемая строка будет иметь индекс 3.

Ответ

Copied!
[
    {
        "n":0,
        "i1":0,
        "i2":790,
        "t1":1688144420,
        "t2":1688154878,
        "d":0,
        "c":[
            "1",
            {
                "t":"2023-06-30 20:00:20",
                "v":1688144420,
                "y":47.2941741943,
                "x":26.4906959534,
                "u":55555
            },
            {
                "t":"2023-06-30 22:54:38",
                "v":1688154878,
                "y":43.8697662354,
                "x":26.0177116394,
                "u":55555
            },
            "2:54:18",
            "469.54 км"
        ]
    },
    {
        "n":1,
        "i1":936,
        "i2":2171,
        "t1":1688155181,
        "t2":1688169690,
        "d":0,
        "c":[
            "2",
            {
                "t":"2023-06-30 22:59:41",
                "v":1688155181,
                "y":43.8698196411,
                "x":26.0177154541,
                "u":55555
            },
            {
                "t":"2023-07-01 03:01:30",
                "v":1688169690,
                "y":41.7139854431,
                "x":26.3660545349,
                "u":55555
            },
            "4:01:49",
            "343.84 км"
        ]
    },
    {
        "n":2,
        "i1":2340,
        "i2":2486,
        "t1":1688170034,
        "t2":1688170841,
        "d":0,
        "c":[
            "3",
            {
                "t":"2023-07-01 03:07:14",
                "v":1688170034,
                "y":41.7140579224,
                "x":26.365901947,
                "u":55555
            },
            {
                "t":"2023-05-01 09:23:10",
                "v":1688170841,
                "y":41.7122383118,
                "x":26.3712425232,
                "u":55555
            },
            "0:13:27",
            "1.39 км"
        ]
    },
    {
        "n":3,
        "i1":2833,
        "i2":2910,
        "t1":1688171565,
        "t2":1688173175,
        "d":0,
        "c":[
            "4",
            {
                "t":"2023-07-01 03:32:45",
                "v":1688171565,
                "y":41.7120819092,
                "x":26.3711204529,
                "u":55555
            },
            {
                "t":"2023-07-01 03:59:35",
                "v":1688173175,
                "y":41.5760040283,
                "x":26.9871864319,
                "u":55555
            },
            "0:26:50",
            "57.84 км"
        ]
    }
]

7. Экспорт в файл

Экспортируем результат в PDF-файл, используя запрос report/export_result.

Copied!
https://hst-api.wialon.com/wialon/ajax.html?svc=report/export_result&params={"format":2,"compress":0,"outputFileName":"Список%20поездок"}&sid=ИДЕНТИФИКАТОР_СЕССИИ
Параметр и его значение Описание
“format”:2 Результат отчета будет экспортирован в формат PDF.
“compress”:0 Экспортируемый файл не будет сжат (добавлен в архив).
“outputFileName”:“Список%20поездок” Экспортируемый файл будет иметь имя Список поездок.

Ответ на данный API-запрос не отображается, вместо этого автоматически начинается загрузка файла.

8. Удаление результата предыдущего отчета

Используем запрос report/cleanup_result.

Copied!
https://hst-api.wialon.com/wialon/ajax.html?svc=report/cleanup_result&params={}&sid=ИДЕНТИФИКАТОР_СЕССИИ

Ответ

Copied!
{
    "error":0
}

Нулевое значение означает успешное удаление.

Работа с отчетом с группировкой

Необходимо получить результаты выполнения отчета Поездки с группировкой, доступного авторизованному по токену пользователю, для объекта Грузовик 0769 (системный ID 55555) за интервал времени с 2023 Июнь 30 20:00 до 2023 Июль 01 03:59 (GMT+0) в виде ответа на API-запрос и PDF-файла.

В веб-интерфейсе результат выглядит следующим образом:

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

  • на 1-м уровне расположены строки с месяцами;
  • на 2-м — строки с датой в рамках месяца;
  • на 3-м — строки непосредственно с поездками в рамках даты.

1. Авторизация и настройка локализации

Используем запрос token/login.

Copied!
https://hst-api.wialon.com/wialon/ajax.html?svc=token/login&params={"token":"ЗНАЧЕНИЕ_ТОКЕНА"}

Более подробно авторизация описана в одной из предыдущих статей.

Настройка локализации включает в себя установку часового пояса (она также была рассмотрена ранее), формата даты и других параметров.

Используем запрос render/set_locale.

Copied!
https://hst-api.wialon.com/wialon/ajax.html?svc=render/set_locale&params={"tzOffset":134217728,"language":"ru","formatDate":"%25E.%25m.%25Y%20%25H:%25M:%25S"}&sid=ИДЕНТИФИКАТОР_СЕССИИ
Параметр и его значение Описание
“tzOffset”:134217728 Будет применен часовой пояс GMT+0 (без перехода на летнее время).
“language”:“ru” Будет использоваться русский язык.
“formatDate”:“%25Y.%25m.%25E%20%25H:%25M:%25S” Будет использоваться формат даты yyyy.MM.dd и формат времени HH:mm:ss.
Невыполнение настройки локализации может приводить к различию результатов при выполнении отчета через Remote API и веб-интерфейс.

2. Получение системных ID

В одной из предыдущих статей мы уже описывали, как выполнять поиск элементов по критериям, поэтому сейчас обратим внимание только на поиск ресурса и шаблона отчета.

Получим список всех ресурсов, в которых создан шаблон отчета с именем Поездки с группировкой, доступных пользователю, для которого выполнена авторизация по токену. Используем запрос core/search_items:

Copied!
https://hst-api.wialon.com/wialon/ajax.html?svc=core/search_items&params={"spec":{"itemsType":"avl_resource","propType":"propitemname","propName":"reporttemplates","propValueMask":"Поездки%20с%20группировкой","sortType":"sys_name"},"force":1,"flags":8193,"from":0,"to":0}&sid=ИДЕНТИФИКАТОР_СЕССИИ
Параметр и его значение Описание
“itemsType”:“avl_resource” Поиск будет выполнен по ресурсам.
“propType”:“propitemname” Поиск будет выполнен по имени подэлемента.
“propName”:“reporttemplates” Поиск будет выполнен по имени шаблона отчета.
“propValueMask”:“Поездки%20с%20группировкой” В ответе будет отображен список ресурсов, в котором создан шаблон отчета с названием Поездки с группировкой.
“sortType”:“sys_name” Сортировка будет выполнена по имени элемента.
“force”:1 Результаты предыдущих поисков не будут учитываться.
“flags”:8193 В ответе будет содержаться информация об основных свойствах и о созданных шаблонах отчетов. 1 + 8192 = 8193
“from”:0;“to”:0 Ограничения по количеству найденных элементов не будут применяться.

Ответ

Copied!
{
    "searchSpec":{
        "itemsType":"avl_resource",
        "propName":"reporttemplates",
        "propValueMask":"Поездки с группировкой",
        "sortType":"sys_name",
        propType:"propitemname",
        or_logic:"0"
        },
    "dataFlags":8193,
    "totalItemsCount":1,
    "indexFrom":0,
    "indexTo":0,
    "items":[
        {
            "nm":"sdk_account",
            "cls":3,
            "id":12345678,
            "mu":0,
            "rep":{
                1:{
                    "id":1,
                    "n":"Список поездок",
                    "ct":"avl_unit",
                    "c":59352
                },
                2:{
                    "id":2,
                    "n":"Поездки с группировкой",
                    "ct":"avl_unit",
                    "c":6883
                }
            },
            "repmax":-1,
            "uacl":-1
        }
    ]
}

Обратим внимание на следующие параметры из ответа:

  • nm — имя ресурса;

  • rep — массив шаблонов отчетов, созданных в ресурсе;

  • n — имя подэлемента;

  • id — системный ID.

В данном случае пользователю доступен ресурс sdk_account с системным ID 12345678, в котором находится шаблон отчета Поездки с группировкой с системным ID 2.

3. Выполнение отчета

Используем запрос report/exec_report.

Copied!
https://hst-api.wialon.com/wialon/ajax.html?svc=report/exec_report&params={"reportResourceId":12345678,"reportTemplateId":2,"reportObjectId":55555,"reportObjectSecId":0,"interval":{"flags":0,"from":1688144400,"to":1688173199},"remoteExec":1}&sid=ИДЕНТИФИКАТОР_СЕССИИ
Параметр и его значение Описание
“reportResourceId”:12345678 Шаблон отчета будет выбран из ресурса с системным ID 12345678.
“reportTemplateId”:2 Будет выполнен шаблон отчета с системным ID 2.
“reportObjectId”:55555 Отчет будет выполнен для объекта с системным ID 55555.
“reportObjectSecId”:0 Отчет будет выполняться не для подэлемента.
“flags”:0 Отчет будет выполнен за указанный интервал.
“from”:1688144400 Началом интервала будет 2023 Июнь 30 20:00 (GMT+0).
“to”:1688173199 Концом интервала будет 2023 Июль 01 03:59 (GMT+0).
“remoteExec”:1 Отчет будет выполнен в фоновом режиме на сервере.

Ответ

Copied!
{
    "remoteExec":1
}

4. Проверка статуса выполнения

Так как отчет выполняется в фоновом режиме на сервере, то проверим статус его выполнения, используя запрос report/get_report_status.

Copied!
https://hst-api.wialon.com/wialon/ajax.html?svc=report/get_report_status&params={}&sid=ИДЕНТИФИКАТОР_СЕССИИ

Ответ

Copied!
{
    "status":4
}

Код статуса 4 означает, что отчет выполнен. Интерпретацию остальных значений можно найти на странице с описанием запроса.

5. Получение результата отчета

Используем запрос report/apply_report_result.

Copied!
https://hst-api.wialon.com/wialon/ajax.html?svc=report/apply_report_result&params={}&sid=ИДЕНТИФИКАТОР_СЕССИИ

Ответ

Copied!
{
    "reportResult":{
        "msgsRendered":0,
        "stats":[],
        "tables":[
            {
                "name":"unit_trips",
                "label":"Поездки",
                "grouping":{
                    "nested":{
                        "type":"day"
                    },
                    "type":"month"
                },
                "flags":4491,
                "rows":2,
                "level":3,
                "columns":6,
                "header":[
                    "№",
                    "Группировка",
                    "Начало",
                    "Конец",
                    "Длительность",
                    "Пробег"
                ],
                "header_type":[
                    "",
                    "",
                    "time_begin",
                    "time_end",
                    "duration",
                    "mileage"
                ]
            }
        ],
        "attachments":[]
    }
}

Три ключевых параметра из ответа, интересующих нас, выглядят следующим образом:

  • tables — показывает количество таблиц в отчете в виде массива. В данном случае упоминается только одна таблица — Поездки, следовательно, ее индекс будет равен 0.
  • rows — количество строк в таблице, в данном случае их 2. Следовательно, их индексы лежат в диапазоне от 0 до 1. Речь идет только про строки на верхнем уровне вложенности, внутри их может быть больше.
  • level — количество уровней вложенности, в данном случае оно равно 3, так как в отчете присутствует группировка. Следовательно, в таблице существуют уровни с индексами от 0 до 2.

Также можно коротко перечислить другие параметры из ответа. Параметр columns говорит о количестве столбцов, далее их имена описаны в параметре header. Нулевое значение параметра msgsRendered говорит о том, что в шаблоне отчета не включено отображение сообщений на карте. Пустые параметры stats и attachments говорят о том, что в шаблоне отчета отсутствует Статистика и приложения (например, графики).

6. Выбор строк в многоуровневой таблице

Зная индекс содержимого таблицы отобразим ее, используя запрос report/select_result_rows.

Copied!
https://hst-api.wialon.com/wialon/ajax.html?svc=report/select_result_rows&params={"tableIndex":0,"config":{"type":"range","data":{"from":0,"to":1,"level":2}}}&sid=ИДЕНТИФИКАТОР_СЕССИИ
Параметр и его значение Описание
“tableIndex”:0 Будет отображено содержимое таблицы с индексом 0.
“type”:“range” Запрашиваться будет последовательность строк.
“from”:0 Первая отображаемая строка будет иметь индекс 0.
“to”:1 Последняя отображаемая строка будет иметь индекс 1.
“level”:2 Результат будет отображать уровни вложенности вплоть до индекса 2.

Ответ

Copied!
[
    {
        "n":0,
        "i1":0,
        "i2":1188,
        "t1":1688144420,
        "t2":1688158739,
        "d":1,
        "c":[
            "1",
            "Июнь",
            {
                "t":"20:00:20",
                "v":1688144420,
                "y":47.2941741943,
                "x":26.4906959534,
                "u":55555
            },
            {
                "t":"23:58:59",
                "v":1688158739,
                "y":43.1049079895,
                "x":25.6173667908,
                "u":55555
            },
            "3:53:36",
            "576.60 км"
        ],
        "r":[
            {
                "n":0,
                "i1":0,
                "i2":1188,
                "t1":1688144420,
                "t2":1688158739,
                "d":2,
                "c":[
                    "1.1",
                    "2023-06-30",
                    {
                        "t":"20:00:20",
                        "v":1688144420,
                        "y":47.2941741943,
                        "x":26.4906959534,
                        "u":55555
                    },
                    {
                        "t":"23:58:59",
                        "v":1688158739,
                        "y":43.1049079895,
                        "x":25.6173667908,
                        "u":55555
                    },
                    "3:53:36",
                    "576.60 км"
                ],
                "r":[
                    {
                        "n":0,
                        "i1":0,
                        "i2":790,
                        "t1":1688144420,
                        "t2":1688154878,
                        "d":0,
                        "c":[
                            "1.1.1",
                            "2023-06-30 20:00:20",
                            {
                                "t":"20:00:20",
                                "v":1688144420,
                                "y":47.2941741943,
                                "x":26.4906959534,
                                "u":55555
                            },
                            {
                                "t":"22:54:38",
                                "v":1688154878,
                                "y":43.8697662354,
                                "x":26.0177116394,
                                "u":55555
                            },
                            "2:54:18",
                            "469.54 км"
                        ]
                    },
                    {
                        "n":1,
                        "i1":936,
                        "i2":1188,
                        "t1":1688155181,
                        "t2":1688158739,
                        "d":0,
                        "c":[
                            "1.1.2",
                            "2023-06-30 22:59:41",
                            {
                                "t":"22:59:41",
                                "v":1688155181,
                                "y":43.8698196411,
                                "x":26.0177154541,
                                "u":55555
                            },
                            {
                                "t":"23:58:59",
                                "v":1688158739,
                                "y":43.1049079895,
                                "x":25.6173667908,
                                "u":55555
                            },
                            "0:59:18",
                            "107.06 км"
                        ]
                    }
                ]
            }
        ]
    },
    {
        "n":1,
        "i1":1193,
        "i2":2910,
        "t1":1688158805,
        "t2":1688173175,
        "d":1,
        "c":[
            "2",
            "Июль",
                {
                    "t":"00:00:05",
                    "v":1688158805,
                    "y":43.0983314514,
                    "x":25.6316585541,
                    "u":55555
                },
                {
                    "t":"03:59:35",
                    "v":1688173175,
                    "y":41.5760040283,
                    "x":26.9871864319,
                    "u":55555
                },
                "3:41:42",
                "294.55 км"
        ],
        "r":[
            {
                "n":0,
                "i1":1193,
                "i2":2910,
                "t1":1688158805,
                "t2":1688173175,
                "d":3,
                "c":[
                    "2.1",
                    "2023-07-01",
                    {
                        "t":"00:00:05",
                        "v":1688158805,
                        "y":43.0983314514,
                        "x":25.6316585541,
                        "u":55555
                    },
                    {
                        "t":"03:59:35",
                        "v":1688173175,
                        "y":41.5760040283,
                        "x":26.9871864319,
                        "u":55555
                    },
                    "3:41:42",
                    "294.55 км"
                ],
                "r":[
                    {
                        "n":0,
                        "i1":1193,
                        "i2":2171,
                        "t1":1688158805,
                        "t2":1688169690,
                        "d":0,
                        "c":[
                            "2.1.1",
                            "2023-07-01 00:00:05",
                            {
                                "t":"00:00:05",
                                "v":1688158805,
                                "y":43.0983314514,
                                "x":25.6316585541,
                                "u":55555
                            },
                            {
                                "t":"03:01:30",
                                "v":1688169690,
                                "y":41.7139854431,
                                "x":26.3660545349,
                                "u":55555
                            },
                            "3:01:25",
                            "235.31 км"
                        ]
                    },
                    {
                        "n":1,
                        "i1":2340,
                        "i2":2486,
                        "t1":1688170034,
                        "t2":1688170841,
                        "d":0,
                        "c":[
                            "2.1.2",
                            "2023-07-01 03:07:14",
                            {
                                "t":"03:07:14",
                                "v":1688170034,
                                "y":41.7140579224,
                                "x":26.365901947,
                                "u":55555
                            },
                            {
                                "t":"03:20:41",
                                "v":1688170841,
                                "y":41.7122383118,
                                "x":26.3712425232,
                                "u":55555
                            },
                            "0:13:27",
                            "1.39 км"
                        ]
                    },
                    {
                        "n":2,
                        "i1":2833,
                        "i2":2910,
                        "t1":1688171565,
                        "t2":1688173175,
                        "d":0,
                        "c":[
                            "2.1.3",
                            "2023-07-01 03:32:45",
                            {
                                "t":"03:32:45",
                                "v":1688171565,
                                "y":41.7120819092,
                                "x":26.3711204529,
                                "u":55555
                            },
                            {
                                "t":"03:59:35",
                                "v":1688173175,
                                "y":41.5760040283,
                                "x":26.9871864319,
                                "u":55555
                            },
                            "0:26:50",
                            "57.84 км"
                        ]
                    }
                ]
            }
        ]
    }
]

7. Экспорт в файл

Экспортируем результат в PDF-файл, используя запрос report/export_result.

Copied!
https://hst-api.wialon.com/wialon/ajax.html?svc=report/export_result&params={"format":2,"compress":0,"outputFileName":"Поездки%20с%20группировкой"}&sid=ИДЕНТИФИКАТОР_СЕССИИ
Параметр и его значение Описание
“format”:2 Результат отчета будет экспортирован в формат PDF.
“compress”:0 Экспортируемый файл не будет сжат (добавлен в архив).
“outputFileName”:“Поездки%20с%20группировкой” Экспортируемый файл будет иметь имя Поездки с группировкой.

Ответ на данный API-запрос не отображается, вместо этого автоматически начинается загрузка файла.

8. Удаление результата предыдущего отчета

Используем запрос report/cleanup_result.

Copied!
https://hst-api.wialon.com/wialon/ajax.html?svc=report/cleanup_result&params={}&sid=ИДЕНТИФИКАТОР_СЕССИИ

Ответ

Copied!
{
    "error":0
}

Нулевое значение означает успешное удаление.

Особенности получения результатов

Получение данных из таблиц может осуществляться с помощью запросов report/get_result_rows или report/select_result_rows, в которых используется параметр tableIndex, чтобы обратиться к таблице с определенным индексом. При этом необходимо учитывать, что при выполнении отчета за разные интервалы индекс одной и той же таблицы может меняться из-за наличия или отсутствия других таблиц.

Для лучшего понимания ситуации рассмотрим пример. Предположим, что в шаблон отчета добавлены таблицы Поездки, Сливы и Геозоны. При выполнении отчета за интервал с 1 по 3 июля результат будет содержать все таблицы, а потому их индексы примут следующие значения:

0 — Поездки
1 — Сливы
2 — Геозоны

А при выполнении отчета за интервал с 4 по 6 июля индексы некоторых таблиц поменяются из-за отсутствия зарегистрированных сливов и примут другие значения:

0 — Поездки
1 — Геозоны

В данном примере хорошо видно, что при выполнении отчета за разные интервалы индекс таблицы Геозоны изменяется. Следовательно, обращение к таблице с индексом 2 не всегда будет выводить информацию о посещении геозон. Для исправления подобных ситуаций рекомендуется применять дополнительные проверки, например, по названию таблицы или ее столбцов.

Екатерина Гриб
Екатерина Гриб Инженер Customer Service
Скачать файл PDF
Скачать документ Word