Op Exact Online artikelen kun je extra artikelvelden definiëren.
Gebruik de nieuwe view ItemExtraFieldValues
om de waardes van de extra artikelvelden op te vragen, maar hou hierbij wel rekening met de volgende toelichting.
Historie
Historisch was dit een tabelfunctie waarbij elke SQL query verplicht de waarde van de administratie en het artikel moest meegeven als respectievelijk division
en itemId
.
Daardoor was het een beetje een ongelukkige tabelfunctie: vooral gebruikers met tienduizenden of honderdduizenden artikelen voelden de noodzaak, terwijl het aanroepen voor elk artikel telde als 1 API call en er geen slimmere API’s beschikbaar waren.
Verbeterde Artikelvelden
Exact Online heeft het commentaar ter harte genomen en sinds enige tijd is er ook een stabiele versie van de ItemExtraField
API waarmee de waardes van de extra artikelvelden van meerdere artikelen in 1x opgehaald worden. Als geen artikel meegegeven wordt, dan zullen alle extra artikelvelden teruggegeven worden; dit is niet terug te lezen in de API documentatie maar wel feitelijk. Deze verbetering maakt gemakkelijk om voor alle artikelen de extra veldwaardes op te halen of voor een artikel. Andere dwarsdoorsnedes worden niet ondersteund.
Het meegeven van de wijzigingsdatum blijft wel verplicht. Ook de stabiliteit van deze API en de leesbaarheid van foutmeldingen blijft een aandachtspunt en hopelijk wordt die in de toekomst verder verbeterd.
Bijvoorbeeld het opvragen van extra artikelvelden in administraties waar er wel extra velden gedefinieerd zijn, maar geen artikel de waardes gebruiken geeft de foutmelding:
itgenoda061: Invalid: ItemID or Modified.
The remote server returned an error: (400) Bad Request.
Controleer daarom vooraf of alle administraties tenminste een artikel bevatten met concrete waardes voor de extra artikelvelden.
Als verdere kwaliteitsslagen gemaakt zijn, kan ook meer gewerkt worden met de wijzigingsdatum om gegevenmutaties incrementeel beschikbaar te stellen. Voor echt grotere artikelassortimenten vanaf 10.000 artikelen zal enige ondersteuning voor de optimalisatie nodig blijven.
SQL Query
Met een query zoals de volgende kun je voor alle geselecteerde Exact Online administraties de extra artikelvelden opvragen:
--
-- Kies een paar administraties die juist geconfigureerd zijn.
--
use 868035, 868057
--
-- Vraag waardes van extra artikelvelden op.
--
select sdn.code
, sdn.created
, ief.*
from SYSTEMPARTITIONS@DataDictionary spn
join systemdivisions sdn
on sdn.code = to_number(spn.code)
join itemextrafields(sdn.code, null, sdn.created) ief
where spn.is_selected = true
Power BI
Power BI ondersteunt op dit moment geen OData queries met parameters. Om die reden is een view ItemExtraFieldValues
toegevoegd in de volgende release die de waardes van de artikelvelden uit alle geselecteerde Exact Online administraties ophaalt.
De meeste Invantive SQL views gebruiken alleen tabellen die bekend zijn binnen de driver. Het is daarom niet mogelijk om het bovenstaande SQL statement te gebruiken om alleen de geselecteerde divisies op te halen. In plaats daarvan gebruikt de view ExactOnlineREST.System.Settings
waar precies 1 rij uit terugkomt voor elke geselecteerde Exact divisie. Vervolgens wordt die gerelateerde aan SystemDivisions
om de aanmaakdatum van de administratie te bepalen en zo alle artikelvelden gewijzigd sinds de start van de administratie op te vragen:
select ief.*
from ExactOnlineREST.System.settings stg
join systemdivisions sdn
on sdn.code = stg.division
join itemextrafields(sdn.code, null, sdn.created) ief
where sdn.status = 1 /* Active. */
Alternatieven voor Artikelvelden
Het is ook mogelijk om waardes van de artikelvelden via de XML API’s op te halen zoals ExtraFieldDefinitionsEx
en Items
. Meer informatie vind je door te zoeken op “extra fields” in de Exact Online driver documentatie.
Het inlezen van waardes voor extra velden is momenteel uitsluitend mogelijk via de XML API’s zoals beschreven bij Inlezen extra velden van Exact Online artikelen.