Публикация

подписчиков: 2 Подписаться
0
Avatar

Обновление поля API

Как обновить конкретное поле (в моем случае заказа), например имя (контрагента), средствами API?

Тимур Мушарапов

Войдите в службу, чтобы оставить комментарий.

Комментариев: 10

0
Avatar

На примере заказа покупателя. У заказа есть поле agent. Само по себе оно представляет ссылку на какого-то контрагента.

Вы можете изменить ссылку у заказа, чтобы она указывала на другого контрагента.
Метод изменения заказа
https://online.moysklad.ru/api/remap/1.1/doc/index.html#%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82-%D0%B7%D0%B0%D0%BA%D0%B0%D0%B7-%D0%BF%D0%BE%D0%BA%D1%83%D0%BF%D0%B0%D1%82%D0%B5%D0%BB%D1%8F-%D0%B7%D0%B0%D0%BA%D0%B0%D0%B7-%D0%BF%D0%BE%D0%BA%D1%83%D0%BF%D0%B0%D1%82%D0%B5%D0%BB%D1%8F-put
Для изменения одного поля нужно передать примерно следующее:

{
  "agent": {
    "meta": {
        "href": "https://online.moysklad.ru/api/remap/1.1/entity/counterparty/71d48933-fd85-11e5-9464-e4de00000005",
        "type": "counterparty",
        "mediaType": "application/json"
    }
  }
}



Либо вы можете изменить самого контрагента.
Метод изменения контрагента
https://online.moysklad.ru/api/remap/1.1/doc/index.html#%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%B0%D0%B3%D0%B5%D0%BD%D1%82-%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%B0%D0%B3%D0%B5%D0%BD%D1%82-put
Для изменения имени передайте


{

"name": "new_name"

}

Dtrufanov 0 проголосовали
Действия с комментариями Постоянная ссылка
0
Avatar

Скажите, пожалуйста, а почему не проходит подобный запрос?

exec('curl -u "admin:pass" https://online.moysklad.ru/api/remap/1.1/entity/counterparty/' . $company['id'] . '-X PUT -d name=' . $name, $response, $return_var);

Или как это передать средствами curl php.
Не получается.
Тимур Мушарапов 0 проголосовали
Действия с комментариями Постоянная ссылка
0
Avatar

К сожалению, не могу проконсультировать по php.

Если сообщите, какой запрос делаете (адрес, метод, содержимое) и какой результат получаете, постараюсь помочь.

Dtrufanov 0 проголосовали
Действия с комментариями Постоянная ссылка
0
Avatar

Этот код должен быть понятен, но данные не обновляются. Возвращается результат 0.

Это не столько php, сколько unix curl.

exec('curl -u "admin:pass" -H "Accept: application/json"  -X PUT -d "{`name`: `' . $name . '`}" https://online.moysklad.ru/api/remap/1.1/entity/counterparty/' . $company["id"];
Тимур Мушарапов 0 проголосовали
Действия с комментариями Постоянная ссылка
0
Avatar

Кавычки в json выглядят странно. Я бы предложил использовать
-d '{"name": "name"}'

Может это и правильно, но странными выглядят пробелы, например здесь:
...counterparty/' . $company["id"]

И хорошо бы понять, что отвечает сервер. Для этого должен помочь параметр -v

Dtrufanov 0 проголосовали
Действия с комментариями Постоянная ссылка
0
Avatar

В рамках скрипта не знаю. При запуске из консоли просто выводит в стандартный поток, то есть на консоль.

Dtrufanov 0 проголосовали
Действия с комментариями Постоянная ссылка