1

Создания шаблона отчета

Topic: Создания шаблона отчета

Доброго времени суток, есть пару вопросов по созданию шаблона:
1 - "Id" шаблона оставлять пустым при создании шаблона?
2 - Параметр "p", что туда писать и/или можно ли его оставить пустым?
3 - Параметр "sch" - ограничение по времени, можно ли его оставить пустым и/или можно ли пример на его заполнения?
Пример моего кода:

<?php
    include('wialon.php');

    if (isset($_GET['access_token'])) {
        $_SESSION['token'] = $_GET['access_token'];
    }

    if (isset($_SESSION['token'])) {
        $wialon_api = new Wialon();
        $response = $wialon_api->login($_SESSION['token']);
        $json = json_decode($response, true);
        if (!isset($json['error'])) {
            $params = [
                "itemId" => *********,
                "id" => 0,
                "callMode" => "create",
                "n" => "Расход топлива1",
                "ct" => "avl_unit",
                "p" => "",
                "tbl" =>
                [
                    "n" => "stats",
                    "l" => "Statistics",
                    "c" => "",
                    "cl" => "",
                    "s" => ["fuel_level_begin", "fuel_level_end", "fuel_consumption_imp"],
                    "sl" => ["Initial fuel level", "Final fuel level", "Consumed by ImpFCS"],
                    "p" => "",
                    "sch" => [
                        "f1" => 0,
                        "f2" => 0,
                        "t1" => 0,
                        "t2" => 0,
                        "m" => 0,
                        "y" => 0,
                        "w" => 0
                    ],],
                "f" => 0x00
            ];
            print_r(json_decode($wialon_api->report_update_report(json_encode($params)), true));
        } else {
            echo WialonError::error($json['error']);
            $wialon_api->logout();
            exit;
        }
    }
    ?>

P.S. Заранее благодарен за ответы smile

2

Создания шаблона отчета

(edited by hesoy 22/02/2016 16:01:48)

Re: Создания шаблона отчета

С вопросами разобрался. Теперь ловлю ошибку 4, код:

include('wialon.php');

    if (isset($_GET['access_token'])) {
        $_SESSION['token'] = $_GET['access_token'];
    }

    if (isset($_SESSION['token'])) {
        $wialon_api = new Wialon();
        $response = $wialon_api->login($_SESSION['token']);
        $json = json_decode($response, true);
        if (!isset($json['error'])) {
            $params = [
                "n" => "Баланс топлива",
                "ct" => "avl_unit",
                "p" => "",
                "tbl" =>
                [
                    [
                        "n" => "unit_stats",
                        "l" => "Статистика",
                        "f" => 0x00,
                        "c" => "",
                        "cl" => "",
                        "p" => [
                            "address_format" => "0_10_5",
                            "time_format" => "Y-m-E_H:M:S",
                            "us_units" => 0
                        ],
                        "sch" => [
                            "y" => 0,
                            "m" => 0,
                            "w" => 0,
                            "f1" => 0,
                            "f2" => 0,
                            "t1" => 0,
                            "t2" => 0
                        ],
                        "sl" => ["Address", "Time Format"],
                        "s" => ["address_format", "time_format", "us_units"]
                    ],
                    [
                        "n" => "unit_stats",
                        "l" => "Статистика",
                        "f" => 0x00,
                        "c" => "",
                        "cl" => "",
                        "p" => "",
                        "sch" => [
                            "y" => 0,
                            "m" => 0,
                            "w" => 0,
                            "f1" => 0,
                            "f2" => 0,
                            "t1" => 0,
                            "t2" => 0,
                        ],
                        "sl" => ["Нач. уровень", "Конеч. уровень", "Потрачено"],
                        "s" => ["fuel_level_begin", "fuel_level_end", "fuel_consumption_all"],
                    ],
                ],
                "id" => 0,
                "itemId" => *********,
                "callMode" => "create"
            ];
            print_r(json_decode($wialon_api->report_update_report(json_encode($params)), true));
        } else {
            echo WialonError::error($json['error']);
            $wialon_api->logout();
            exit;
        }
    }
