Я столкнулся с проблемой при интеграции с NetSuite SuiteTalk API.Они предоставляют SOAP API для управления записями / объектами ERP.Мы импортируем некоторые записи (товарно-материальные запасы) с search
вызовом и последующими searchMoreWithId
вызовами.
Мы предоставляем условия для search
вызова и получаем search_id
в ответ.Результат поиска может быть большим, поэтому мы выбираем каждую страницу результата с отдельным вызовом searchMoreWithId
, указав searchId
и pageIndex
.Документация по NetSuite SuiteTalk API - https://docs.oracle.com/cloud/latest/netsuitecs_gs/NSTWP/NSTWP.pdf.
Проблема заключается в некоторых вызовах searchMoreWithId
return empty списка записей.
Пример такого ответа с пустой страницей:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Header>
<platformMsgs:documentInfo xmlns:platformMsgs="urn:messages_2016_2.platform.webservices.netsuite.com">
<platformMsgs:nsId>WEBSERVICES...</platformMsgs:nsId>
</platformMsgs:documentInfo>
</soapenv:Header>
<soapenv:Body>
<searchMoreWithIdResponse xmlns="urn:messages_2016_2.platform.webservices.netsuite.com">
<platformCore:searchResult xmlns:platformCore="urn:core_2016_2.platform.webservices.netsuite.com">
<platformCore:status isSuccess="true"/>
<platformCore:totalRecords>98852</platformCore:totalRecords>
<platformCore:pageSize>10</platformCore:pageSize>
<platformCore:totalPages>9886</platformCore:totalPages>
<platformCore:pageIndex>66</platformCore:pageIndex>
<platformCore:searchId>WEBSERVICES_...</platformCore:searchId>
<platformCore:recordList/>
</platformCore:searchResult>
</searchMoreWithIdResponse>
</soapenv:Body>
</soapenv:Envelope>
Обратите внимание: platformCore:recordList
XML-тег в ответном документе пуст.
Я заметил постоянный шаблон - перед пустыми страницами не полный.Например, мы устанавливаем размер страницы = 10 и получаем в ответ следующее количество записей:
page 1496 - 10
page 1497 - 5
page 1498 - 0
page 1499 - 0
page 1500 - 0
page 1501 - 10
Я обнаружил только следующее упоминание об уменьшении размера страницы в официальной документации (в том же документе PDF, представленном выше):
Рассмотрите следующие возможные проблемы при выполнении поиска в веб-службах или SuiteScript, который возвращает большой набор данных.
Если запись, которая изначально соответствуеткритерии поиска обновлены и больше не соответствуют критериям, они пропускаются поиском.В этом случае некоторые записи, которые изначально были включены в результаты поиска, могут не возвращаться, и общее количество возвращенных записей может быть меньше, чем исходное общее количество результатов.
Еслисоздаются новые записи, соответствующие критериям поиска, они также возвращаются.Общее количество возвращенных записей может быть больше
после того, как вы пролистаете результаты, чем исходное общее количество
результатов, и могут быть возвращены дублированные результаты.
Результаты могутотсутствовать.Например, если запись с первой страницы результатов обновлена и она больше не соответствует критериям, другая запись
теперь помещается на первой странице.Однако, поскольку более ранние страницы
пропускаются при просмотре последующих страниц результатов поиска, эта запись
не возвращается.
В веб-службах большее или меньшее числоЗаписи могут быть возвращены после того, как вы просматриваете результаты поиска, чем количество записей, которые изначально соответствуют критериям поиска.
Страница вторая, и последующие страницы набора результатов могут содержать меньше записей, чемуказанный размер страницы.
Но не уверен, имеет ли это отношение к нашему делу.
Итак, вопросы: это нормальная ситуация?Разве это не требует дополнительной обработки или повторной попытки?