De vrije velden hebben nogal wat implementaties gekend, die niet altijd gepaard gingen met een hoge mate van technische en operationele volwassenheid. In Exact Online Premium zal hier naar verluidt weer een nieuwe poging in gewaagd worden.
Paar algemene waarschuwingen:
- Het is onbekend in hoeverre het ophalen van vrije veldwaardes via de Exact Online REST-API’s momenteel stabiel is en stabiel blijft.
- Het algemeen advies is daarom om vrije velden zo weinig mogelijk te gebruiken.
- Invantive SQL maakt ophalen extra velden over meerdere administraties eenvoudig, maar let op: de betekenis van een extra veld met een uniek nummer kan per Exact Online administratie anders zijn.
Meer informatie over de extra velden is ook te vinden in Inlezen extra velden van Exact Online artikelen.
In een voorbeeld Exact Online-administratie staan meerdere extra velden, waarbij FreeItem10
een vrije tekstuele waarde heeft gekregen:
De volgende query achter de bovenstaande vraag laat geen informatie zien over het extra veld en dat is ook wat verwacht wordt:
select division
, id
, code
, freetextfield_10
from itemsincremental@eol
where division = DIVISIECODE
and code = '20220225-0'
Via de REST-tabellen kan de waarde van het extra veld wel opgevraagd worden via de tabelfunctie ItemExtraFields
:
select division
, itemid
, number
, description
, value
from itemextrafields@eol
( DIVISIECODE
, to_guid('791215f8-5dfb-4e0a-873e-4b24b189c5dd') /* ID van het artikel. */
, trunc(sysdate) /* Wijzigingen van vandaag en later. */
)
met als resultaat:
De oorspronkelijke Exact Online-tabelfunctie had nogal wat beperkingen, maar de volledige lijst kan nu ook opgevraagd worden met maar 1 API-call per 60 vrije veldwaardes:
select ief.division
, ief.itemid
, ief.number
, ief.description
, ief.value
from ExactOnlineREST..ItemExtraFields
( division => null
, itemId => null
, modified => to_date('19700101', 'YYYYMMDD')
) ief
met als resultaat:
De aanbevolen aanpak voor extra velden en hun waardes is echter het gebruik van de XML-tabel voor artikelen. Die heeft veel minder API-calls nodig dan ItemExtraFields
, plus heeft zich jarenlang bewezen als stabiel en betrouwbaar:
select division_code
, code_attr
, description
, itemextrafields_extrafield10
from exactonlinexml..items
where division_code = DIVISIECODE
and code_attr = '20220225-0'
met als resultaat:
Met ingang van versie 22.0.474 zal het opgeven van modified
niet meer nodig zijn als alle waardes opgehaald moeten worden. De volgende query loopt dan over alle administraties en artikelen heen:
select *
from ItemExtraFields@eol
Dit maakt deze tabelfunctie ook zichtbaar voor Power BI en Tableau-gebruikers via Invantive Cloud.