упорядочение результатов quickbooks qbxml

#quickbooks #qbxml

#quickbooks #qbxml

Вопрос:

Я ничего не могу найти о том, как quickbooks упорядочивает результаты при запросе с помощью qbXML. Кажется, что, по крайней мере, это было бы упомянуто в этом разделе:

https://developer.intuit.com/app/developer/qbdesktop/docs/develop/exploring-the-quickbooks-desktop-sdk/query-requests-and-responses#using-maxreturned-to-specifying-the-maximum-number-of-objects-returned

Например, в этом разделе говорится:

«Чтобы продолжить просмотр объектов, соответствующих критериям запроса … если вы имеете дело со списком имен клиентов в алфавитном порядке, используйте NameRangeFilter:FromName»

Означает ли это, что благодаря использованию NameRangeFilter результаты гарантированно будут упорядочены по FromName? Если я использую ModifiedDateRangeFilter, гарантирует ли это, что результаты упорядочены по измененной дате?

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

Ответ №1:

Невозможно указать порядок результатов qbXML.

Если вы пытаетесь получить большое количество результатов, используйте итераторы — назначение итератора специально в том, чтобы вы могли просматривать большой набор результатов и не нужно было отслеживать, на чем вы остановились — итератор делает это за вас.

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

1. Спасибо! Чего я добиваюсь, так это начальной синхронизации. У пользователя QB 4k клиентов и 50k счетов. Это создает нагрузку на начальную синхронизацию и блокирует соединитель. Я хочу сказать соединителю: «Хорошо, вы отправили 100 записей с помощью этого итератора, давайте остановимся сейчас, и мы отправим следующие 100 через 15 минут при следующем подключении». Именно здесь важно знать порядок. Я согласен, что как только внешняя служба и QB будут «обновлены», порядок больше не будет иметь значения.

2. Если вы используете итераторы, вам конкретно не нужно (и не может ) этого делать. Если вы столкнулись с проблемами производительности, то все, что вы можете сделать, это замедлить обработку ответа (например, добавить в некоторые sleep() инструкции, чтобы QuickBooks получал перерыв и использовал меньший фрагмент результата (например, 25 записей за раз). Итераторы гарантируют, что вы получите все записи — вам не нужно указывать порядок, потому что они отслеживают это для вас автоматически.