AdkGet* fungerar inte mot rader på följesedel

  • 1
  • Problem
  • Uppdaterades för 2 år sedan
  • Löst
  • (Redigerad)
Arkiverad och stängd

Denna konversation är inte längre öppet för kommentarer eller svar och communityns medlemmar kan inte se det längre.

Hej, 

Efter att ha skrivit integrationer mot Visma Admin i drygt 10 år så har jag nu till slut hamnat i ett kundprojekt där jag behöver läsa ut rader från följesedel. 

Tyvärr verkar det inte fungera så bra.. 

I korthet; AdkGet-metoderna mot följesedelrader returnerar bara tomma värden. Strängar blir "", doubles blir 0, osv, även om det finns värden på raderna när jag öppnar följesedeln i Visma. 

Jag har verifierat att AdkSet-metoderna mot samma rader fungerar bra. 

Jag kan mao t.ex. sätta det levererade antalet med AdkSetDouble, men när jag hämtar upp samma följesdelsrad och kör AdkGetDouble så får jag tillbaka 0, oavsett vad jag satte med AdkSetDouble. 

I Visma Administration syns det värde jag satte med AdkSetDouble, så jag vet att det fungerar. 

Inga av anropen returnerar några felkoder, bara helt enkelt tomt innehåll. 

Betänk följande scenario: 

Jag har i Visma skapat upp en följesedel som har fått dokumentnummer 4. På den lägger jag en enda rad, kopplad mot artikel 99999. "Levererat" sätter jag till 0. 

Har tagit bort felhantering från koden nedan för att göra den mer läsbar. 

Api.Imports.AdkCreateData((int)Api.ADK.ADK_DB_DELIVERY_NOTE_HEAD);
var documentNumber = 4;
Api.Imports.AdkSetDouble(pData, (int)Api.ADK.ADK_DELIVERY_NOTE_DOCUMENT_NUMBER, documentNumber);
Api.Imports.AdkFind2(pData, 0);
double rowCount = 0;
int pDataRow = 0;
Api.Imports.AdkGetDouble(pData, (int)Api.ADK.ADK_DELIVERY_NOTE_NROWS, ref rowCount);
Api.Imports.AdkGetData(pData, (int)Api.ADK.ADK_DELIVERY_NOTE_ROWS, 0, ref pDataRow);
for (int iRow = 0; iRow < rowCount; iRow++)
{
  int pCurrentRow = Api.Imports.AdkGetDataRow(pDataRow, iRow);
  Api.Imports.AdkSetDouble(pCurrentRow, (int) Api.ADK.ADK_OOI_ROW_QUANTITY1, 100);
}
Api.Imports.AdkUpdate(pData);
Api.Imports.AdkDeleteStruct(pData);


Tittar jag på följesedeln efter att ha kört ovanstående så kommer följesedelraden att ha värdet 100 i kolumnen "Leverans". 

Om jag nu försöker hämta upp samma värde igen så får jag istället 0 från AdkGetDouble. 

Api.Imports.AdkCreateData((int)Api.ADK.ADK_DB_DELIVERY_NOTE_HEAD);
var documentNumber = 4;
Api.Imports.AdkSetDouble(pData, (int)Api.ADK.ADK_DELIVERY_NOTE_DOCUMENT_NUMBER, documentNumber);
Api.Imports.AdkFind2(pData, 0);
double rowCount = 0;
int pDataRow = 0;
Api.Imports.AdkGetDouble(pData, (int)Api.ADK.ADK_DELIVERY_NOTE_NROWS, ref rowCount);
Api.Imports.AdkGetData(pData, (int)Api.ADK.ADK_DELIVERY_NOTE_ROWS, 0, ref pDataRow);
for (int iRow = 0; iRow < rowCount; iRow++)
{
  int pCurrentRow = Api.Imports.AdkGetDataRow(pDataRow, iRow);
  double d = 0;
  Api.Imports.AdkGetDouble(pCurrentRow, (int) Api.ADK.ADK_OOI_ROW_QUANTITY1, ref d);
  // d blir alltid 0
  Console.WriteLine(d);
}
Api.Imports.AdkUpdate(pData);
Api.Imports.AdkDeleteStruct(pData);


Jag ser exakt samma sak för övriga fält, t.ex. Artikelnummer, Benämning, osv. 

Alla fält på följesedelhuvudet går däremot bra att hämta ut. 

Jag har heller inga problem att hämta ut information från t.ex. order- eller fakturarader. 

Det är endast följesedelrader som det här handlar om. 

Bifogar en skärmdump från Visma efter att "Leverans" satts till 100 med ovanstående kod. 





Tacksam om någon kan bringa klarhet i varför det inte fungerar. Utgår ifrån att det är jag som gjort något fel i användningen av api'et men har brist på idéer om vad det skulle kunna vara. 
Foto på Benny Olsson

Benny Olsson

  • 1,130 poäng 1k badge 2x thumb
  • gravt konfunderad

Publicerades för 2 år sedan

  • 1
Foto på Linnea Norden

Linnea Norden, Moderator

  • 5,870 poäng 5k badge 2x thumb
Hej Benny Olsson!

Du kommer få svar på detta via mail. 

//Linnea
Foto på Benny Olsson

Benny Olsson

  • 1,130 poäng 1k badge 2x thumb
Tack!

//Benny

Den här konversationen är inte längre öppen för kommentarer eller svar.