← Назад до блогу

Пагінація SAP OData в n8n: обмеження запитів і звіряння замовлень Business One

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

Пагінацію SAP OData зображено як аркуші замовлень, що проходять через обмежувальний шлюз до терезів для звіряння.

Перевірено за наведеними джерелами .

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

Сервісна шафа, в’язка ключів і блокнот уособлюють передумови для отримання Orders із Business One.
Почніть із визначеного розгортання та доступу з автентифікацією.

Цей посібник розглядає пагінацію 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

Однакові трафарети фільтрів накривають записи замовлень і лічильні жетони для запиту отримання даних.
Використовуйте однаковий фільтр для отримання Orders і підрахунку записів у джерелі.

Для цього прикладу пагінації SAP OData використовуйте запропоновані в статті умови отримання даних: один погоджений фільтр Orders, DocEntry разом із полями, потрібними для подальшої обробки, сортування за DocEntry та окремий запит кількості з ідентичним фільтром. SAP документує $select, $orderby та отримання кількості елементів колекції через /Orders/$count.

Виконайте наведені кроки підготовки, перш ніж увімкнути повторні запити. У документації SAP Business One 10.0 DI API поле DocEntry визначено як унікальний ключ документа; окремий урок SAP про Service Layer демонструє звернення до замовлення за цим ключем. Переконайтеся, що він є у вашій фактичній відповіді Orders.

  1. Запишіть фільтр отримання даних і використовуйте його без змін у запитах даних та кількості.
  2. Виберіть DocEntry і поля, потрібні для подальшої обробки; задайте сортування за DocEntry.
  3. Отримайте одну погоджену сторінку Orders і перевірте її масив value та анотацію продовження.
  4. Зафіксуйте відповідну кількість записів у джерелі та фактичну структуру відповіді для звіряння.

Перевірте анотацію продовження, а не копіюйте її написання з прикладу. У рекомендаціях 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

Спробуйте на практиці

Практичні завдання з n8n

Оберіть завдання й створіть робочий воркфлоу у власному середовищі n8n – до кожного завдання є п’ять поступових підказок.

Спробувати практичне завдання

Для вашої команди

Програми навчання n8n для однієї команди чи відділу – на вашому власному екземплярі n8n, з вашими інструментами й даними.

Навчання для вашої команди

Оцінка навичок n8n

Безкоштовний тест приблизно на 20 хвилин, англійською: 30 запитань у 10 напрямах і рівень від початківця до експерта. На AI Adoption Score – іншому проєкті автора цього сайту.

Дізнатися свій рівень n8n