---
metadata:
  - name: generator
    content: Diplodoc Platform v5.52.0
alternate:
  - https://yandex.kz/routing/doc/en/delivery/functions/working-with-plan-fact.md
  - https://yandex.kz/routing/doc/kk/delivery/functions/working-with-plan-fact.md
  - https://yandex.kz/routing/doc/ru/delivery/functions/working-with-plan-fact.md
  - href: ru/delivery/functions/working-with-plan-fact.md
    type: text/markdown
    title: Markdown version
  - href: ../llms.txt
    type: text/markdown
    title: llms.txt
title: Яндекс Маршрутизация — функции — работа с отчетами план/факт
---
> **Documentation Index:** Fetch the complete configuration index at https://yandex.kz/routing/doc/ru/llms.txt


# Работа с отчетами План / Факт

Отчеты **План / Факт** — это инструмент для анализа точности планирования и получения сводной информации о фактических показателях.

В анализе участвуют все планирования и маршруты по всем складам компании, которые загрузили в Мониторинг. В отчетах плановые показатели сравниваются с фактическими данными по уже реализованным маршрутам.

<!-- source: ru/delivery/_includes/reports.md -->
{% note info %}

Маршруты попадают в&nbsp;отчеты **План / Факт** только на&nbsp;следующий день после завершения маршрута.

{% endnote %}
<!-- endsource: ru/delivery/_includes/reports.md -->

Данные для отчета **План / Факт** формируются ежедневно в 00:00 GMT+3. Если маршрут завершился после полуночи, актуальные данные по нему попадут в отчет только на следующий день.

## Загрузить план в Мониторинг {#add-plan}

