Справочный центр Wialon

Введение в 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

Если вы заметили ошибку в тексте, пожалуйста, выделите её и нажмите Ctrl+Enter.

Сообщить об ошибке

Ваше сообщение отправлено. Спасибо!

Произошла ошибка при отправке формы

Скачать файл PDF
Скачать документ Word