3

Создания шаблона отчета

(edited by deal 22/02/2016 17:38:52)

Re: Создания шаблона отчета

hesoy, по Вашим вопросам:
1. id при создании не обязателен.
2. параметр p можно оставлять пустым "", но важно учесть, что туда подайтся json-строка, т.е. Вам нужно сделать json_encode.
то же самое касатаельно параметров s, sl, c, cl.
3. в sch значения вводить по такому принципу:
fl - Обрезать интервалы - 0/1
t1, t2, f1, f2 - время от и до в минутах, т.е. кол-во часов * 60 + кол-во минут
y, m, w: месяцы, числа месяца, дни недели - подаются по битовой логике (январь + март = 1 + 4 = 5), аналогично с днями недели и числами

Пример json-а:

params={
    "n":"Новый отчет",
    "ct":"avl_unit",
    "p":"{\"bind\":null}",
    "tbl":[
        {
            "n":"unit_stats",
            "l":"Статистика",
            "f":0,
            "c":"",
            "cl":"",
            "p":"{\"address_format\":\"961609728_16_5\",\"time_format\":\"%Y-%m-%E_%H:%M:%S\",\"us_units\":0}",
            "sch":{
                "y":0,
                "m":0,
                "w":0,
                "f1":0,
                "f2":0,
                "t1":0,
                "t2":0
            },
            "sl":"[\"Address\",\"Time Format\"]",
            "s":"[\"address_format\",\"time_format\",\"us_units\"]"
        },
        {
            "n":"unit_fillings",
            "l":"Заправки",
            "f":0,
            "c":"",
            "cl":"",
            "p":"",
            "sch":{
                "y":0,
                "m":0,
                "w":0,
                "f1":0,
                "f2":0,
                "t1":0,
                "t2":0
            },
            "sl":"[\"Всего заправлено\",\"Всего топлива зарегистрировано\",\"Разница\",\"Всего заправок\"]",
            "s":"[\"filled\",\"registered\",\"difference\",\"count\"]"
        }
    ],
    "id":0,
    "itemId":265,
    "callMode":"create"
}
Head of Wialon Local Department
Gurtam
4

Создания шаблона отчета

Re: Создания шаблона отчета

Добрый день

Из явного - текстовые параметры report/update_report, такие как

"c":<text>,
"cl":<text>,
"s":<text>,
"sl":<text>,
"p":<text>,

должны передаваться текстом

// вместо
"sl" => ["Address", "Time Format"],
// пишем
"sl" => json_encode(["Address", "Time Format"]),

Также отмечу, то работа с отчётами имеет определенные особенности, в частности нельзя просто накидать любых таблиц и рассчитывать, что всё будет работать. Я рекомендую создать нужный шаблон отчёта в интерфейсе, посмотреть запрос в панели разработчика браузера
и, опираясь на его параметры, писать собственный Remote API запрос.

Кроме того, для выполнения отчёта создавать шаблон необязательно, можно передать описание шаблона напрямую в report/exec_report в параметре reportTemplate

5

Создания шаблона отчета

Re: Создания шаблона отчета

shmi, deal, Спасибо, разобрался smile

6

Создания шаблона отчета

(edited by BelC 21/09/2017 14:06:45)

Re: Создания шаблона отчета

Здравствуйте!
Подскажите, пожалуйста, что я делаю не так:

Есть выгруженный из Wialon текст шаблона:

