Estimeret læsetid: 12 minutter
Hvorfor skal jeg tjekke et momsnummer (VAT-ID)?
Nå... fordi når du læser denne tekst her, sidder du i Tyskland eller Østrig... og der bliver EU-reglerne (delvist også allerede tyske eller østrigske forordninger) taget alvorligt. Heldigvis gør Business Central 365 (BC365 eller også Navision Financials) det - i princippet - ret nemt for dig.
Leverandører af elektroniske tjenester, såsom opdateringer til antivirusprogrammer, er forpligtet til at opkræve moms for denne service. Hvis køberen af disse tjenester er momsregistreret, er det kunden og ikke tjenesteudbyderen, der skylder momsen. Derfor kan udbyderen bede om kundens momsregistreringsnummer for at afklare, om de skal opkræve moms, eller om kunden skal indberette momsen. Hvis kunden ikke har et gyldigt momsregistreringsnummer, opkræver tjenesteudbyderen momsen.
Og hos dine leverandører (men fra 2025 nok også for kunder, jeg kunne ikke finde den artikel igen) er du simpelthen forpligtet til at kontrollere din forretningspartners momsregistreringsnummer og også dokumentere denne kontrol! Bureaukratireduktion... Ved et ugyldigt momsregistreringsnummer kan (og vil) fradrag for købsmoms på indkøbsfakturaen nægtes dig – dette gælder både for indenlandske og udenlandske leverandører!
Endnu værre: Hvis du fakturerer (varer eller tjenester) til en erhvervskunde med et forkert momsregistreringsnummer, vil skattemyndighederne opkræve momsen hos dig.
Hvis de ikke overholder deres pligt til at kontrollere momsregistreringsnummerets korrekthed, og det viser sig, at det momsregistreringsnummer, som deres kunde har angivet, var forkert, skal du forvente efterbetaling af skat. For at undgå denne risiko, anbefales det kraftigt at kontrollere modtagerens momsregistreringsnummer.
Årsagen er simpel: Stadig mere svindel med moms, f.eks. den stadig mulige og derfor stadig populære momskarussel.
Hvad er VIES?
VIES (System til udveksling af momsoplysninger) er en søgmaskine (ikke en database!) fra Europa-Kommissionen. Når der foretages en søgning via VIES, hentes data fra de nationale databaser for moms. Når du derfor kontrollerer et momsregistreringsnummer i BC365 eller Navision, sendes denne anmodning først fra Navision til VIES, VIES spørger derefter, afhængigt af destinationslandet, det lokale informationssystem og returnerer derefter svaret til dig via REST eller SOAP (som anmodningen). Resultatet er derefter en såkaldt kvalificeret kontrol af momsregistreringsnummeret, da du både har tjekket eksistensen af momsnummeret i Business Central eller Navision og også kan bevise det gennem protokollen , fordi denne metode også registrerer navnet og adressen på ejeren af det verificerede momsregistreringsnummer i Business Central (eller Navision) og dermed kan sammenlignes med dine indtastede data. Dette er især vigtigt, hvis en revisor eller endda en skatterådgiver tvivler på en af dine debitorer eller kreditorer. På grund af GDPdU anmelder Idea automatisk denne tvivl til revisoren.
Hvad er det online system til informationsudveksling af moms (MIAS)?
MIAS er et system til elektronisk validering af momsnummeret på erhvervsdrivende, der er registreret i Den Europæiske Union for grænseoverskridende transaktioner af varer eller tjenester.
Når du vil verificere din kundes momsnummer i en anden medlemsstat / Nordirland via MIAS-webapplikationen, sendes denne anmodning fra Business Central 365 (eller Navision) via en sikker forbindelse til den relevante nationale database for at kontrollere, om nummeret er registreret der. Hvis ja, vises status „gyldig“. Hvis nej, vises status „ugyldig“.
Afhængigt af de gældende databeskyttelsesregler oplyser nogle medlemsstater også navn og adresse på indehaverne af momsnumrene, der er registreret i de nationale databaser.
Momsnummeret er nødvendigt, hvis man f.eks. som virksomhed foretager EU-dækkende indkøb/salg. For at kontrollere, om køberen er „momsregistreret“, kan nummeret kontrolleres direkte med EU via en API.
Søgeresultatet i VIES viser kun, om momsoplysningerne er tilgængelige!
Mulige årsager til negativ feedback:
Momsregistreringsnummeret eksisterer ikke.
Momsregistreringsnummeret er endnu ikke aktiveret.
Registreringen er endnu ikke afsluttet
Hvad sker der, hvis et momsregistreringsnummer ikke bekræftes?
Hvis kunden angiver at være momsregistreret, men verifikationen via VIES-systemet ikke bekræfter dette, kan kunden anmode om en verificering hos sit lands skatteforvaltning. Derudover kan det være påkrævet at blive registreret for grænseoverskridende transaktioner inden for EU. Proceduren varierer fra land til land og ligger uden for rammerne af denne vejledning.
Disse ændringer vil ikke blive opdateret med det samme i de nationale databaser og dermed heller ikke i VIES. Nummeret kan muligvis verificeres „i morgen“.
Opsætning af momsnummerkontrol (Momsnr. kontrol) i Navision / BC365
Navision Financials 2019R2, 2.01,3.70 osv. Navision 2013R2 osv.
I disse versioner er der endnu ikke en automatiseret momskontrol. Men denne kontrol kan naturligvis også efterinstalleres her. Til RTC-versionerne finder du de nødvendige kodegrupper i slutningen af denne artikel. Til Classic Client-versionerne er SOAP ikke det første valg, især fordi SOAP allerede er officielt afviklet (men stadig fungerer i starten af 2026!). Se her.
Kontakt mig, hvis du har brug for hjælp her.
Den automatiske validering af momsnummer kan efterinstalleres i enhver Navision-version, men så er det lettere via REST API. Hvis du ikke længere har en vedligeholdelseskontrakt (der kræves 2 nye tabeller og 3 codeunits til de originale Navision/BC365-objekter), så kan vi også klare det for dig direkte i Navision-standarden!
Navision 2015, 2016, 2017
Her aktiverer du kontrollen ved at indtaste adressen på VIES (https://ec.europa.eu/taxation_customs/vies/services/checkVatService) i feltet „Momsnummer. kontrol URL“ under Bogholderi > Rapportering > Opsætning.

(Bemærk: I Navision 2015 er jeg ikke helt sikker, jeg har ikke en database klar til at tjekke lige nu. Hvis denne indstilling mangler i din Navision 2015, så gælder ovenstående afsnit. En kort tilbagemelding ville være værdsat, så kan jeg om nødvendigt rette dette afsnit.)
Navision 2016, 2017 (og eventuelt 2015?) gemmer kun „Momsnummer findes“ og „Registreret navn“ og „Registreret adresse“ i loggen. Hvis du ønsker de yderligere felter fra de efterfølgende versioner her (bekræftet gade, bekræftet postnummer, bekræftet by og om den bekræftede adresse stemmer overens med den adresse, du har gemt), så kontakt mig gerne. Svaret fra VIES er altid det samme, så det handler „kun“ om at gøre dette svar synligt hos jer.
Navision 2018, BC365 (Business Central 365)
Logikken er blevet markant ændret her, der er nu en baggrundstjeneste til kontrol. Bemærk! Skiftet skete delvist først med hotfix 35 i Navision 2018/BC14!
Denne tjeneste aktiveres under „Indstilling af momregistreringstjeneste“:

For at gøre det hele mere spændende hedder den faktiske opsætningsside sådan her

„Normalt“ behøver du ikke at lave flere end disse opsætninger, afhængigt af din Navision- eller BC365-version.
Du kan derefter klikke på de tre prikker [...] ved siden af momsregistreringsnummeret hos debitor eller kreditor og få valideringsresultatet tilbage:

Via batchbehandling af momsnumre kan du også få hundreder af momsnumre automatisk kontrolleret.
Så vidt, så godt… men hvad nu, hvis det går i stå?
Meget ofte oplever brugere af Navision 2015, 2016 og 2017 versionerne, men også Navision 2018 og BC14, denne fejlmeddelelse
Fjernserveren meldte en fejl: (400) Ugyldig anmodning.
Forbindelsen til fjernservicen kunne ikke oprettes. Fjernserveren returnerede en fejl: (400) Ugyldig anmodning. Service-URL: https://ec.europa.eu/taxation_customs/vies/services/checkVatService
Forbindelse til fjernservicen kunne ikke oprettes. Fjernserveren returnerede en fejl: (400) Bad Request. Service-URL: https://ec.europa.eu/taxation_customs/vies/services/checkVatService
Eller forespørgslen giver simpelthen slet intet resultat / intet svar. Hvis du bruger mine rettelser/tilpasninger, finder du i Navision-tjenestemappen under c:\temp de to filer VatIDrequest.txt med SOAP-forespørgslen og VatIDresult.txt med SOAP-svaret, som ofte hjælper videre.
Hvis du allerede bruger min logbog, så finder du forespørgslen og svarene i loggen.
Ved ovenstående fejbesked skal codeunits 248 (Timeout & ContentType) og 249 (Type af XML-analyse) som regel opdateres, og underfunktionen SetContentType skal tilføjes i 1290.
Da slutbrugeren typisk ikke har adgang til disse to codeunits, har jeg undladt en detaljeret beskrivelse her. Kildekoderne findes længere nede.
Tabel 226 findes ikke, eller „Metadataobjektet Tabel 226 blev ikke fundet“
Meget mærkværdigt! Der findes en Navision-version, hvor tabellerne 226 og 227 og de tilhørende sider simpelthen ikke eksisterer! Jeg tror, det kun vedrører version 14.0.45012.0, i hvert fald har jeg endnu ikke modtaget denne fejlmeddelelse i andre versioner. Tilsvarende enkel er løsningen: Fra Cu35 (Cumulative Update) af version 11.0.45373 installeres patches for KB375980 – det er tilstrækkeligt, hvis disse objekter indlæses/opdateres:
Codeunits 1751 248 249
Menu 1010
Sider 246 247 248 249
Tabeller 226, 227, 248, 249
Kumulativ opdatering 35 til Microsoft Dynamics NAV 2018 (build 45373) – Microsoft Support

Fejl under kald af System.Xml.XmlDocumentLoad med følgende besked: ‚>‘ er en uventet token

Her skal du bare indbygge
SOAPWebServiceRequestMgt.SetContentType(‚text/xml; charset=utf-8‘);
i CU248:

Tip: Tag den længere timeout med med det samme, i ældre versioner er den stadig sat til 5000 (5 sekunder). Se de to følgende fejlmeddelelser.
TIMEOUT
Her bliver forespørgselsfunktionerne fra VIES simpelthen overbelastet. Prøv igen senere. Se også „Hvad er VIES“ helt øverst.
MS_MAX_CONCURRENT_REQ
Også her er EU's servere overbelastede. Du finder her og her meget udførlige forklaringer, ...på hvordan det rod i det hele taget fungerer... eller, ofte bedre: burde fungere 🙂
I standard Navision får du ingen yderligere information om disse to fejl, du skal bare prøve igen senere. Ofte virker det allerede et par minutter senere. Se ovenfor: Med min ændring finder du i c:\temp\ forespørgslen og svaret i XML-tekstform, det hjælper ofte med at besvare netop dette spørgsmål.
Om natten mellem 23:00 og 05:00 kan tjenesten være helt utilgængelig, som dokumenteret her:
Bekræftelse af udenlandske momsregistreringsnumre
Fejlløsning med kunstig intelligens
Fejl ved nulværdier: I ældre versioner (f.eks. NAV 2009/5.0) kan rapport 11007 (Moms-Vies erklæring skat-DE) ikke håndtere nulværdier korrekt. Der kræves en hotfix.
Mhmnjaja… „Tippet“ er rent teknisk korrekt… men desværre har det absolut intet at gøre med momsnummerverifikationen, den nævnte rapport 11007 kan ikke engang sende den oprettede XML-fil via SOAP eller RestAPi 🙂
Du finder hotfixet her:
Rapporten „VAT-Vies Declaration Tax-DE“ (11007) håndterer ikke nulværdien korrekt i den tyske version af Microsoft Dynamics NAV – Microsoft Support
Verifikation: Ved brug af API-nøgler (hvis nødvendigt) skal brugernavn og adgangskode være korrekt registreret i CA (Certificate Authority).
VIES kræver ingen verifikation.
Ellers er svarene fra f.eks. Copilot snarere ... tja. For ikke at bruge ordet „skrald“ skriver jeg lige „begrænset nyttige“ 🙂
Min mening om kunstig intelligens i Navision har jeg jo allerede ytret her . Men jeg bruger gerne Copilots billedfunktion! Selv dette indlægsbillede er lavet med Copilot. Ellers er jeg dog i øjeblikket (februar 2026) slet ikke bange for at miste mit job til nogen LLM/KI som ChatGPT eller en anden 🙂
Opdaterede codeunits fra version 2016
Hvis I har adgang til codeunits 248, 249 og 1290, lister jeg de korrigerede indhold her, så ved I jo allerede, hvad der skal gøres 🙂
OBJECT Codeunit 248 VAT Lookup Ext. data Hndl
{
OBJEKT-EGENSKABER
{
Dato=09.02.26;
Time=13:19:58;
Modificeret=Ja;
Versionsliste=NAVW19.00;
}
EGENSKABER
{
TableNo=249;
Tilladelser=TableData 249=rimd;
OnRun=BEGIN
VATRegistrationLog := Rec;
LookupVatRegistrationFromWebService(TRUE);
Rec := VATRegistrationLog;
SLUT;
}
CODE
{
VAR
NamespaceTxt@1003 : TextConst '@@@={Locked};DEU=urn:ec.europa.eu:taxud:vies:services:checkVat:types;ENU=urn:ec.europa.eu:taxud:vies:services:checkVat:types';
VATRegistrationLog@1000 : Registrering 249;
VATRegistrationLogMgt@1002 : Kodeenhed 249;
VatRegNrValidationWebServiceURLTxt@1001 : TextConst '@@@={Locked};DEU=http://ec.europa.eu/taxation_customs/vies/services/checkVatService;ENU=http://ec.europa.eu/taxation_customs/vies/services/checkVatService';
MissingWebServiceURLErr@1004 : TextConst 'DEU=URL'en til validering af momsregistreringsnummer er ikke angivet i vinduet til opsætning af finansbogholderi;ENU=URL'en til validering af momsregistreringsnummer er ikke angivet i vinduet til opsætning af hovedbogholderi";
LOCAL PROCEDURE LookupVatRegistrationFromWebService@7(ShowErrors@1000 : Boolean);
VAR
RequestBodyTempBlob@1002 : Record 99008535;
BEGIN
RequestBodyTempBlob.INIT;
SendRequestToVatRegistrationService(RequestBodyTempBlob,ShowErrors);
RequestBodyTempBlob.Blob.EXPORT("c:\temp\VatIDresult.txt');
InsertLogEntry(RequestBodyTempBlob);
COMMIT;
SLUT;
LOCAL PROCEDURE SendRequestToVatRegistrationService@1(VAR BodyTempBlob@1004 : Record 99008535;ShowErrors@1003 : Boolean);
VAR
GeneralLedgerSetup@1005 : Record 98;
SOAPWebServiceRequestMgt@1001 : Kodeenhed 1290;
ResponseInStream@1002 : InStream;
InStream@1006 : InStream;
ResponseOutStream@1008 : OutStream;
BEGIN
PrepareSOAPRequestBody(BodyTempBlob);
BodyTempBlob.Blob.CREATEINSTREAM(InStream);
GeneralLedgerSetup.GET;
IF GeneralLedgerSetup.'VAT Reg. No. Validation URL' = "" THEN
ERROR(MissingWebServiceURLErr);
SOAPWebServiceRequestMgt.SetGlobals(InStream,GeneralLedgerSetup. 'VAT Reg. No. Validation URL',"",'');
SOAPWebServiceRequestMgt.DisableHttpsCheck;
SOAPWebServiceRequestMgt.SetTimeout(60000);
SOAPWebServiceRequestMgt.SetContentType('text/xml; charset=utf-8');
IF SOAPWebServiceRequestMgt.SendRequestToWebService THEN BEGIN
SOAPWebServiceRequestMgt.GetResponseContent(ResponseInStream);
BodyTempBlob.Blob.CREATEOUTSTREAM(ResponseOutStream);
COPYSTREAM(ResponseOutStream,ResponseInStream);
SLUT ELSE
IF ShowErrors THEN
SOAPWebServiceRequestMgt.ProcessFaultResponse('');
SLUT;
LOCAL PROCEDURE PrepareSOAPRequestBody@12(VAR BodyTempBlob@1000 : Record 99008535);
VAR
XMLDOMMgt@1006 : Codeunit 6224;
BodyContentInputStream@1004 : InStream;
BodyContentOutputStream@1005 : OutStream;
BodyContentXmlDoc@1003 : DotNet ''System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089".System.Xml.XmlDocument';
EnvelopeXmlNode@1012 : DotNet '"System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089".System.Xml.XmlNode';
CreatedXmlNode@1001 : DotNet '"System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089".System.Xml.XmlNode';
BEGIN
BodyTempBlob.Blob.CREATEINSTREAM(BodyContentInputStream);
BodyContentXmlDoc := BodyContentXmlDoc.XmlDocument;
XMLDOMMgt.AddRootElementWithPrefix(BodyContentXmlDoc,'checkVatApprox",'',NamespaceTxt,EnvelopeXmlNode);
XMLDOMMgt.AddElement(EnvelopeXmlNode,'countryCode',VATRegistrationLog.GetCountryCode,NamespaceTxt,CreatedXmlNode);
XMLDOMMgt.AddElement(EnvelopeXmlNode,'vatNumber',VATRegistrationLog.GetVATRegNo,NamespaceTxt,CreatedXmlNode);
XMLDOMMgt.AddElement(
EnvelopeXmlNode,'requesterCountryCode',VATRegistrationLog.GetCountryCode,NamespaceTxt,CreatedXmlNode);
XMLDOMMgt.AddElement(
EnvelopeXmlNode,'requesterVatNumber',VATRegistrationLog.GetVATRegNo,NamespaceTxt,CreatedXmlNode);
CLEAR(BodyTempBlob.Blob);
BodyTempBlob.Blob.CREATEOUTSTREAM(BodyContentOutputStream);
BodyContentXmlDoc.Save(BodyContentOutputStream);
BodyTempBlob.Blob.EXPORT('c:\temp\VatIDrequest.txt');
SLUT;
LOCAL PROCEDURE InsertLogEntry@4(ResponseBodyTempBlob@1000 : Record 99008535);
VAR
XMLDocOut@1012 : DotNet ''System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089".System.Xml.XmlDocument';
InStream@1009 : InStream;
BEGIN
ResponseBodyTempBlob.Blob.CREATEINSTREAM(InStream);
XMLDocOut := XMLDocOut.XmlDocument;
XMLDocOut.Load(InStream);
VATRegistrationLogMgt.LogVerification(VATRegistrationLog,XMLDocOut,NamespaceTxt);
SLUT;
PROCEDURE GetVATRegNrValidationWebServiceURL@5() : Text[250];
BEGIN
EXIT(VatRegNrValidationWebServiceURLTxt);
SLUT;
BEGIN
END.
}
}
OBJECT Codeunit 249 VAT Registration Log Mgt.
{
OBJEKT-EGENSKABER
{
Dato=09.02.26;
Time=14:57:32;
Modificeret=Ja;
Versionsliste=NAVW19.00;
}
EGENSKABER
{
Tilladelser=TableData 249=rimd;
OnRun=BEGIN
SLUT;
}
CODE
{
PROCEDURE LogCustomer@1(Customer@1000 : Record 18);
VAR
VATRegistrationLog@1001 : Post 249;
CountryCode@1002 : Kode[10];
BEGIN
CountryCode := GetCountryCode(Customer. 'Country/Region Code");
IF NOT IsEUCountry(CountryCode) THEN
EXIT;
IndsætVATRegistrationLog(
Customer. "Momsregistreringsnummer",CountryCode,VATRegistrationLog. "Kontotype"::Customer,Customer. "Nr.");
SLUT;
PROCEDURE LogVendor@2(Vendor@1002 : Record 23);
VAR
VATRegistrationLog@1001 : Record 249;
CountryCode@1000 : Kode[10];
BEGIN
CountryCode := GetCountryCode(Vendor. "Country/Region Code");
IF NOT IsEUCountry(CountryCode) THEN
EXIT;
IndsætVATRegistrationLog(
Vendor. "Momsregistreringsnr.",CountryCode,VATRegistrationLog. "Kontotype"::Vendor,Vendor. "Nr.");
SLUT;
PROCEDURE LogContact@8(Contact@1000 : Record 5050);
VAR
VATRegistrationLog@1001 : Record 249;
CountryCode@1002 : Kode[10];
BEGIN
CountryCode := GetCountryCode(Contact. "Country/Region Code");
IF NOT IsEUCountry(CountryCode) THEN
EXIT;
IndsætVATRegistrationLog(
Contact. "Momsregistreringsnr.",CountryCode,VATRegistrationLog. "Kontotype"::Contact,Contact. "Nr.");
SLUT;
PROCEDURE LogVerification@3(VAR VATRegistrationLog@1000 : Record 249;XMLDoc@1001 : DotNet ""System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089".System.Xml.XmlDocument';Namespace@1003 : Text);
VAR
XMLDOMMgt@1002 : Kodeenhed 6224;
FoundXmlNode@1004 : DotNet '"System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089".System.Xml.XmlNode';
NamePathTxt@5326066 : TextConst '@@@={Locked};DEU=descendant::vat:traderName;ENU=descendant::vat:traderName";
AddressPathTxt@5326065 : TextConst '@@@={Locked};DEU=descendant::vat:traderAddress;ENU=descendant::vat:traderAddress';
PostcodePathTxt@5326064 : TextConst '@@@={Locked};DEU=descendant::vat:traderPostcode;ENU=descendant::vat:traderPostcode';
StreetPathTxt@5326063 : TextConst '@@@={Locked};DEU=descendant::vat:traderStreet;ENU=descendant::vat:traderStreet';
CityPathTxt@5326062 : TextConst '@@@={Locked};DEU=descendant::vat:traderCity;ENU=descendant::vat:traderCity';
ValidPathTxt@5326070 : TextConst '@@@={Locked};DEU=descendant::vat:valid;ENU=descendant::vat:valid';
RequestIdPathTxt@5326069 : TextConst 'DEU=descendant::vat:requestIdentifier';
BEGIN
IF NOT XMLDOMMgt.FindNodeWithNamespace(XMLDoc.DocumentElement,ValidPathTxt,'vat',Namespace,FoundXmlNode) THEN
EXIT;
CASE LOWERCASE(FoundXmlNode.InnerText) OF
'true':
BEGIN
VATRegistrationLog.'Entry No.' := 0;
VATRegistrationLog.Status := VATRegistrationLog.Status::Valid;
VATRegistrationLog. "Verificeret dato" := CURRENTDATETIME;
VATRegistrationLog."User ID" := USERID;
VATRegistrationLog.dmssysDocumentNo := COPYSTR(ExtractValue(RequestIdPathTxt,XMLDoc,Namespace),1,
MAXSTRLEN(VATRegistrationLog.dmssysDocumentNo));
//XMLDOMMgt.FindNodeWithNamespace(XMLDoc.DocumentElement,NamePathTxt,"vat",Namespace,FoundXmlNode);
VATRegistrationLog.'Verified Name' := ExtractValue(NamePathTxt,XMLDoc,Namespace);
//COPYSTR(FoundXmlNode.InnerText,1,MAXSTRLEN(VATRegistrationLog. "Verified Name"));
//XMLDOMMgt.FindNodeWithNamespace(XMLDoc.DocumentElement,AddressPathTxt,"vat",Namespace,FoundXmlNode);
VATRegistrationLog.'Verified Address' := ExtractValue(AddressPathTxt,XMLDoc,Namespace);
//COPYSTR(FoundXmlNode.InnerText,1,MAXSTRLEN(VATRegistrationLog. "Verified Address"));
VATRegistrationLog.INSERT(TRUE);
SLUT;
"false":
BEGIN
VATRegistrationLog. 'Entry No.' := 0;
VATRegistrationLog."Verificeret dato" := CURRENTDATETIME;
VATRegistrationLog.Status := VATRegistrationLog.Status::Invalid;
VATRegistrationLog. "User ID" := USERID;
VATRegistrationLog. "Verificeret navn" := "";
VATRegistrationLog. 'Verificeret adresse' := "";
VATRegistrationLog.INSERT(TRUE);
END;
END;
END;
LOCAL PROCEDURE LogUnloggedVATRegistrationNumbers@10();
VAR
Kunde@1000 : Post 18;
Vendor@1001 : Post 23;
Contact@1002 : Post 5050;
VATRegistrationLog@1003 : Post 249;
BEGIN
Customer.SETFILTER('Momsregistreringsnummer',"%1",'');
IF Customer.FINDSET THEN
REPEAT
VATRegistrationLog.SETRANGE('Momsregistreringsnr.',Customer. "Momsregistreringsnr.");
IF VATRegistrationLog.ISEMPTY THEN
LogCustomer(Customer);
UNTIL Customer.NEXT = 0;
Vendor.SETFILTER("Momsregistreringsnummer","%1",'');
IF Vendor.FINDSET THEN
REPEAT
VATRegistrationLog.SETRANGE('Momsregistreringsnr.',Vendor. "Momsregistreringsnr.");
IF VATRegistrationLog.ISEMPTY THEN
LogVendor(Vendor);
UNTIL Vendor.NEXT = 0;
Contact.SETFILTER("Momsregistreringsnummer","%1",'');
IF Contact.FINDSET THEN
REPEAT
VATRegistrationLog.SETRANGE('Momsregistreringsnr.',Contact. "Momsregistreringsnr.");
IF VATRegistrationLog.ISEMPTY THEN
LogContact(Contact);
UNTIL Contact.NEXT = 0;
COMMIT;
SLUT;
LOCAL PROCEDURE InsertVATRegistrationLog@16(VATRegNo@1002 : Text[20];CountryCode@1000 : Code[10];AccountType@1001 : Option;AccountNo@1003 : Code[20]);
VAR
VATRegistrationLog@1004 : Post 249;
BEGIN
WITH VATRegistrationLog DO BEGIN
INIT;
"VAT Registration No." = VATRegNo;
"Country/Region Code" := CountryCode;
"Kontotype" := AccountType;
"Account No." := AccountNo;
"Bruger-id" := USERID;
INSERT(TRUE);
SLUT;
SLUT;
PROCEDURE DeleteCustomerLog@4(Customer@1000 : Record 18);
VAR
VATRegistrationLog@1001 : Post 249;
BEGIN
WITH VATRegistrationLog DO BEGIN
SETRANGE("Kontotype", "Kontotype"::Kunde);
SETRANGE("Kontonr.",Kunde. "Nr.");
DELETEALL;
END;
SLUT;
PROCEDURE DeleteVendorLog@5(Vendor@1000 : Record 23);
VAR
VATRegistrationLog@1001 : Post 249;
BEGIN
WITH VATRegistrationLog DO BEGIN
SETRANGE("Account Type", "Account Type"::Vendor);
SETRANGE("Account No.",Vendor. "No.");
DELETEALL;
END;
END;
PROCEDURE DeleteContactLog@9(Contact@1000 : Record 5050);
VAR
VATRegistrationLog@1001 : Post 249;
BEGIN
WITH VATRegistrationLog DO BEGIN
SETRANGE("Kontotype", "Kontotype"::Kontakt);
SETRANGE("Kontonr.",Kontakt. "Nr.");
DELETEALL;
END;
SLUT;
PROCEDURE AssistEditCustomerVATReg@7(Customer@1000 : Record 18);
VAR
VATRegistrationLog@1001 : Post 249;
BEGIN
WITH VATRegistrationLog DO BEGIN
IF ISEMPTY THEN
LogUnloggedVATRegistrationNumbers;
SETRANGE("Kontotype", "Kontotype"::Kunde);
SETRANGE("Kontonr.",Kunde."Nr.");
PAGE.RUNMODAL(PAGE:: "Momsregistreringslog",VATRegistrationLog);
END;
SLUT;
PROCEDURE AssistEditVendorVATReg@6(Vendor@1001 : Record 23);
VAR
VATRegistrationLog@1000 : Post 249;
BEGIN
WITH VATRegistrationLog DO BEGIN
IF ISEMPTY THEN
LogUnloggedVATRegistrationNumbers;
SETRANGE("Kontotype", "Kontotype"::Leverandør);
SETRANGE("Account No.",Vendor. "No.");
PAGE.RUNMODAL(PAGE:: "Momsregistreringslog",VATRegistrationLog);
END;
SLUT;
PROCEDURE AssistEditContactVATReg@11(Contact@1001 : Record 5050);
VAR
VATRegistrationLog@1000 : Record 249;
BEGIN
WITH VATRegistrationLog DO BEGIN
IF ISEMPTY THEN
LogUnloggedVATRegistrationNumbers;
SETRANGE("Kontotype", "Kontotype"::Kontakt);
SETRANGE("Kontonr.",Kontakt. "Nr.");
PAGE.RUNMODAL(PAGE:: "Momsregistreringslog",VATRegistrationLog);
END;
SLUT;
LOCAL PROCEDURE IsEUCountry@12(CountryCode@1000 : Code[10]) : Boolean;
VAR
CountryRegion@1001 : Record 9;
BEGIN
IF CountryCode "" THEN
IF CountryRegion.GET(CountryCode) THEN
EXIT(CountryRegion. 'EU Country/Region Code' "");
EXIT(FALSE);
SLUT;
LOCAL PROCEDURE GetCountryCode@13(CountryCode@1000 : Code[10]) : Code[10];
VAR
CompanyInformation@1001 : Post 79;
BEGIN
IF CountryCode '' THEN
EXIT(Landekode);
CompanyInformation.GET;
EXIT(CompanyInformation. 'Country/Region Code');
SLUT;
LOCAL PROCEDURE ExtractValue@5326062(Xpath@5326062 : Text;XMLdoc@5326063 : DotNet ""System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089".System.Xml.XmlDocument';NameSpace@5326064 : Text) : Tekst;
VAR
XMLDOMMgt@5326066 : Codeunit 6224;
FoundXmlNode@5326065 : DotNet '"System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089".System.Xml.XmlNode';
BEGIN
IF NOT XMLDOMMgt.FindNodeWithNamespace(XMLdoc.DocumentElement,Xpath,'vat",NameSpace,FoundXmlNode) THEN
EXIT('');
EXIT(FoundXmlNode.InnerText);
SLUT;
BEGIN
END.
}
}
OBJECT Codeunit 1290 SOAP Web Service Request Mgt.
{
OBJEKT-EGENSKABER
{
Dato=09.02.26;
Time=13:09:26;
Modificeret=Ja;
Versionsliste=NAVW19.00;
}
EGENSKABER
{
OnRun=BEGIN
END;
}
CODE
{
VAR
BodyPathTxt@1001 : TextConst '@@@={Locked};DEU=/soap:Envelope/soap:Body;ENU=/soap:Envelope/soap:Body';
ContentTypeTxt@1000 : TextConst '@@@={Locked};DEU='multipart/form-data; charset=utf-8';ENU="multipart/form-data; charset=utf-8"";
NewContentTypeTxt@5326062 : TextConst "@@@={Locked};DEU='text/xml; charset=utf-8';ENU="multipart/form-data; charset=utf-8"";
FaultStringXmlPathTxt@1012 : TextConst "@@@={Locked};DEU=/soap:Envelope/soap:Body/soap:Fault/faultstring;ENU=/soap:Envelope/soap:Body/soap:Fault/faultstring';
NoRequestBodyErr@1015 : TextConst 'DEU=The request body is not set.;ENU=The request body is not set.';
NoServiceAddressErr@1017 : TextConst 'DEU=Webtjenestens URI er ikke indstillet.;ENU=Webtjenestens URI er ikke indstillet';
ExpectedResponseNotReceivedErr@1009 : TextConst 'DEU=De forventede data blev ikke modtaget fra webtjenesten.;ENU=De forventede data blev ikke modtaget fra webtjenesten.';
SchemaNamespaceTxt@1007 : TextConst '@@@={Locked};DEU=http://www.w3.org/2001/XMLSchema;ENU=http://www.w3.org/2001/XMLSchema';
SchemaInstanceNamespaceTxt@1006 : TextConst '@@@={Locked};DEU=http://www.w3.org/2001/XMLSchema-instance;ENU=http://www.w3.org/2001/XMLSchema-instance';
SecurityUtilityNamespaceTxt@1003 : TextConst '@@@={Locked};DEU=http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd;ENU=http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd';
SecurityExtensionNamespaceTxt@1004 : TextConst '@@@={Locked};DEU=http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd;ENU=http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd';
SoapNamespaceTxt@1002 : TextConst '@@@={Locked};DEU=http://schemas.xmlsoap.org/soap/envelope/;ENU=http://schemas.xmlsoap.org/soap/envelope/';
UsernameTokenNamepsaceTxt@1005 : TextConst '@@@={Locked};DEU=http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText;ENU=http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText';
TempDebugLogTempBlob@1010 : TEMPORARY Record 99008535;
ResponseBodyTempBlob@1020 : Post 99008535;
ResponseInStreamTempBlob@1019 : Post 99008535;
Trace@1016 : Kodeenhed 1292;
GlobalRequestBodyInStream@1022 : InStream;
HttpWebResponse@1021 : DotNet ''System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089".System.Net.HttpWebResponse';
GlobalPassword@1013 : Tekst;
GlobalURL@1014 : Tekst;
GlobalUsername@1008 : Tekst;
TraceLogEnabled@1011 : Boolean;
GlobalTimeout@1024 : Heltal;
InternalErr@1028 : TextConst 'DEU=Fjerntjenesten har returneret følgende fejlmeddelelse:\\;ENU=Fjerntjenesten har returneret følgende fejlmeddelelse:\\";
GlobalSkipCheckHttps@1018 : Boolean;
GlobalProgressDialogEnabled@1023 : Boolean;
GlobalContentType@5326063 : Tekst;
[TryFunction]
PROCEDURE SendRequestToWebService@17();
VAR
WebRequestHelper@1000 : Codeunit 1299;
HttpWebRequest@1007 : DotNet ''System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089".System.Net.HttpWebRequest';
HttpStatusCode@1002 : DotNet '"System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089".System.Net.HttpStatusCode';
ResponseHeaders@1001 : DotNet '"System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089".System.Collections.Specialised.NameValueCollection';
ResponseInStream@1006 : InStream;
BEGIN
CheckGlobals;
BuildWebRequest(GlobalURL,HttpWebRequest);
ResponseInStreamTempBlob.INIT;
ResponseInStreamTempBlob.Blob.CREATEINSTREAM(ResponseInStream);
CreateSoapRequest(HttpWebRequest.GetRequestStream,GlobalRequestBodyInStream,GlobalUsername,GlobalPassword);
WebRequestHelper.GetWebResponse(HttpWebRequest,HttpWebResponse,ResponseInStream,
HttpStatusCode,ResponseHeaders,GlobalProgressDialogEnabled);
ExtractContentFromResponse(ResponseInStream,ResponseBodyTempBlob);
SLUT;
LOCAL PROCEDURE BuildWebRequest@3(ServiceUrl@1000 : Text;VAR HttpWebRequest@1002 : DotNet '"System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089".System.Net.HttpWebRequest');
VAR
DecompressionMethods@1003 : DotNet '"System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089".System.Net.DecompressionMethods';
BEGIN
HttpWebRequest := HttpWebRequest.Create(ServiceUrl);
HttpWebRequest.Method := 'POST";
HttpWebRequest.KeepAlive := TRUE;
HttpWebRequest.AllowAutoRedirect := SAND;
HttpWebRequest.UseDefaultCredentials := SAND;
IF GlobalContentType = '' THEN
GlobalContentType := ContentTypeTxt;
HttpWebRequest.ContentType := GlobalContentType;
IF GlobalTimeout <= 0 THEN
GlobalTimeout := 600000;
HttpWebRequest.Timeout := GlobalTimeout;
HttpWebRequest.AutomaticDecompression := DecompressionMethods.GZip;
SLUT;
LOCAL PROCEDURE CreateSoapRequest@2(RequestOutStream@1000 : OutStream;BodyContentInStream@1004 : InStream;Username@1003 : Text;Password@1005 : Text);
VAR
XmlDoc@1007 : DotNet ''System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089".System.Xml.XmlDocument';
BodyXmlNode@1016 : DotNet '"System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089".System.Xml.XmlNode';
BEGIN
CreateEnvelope(XmlDoc,BodyXmlNode,Username,Password);
AddBodyToEnvelope(BodyXmlNode,BodyContentInStream);
XmlDoc.Save(RequestOutStream);
TraceLogXmlDocToTempFile(XmlDoc,'FullRequest");
SLUT;
LOCAL PROCEDURE CreateEnvelope@11(VAR XmlDoc@1011 : DotNet ''System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089".System.Xml.XmlDocument';VAR BodyXmlNode@1001 : DotNet '"System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089".System.Xml.XmlNode';Username@1009 : Text;Password@1010 : Text);
VAR
XMLDOMMgt@1000 : Kodeenhed 6224;
EnvelopeXmlNode@1007 : DotNet '"System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089".System.Xml.XmlNode';
HeaderXmlNode@1006 : DotNet '"System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089".System.Xml.XmlNode';
SecurityXmlNode@1005 : DotNet '"System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089".System.Xml.XmlNode';
UsernameTokenXmlNode@1004 : DotNet '"System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089".System.Xml.XmlNode';
TempXmlNode@1003 : DotNet '"System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089".System.Xml.XmlNode';
PasswordXmlNode@1002 : DotNet '"System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089".System.Xml.XmlNode';
BEGIN
XmlDoc := XmlDoc.XmlDocument;
WITH XMLDOMMgt DO BEGIN
AddRootElementWithPrefix(XmlDoc,'Envelope",'s',SoapNamespaceTxt,EnvelopeXmlNode);
AddAttribute(EnvelopeXmlNode,'xmlns:u',SecurityUtilityNamespaceTxt);
AddElementWithPrefix(EnvelopeXmlNode,'Header','','s',SoapNamespaceTxt,HeaderXmlNode);
IF (Username '') OR (Password '') THEN BEGIN
AddElementWithPrefix(HeaderXmlNode,'Security','','o',SecurityExtensionNamespaceTxt,SecurityXmlNode);
AddAttributeWithPrefix(SecurityXmlNode,'mustUnderstand','s',SoapNamespaceTxt,'1');
AddElementWithPrefix(SecurityXmlNode,'UsernameToken','','o',SecurityExtensionNamespaceTxt,UsernameTokenXmlNode);
AddAttributeWithPrefix(UsernameTokenXmlNode,'Id','u',SecurityUtilityNamespaceTxt,CreateUUID);
AddElementWithPrefix(UsernameTokenXmlNode,'Username',Username,'o',SecurityExtensionNamespaceTxt,TempXmlNode);
AddElementWithPrefix(UsernameTokenXmlNode,'Password',Password,'o',SecurityExtensionNamespaceTxt,PasswordXmlNode);
AddAttribute(PasswordXmlNode,'Type',UsernameTokenNamepsaceTxt);
SLUT;
AddElementWithPrefix(EnvelopeXmlNode,'Body','','s',SoapNamespaceTxt,BodyXmlNode);
AddAttribute(BodyXmlNode,'xmlns:xsi',SchemaInstanceNamespaceTxt);
AddAttribute(BodyXmlNode,'xmlns:xsd',SchemaNamespaceTxt);
SLUT;
SLUT;
LOCAL PROCEDURE CreateUUID@9() : Text;
BEGIN
EXIT('uuid-' + DELCHR(LOWERCASE(FORMAT(CREATEGUID)),'=','{}'));
SLUT;
LOCAL PROCEDURE AddBodyToEnvelope@12(VAR BodyXmlNode@1005 : DotNet ''System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089".System.Xml.XmlNode';BodyInStream@1000 : InStream);
VAR
BodyContentXmlDoc@1003 : DotNet '"System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089".System.Xml.XmlDocument';
BEGIN
BodyContentXmlDoc := BodyContentXmlDoc.XmlDocument;
BodyContentXmlDoc.Load(BodyInStream);
TraceLogXmlDocToTempFile(BodyContentXmlDoc,'RequestBodyContent");
BodyXmlNode.AppendChild(BodyXmlNode.OwnerDocument.ImportNode(BodyContentXmlDoc.DocumentElement,TRUE));
SLUT;
LOCAL PROCEDURE ExtractContentFromResponse@4(ResponseInStream@1000 : InStream;VAR BodyTempBlob@1002 : Record 99008535);
VAR
XMLDOMMgt@1005 : Kodeenhed 6224;
ResponseXmlDoc@1003 : DotNet ''System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089".System.Xml.XmlDocument';
ResponseBodyXMLDoc@1004 : DotNet '"System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089".System.Xml.XmlDocument';
ResponseBodyXmlNode@1006 : DotNet '"System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089".System.Xml.XmlNode';
BodyOutStream@1007 : OutStream;
Found@1001 : Boolean;
BEGIN
TraceLogStreamToTempFile(ResponseInStream,'FullResponse",TempDebugLogTempBlob);
ResponseXmlDoc := ResponseXmlDoc.XmlDocument;
ResponseXmlDoc.Load(ResponseInStream);
Found := XMLDOMMgt.FindNodeWithNamespace(ResponseXmlDoc.DocumentElement,BodyPathTxt,'soap',SoapNamespaceTxt,ResponseBodyXmlNode);
HVIS IKKE fundet SÅ
ERROR(ExpectedResponseNotReceivedErr);
ResponseBodyXMLDoc := ResponseBodyXMLDoc.XmlDocument;
ResponseBodyXMLDoc.AppendChild(ResponseBodyXMLDoc.ImportNode(ResponseBodyXmlNode.FirstChild,TRUE));
BodyTempBlob.Blob.CREATEOUTSTREAM(BodyOutStream);
ResponseBodyXMLDoc.Save(BodyOutStream);
TraceLogXmlDocToTempFile(ResponseBodyXMLDoc,'ResponseBodyContent');
SLUT;
PROCEDURE GetResponseContent@22(VAR ResponseBodyInStream@1000 : InStream);
BEGIN
ResponseBodyTempBlob.Blob.CREATEINSTREAM(ResponseBodyInStream);
SLUT;
PROCEDURE ProcessFaultResponse@15(SupportInfo@1001 : Text);
VAR
WebRequestHelper@1002 : Codeunit 1299;
XMLDOMMgt@1006 : Kodeenhed 6224;
WebException@1005 : DotNet ''System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089".System.Net.WebException';
XmlDoc@1003 : DotNet '"System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089".System.Xml.XmlDocument';
ResponseInputStream@1000 : InStream;
ErrorText@1009 : Tekst;
ServiceURL@1010 : Tekst;
BEGIN
ErrorText := WebRequestHelper.GetWebResponseError(WebException,ServiceURL);
IF ErrorText '" THEN
ERROR(ErrorText);
ResponseInputStream := WebException.Response.GetResponseStream;
IF TraceLogEnabled THEN
Trace.LogStreamToTempFile(ResponseInputStream,'WebExceptionResponse',TempDebugLogTempBlob);
XmlDoc := XmlDoc.XmlDocument;
XmlDoc.Load(ResponseInputStream);
ErrorText := XMLDOMMgt.FindNodeTextWithNamespace(XmlDoc.DocumentElement,FaultStringXmlPathTxt,'soap',SoapNamespaceTxt);
IF ErrorText = '' THEN
ErrorText := WebException.Message;
ErrorText := InternalErr + ErrorText + ServiceURL;
HVIS SupportInfo '' SÅ
ErrorText += '\\' + SupportInfo;
ERROR(FejlTekst);
SLUT;
PROCEDURE SetGlobals@10(RequestBodyInStream@1000 : InStream;URL@1001 : Text;Username@1002 : Text;Password@1003 : Text);
BEGIN
GlobalRequestBodyInStream := RequestBodyInStream;
GlobalSkipCheckHttps := FALSE;
GlobalURL := URL;
GlobalUsername := Brugernavn;
GlobalPassword := Adgangskode;
GlobalProgressDialogEnabled := SAND;
TraceLogEnabled := FALSE;
SLUT;
PROCEDURE SetTimeout@7(NewTimeout@1000 : Integer);
BEGIN
GlobalTimeout := NewTimeout;
SLUT;
PROCEDURE SetContentType@5326062(NewContentType@5326062 : Text);
BEGIN
GlobalContentType := NyContentType;
SLUT;
LOCAL PROCEDURE CheckGlobals@14();
VAR
WebRequestHelper@1000 : Kodeenhed 1299;
BEGIN
IF GlobalRequestBodyInStream.EOS THEN
ERROR(NoRequestBodyErr);
IF GlobalURL = '' THEN
ERROR(NoServiceAddressErr);
IF GlobalSkipCheckHttps THEN
WebRequestHelper.IsValidUri(GlobalURL)
ELSE
WebRequestHelper.IsSecureHttpUrl(GlobalURL);
SLUT;
LOCAL PROCEDURE TraceLogStreamToTempFile@33(VAR ToLogInStream@1000 : InStream;Name@1005 : Text;VAR TraceLogTempBlob@1001 : Record 99008535);
BEGIN
IF TraceLogEnabled THEN
Trace.LogStreamToTempFile(ToLogInStream,Name,TraceLogTempBlob);
SLUT;
LOCAL PROCEDURE TraceLogXmlDocToTempFile@67(VAR XmlDoc@1004 : DotNet ''System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089".System.Xml.XmlDocument';Name@1005 : Text);
BEGIN
IF TraceLogEnabled THEN
Trace.LogXmlDocToTempFile(XmlDoc,Name);
SLUT;
PROCEDURE SetTraceMode@1(NewTraceMode@1000 : Boolean);
BEGIN
TraceLogEnabled := NewTraceMode;
SLUT;
PROCEDURE DisableHttpsCheck@13();
BEGIN
GlobalSkipCheckHttps := TRUE;
SLUT;
PROCEDURE DisableProgressDialog@18();
BEGIN
GlobalProgressDialogEnabled := FALSE;
SLUT;
BEGIN
END.
}
}