Чтобы получить сравнительную информацию по плановым и фактическим показателям, передайте в Мониторинг решение, полученное в сервисе [Планирования](https://yandex.kz/routing/doc/ru/vrp/quickstart.md). Если этого не сделать, в отчете окажутся только фактические показатели.

В отчетах не учитывается последующее редактирование маршрута менеджером в Рабочем месте логиста или курьером в приложении [Яндекс Маршрутизация](https://yandex.kz/routing/doc/ru/rq-app/index.md).

Способ загрузки плана в Мониторинг зависит от выбранного компанией способа взаимодействия с сервисом.

### Через интерфейс Рабочего места логиста {#report-ui-add-plan}

План сохраняется в момент экспорта маршрута в Мониторинг:

1. Спланируйте маршрут через сервис [Планирования](https://yandex.kz/routing/doc/ru/vrp/quickstart.md).
2. Нажмите **Экспортировать**.
3. В окне **Экспортировать решение** выберите **Мониторинг**.

### Через API {#report-api-add-plan}

Отправьте запрос к ресурсу [route-plans](https://yandex.ru/routing/doc/ru/delivery/redoc/index.html#operation/addsPlan). В запросе нужно указать информацию о маршруте и заказах.

{% note warning %}

Маршрут с  номером, указанным в запросе, уже должен существовать в компании.

{% endnote %}

{% list tabs %}

- Windows

  **Запрос**

  cURL

  ```
  curl -H "Content-Type: application/json" -H "Authorization: OAuth <ваш-токен>" -X POST -d @<Путь_до_файла_в_кодировке_UTF-8> -i https://courier.yandex.ru/api/v1/companies/<id-вашей-компании>/route-plans
  ```

  Файл

  ```json
  [
    {
      "number":"101-2_2017-10-23",
      "nodes":[
        {
          "type":"depot",
          "arrival_time_s":25200,
          "transit_distance_m":0,
          "value":{
            "number":"0",
            "point":{
              "lat":55.799087,
              "lon":37.729377
            },
            "service_duration_s":200
          }
        },
        {
          "type":"order",
          "arrival_time_s":57526,
          "departure_time_s":57526,
          "transit_distance_m":8723,
          "used_time_window":"10:00-12:00",
          "value":{
            "number":"126",
            "point":{
              "lat":55.826326,
              "lon":37.637686
            },
            "service_duration_s":0
          }
        },
        {
          "type":"order",
          "arrival_time_s":57546,
          "departure_time_s":57546,
          "transit_distance_m":87423,
          "used_time_window":"10:00-12:00",
          "value":{
            "number":"2345",
            "address":"Address",
            "point":{
              "lat":55.826426,
              "lon":37.647686
            },
            "service_duration_s":0,
            "shared_service_duration_s":0,
            "multi_order":false,
            "customer_name":"Name",
            "shipment_size":{
              "volume_cbm":1.2,
              "weight_kg":5.1,
              "amount":4.5
            }
          }
        }
      ]
    }
  ]

  ```

  **Результат**

  Код состояния `200` в ответе означает, что ваш план успешно загружен на сервер.

- MacOS/Linux

  **Запрос**

  cURL

  ```
  curl -H "Content-Type: application/json" -H "Authorization: OAuth <ваш-токен>" -X POST -d [{"number":"101-2_2017-10-23","nodes":[{"type":"depot","arrival_time_s":25200,"transit_distance_m":0,"value":{"number":"0","point":{"lat":55.799087,"lon":37.729377},"service_duration_s":200}},{"type":"order","arrival_time_s":57526,"departure_time_s":57526,"transit_distance_m":8723,"used_time_window":"10:00-12:00","value":{"number":"126","point":{"lat":55.826326,"lon":37.637686},"service_duration_s":0}},{"type":"order","arrival_time_s":57546,"departure_time_s":57546,"transit_distance_m":87423,"used_time_window":"10:00-12:00","value":{"number":"2345","address":"Address","point":{"lat":55.826426,"lon":37.647686},"service_duration_s":0,"shared_service_duration_s":0,"multi_order":false,"customer_name":"Name","shipment_size":{"volume_cbm":1.2,"weight_kg":5.1,"amount":4.5}}}]}] -i https://courier.yandex.ru/api/v1/companies/<id-вашей-компании>/route-plans
  ```

  **Результат**

  Код состояния `200` в ответе означает, что ваш план успешно загружен на сервер.

{% endlist %}

## Построить отчет {#report}

### Через интерфейс рабочего места логиста {#report-ui}

1. Перейдите в раздел **Отчеты** → **План/Факт**.
1. Нажмите **Большой отчёт в Excel**.
1. Нажмите **Выберите период**, чтобы задать временные рамки для запланированных и выполненных маршрутов, которые нужно проанализировать.

    Вы можете как выбрать один из преднастроенных периодов (**Вчера**, **7 дней**, **30 дней**, **Прошлый месяц**), так и задать собственный произвольной продолжительности, но не более 60 дней.

    {% note info %}

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

    {% endnote %}

1. Нажмите **Подготовить**.
  
    После выбора периода в правом верхнем углу появится значок ![](../_images/loading.png), означающий, что отчет готовится. В это время вы можете продолжать работать в любом разделе интерфейса Рабочего места логиста.

### Через API {#report-api}

Вы можете получить данные двумя методами:

- получить только [плановые метрики](#plan-only);
- получить [план-факт](#plan-fact-nodes) для каждой точки маршрута.

#### Получить только плановые метрики {#plan-only}

Отправьте запрос к ресурсу [route-plan-info](https://yandex.ru/routing/doc/ru/delivery/redoc/index.html#operation/getsRoutePlanInfo). Этот метод возвращает список маршрутов с их плановыми показателями.

**Запрос**

cURL

```
curl -H "Authorization: OAuth <ваш-токен>" -X GET https://courier.yandex.ru/api/v1/companies/<id-вашей-компании>/route-plan-info
```

**Результат**

```json
[
  {
    "id": 17872948,
    "number": "0-1-2025-03-13",
    "date": "2025-02-08",
    "plan_metrics": {
    "orders_count": 2,
    "total_transit_distance_m": 10534,
      "total_duration": {
        "value": 2882,
        "text": "0:48:02"
      }
    }
  },
  {
    "id": 18508527,
    "number": "1-1-2025-04-02",
    "date": "2025-02-12",
    "plan_metrics": {
      "orders_count": 4,
      "total_transit_distance_m": 98554,
      "total_duration": {
        "value": 10886,
        "text": "3:01:26"
      }
    }
  },
  {
    "id": 18280581,
    "number": "2-1-2025-03-13",
    "date": "2025-03-11",
    "plan_metrics": {
    "orders_count": 2,
    "total_transit_distance_m": 43246,
    "total_duration": {
        "value": 31546,
        "text": "8:45:46.358154"
      }
    }
  }
]
```

Чтобы получить отчет о маршрутах за определенный период, используйте параметры `start_date` и `end_date`. Обе даты указываются включительно.
  
**Пример**

Получить отчет по маршрутам за 12 и 13 марта 2025 года.
```
curl -H "Authorization: OAuth <ваш-токен>" -X GET https://courier.yandex.ru/api/v1/companies/<id-вашей-компании>/route-plan-info?start_date=2025-03-12&end_date=2025-03-13
```

Подробнее о параметрах запроса см. в документации [route-plan-info](https://yandex.ru/routing/doc/ru/delivery/redoc/index.html#operation/getsRoutePlanInfo).

#### Получить план-факт для каждой точки маршрута {#plan-fact-nodes}

Отправьте запрос к ресурсу [plan-fact-versioned-nodes](https://yandex.ru/routing/doc/ru/delivery/redoc/index.html#operation/getPlanFactNodesVersioned). Этот метод возвращает детальную информацию о каждой точке маршрута с плановыми и фактическими показателями.

**Как получить данные**

:  1. Для первоначальной выгрузки отправьте запрос с `prev_version` = 0.

      **Запрос**

      ```
      curl -H "Authorization: OAuth <ваш-токен>" -X GET "https://courier.yandex.ru/api/v1/analytics/companies/<id-вашей-компании>/plan-fact/versioned/nodes?prev_version=0"
      ```   
      
      **Результат**

      В ответе вы получите версию и данные:

      ```json
      {
        "version": "1234567890123",
        "data": [
          {
            "route": {
              "id": 22821698,
              "number": "0-1-2024-08-13",
              "date": "2024-08-13"
            },
            "courier": {
              "id": 4428812,
              "number": "Courier 1",
              "name": "Courier 1"
            },
            "depot": {
              "id": 109787,
              "number": "100",
              "name": "Depot",
              "timezone": "Europe/Moscow"
            },
             "fact": {
              "type": "depot",
              "status": "unvisited",
              "address": "улица Льва Толстого, 16, Москва, Россия",
              "point": {
                "lat": 55.733969,
                "lon": 37.587093
              },
              "arrival_time": null,
              "departure_time": null
              // ... другие поля
            },
            "plan": {
              "type": "depot",
              "address": "улица Льва Толстого, 16, Москва, Россия",
              "point": {
                "lat": 55.733969,
                "lon": 37.587093
              },
              "arrival_time": {
                "value": 1723525200,
                "text": "2024-08-13T08:00:00+03:00"
              },
              "departure_time": {
                "value": 1723525200,
                "text": "2024-08-13T08:00:00+03:00"
              }
              // ... другие поля
            },
            "version_status": "added"
          }
          // ... другие точки маршрута
        ]
      }
      ```

  1. Повторите запрос, указав полученную версию в `prev_version`.

     **Запрос**

     ```
     curl -H "Authorization: OAuth <ваш-токен>" -X GET "https://courier.yandex.ru/api/v1/analytics/companies/<id-вашей-компании>/plan-fact/versioned/nodes?prev_version=1769642737915"
     ```   
 
     **Результат**

     Вы получите актуальные данные:

     ```json
     {
       "version": "1234567890123",
       "data": [
         {
           "route": {
             "id": 22821698,
             "number": "0-1-2024-08-13",
             "date": "2024-08-13"
           },
           "courier": {
             "id": 4428812,
             "number": "Courier 1",
             "name": "Courier 1"
           },
           "depot": {
             "id": 109787,
             "number": "100",
             "name": "Depot",
             "timezone": "Europe/Moscow"
           },
           "fact": {
             "type": "depot",
             "sequence_pos": 0,
             "real_sequence_pos": 0,
             "status": "unvisited",
             "number": "0",
             "customer_name": null,
             "address": "улица Льва Толстого, 16, Москва, Россия",
             "failed_time_window": false,
             "point": {
               "lat": 55.764744,
               "lon": 37.522144
             }
             // ... другие поля
           },
           "plan": {
             // ... плановые показатели
           }
           // ... другие поля
         }
         // ... другие точки маршрута
       ]
     }
     ```

     Если массив `data` пустой, с момента предыдущего запроса новых данных нет.

  Если данных много, используйте параметры `page` и `per_page` для постраничной загрузки. Подробнее см. в документации [plan-fact-versioned-nodes](https://yandex.ru/routing/doc/ru/delivery/redoc/index.html#operation/getPlanFactNodesVersioned).

## Скачать отчет {#download}

<!-- source: ru/delivery/_includes/download-report.md -->
Когда отчет будет готов, появится уведомление с названием отчета (формируется автоматически и содержит даты начала и конца периода сравнения).

![](../_images/report-ready.png)

Нажмите кнопку **Скачать**, чтобы получить готовый отчет. Если вы закроете уведомление, то сможете вернуться к списку доступных отчетов позже. Для этого нажмите значок ![](https://courier.yandex.ru/vrs-doc/download.png) в правом верхнем углу.

Описание полей отчета см. в разделе [План / Факт](https://yandex.kz/routing/doc/ru/delivery/interface/plan-fact.md).

{% note info %}

Возможность скачать готовый отчет сохраняется в течение суток. По истечении этого срока отчет нужно построить заново.

{% endnote %}
<!-- endsource: ru/delivery/_includes/download-report.md -->


<!-- source: ru/delivery/_includes/feedback.md -->
<a href="../feedback">
  <span class="button">Написать в службу поддержки</span>
</a>



[//]: # (Вариант без html\: \[Написать в службу поддержки\]\(../../../feedback.md\))

<!-- source: ru/_includes/neuroexpert.md -->



<!-- endsource: ru/_includes/neuroexpert.md -->
<!-- endsource: ru/delivery/_includes/feedback.md -->
