Публикация

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

Баг: миллисекунды то выводятся, то нет

Включаем заголовок X-Lognex-Format-Millisecond: true

Итерируемся по контрагентам по полю 'updated'.

Делаем первый  запрос на получение контрагентов с параметрами {u'limit': '100', u'order': 'updated,asc;id,asc'} -- https://online.moysklad.ru/api/remap/1.1/entity/counterparty?limit=100&order=updated%2Casc%3Bid%2Casc
Получаем 100 контрагентов, у которых поле updated указано без миллисекунд.
Последним идёт контрагент с id='7a87ad07-b673-11e3-41a3-002590a28eca' и updated='2014-05-20 18:42:56'.

Делаем второй запрос с параметрами {'filter': u'updated>2014-05-20 18:42:56', u'limit': '100', u'order': 'updated,asc;id,asc'} -- https://online.moysklad.ru/api/remap/1.1/entity/counterparty?filter=updated%3E2014-05-20+18%3A42%3A56&limit=100&order=updated%2Casc%3Bid%2Casc
Мы подставили updated последнего контрагента из предыдущего запроса, однако первым элементом получаем снова этого же контрагента c id='7a87ad07-b673-11e3-41a3-002590a28eca', однако поле updated на этот раз пришло с миллисекундами: '2014-05-20 18:42:56.739'

Дальше идёт полный фарш - какие-то контрагенты с миллисекундами, какие-то без.

Кроме полного бардака с форматом даты-времени, про который говорили, что он исправлен, получается, что невозможно нормально проитерироваться без получения дублей. А те, кто не использует вывод миллисекунд, получают скрытую особенность -- условие "строго больше" работает как "больше либо равно", из-за того, что внутри АПИ используются миллисекунды, которые не видны снаружи.

Вася Садовников Завершено

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

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

0
Avatar

Здравствуйте.

Подскажите, вы напрямую работает или через какую-то python библиотеку? Пробовали через curl/postman аналогичные запросы? Нам не удалось воспроизвести проблему при аналогичном обращении в нашу поддержку. Если сможете подсказать, как это воспроизвести, то постараемся помочь.

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

Добрый день!

Работаю через питоновскую библиотеку requests. Однако, в чём разница? АПИ всё-равно работает только с содержимым HTTP-запросов. Ответы АПИ никак не обрабатываются, поле "updated" извлекается как строка. При запросах через curl всё то же самое - часть дат с миллисекундами, часть без.

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

Выцепив конкретную запись через limit и offset, обнаружил, что от запроса к запросу миллисекунды то появляются, то исчезают, дописал детали в тикет.

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

Разобрались с проблемой "пропадания миллисекунд". Теперь должно корректно работать всегда.

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

Здравствуйте. Мы сделали второй подход к вашей проблеме и разрешили её окончательно! Пожалуйста, проверьте ещё раз.

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