{
    "n": "MyReport",
    "ct": "avl_unit",
    "p": "{\"bind\":null}",
    "tbl": [{
        "n": "unit_stats",
        "l": "unit_stats",
        "c": "",
        "cl": "",
        "s": "[\"address_format\",\"time_format\",\"us_units\"]",
        "sl": "[\"Address\",\"Time Format\"]",
        "p": "{\"address_format\":\"0_10_5\",\"time_format\":\"%Y-%m-%E_%H:%M:%S\",\"us_units\":0}",
        "sch": {
            "f1": 0,
            "f2": 0,
            "t1": 0,
            "t2": 0,
            "m": 0,
            "y": 0,
            "w": 0,
            "fl": 0
        },
        "f": 0
    },
    {
        "n": "unit_engine_hours",
        "l": "unit_engine_hours",
        "c": "",
        "cl": "",
        "s": "[\"fuel_avg_consumption_imp_idle_eh\",\"fuel_avg_consumption_abs_idle_eh\",\"fuel_avg_consumption_ins_idle_eh\",\"fuel_avg_consumption_fls_idle_eh\",\"fuel_avg_consumption_math_idle_eh\",\"fuel_avg_consumption_rates_idle_eh\",\"fuel_consumption_imp_move_eh\",\"fuel_consumption_abs_move_eh\",\"fuel_consumption_ins_move_eh\",\"fuel_consumption_fls_move_eh\",\"fuel_consumption_math_move_eh\",\"fuel_consumption_rates_move_eh\"]",
        "sl": "[\"fuel_avg_consumption_dirt_idle_eh\",\"fuel_avg_consumption_dart_idle_eh\",\"fuel_avg_consumption_dmpt_idle_eh\",\"fuel_avg_consumption_dut_idle_eh\",\"fuel_avg_consumption_math_idle_eh\",\"fuel_avg_consumption_rates_idle_eh\",\"fuel_consumption_dirt_move_eh\",\"fuel_consumption_dart_move_eh\",\"fuel_consumption_dmpt_move_eh\",\"fuel_consumption_dut_move_eh\",\"fuel_consumption_math_move_eh\",\"fuel_consumption_rates_move_eh\"]",
        "p": "",
        "sch": {
            "f1": 0,
            "f2": 0,
            "t1": 0,
            "t2": 0,
            "m": 0,
            "y": 0,
            "w": 0,
            "fl": 0
        },
        "f": 0
    },
    {
        "n": "unit_stats",
        "l": "unit_stats",
        "c": "",
        "cl": "",
        "s": "[\"time_begin\",\"time_end\",\"fuel_consumption_imp\",\"fuel_consumption_abs\",\"fuel_consumption_ins\",\"fuel_consumption_fls\",\"fuel_consumption_math\",\"fuel_consumption_rates\"]",
        "sl": "[\"time_begin\",\"time_end\",\"fuel_consumption_dirt\",\"fuel_consumption_dart\",\"fuel_consumption_dmpt\",\"fuel_consumption_dut\",\"fuel_consumption_math\",\"fuel_consumption_rates\"]",
        "p": "",
        "sch": {
            "f1": 0,
            "f2": 0,
            "t1": 0,
            "t2": 0,
            "m": 0,
            "y": 0,
            "w": 0,
            "fl": 0
        },
        "f": 0
    },
    {
        "n": "unit_trips",
        "l": "unit_trips",
        "c": "",
        "cl": "",
        "s": "[\"duration\"]",
        "sl": "[\"trips_duration\"]",
        "p": "",
        "sch": {
            "f1": 0,
            "f2": 0,
            "t1": 0,
            "t2": 0,
            "m": 0,
            "y": 0,
            "w": 0,
            "fl": 0
        },
        "f": 0
    },
    {
        "n": "unit_stays",
        "l": "unit_stays",
        "c": "",
        "cl": "",
        "s": "[\"duration\"]",
        "sl": "[\"stays_duration\"]",
        "p": "",
        "sch": {
            "f1": 0,
            "f2": 0,
            "t1": 0,
            "t2": 0,
            "m": 0,
            "y": 0,
            "w": 0,
            "fl": 0
        },
        "f": 0
    },
    {
        "n": "unit_engine_hours",
        "l": "unit_engine_hours",
        "c": "",
        "cl": "",
        "s": "[\"duration\",\"duration_move\",\"duration_stay\"]",
        "sl": "[\"motohours\",\"motohours_move\",\"motohours_stay\"]",
        "p": "",
        "sch": {
            "f1": 0,
            "f2": 0,
            "t1": 0,
            "t2": 0,
            "m": 0,
            "y": 0,
            "w": 0,
            "fl": 0
        },
        "f": 0
    },
    {
        "n": "unit_trips",
        "l": "unit_trips",
        "c": "[\"time_begin\",\"time_end\",\"driver\",\"trailer\",\"duration\",\"mileage\",\"trips_count\",\"eh_duration\"]",
        "cl": "[\"time_begin\",\"time_end\",\"driver\",\"trailer\",\"duration\",\"mileage\",\"trips_count\",\"motohours\"]",
        "s": "",
        "sl": "",
        "p": "",
        "sch": {
            "f1": 0,
            "f2": 0,
            "t1": 0,
            "t2": 0,
            "m": 0,
            "y": 0,
            "w": 0,
            "fl": 0
        },
        "f": 4368
    },
    {
        "n": "unit_stays",
        "l": "unit_stays",
        "c": "[\"time_begin\",\"time_end\",\"driver\",\"trailer\",\"duration\",\"stays_count\"]",
        "cl": "[\"time_begin\",\"time_end\",\"driver\",\"trailer\",\"duration\",\"stays_count\"]",
        "s": "",
        "sl": "",
        "p": "",
        "sch": {
            "f1": 0,
            "f2": 0,
            "t1": 0,
            "t2": 0,
            "m": 0,
            "y": 0,
            "w": 0,
            "fl": 0
        },
        "f": 4368
    }]
}

