Hoe kan ik via de Athena API van Bouw7 de standen per security code en kostensoort opvragen?
De URL is:
https://athena.bouw7.nl/project-control/{project_id}/cost-type/{cost_type}/security-codes
Hoe kan ik via de Athena API van Bouw7 de standen per security code en kostensoort opvragen?
De URL is:
https://athena.bouw7.nl/project-control/{project_id}/cost-type/{cost_type}/security-codes
In release 24.0.739 en later is er een domain value CostTypes die hiervoor gebruikt kan worden als in onderstaande code voor gebruik met Power BI zoals beschreven in Add new Athena API endpoints to Bouw7 / Exact Online Bouw :
declare
l_unique_id varchar2;
begin
cloud_http.set_response_content_type('application/json');
cloud_http.set_response_status_code(200);
--
-- Use the secured channel to Bouw7 to retrieve the security codes.
--
dbms_output.put_line('Retrieve security codes.');
l_unique_id := to_char(newid());
insert into Bouw7.Native.NATIVEPLATFORMSCALARREQUESTS
( url
, HTTP_METHOD
, ORIG_SYSTEM_GROUP
, ORIG_SYSTEM_REFERENCE
, HTTP_DISK_CACHE_USE
, HTTP_DISK_CACHE_SAVE
, HTTP_DISK_CACHE_MAX_AGE_SEC
, fail_on_error
)
select 'https://athena.bouw7.nl/project-control/'
|| to_char(pjt.id)
|| '/cost-type/'
|| cte.code
|| '/security-codes'
, 'GET'
, ''
|| '{'
|| jsonelement('project_id', pjt.id)
|| ', '
|| jsonelement('cost_type_code', cte.code)
|| ', '
|| jsonelement('cost_type_description', cte.description)
|| '}'
orig_system_group
, l_unique_id
, true
, true
, 3600 * 20 /* 20 hours cache */
, true
from projects pjt
join CostTypes cte
;
--
-- Retrieve the JSON answer and wrap it once more in another
-- JSON.
--
for r
in
( select jm.project_id
, jm.cost_type_code
, jm.cost_type_description
, jte.payload
from NATIVEPLATFORMSCALARREQUESTS rst
join jsontable
( ''
passing rst.orig_system_group
columns project_id varchar2 path 'project_id'
, cost_type_code varchar2 path 'cost_type_code'
, cost_type_description varchar2 path 'cost_type_description'
) jm
join jsontable
( 'items[*]'
passing rst.result_text
columns payload varchar2 path '::self'
) jte
where rst.orig_system_reference = l_unique_id
for json auto
)
loop
--dbms_output.put_line(r.json);
cloud_http.append_to_response_body_text(r.json);
end loop;
end;
Ik krijg helaas onderstaande melding±
An error occured - 28830ea4-ab76-4a41-ae58-d6370bcd9dcf
itgengpr015:
Onbekende tabel ‘COSTTYPES’.
Mogelijke geldige alternatieven: Bouw7.Contract.PurchaseOrderCostTypes, Garbages, PurchaseOrderCostTypes, ContactTypes, HourTypes, CostCenters, Contacts.
Advies is nogmaals te proberen zodra release 24.0.739 in productie genomen is.
Deze nieuwe release is/wordt in productie genomen op Invantive Cloud.
Voor meer informatie zie:
Dit tabellen deden het wel, maar nu niet meer.

