Публикация

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

Не всегда работает updatedFrom

дравствуйте!

Есть товар измененный 14.03.2018 17:35 (так и написано в интерфейсе МС).

Делаем запрос к API 
https://online.moysklad.ru/api/remap/1.1/entity/assortment?limit=100&scope=product&updatedFrom=2018-03-14%2010:37:20

В выдаче только 3 товара среди которых упомянутого в начале товара нет.

Если запросить более раннюю дату, например 10 марта, то все-равно конкретно этот товар не выдается (но выдаются некоторые другие).

Это товар, а не услуга.

Что я делаю не так?

Спасибо за ответ

Axel

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

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

0
Avatar

Добрый день.

Спасибо за обращение. Завел задачу на исправление данной ошибки.
О решении сообщим дополнительно.

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

Проблема с updatedFrom будет решена в течение недели-двух.

Могу предложить альтернативное решение: использовать фильтрацию по полю updated.

https://online.moysklad.ru/api/remap/1.1/entity/assortment?limit=100&scope=product&filter=updated>2018-03-14%2010:37:20

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

Обновление информации.

Поля updatedTo и updatedFrom скорее всего станут устаревшими. В ближайшее время исправления их работы не произойдет.

Для фильтрации по updated следует использовать фильтр filter=...

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

Предложенный Вами вариант 
"https://online.moysklad.ru/api/remap/1.1/entity/assortment?limit=100&scope=product&filter=updated>2018-03-20+08:36:56
Выдает ошибку при запросе через curl "Незивестная ошибка ... Ошибка в адресе". 
При переходе по этой же ссылке в браузере, то все ОК. 
Дело в пробеле? Если в качестве символа пробела использовать "%20", то вообще ответа нет

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

Запрос делается через PHP.

urlencode не помогает.

Пример кода на php (если убрать параметр filter , то работает отлично)

$url = urlencode('https://online.moysklad.ru/api/remap/1.1/entity/assortment?limit=100&scope=product&filter=updated>2018-02-26 08:36:56');
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_USERPWD, MS_LOGIN.':'.MS_PASS);
if(curl_errno ($ch))
{
return 'Curl Error: '.curl_errno ($ch);
}
$result = curl_exec($ch);
curl_close($ch);

header('Content-Type: text/html; charset=utf-8');
echo($url);
print_r($result);
print_r($ch);
exit;

 

 

Результат. curl выдает Resurce id #4

http://prntscr.com/iwgddj

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

через urlencode необходимо пропускать именно содержимое параметра фильтра начиная с символа ">". Скорее всего в нем и была проблема.
При всех других вариантах Ваша система отбрасывает ВСЕ переданные параметры.

Как то так
$params .= '&filter=updated'.urlencode('>'.date("Y-m-d H:i:s", $last_start_time));

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