Пытаюсь создать шаблон на сервере, уже через jQuery в браузере (где удобнее отслеживать запросы):

$.ajax( {
    url      :  'https://hst-api.wialon.com/wialon/ajax.html?svc=report/update_report&sid=' + <ключ сессии>,
    data     :  {params: JSON.stringify( <шаблон отчета как объект> )},
    type     :  'POST',
    dataType :  'json',
    cache    :  false
} )

Мне постоянно приходит ошибка:

{"error":4}

Видел, что нужен ещё itemId, который я достаю из ответа авторизации из user.bact
И пробовал подставлять его в первый уровень объекта шаблона, но результат тот же - ошибка ввода.

Параметр callMode так же добавляю и задаю в "create".

Получаю в общем виде такое:

{
    "n": "MyReport",
    "ct": "avl_unit",
    "p": "{\"bind\":null}",
    "tbl": [.......],
    "callMode":"create",
    "itemId":"<user.bact>"
}

Что конкретно у меня неправильно с вводом ?

PS
Кстати, выполнение отчета по шаблону отлично работает, и данные из него я получаю.
Однако есть некоторые вопросы к цифрам выдаваемыми отчетом, и для этого хотелось бы увидеть его в интерфейсе Wialon, что бы разрешить их.

PS
Может быть причиной этой ошибки авторизация с правами по умолчанию ( 0x100 ) ?
Какой уровень прав требуется, что возможно было создавать отчеты ?

7

Создания шаблона отчета

Re: Создания шаблона отчета

BelC!

BelC wrote:

Что конкретно у меня неправильно с вводом ?

Описанный Вами пример - рабочий.
Единственное, что Вам не хватает - в json надо добавить "id":0 (на одном уровне с "itemId" и "callMode")

BelC wrote:

PS
Может быть причиной этой ошибки авторизация с правами по умолчанию ( 0x100 ) ?
Какой уровень прав требуется, что возможно было создавать отчеты ?

При недостаточных правах в ответе будет ошибка:

{"error":7}

Для создания шаблона отчета пользователь должен иметь право
0x0000020000000 - Создание, редактирование и удаление отчетов
см https://sdk.wialon.com/wiki/ru/local/re … ms_billing

8

Создания шаблона отчета

Re: Создания шаблона отчета

Спасибо, действительно достаточно было добавить "id":0, на момент задания вопроса это было не понятно из документации...
Прав авторизации по умолчанию хватило для добавления отчета от имени пользователя имеющего права на правку и создание отчетов.