1

Назначение объекта на расписание средствами Remote API

Topic: Назначение объекта на расписание средствами Remote API

Всем привет!

Помогите подобрать запрос для назначения объекта на расписание.
Нужно выполнить по сути эту операцию.

Думаю, что мне подойдёт запрос route/update_round и параметр

"u":<long>,    /* объект, назначенный на этот рейс: если не указан, то будет назначен первый объект из массива cu, который вышел из первой контрольной точки */

Но как сформировать этот запрос так, чтобы не трогать все остальные поля рейса?

2

Назначение объекта на расписание средствами Remote API

(edited by shmi 02/06/2014 14:16:16)

Re: Назначение объекта на расписание средствами Remote API

Обновить одно-единственное поле не получится - в запрос нужно передавать полноценный валидный JSON.

Самый простой метод
1. Запросить данные при помощи route/get_round_data
2. Изменить значение желаемого поле
3. Отправить измененный JSON на сервер для сохранения при помощи route/update_round

3

Назначение объекта на расписание средствами Remote API

Re: Назначение объекта на расписание средствами Remote API

shmi, понял, спасибо.

4

Назначение объекта на расписание средствами Remote API

Re: Назначение объекта на расписание средствами Remote API

Возобновляю тему.
Запросу route/get_round_data вторым параметром нужен массив ID рейсов ("col":[<long>]). Я пытаюсь получить эти ID с помощью route/load_rounds - эта функция действительно возвращает много рейсов, но у них у всех ID рейса почему-то равен нулю. Типа такого в ответе:

{
    "id": 0,
    "n": "15 маршрут от ул. Кирова _15_1 Кирова (сторона горы) - _15_14 ул. Бульварная",
    "d": "",
    "sh": "15:41 - 16:11",
    "f": 16,
    "tz": 134232128,
    "u": 1262779,
    "at": 1401363480,
    "vt": 1401363480,
    "vp": 900,
    "sts": 1179648,
    "st": {
        ...
    }
},
{
    "id": 0,
    "n": "15 маршрут от ул. Кирова _15_1 Кирова (сторона горы) - _15_14 ул. Бульварная",
    "d": "",
    "sh": "16:51 - 17:21",
    "f": 16,
    "tz": 134232128,
    "u": 1262779,
    "at": 1401367680,
    "vt": 1401367680,
    "vp": 900,
    "sts": 1179648,
    "st": {
        ...
    }
}
...
5

Назначение объекта на расписание средствами Remote API

Re: Назначение объекта на расписание средствами Remote API

Попробуйте найти маршруты с помощью core/search_items указав "itemsType": "avl_route" и "flags": "0x801", в соответсвии с format/route.

6

Назначение объекта на расписание средствами Remote API

Re: Назначение объекта на расписание средствами Remote API

shmi wrote:

Попробуйте найти маршруты с помощью core/search_items указав "itemsType": "avl_route" и "flags": "0x801", в соответсвии с format/route.

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

7

Назначение объекта на расписание средствами Remote API

Re: Назначение объекта на расписание средствами Remote API

Так, что-то я подзапутался.

Попробовал запрос route/get_all_rounds. Он возвращает три ветки:
- actual
- history
- virtual

Я так понял, что в actual и history попадают те рейсы, которые либо уже завершены, либо в процессе, но в любом случае объекты на них уже назначены. Т.е. эти ветки меня не интересуют.

Остаётся ветка virtual, но туда попадают рейсы, которые ещё только ожидаются и даже не имеют ID. Т.е. если у меня есть расписание, и я на его вкладке "Объекты" выбрал один или несколько объектов, но расписание ещё не активировалось, то этот ещё несуществующий рейс попадает как раз в ветку virtual. Выходит, что это тоже не мой случай! Т.к. моя задача (см. самый верхний пост) именно что назначить объекты для расписания там, где они вообще ещё не назначены.

===

Таким образом, я пришёл к тому, что мне нужно смотреть не на редактирование рейсов, а на редактирование расписаний, т.е. на запрос route/update_schedule. У расписания есть параметр units, который видимо позволяет задать список объектов.

{    "itemId":<long>,
    ...
    ,
    "cfg":{
        ...
        "units":[<long>],
        ...
      }}

Правильно ли то, что в моё случае нужно редактировать именно расписания, а не рейсы?
Если всё-таки расписание нужно редактировать, то наверно единственный способ получить их - с помощью core/search_items ("itemsType": "avl_route" и "flags": "0x401"). Так?