Пагінація SAP OData в n8n: обмеження запитів і звіряння замовлень Business One
Налаштуйте пагінацію SAP OData для Orders у Business One 10.0: перевірте посилання продовження, обмежте запити й звірте записи перед подальшою обробкою.

Перевірено за наведеними джерелами .
Визначте мету пагінації SAP OData та передумови

Цей посібник розглядає пагінацію SAP OData для отримання Orders лише на читання з наявного розгортання SAP Business One 10.0 Service Layer. Мета — переходити за посиланнями продовження в межах явно заданих обмежень запитів, а потім перевіряти рядки та ключі документів перед подальшою обробкою. Надана документація підтверджує окремі механізми контролю, але не описує повністю працездатний робочий процес, що охоплює автентифікацію, розв’язання відносних посилань, налаштування завершення та блокування подальшої обробки; ці деталі потрібно перевірити для конкретного розгортання.
Зафіксуйте фактичний рівень виправлень Business One, спосіб розміщення, кінцеву точку Service Layer і версію вузла HTTP Request у n8n. Довідник SAP для Business One 10.0 позначає OData V3 як застарілий починаючи з FP 2405 і зберігає рекомендації для OData V4. SAP демонструє отримання Orders через /b1s/v2/Orders.
Почніть з уже налаштованого в n8n погодженого запиту читання з автентифікацією. SAP документує HTTPS і збереження сесії за допомогою файлів cookie SessionID та ROUTEID; n8n потребує методу автентифікації, якого очікує цільовий сервіс. У цьому посібнику припускається, що збереження сесії для послідовних запитів уже забезпечено.
Sources: Service Layer API Reference, Logging In and Out Using Basic Authentication with Service Layer, n8n-docs/docs/integrations/builtin/credentials/httprequest.md at main · n8n-io/n8n-docs · GitHub, Exploring Various Data Retrieval Options Using GET request
Виберіть запит і перевірте одну відповідь Orders

Для цього прикладу пагінації SAP OData використовуйте запропоновані в статті умови отримання даних: один погоджений фільтр Orders, DocEntry разом із полями, потрібними для подальшої обробки, сортування за DocEntry та окремий запит кількості з ідентичним фільтром. SAP документує $select, $orderby та отримання кількості елементів колекції через /Orders/$count.
Виконайте наведені кроки підготовки, перш ніж увімкнути повторні запити. У документації SAP Business One 10.0 DI API поле DocEntry визначено як унікальний ключ документа; окремий урок SAP про Service Layer демонструє звернення до замовлення за цим ключем. Переконайтеся, що він є у вашій фактичній відповіді Orders.
- Запишіть фільтр отримання даних і використовуйте його без змін у запитах даних та кількості.
- Виберіть DocEntry і поля, потрібні для подальшої обробки; задайте сортування за DocEntry.
- Отримайте одну погоджену сторінку Orders і перевірте її масив value та анотацію продовження.
- Зафіксуйте відповідну кількість записів у джерелі та фактичну структуру відповіді для звіряння.
Перевірте анотацію продовження, а не копіюйте її написання з прикладу. У рекомендаціях SAP для конкретних протоколів зазначено @odata.nextLink для V4 та odata.nextLink для V3, тоді як урок з отримання даних використовує непослідовну термінологію. На нашу думку, краще почати з перевірки отриманих даних, ніж з адаптації знайомого шаблону пагінації.
Sources: Exploring Various Data Retrieval Options Using GET request, Paginate the Selected Orders | SAP Help Portal, Query Options | SAP Help Portal, Documents Object Members - SAP B1 SDK Help
Налаштуйте пагінацію за посиланням на наступну сторінку з обмеженнями

У HTTP Request увімкніть Pagination і виберіть Response Contains Next URL. Задайте вираз Next URL, який читає поле продовження, виявлене у вашій відповіді. Зберігайте параметри запиту продовження, надані сервером. Якщо посилання відносне, перевірте його розв’язання у вашому розгортанні, перш ніж продовжувати; надана документація не визначає обробку обох варіантів посилань — відносно кореня та відносно сервісу.
Для останньої сторінки, яка містить записи, але не має анотації продовження, довідник n8n рекомендує власну умову завершення на основі відсутності цього поля. Той самий довідник містить суперечливі рекомендації щодо автоматичного завершення, коли URL наступної сторінки має хибне значення (falsy). Перевірте налаштування завершення у встановленій версії вузла, замість того щоб вважати порожній URL наступної сторінки достатньою умовою.
Задайте явні обмеження за допомогою наведених нижче параметрів. Узгодьте їхні значення з відповідальним за сервіс SAP. На практиці ми радимо зупинити виконання, що досягло ліміту, і з’ясувати причину, перш ніж передавати його часткові результати далі.
| Параметр | Призначення | Обмеження |
|---|---|---|
| limitPagesFetched і maxRequests | Увімкнення жорсткого ліміту запитів | Не підтверджує завершення |
| requestInterval | Затримка між запитами | Не задокументовано як перевірку завершення |
| Timeout | Обмеження очікування заголовків відповіді | Не є загальним обмеженням часу виконання робочого процесу |
Перед розділенням даних збережіть свідчення на рівні сторінок: чи залишається продовження, які значення продовження траплялися та чи було досягнуто налаштованого ліміту.
Sources: Paginate the Selected Orders | SAP Help Portal, n8n-docs/docs/build/code-in-n8n/cookbook/http-request-node/pagination.md at main · n8n-io/n8n-docs · GitHub, skills/skills/n8n-loops-official/references/HTTP_PAGINATION.md at main · n8n-io/skills · GitHub, HTTP Request | Nodes | n8n Docs
Звірте замовлення та усуньте проблеми перед передаванням далі

Зберігши свідчення пагінації, використайте Split Out зі значенням value у полі Field to Split Out, щоб розділити масив замовлень кожної сторінки на окремі елементи. Відповіді з обгорткою потребують такої явної обробки. Вузол Code у n8n підтримує JavaScript і режим Run Once for All Items, тому в ньому можна розмістити власну логіку звіряння; надана документація не описує повну реалізацію збирання даних, обробки порожніх результатів і блокування.
Використовуйте запропоноване в статті правило приймання для пагінації SAP OData: передавайте дані далі лише тоді, коли пагінацію завершено, кожен рядок має DocEntry, кількість отриманих рядків дорівнює кількості унікальних значень DocEntry і обидві кількості дорівнюють відповідній кількості записів у джерелі. Проходження цих перевірок не підтверджує наявності транзакційно узгодженого знімка даних. Ми розглядаємо звіряння як умову передавання даних далі, а не як гарантію повноти.
Нижче наведено рекомендовані перевірки для усунення проблем, а не перевірені результати. Порожню вибірку приймайте лише після явного підтвердження завершення пагінації та відповідної нульової кількості записів у джерелі.
Sources: Paginate the Selected Orders | SAP Help Portal, Query Options | SAP Help Portal, skills/skills/n8n-loops-official/references/HTTP_PAGINATION.md at main · n8n-io/skills · GitHub, n8n-docs/docs/integrations/builtin/core-nodes/n8n-nodes-base.splitout.md at main · n8n-io/n8n-docs · GitHub, Documents Object Members - SAP B1 SDK Help, Using the Code node | Build | n8n Docs


