Метод assignPerformersToVehicles
Метод для назначения водителей на автомобили. Если автомобиль уже занят, предыдущий водитель снимается и назначается новый, указанный в запросе. В случае, если на определенную дату хотя бы на один из ресурсов (автомобиль/водитель) назначено расписание, то указанные водитель и машина на этот день не меняются.
Для назначения водителей на автомобили по API используется структура application/xml и HTTP-метод POST.
URL: /rest/2/distribution-api/objects/assignPerformersToVehicles
Поддерживаемые атрибуты:
№ | Название поля | Обязательность | Описание |
1 | performerName | Да, если не указан performerExternalID | Имя водителя |
2 | performerExternalId | Да, если не указан performerName | Идентификатор водителя во внешней системе |
3 | vehicleName | Да, если не указан vehicleExternalID | Имя автомобиля |
4 | vehicleExternalID | Да, если не указан vehicleName | Идентификатор машины во внешней системе |
5 | date | Нет | Дата, на которую водитель назначается на автомобиль. Дата не может быть указана в прошлом. Примечание Дату обязательно указывать в том случае, если назначение водителя на машину должно быть отражено на Экране планирования (назначение на конкретный день). Если не указать дату в запросе, назначение водителя на машину произойдет только в дефолтных настройках (Водители, /wiki/spaces/MAX/pages/3608188). |
Примечания
Если поле performerExternalId заполнено, оно будет использовано для идентификации водителя, если нет - водитель будет идентифицирован по имени (performerName). Если заполнены оба поля, то водитель будет идентифицирован по связке имени и внешнего идентификатора.
Та же логика работает для полей vehicleName и vehicleExternalID.
Пример запроса:
<?xml version="1.0" encoding="UTF-8"?> <apiRequest> <sessionID>545d1a3f6b2445019a369c9477c6dc36</sessionID> <allocationsDetails> <allocations> <allocation performerName="Виктор Иванов" vehicleName="А 609 КМ" performerExternalId ="Водитель 4" vehicleExternalId="Машина 4" date="24.02.2016" /> </allocations> </allocationsDetails> </apiRequest>
Пример ответа:
<?xml version="1.0" encoding="UTF-8"?> <apiResponse version="1.0"> <objects> <updatedObject> <name>Виктор Иванов - А 609 КМ</name> </updatedObject> </objects> </apiResponse>
Возможные ошибки:
причина | ошибка |
При указании некорректного sessionID | 1009 - "Provided credentials are invalid" |
При вводе некорректного имени водителя | 1206 - "Performer is not found" |
При попытке назначить водителя на машину из другого депо | 1234 - "Performer and vehicle have different areas of control" |
При попытке назначить водителя, который имеет не уникальное имя в системе | 1302 - "There are more than one performer with the same name. Please rename the performers or use the External ID field to reference the performer. Performer name: performerName" |
При вводе некорректного имени автомобиля | 1304 - "Vehicle is not found" |
При попытке назначить машину, которая имеет не уникальное имя в системе | 1316 - "There are more than one vehicle with the same name. Please rename the vehicles or use the External ID field to reference the vehicle. Vehicle name: vehicleName" |
При попытке привязать водителя/машинку, связанных с ДС, на который у пользователя нет прав | 1019 - "User with provided credentials doesn't have AoC access or AoC doesn't exist" |
При попытке задать прошлую дату | 1214 - "Invalid value for parameter: date has already passed" |
При попытке назначить водителя, имя которого не соответствует значению driverExternalID | 2022 - "The driver is not found by same name and external id: performerExternalID<=>Performer" |
При попытке назначить машину, имя которой не соответствует значению vehicleExternalID | 2023 - "При попытке назначить машину, имя которой не соответствует значению vehicleExternalID" |
При попытке назначить водителя с уже запланированным расписанием на другую машину. | 2028 - "The selected driver has allocated orders" |