In ieder geval deze endpoints:
https://athena.bouw7.nl/api-reference/getTotalChapt
https://athena.bouw7.nl/api-reference/getTotalSecurityCodes
Als ik de module uitvoer in Invantive wordt er wel data teruggeven, alleen op het moment dat ik open in Power BI dan de volgende melding:
Advies is om de versies te vergelijken. Waarschijnlijk draait Invantive Cloud momenteel een nieuwere versie dan Invantive Bridge Online.
Een nieuwe release zal zoals boven beschreven in productie genomen worden. Dit zal naar verwachting voor de zomerfreeze zijn die begint op 15 juli 2025.
Een nieuwe release met deze functionaliteit is inmiddels in productie genomen.
Ik blijf helaas foutmelding krijgen. Wat kan ik hier aan doen?
Is het mogelijk om een (geanonimiseerde) schermafdruk van de details van het verzoek in Invantive Bridge Online Monitoring toe te voegen zoals beschreven in Meer inzicht met nieuwe Bridge Online Monitoring?
De details vindt u door te klikken op het downloadverzoek welke het onderwerp van dit onderwerp representeert.
Het downloadverzoek heeft meestal een SQL-statement waarin de tabelnaam zichtbaar is.
Gelieve tenminste de volgende gegevens zichtbaar te laten van beide kolommen:
Bijvoorbeeld:
Controleer zorgvuldig dat u zich aanmeldt op de Bridge Online-website die ook gebruikt wordt vanuit Power BI en met dezelfde gebruikersnaam. U ziet alleen de verzoeken van de Invantive Cloud-gebruiker waarmee u zich aanmeldt op de website.
Er zijn vier servers in gebruik:
bridge-online.cloudapp-online.cloudbridge-online.invantive.comapp-online.invantive.comDe gebruikte server ziet u in uw script of broncode van rapportage.
Zorg ervoor dat u het verzoek eerst selecteert om de details weer te geven. Er hoort maar één verzoek zichtbaar zijn in de schermafbeelding.
Controleer ook zorgvuldig of het verzoek een pad heeft met odata4 of apps. Verzoeken met andere paden zijn over het algemeen niet relevant voor dit doel.
Daarnaast zal de Invantive Cloud-gebruiker die de foutmelding heeft op zijn e-mailadres veelal een e-mail ontvangen met een foutmelding en tips als er sprake is van een foutmelding in Power BI, Power Query, Azure Data Factory, Qlik of Tableau.
Advies is om de spam van de betrokken gebruiker te controleren op dergelijke e-mails verzonden vanaf support@invantive.com.
De achterliggende foutmelding treedt alleen bij gelijktijdig ophalen vanuit Power BI van meerdere applicaties. In Systeemmelding en in Monitoring zie ik staan:
itgenclr003
Collection was modified; enumeration operation may not execute.
Er is een onbekende fout opgetreden.
bij de insert op Bouw7.Native.NATIVEPLATFORMSCALARREQUESTS.
Fases:
De call stack is:
System.InvalidOperationException at System.Collections.Generic.List`1.Enumerator.MoveNext()
at Invantive.Data.GenericProvider.AddNativePlatformRequestsRows(GlobalState owner, ExecutionOptions executionOptions, IProviderManager manager, ConcurrentBag`1 data) at Invantive.Data.Providers.OData.ODataProvider.FetchYieldUnfilteredInternal(GlobalState owner, ExecutionOptions executionOptions, SqlExecutionStep sqlExecutionStep, EntityFieldCollection entityFields, QueryObject queryObject, ParameterList parameters, Boolean fetchSingle, Boolean fetchCountFirst, Int32 pagingSteps, Boolean fetchCount)
at Invantive.Data.GenericProvider.FetchYieldUnfiltered(GlobalState owner, ExecutionOptions executionOptions, SqlExecutionStep sqlExecutionStep, EntityFieldCollection entityFields, QueryObject queryObject, ParameterList parameters, Boolean fetchSingle, Boolean fetchCountFirst, Int32 pagingSteps, Boolean fetchCount) at Invantive.Sql.V1.DataSourceOrFunctionWithRotatorTree.GetDataEnumerator(GlobalState owner, ExecutionOptions executionOptions, SqlExecutionStep sqlExecutionStep, QueryObject queryObject, ParameterList parameters)+MoveNext() at Invantive.Data.CompressedEnumerable`1.GetEnumerator()+MoveNext() at Invantive.Sql.V1.FirehoseResultSet.Iterator(GlobalState owner, ExecutionOptions executionOptions, IQueryStatePerExecution queryStatePerExecution, SqlExecutionStep parentStep, ISparseArray outerRow, ISparseArray pSqlVariableRow, DatabaseColumnDefinitionCollection oldNewTriggerFields, ISparseArray oldTriggerRow, ISparseArray newTriggerRow, DatabaseColumnDefinitionCollection sourceTriggerFields, ISparseArray sourceTriggerRow)+MoveNext() at Invantive.Sql.V1.FirehoseResultSet.GetDataEnumerator(GlobalState owner, ExecutionOptions executionOptions, IQueryStatePerExecution queryStatePerExecution, SqlExecutionStep parentStep, ISparseArray outerRow, ISparseArray pSqlVariableRow, DatabaseColumnDefinitionCollection oldNewTriggerFields, ISparseArray oldTriggerRow, ISparseArray newTriggerRow, DatabaseColumnDefinitionCollection sourceTriggerFields, ISparseArray sourceTriggerRow)+MoveNext() at Invantive.Data.CompressedEnumerable`1.GetEnumerator()+MoveNext()
at Invantive.Sql.V1.FirehoseResultSet.Iterator(GlobalState owner, ExecutionOptions executionOptions, IQueryStatePerExecution queryStatePerExecution, SqlExecutionStep parentStep, ISparseArray outerRow, ISparseArray pSqlVariableRow, DatabaseColumnDefinitionCollection oldNewTriggerFields, ISparseArray oldTriggerRow, ISparseArray newTriggerRow, DatabaseColumnDefinitionCollection sourceTriggerFields, ISparseArray sourceTriggerRow)+MoveNext()
at Invantive.Sql.V1.FirehoseResultSet.GetDataEnumerator(GlobalState owner, ExecutionOptions executionOptions, IQueryStatePerExecution queryStatePerExecution, SqlExecutionStep parentStep, ISparseArray outerRow, ISparseArray pSqlVariableRow, DatabaseColumnDefinitionCollection oldNewTriggerFields, ISparseArray oldTriggerRow, ISparseArray newTriggerRow, DatabaseColumnDefinitionCollection sourceTriggerFields, ISparseArray sourceTriggerRow)+MoveNext() at Invantive.Data.ExtensionMethods.IteratorWithFinally`1.IteratorWithFinallyEnumerator.MoveNext() at Invantive.Data.ExtensionMethods.CacheFirstEnumerable`1.FetchFirst(GlobalState owner, ExecutionOptions executionOptions)
...
Het probleem treedt zowel bij het gelijktijdig schrijven als het enerzijds schrijven en anderzijds gelijktijdig lezen op.
Een uitbreiding is doorgevoerd waardoor het mogelijk wordt om gelijktijdig via meerdere applicatiemodule uitvoeringen te lezen en te schrijven in NativePlatformScalarRequests.
Deze uitbreiding is inmiddels als versie 24.0.750 in productie genomen op Invantive Cloud.
Het blijft niet mogelijk om meerdere gelijknamige tabellen in de in-memory driver (...@InMemoryStorage) te maken en te gebruiken vanuit meerdere gelijktijdige applicatiemodule uitvoeringen. De ontwikkelaar dient hier nog steeds zelf locking voor te verzorgen.
Deze vraag is automatisch gesloten na 1 week inactiviteit. Het laatste gegeven antwoord is gemarkeerd als oplossing.
Gelieve een nieuwe vraag te stellen via een apart topic als het probleem opnieuw optreedt. Gelieve in de nieuwe vraag een link naar dit topic op te nemen door de URL er van in de tekst te plakken.
Dit topic is 3 dagen na het laatste antwoord automatisch gesloten. Nieuwe antwoorden zijn niet meer toegestaan.