Integrationsmetoder med 1С

Hvilke vigtigste krav stilles der til forretningsapplikationer? Nogle af de mest centrale er følgende opgaver:

  • Faciliteten til at ændre/tilpasse applikationens logik til skiftende forretningsopgaver.
  • Faciliteten til integration med andre applikationer.

Hvordan den første opgave løses i 1C blev kort beskrevet i afsnittet "Tilpasning og support" denne artikel; vi vender tilbage til dette interessante emne i en af kommende artikler. I dag handler det om den anden opgave, nemlig integration.

Integrationsopgaver

Integrationsopgaver kan være forskellige. For nogle opgaver er det tilstrækkeligt med en simpel interaktiv dataudveksling – for eksempel til at sende en liste over ansatte til banken for udstedelse af betalingskort. For mere komplekse opgaver kan fuldautomatiseret dataudveksling være nødvendig, muligvis med adgang til forretningslogikken i et eksternt system. Der er også specialiserede opgaver, såsom integration med eksternt udstyr (for eksempel salgsudstyr, mobile scannere osv.) eller med arvet eller specialiserede systemer (for eksempel RFID-læsesystemer). Det er ekstremt vigtigt at vælge den mest passende integrationsmekanisme for hver opgave.

Integrationsmuligheder med 1C

Der findes forskellige tilgange til implementering af integration med 1C-applikationer; hvilken man skal vælge afhænger af opgavens krav.

  1. Implementering baseret på integrationsmekanismer, som tilbydes af platformen, eller en egen specialiseret API på siden af 1C-applikationen (for eksempel et sæt Web- eller HTTP-tjenester, der vil anmode eksterne applikationer om at udveksle data med 1C-applikationen). Fordelen ved denne tilgang er API'ets modstandskraft over for ændringer i implementeringen på siden af 1C-applikationen. En særegenhed ved tilgangen er, at det kræver ændringer i kildekoden til 1C-løsningen, hvilket potentielt kan kræve ressourcer ved sammenlægning af kildekoder ved overgang til en ny version af konfigurationen. I dette tilfælde kan ny, progressiv funktionalitet komme til hjælp — udvidelser af konfigurationen. Udvidelser er i princippet et plugin-mekanisme, der gør det muligt at skabe tilføjelser til applikationsløsninger uden at ændre selve applikationsløsningerne. At flytte integrations-API'et til konfigurationsudvidelsen vil undgå kompleksiteter ved at fusionere konfigurationer ved overgangen til en ny version af standardløsningen.
  2. Brug af integrationsmekanismerne i platformen, som giver ekstern adgang til applikationsobjektmodellen og ikke kræver ændringer i applikationen eller oprettelse af en udvidelse. Fordelen ved denne tilgang er, at der ikke er behov for at ændre 1C-applikationen. Ulempen er, at hvis 1C-applikationen allerede er ændret, kan det blive nødvendigt med yderligere ændringer i den integrerede applikation. Et eksempel på denne tilgang er brugen af OData-protokollen til integration, som er implementeret på siden af 1C:Enterprise-platformen (mere om dette nedenfor).
  3. Brug af færdige applikationsprotokoller implementeret i standardløsningerne fra 1C. Mange standardløsninger fra 1C og partnere implementerer deres egne applikationsprotokoller baseret på integrationsmekanismerne, der tilbydes af platformen, og som er rettet mod specifikke opgaver. Ved brug af disse mekanismer er der ikke behov for at skrive kode på 1C-applikationen, da vi drager fordel af de standardmæssige muligheder for applikationsløsningen. På siden af 1C-applikationen skal vi kun udføre visse indstillinger.

Integrationsmekanismer i 1C:Enterprise-platformen

Import/eksport af filer

Antag, at vi står over for opgaven med tovejs dataudveksling mellem 1C-applikationen og en hvilken som helst applikation. For eksempel har vi brug for at synkronisere produktslisten (referencenomenklatur) mellem 1C-applikationen og en vilkårlig applikation.

Integrationsmetoder med 1С
For at løse sådan en opgave kan man skrive en udvidelse, der eksporterer referencenomenklaturen til en fil i et bestemt format (tekst, XML, JSON, ...) og kan læse dette format.

Platformen har implementeret en mekanisme til serialisering af applikationsobjekter til XML, både direkte via metoderne i den globale kontekst RecordXML/ReadXML og ved hjælp af et hjælpeobjekt XDTO (XML Data Transfer Objects).

Enhver objekt i 1C:Enterprise-systemet kan serialiseres til XML-repræsentation og omvendt.

Denne funktion vil returnere objektets repræsentation i XML-form:

Funktionen Objekt_Ind_XML(Objekt)
    RegistreringXML = Ny RegistreringXML();
    RegistreringXML.SætStreng();
    SkriveXML(RegistreringXML, Objekt);
    Returner RegistreringXML.Lukke();
SlutFunktionen

sådan vil eksporten af kataloget Nomenklatur se ud i XML ved hjælp af XDTO:

&PåServeren
Procedure EksportXMLPåServeren()	
	NySerializerXDTO  = SerializerXDTO;
	NyRegistreringXML = Ny RegistreringXML();
	NyRegistreringXML.ÅbnFil("C:DataNomenklatur.xml", "UTF-8");
	
	NyRegistreringXML.SkriveXMLDeklaration();
	NyRegistreringXML.SkriveStartElement("KatalogNomenklatur");
	
	Valg = Kataloger.Nomenklatur.Vælg();
	
	Mens Valg.Næste() Loop 
		ObjektNomenklatur = Valg.HentObjekt();
		NySerializerXDTO.SkriveXML(NyRegistreringXML, ObjektNomenklatur, XMLTypeZonning.Udtrykkelig);
	SlutLoop;
	
	NyRegistreringXML.SkriveSlutElement();
	NyRegistreringXML.Lukke();	
SlutProcedure

Gennem en enkel omskrivning af koden eksporterer vi kataloget til JSON. Varerne vil blive skrevet til et array; for variation vil vi give den engelsksprogede variant af syntaksen:

&PåServeren
Procedure EksportJSONPåServeren()
	NyXDTOSerializer  = XDTOSerializer;
	NyJSONWriter = Ny JSONWriter();
	NyJSONWriter.ÅbnFil("C:DataNomenklatur.json", "UTF-8");
	
	NyJSONWriter.SkrivStartObjekt();
	NyJSONWriter.SkrivEgenskabsNavn("KatalogNomenklatur");
	NyJSONWriter.SkrivStartArray();
	
	Valg = Kataloger.Nomenklatur.Vælg();	
	
	Mens Valg.Næste() Gør 
		NomenklaturObjekt = Valg.HentObjekt();
		
		NyJSONWriter.SkrivStartObjekt();
		
		NyJSONWriter.SkrivEgenskabsNavn("Nomenklatur");
		NyXDTOSerializer.SkrivJSON(NyJSONWriter, NomenklaturObjekt, XMLTypeZonning.Udtrykkelig);
		
		NyJSONWriter.SkrivSlutObjekt();
	SlutGør;
	
	NyJSONWriter.SkrivSlutArray();
	NyJSONWriter.SkrivSlutObjekt();
	NyJSONWriter.Lukke();	
SlutProcedure

Herefter skal vi blot overføre dataene til slutbrugeren. Platformen 1C:Enterprise understøtter de grundlæggende internetprotokoller HTTP, FTP, POP3, SMTP, IMAP, inklusive deres sikre versioner. Data kan også overføres via HTTP og/eller webtjenester.

HTTP- og webtjenester

Integrationsmetoder med 1С

1C-applikationer kan implementere deres egne HTTP- og webtjenester samt kalde HTTP- og webtjenester, der er implementeret af tredjepartsapplikationer.

REST interface og OData-protokol

Fra version 8.3.5 kan platformen 1C:Enterprise automatisk generere et REST interface for hele applikationsløsningen. Enhver konfigurationsobjekt (katalog, dokument, informationsregister mv.) kan gøres tilgængeligt for at hente og ændre data via REST interface. Som adgangsprotokol bruger platformen protokollen OData version 3.0. Publicering af OData-tjenester udføres fra menuen Konfigurator "Administration -> Publicering på webserver", hvor afkrydsningsfeltet "Publicer standard OData-grænseflade" skal være markeret. Atom/XML og JSON formater understøttes. Når den applikative løsning er offentliggjort på webserveren, kan eksterne systemer få adgang til den via REST-grænsefladen ved hjælp af HTTP-anmodninger. Der kræves ikke programmering på 1C-siden for at arbejde med applikationen gennem OData-protokollen.

Således vil en URL af typen http:////odata/standard.odata/Catalog_Produkter returnere indholdet af kataloget Produkter i XML-format — en samling af entry-elementer (meddelelse hoverspringes for korthedens skyld):

http://server/Config/odata/standard.odata/Catalog_Produkter(guid'35d1f6e4-289b-11e6-8ba4-e03f49b16074')
	
	
	2016-06-06T16:42:17
	
	<summary />
	
	
		
			35d1f6e4-289b-11e6-8ba4-e03f49b16074
			AAAAAgAAAAA=
			false
			000000001
			Airconditioner Mitsubishi
			Effekt 2,5 kW, driftsformer: varme/kulde
		
	


	http://server/Config/odata/standard.odata/Catalog_Produkter(guid'35d1f6e5-289b-11e6-8ba4-e03f49b16074')
	
...
</code></pre><p> Ved at tilføje strengen “?$format=application/json” til URL'en, får vi indholdet af kataloget Produkter i JSON-format (URL af typen <u>http:////odata/standard.odata/Catalog_Produkter?$format=application/json</u> ):</p><pre><code>{
"odata.metadata": "http://server/Config/odata/standard.odata/$metadata#Catalog_Produkter",
"value": [{
"Ref_Key": "35d1f6e4-289b-11e6-8ba4-e03f49b16074",
"DataVersion": "AAAAAgAAAAA=",
"DeletionMark": false,
"Code": "000000001",
"Description": "Airconditioner Mitsubishi",
"Beskrivelse": "Effekt 2,5 kW, driftsformer: varme/kulde"
},{
"Ref_Key": "35d1f6e5-289b-11e6-8ba4-e03f49b16074",
"DataVersion": "AAAAAwAAAAA=",
"DeletionMark": false,
"Code": "000000002",
"Description": "Airconditioner Daikin",
"Beskrivelse": "Effekt 3 kW, driftsformer: varme/kulde"
}, …
</code></pre><p></p><h4>Eksterne datakilder</h4><p> <img class=lazy decoding=async alt="Integrationsmetoder med 1С" src=data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20600%20436%22%3E%3C%2Fsvg%3E data-src=/wp-content/uploads/2019/08/1663b53846f3a6a8a03f386f1f6cd311.jpeg style="display:block;margin: 0 auto;" width=600 height=436><br> I nogle tilfælde udføres dataudveksling via <noindex><a rel=nofollow href=http://v8.1c.ru/overview/Term_000000795.htm>eksterne datakilder</a></noindex> kan vise sig at være den optimale løsning. Eksterne datakilder er et applikationsobjekt i 1C-konfigurationen, der muliggør interaktion med enhver ODBC-kompatibel database, både til læsning og skrivning. Eksterne datakilder er tilgængelige både i Windows og på Linux.</p><h4>Dataoverførselsmekanisme</h4><p> <noindex><a rel=nofollow href=http://v8.1c.ru/overview/Term_000000269.htm>Dataoverførselsmekanisme</a></noindex> er designet både til at oprette geografisk distribuerede systemer baseret på 1C:Enterprise og til at organisere dataudveksling med andre informationssystemer, der ikke er baseret på 1C:Enterprise.</p><p>Denne mekanisme anvendes aktivt i implementeringer af 1C, og spektret af opgaver, der løses med dens hjælp, er meget bredt. Det omfatter dataudveksling mellem 1C-applikationer, der er installeret på filialer af organisationen, dataudveksling mellem 1C-applikationen og internetsidebutikken samt dataudveksling mellem serverapplikationen 1C og den mobile klient (oprettet ved hjælp af den mobile platform 1C:Enterprise), og meget mere.</p><p>Et af nøglebegreberne i dataoverførselsmekanismen er udvekslingsplanen. Udvekslingsplanen er en særlig type applikationsobjekt på 1C-platformen, der definerer især, hvilke data der vil deltage i udvekslingen (hvilke specifikke registre, dokumenter, registre mv.). Udvekslingsplanen indeholder også oplysninger om deltagerne i udvekslingen (de såkaldte udvekslingsnoder).<br> Den anden komponent i dataoverførselsmekanismen er mekanismen til registrering af ændringer. Denne mekanisme overvåger automatisk ændringer i dataene i systemet, som skal overføres til slutbrugerne i henhold til udvekslingsplanen. Ved hjælp af denne mekanisme sporer platformen ændringer, der er sket siden den seneste synkronisering, og muliggør en reduktion af det samlede volumen af data, der overføres under den næste synkroniseringssession.</p><p>Data exchange occurs through XML messages of a specific structure. The message contains data that has changed since the last synchronization with the node and some service information. The message structure supports message numbering and allows for confirmations from the receiving node regarding the receipt of messages. Such confirmation is contained in every message received from the recipient node in the form of the number of the last accepted message. Message numbering allows the platform to understand which data has already been successfully transmitted to the recipient node, avoiding retransmission and passing only the data that has changed since the sender node received the last message with confirmation of data received by the recipient node. This operational scheme ensures guaranteed delivery even over unreliable transmission channels and in cases of message loss.</p><h4>Eksterne komponenter</h4><p> In some cases, when addressing integration tasks, one may encounter specific requirements, such as interaction protocols and data formats that are not supported in the 1C:Enterprise platform. For these types of tasks, the platform provides <noindex><a rel=nofollow href=http://v8.1c.ru/overview/Term_000000545.htm>external component technology</a></noindex>, which allows for the creation of dynamically loadable modules that expand the functionality of 1C:Enterprise.</p><p>A typical example of a task with such requirements could be the integration of the 1C application solution with commercial equipment, ranging from scales to cash registers and barcode scanners. External components can be connected both on the server side of 1C:Enterprise and on the client side (including, among others, web clients as well as <noindex><a rel=nofollow href=https://wonderland.v8.1c.ru/blog/vneshnie-komponenty-v-mobilnom-prilozhenii/ >the upcoming version of the mobile platform</a></noindex> 1C:Enterprise). The external component technology provides a fairly simple and understandable software (C++) interface for the interaction of the component with the 1C:Enterprise platform, which must be implemented by the developer.</p><p>The possibilities that open up when using external components are quite broad. It is possible to implement interaction based on a specific data exchange protocol with external devices and systems, embed specific data processing algorithms and data formats, etc.</p><h4>Forældede integrationsmekanismer</h4><p> Platformen tilbyder integrationsmekanismer, som ikke anbefales til brug i nye løsninger; de er bevaret af hensyn til bagudkompatibilitet og i tilfælde af, at den anden part ikke kan arbejde med mere moderne protokoller. En af dem er arbejde med filer i DBF-format (støttes i det indbyggede sprog via XBase-objektet).</p><p>En anden forældet integrationsmekanisme er brugen af COM-teknologi (kun tilgængelig på Windows-platformen). 1C:Enterprise-platformen tilbyder to integrationsmetoder til Windows, der bruger COM-teknologi: Automation-server og Eksternt forbindelser. De er meget ens, men en af de væsentlige forskelle er, at i tilfælde af Automation-serveren startes en fuld klientapplikation 1C:Enterprise 8, mens der i tilfælde af ekstern forbindelse startes en relativt lille intra-process COM-server. Det betyder, at hvis der arbejdes gennem Automation-serveren, kan funktionaliteten i klientapplikationen udnyttes, og der kan udføres handlinger, der ligner brugerens interaktive handlinger. Ved brug af ekstern forbindelse kan man kun anvende funktionerne i forretningslogikken, og disse kan udføres både på klientens side af forbindelsen, hvor den intra-process COM-server oprettes, og kald af forretningslogikken kan ske på 1C:Enterprise-serverens side.</p><p>COM-teknologi kan også anvendes til at kontakte eksterne systemer fra koden i 1C:Enterprise-applikationen. I dette tilfælde fungerer 1C-applikationen som en COM-klient. Men det skal bemærkes, at disse mekanismer kun vil fungere, hvis 1C-serveren arbejder i et Windows-miljø.</p><h3>Integrationsmekanismer implementeret i standardkonfigurationer</h3><p></p><h4>EnterpriseData-format</h4><p> <img class=lazy decoding=async alt="Integrationsmetoder med 1С" src=data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20600%20311%22%3E%3C%2Fsvg%3E data-src=/wp-content/uploads/2019/08/8930091e53309b9b808a719b747a6226.jpeg style="display:block;margin: 0 auto;" width=600 height=311><br> I en række 1C-konfigurationer (listen nedenfor) er der implementeret en klar mekanisme til dataudveksling med eksterne applikationer baseret på den ovenfor beskrevne platformsmekanisme for dataudveksling, hvilket ikke kræver ændringer i konfigurationernes kildekode (forberedelsen til dataudveksling skal ske i indstillingerne for applikationsløsninger):</p><ul> <li>«1C:ERP Virksomhedsledelse 2.0» </li> <li>«Kompleks automatisering 2» </li> <li>«Virksomhedsregnskab», udgave 3.0 </li> <li>«Virksomhedsregnskab KORP», udgave 3.0 </li> <li>«Detailhandel», udgave 2.0 </li> <li>«Handelsstyring grundlæggende», udgave 11 </li> <li>«Handelsstyring», udgave 11</li> <li>«Løn og personaleledelse KORP», udgave 3</li></ul><p> Dataudveksling foregår i formatet <noindex><a rel=nofollow href=http://v8.1c.ru/edi/edi_app/enterprisedata/ >EnterpriseData</a></noindex>, baseret på XML. Formatet er forretningsorienteret – de strukturer, der beskrives i det, svarer til forretningsenheder (dokumenter og elementer af registre), der præsenteres i 1C-programmerne, eksempelvis: udførte arbejders akt, kassekvittering, modpart, varekatalog osv.</p><p>Dataudveksling mellem 1C-applikationen og en tredjepartsapplikation kan ske:</p><ul> <li>gennem en dedikeret filmappe </li> <li>gennem en FTP-mappe </li> <li>gennem en webservice, der er implementeret på 1C-applikationens side. Filen med data overføres som parameter til webmetoderne</li> <li>gennem e-mail</li></ul><p> I tilfælde af udveksling via webservice vil den tredjepartsapplikation initiere dataudvekslingssessionen ved at kalde de relevante webmetoder i 1C-applikationen. I de øvrige tilfælde vil initiatoren af udvekslingssessionen være 1C-applikationen (ved at placere filen med data i den relevante mappe eller ved at sende filen med data til den konfigurerede e-mailadresse).<br> Der kan også indstilles, hvor ofte synchroniseringen vil finde sted på 1C-siden (for varianter med filudveksling via mappe og e-mail):</p><ul> <li>efter tidsplan (med angivet frekvens) </li> <li>manuelt; brugeren skal manuelt starte synchroniseringen hver gang, det er nødvendigt</li></ul><p></p><h5>Kvittering af meddelelser</h5><p> 1C-applikationer holder styr på de sendte og modtagne synchroniseringsmeddelelser og forventer det samme fra tredjepartsapplikationer. Dette muliggør brugen af mekanismen til nummerering af meddelelser, der er beskrevet ovenfor i afsnittet «Mekanisme til dataudveksling».</p><p>1C-applikationer overfører kun information om ændringer, der er sket med forretningsenheder siden den sidste synkronisering under synkronisering (for at minimere mængden af overført information). Ved den første synkronisering vil 1C-applikationen eksportere alle forretningsenheder (for eksempel elementer fra kataloget) i formatet EnterpriseData til en XML-fil (da de alle er 'nye' for den eksterne applikation). Den eksterne applikation skal behandle informationen fra den modtagne XML-fil fra 1C og ved næste synkroniseringssession inkludere oplysninger i den fil, der sendes til 1C, i en særlig XML-sektion, der bekræfter, at beskeden fra 1C med et bestemt nummer er blevet modtaget. Bekræftelsesbesked er for 1C-applikationen et signal om, at alle forretningsenheder er blevet behandlet succesfuldt af den eksterne applikation, og at yderligere information om dem ikke er nødvendig. Udover bekræftelsen kan XML-filen fra den eksterne applikation også indeholde data til synkronisering fra applikationens side (for eksempel dokumenter vedrørende salg af varer og tjenester).</p><p>Efter modtagelsen af bekræftelsesbeskeden markerer 1C-applikationen alle ændringer, der blev sendt i den foregående besked, som succesfuldt synkroniserede. Kun usynkroniserede ændringer i forretningsenheder (oprettelse af nye enheder, ændring og sletning af eksisterende) vil blive sendt til den eksterne applikation ved næste synkronisering.</p><p><img class=lazy decoding=async alt="Integrationsmetoder med 1С" src=data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20600%20381%22%3E%3C%2Fsvg%3E data-src=/wp-content/uploads/2019/08/b0d5509a53909e38886a15c2e03e7131.jpeg style="display:block;margin: 0 auto;" width=600 height=381><br> Når data overføres fra den eksterne applikation til 1C-applikationen, ændrer scenariet sig til det modsatte. Den eksterne applikation skal udfylde bekræftelsessektionen i XML-filen korrekt og inkludere forretningsdata til synkronisering fra sin side i formatet EnterpriseData.</p><p><img class=lazy decoding=async alt="Integrationsmetoder med 1С" src=data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20600%20381%22%3E%3C%2Fsvg%3E data-src=/wp-content/uploads/2019/08/d34b96efb7591770133b363b369c0019.jpeg style="display:block;margin: 0 auto;" width=600 height=381></p><h5>Forenklet dataudveksling uden bekræftelse</h5><p> For tilfælde med enkel integration, hvor det er tilstrækkeligt kun at overføre information fra den eksterne applikation til 1C-applikationen, og hvor der ikke kræves overførsel af data fra 1C-applikationen tilbage til den eksterne applikation (for eksempel integration af en online butik, der overfører oplysninger om salg til '1C:Regnskab'), findes der en forenklet arbejdsmåde gennem en webtjeneste (uden bekræftelse), der ikke kræver konfigurationer fra 1C-applikationens side.</p><h4>Specialiserede integrationsløsninger</h4><p> Der findes en standardløsning kaldet «1C: Data Conversion», som bruger platformens mekanismer til at konvertere og udveksle data mellem standardkonfigurationer i 1C, men den kan også bruges til integration med tredjepartsapplikationer.</p><h5>Integration med bankløsninger</h5><p> Standarten <noindex><a rel=nofollow href=http://v8.1c.ru/edi/edi_stnd/100/index.htm>«Klientbank»</a></noindex>, udviklet af 1C-specialister for mere end 10 år siden, er blevet en industriestandard i Rusland. Næste skridt i denne retning er teknologien <noindex><a rel=nofollow href=http://directbank.1c.ru/ >DirectBank</a></noindex>, som gør det muligt at sende betalingsdokumenter til banken og modtage kontoudtog fra banken direkte fra systemet «1C:Foretagender» med et enkelt klik i programmet «1C»; her kræves der ikke installation og opstart af yderligere programmer på klientcomputeren.</p><p>Der er også <noindex><a rel=nofollow href=http://v8.1c.ru/edi/edi_stnd/109/ >en standard for dataudveksling i lønprojekter</a></noindex>.</p><h5>Andet</h5><p> Det er værd at nævne <noindex><a rel=nofollow href=http://v8.1c.ru/edi/edi_stnd/131/ >udvekslingsprotokollen mellem systemet 1C:Foretagende og hjemmesiden</a></noindex>, standarden for udveksling af erhvervsinformation <noindex><a rel=nofollow href=http://v8.1c.ru/edi/edi_stnd/90/ >CommerceML</a></noindex> (udviklet i samarbejde med Microsoft, Intel, Price.ru og andre virksomheder), <noindex><a rel=nofollow href=http://v8.1c.ru/edi/edi_stnd/111/ >standarden for dataudveksling vedrørende ekviteringsoperationer</a></noindex>.<br> <br>Kilde: <a content=nofollow rel=nofollow href=https://habr.com/ru/company/1c/blog/308420/ >habr.com</a></p></div></article><div style="width: 100%; text-align: center; margin: 0; padding: 31px 0 0 0;"> <a href=https://prohoster.info/da/vps/ > <img class=lazy src=data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20700%2086%22%3E%3C%2Fsvg%3E data-src=https://prohoster.info/wp-content/uploads/2025/10/photo_2025-10-27_14-51-22.webp data-srcset="        https://prohoster.info/wp-content/uploads/2025/10/photo_2025-10-27_14-51-22-350.webp 350w,        https://prohoster.info/wp-content/uploads/2025/10/photo_2025-10-27_14-51-22.webp 1280w" data-sizes="(max-width: 768px) 90vw, 700px" alt="ProHoster VPS — Overkommelige og pålidelige VPS-servere med fuld root-adgang" title="ProHoster VPS — Overkommelige og pålidelige VPS-servere med fuld root-adgang" style="display: inline-block; height: auto; max-width: 100%;" width=700 height=86> </a></div></div><nav class="navigation post-navigation" aria-label=Indlæg data-no-translation-aria-label><h2 class="screen-reader-text" data-no-translation="" data-trp-gettext="">Indlægsnavigation</h2><div class=nav-links><div class=nav-previous><a href=https://prohoster.info/da/blog/administrirovanie/lte-kak-simvol-nezavisimosti rel=prev>LTE som et symbol på uafhængighed</a></div><div class=nav-next><a href=https://prohoster.info/da/blog/administrirovanie/podnimaem-server-1s-s-publikatsiej-bazy-i-veb-servisov-na-linux rel=next>Opsætning af 1С server med publicering af databasen og webservices på Linux</a></div></div></nav></main></div></div></div><footer id=colophon class=site-footer><div class=container><div class="row between-sm"><div class="col-md-3 col-xs-12"><div id=nav_menu-9 class="widget widget_nav_menu"><h3 class="widget-title">Vores tjenester</h3><div class=menu-menyu-v-futere-v-vidzhete-1-russkij-container><ul id=menu-menyu-v-futere-v-vidzhete-1-russkij-1 class=menu><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-121326"><a href=https://prohoster.info/da/hosting/unlim-khosting>Ubegribelig webhosting</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-172"><a href=https://prohoster.info/da/zhashchita-ot-ddos>Beskyttelse mod DDoS-angreb</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-169"><a href=https://prohoster.info/da/hosting/constructor>Webstedsbygger</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-175"><a href=https://prohoster.info/da/control-panel>Kontrolpaneler</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-173"><a href=https://prohoster.info/da/domain>Domainregistrering</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-108824"><a href=https://prohoster.info/da/ssl-sertifikat>SSL-certifikater</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-123573"><a href=https://prohoster.info/da/vpn>VPN</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-170"><a href=https://prohoster.info/da/vps/ssd-vps>VPS, VDS</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-171"><a href=https://prohoster.info/da/vps/abuzoustojchivye-vps>Windows VPS</a></li></ul></div></div></div><div class="col-md-3 col-sm-6 col-xs-12"><div id=nav_menu-10 class="widget widget_nav_menu"><h3 class="widget-title">Information</h3><div class=menu-menyu-v-futere-v-vidzhete-2-russkij-vtoroe-menyu-v-podvale-container><ul id=menu-menyu-v-futere-v-vidzhete-2-russkij-vtoroe-menyu-v-podvale class=menu><li id=menu-item-153465 class="menu-item menu-item-type-post_type menu-item-object-page menu-item-153465"><a href=https://prohoster.info/da/kompaniya/partnerstvo>Partnerskab</a></li> <li id=menu-item-153466 class="menu-item menu-item-type-post_type menu-item-object-page menu-item-153466"><a href=https://prohoster.info/da/bonus-partner>Bonuser fra partnere</a></li> <li id=menu-item-153467 class="menu-item menu-item-type-custom menu-item-object-custom menu-item-153467"><a href="https://billing.prohoster.info/knowledgebase?language=english">Vidensbase</a></li> <li id=menu-item-153468 class="menu-item menu-item-type-post_type menu-item-object-page menu-item-153468"><a href=https://prohoster.info/da/kompaniya>Om virksomheden</a></li> <li id=menu-item-153471 class="menu-item menu-item-type-post_type menu-item-object-page menu-item-153471"><a href=https://prohoster.info/da/kompaniya/terms-of-service>Vilkår for tjenesteudbydelse</a></li> <li id=menu-item-153469 class="menu-item menu-item-type-post_type menu-item-object-page menu-item-153469"><a href=https://prohoster.info/da/kompaniya/privacy-policy>Fortrolighedspolitik</a></li> <li id=menu-item-153470 class="menu-item menu-item-type-custom menu-item-object-custom menu-item-153470"><a href=https://prohoster.info/da/kompaniya/terms-of-service/#refund>Refusionspolitik</a></li> <li id=menu-item-155022 class="menu-item menu-item-type-post_type menu-item-object-page menu-item-155022"><a href=https://prohoster.info/da/kompaniya/data-centers>Datacentre</a></li> <li id=menu-item-154840 class="menu-item menu-item-type-post_type menu-item-object-page menu-item-154840"><a href=https://prohoster.info/da/kompaniya/service-level-agreement>SLA</a></li> <li id=menu-item-155009 class="menu-item menu-item-type-custom menu-item-object-custom menu-item-155009"><a href="https://billing.prohoster.info/submitticket.php?step=2&deptid=1&language=english">Rapportér misbrug</a></li> <li id=menu-item-183801 class="menu-item menu-item-type-custom menu-item-object-custom menu-item-183801"><a href=https://status.prohoster.info>Netværksstatus</a></li></ul></div></div></div><div class="col-md-3 col-sm-6 col-xs-12"><div id=nav_menu-11 class="widget widget_nav_menu"><h3 class="widget-title">Support</h3><div class=menu-menyu-v-futere-v-vidzhete-3-russkij-container><ul id=menu-menyu-v-futere-v-vidzhete-3-russkij class=menu><li id=menu-item-188 class="menu-btn-billing menu-item menu-item-type-custom menu-item-object-custom menu-item-188"><a rel=nofollow href=https://billing.prohoster.info/login>Betalingspanel</a></li> <li id=menu-item-189 class="menu-btn-mail menu-item menu-item-type-custom menu-item-object-custom menu-item-189"><a rel=nofollow href=mailto:support@prohoster.info>support@prohoster.info</a></li> <li id=menu-item-108822 class="menu-btn-location menu-item menu-item-type-custom menu-item-object-custom menu-item-108822"><a rel=nofollow href=#>IT WEB LTD (Reg. No. 2088463) Intershore Chambers, Road Town, Tortola, P.O. Box 4342, BVI</a></li> <li id=menu-item-183620 class="menu-btn-location menu-item menu-item-type-custom menu-item-object-custom menu-item-183620"><a rel=nofollow href=#>Operations NL: Tulpenstraat 6, Meppel, Netherlands</a></li></ul></div></div><div id=custom_html-19 class="widget_text widget widget_custom_html"><div class="textwidget custom-html-widget"><style>.awards-wrapper{display:flex;flex-wrap:wrap;justify-content:center;gap:15px;max-width:340px;margin:0
auto}.awards-wrapper
img{width:105px;height:105px;object-fit:contain}</style><div class=awards-wrapper> <a href=https://hostadvice.com/hosting-company/prohoster-reviews/ rel=nofollow target=_blank> <img class=lazy src=data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201%201%22%3E%3C%2Fsvg%3E data-src=https://hostadvice.com/awards/great-uptime.png alt="ProHoster Anmeldelser"> </a><a href=https://hostadvice.com/hosting-company/prohoster-reviews/ target=_blank rel=nofollow> <img class=lazy src=data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201%201%22%3E%3C%2Fsvg%3E data-src=https://hostadvice.com/awards/2021-top-10-shared-hosting.png alt="ProHoster Anmeldelser"> </a><div class=sf-root data-id=3473357 data-badge=most-loved data-variant-id=tbs style="width:125px;transform: scale(1.15);"> <a href=https://topbusinesssoftware.com/products/ProHoster/reviews/ target=_blank>ProHoster Anmeldelser</a></div> <script>(function(){var sc=document.createElement('script');sc.async=true;sc.src='https://b.sf-syn.com/badge_js?sf_id=3473357&variant_id=tbs';var p=document.getElementsByTagName('script')[0];p.parentNode.insertBefore(sc,p);})();</script> <a href=https://sourceforge.net/software/product/ProHoster/ target=_blank rel="noopener nofollow"> <img class=lazy src=data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201%201%22%3E%3C%2Fsvg%3E data-src="https://b.sf-syn.com/badge_img/3473357/heart-badge-white?variant_id=sf&f=png" alt="ProHoster Anmeldelser"> </a></div></div></div></div><div class="col-md-3 col-xs-12"><div id=custom_html-4 class="widget_text widget widget_custom_html"><h3 class="widget-title">Vi accepterer</h3><div class="textwidget custom-html-widget"><style>.image-row{display:flex;flex-wrap:wrap;justify-content:space-between}.image-row
a{width:18%}.image-row
img{width:100%;height:auto}</style><div class=image-row> <a href=https://www.visa.com rel=nofollow> <img style="width: 55px; height: 35px;" title="Vi accepterer Visa" src=/wp-content/uploads/payment-logos/visa.svg alt=visa1> </a> <a href=https://www.mastercard.com/index.html rel=nofollow> <img style="width: 55px; height: 35px;" title="Vi accepterer MasterCard" src=/wp-content/uploads/payment-logos/mastercard.svg alt=master2> </a> <a href=https://pay.google.com rel=nofollow> <img style="width: 55px; height: 35px;" title="Vi accepterer GPay" src=/wp-content/uploads/payment-logos/google-pay.svg alt=GPay> </a> <a href=https://apple.com rel=nofollow> <img style="width: 55px; height: 35px;" title="Vi accepterer Apple Pay" src=/wp-content/uploads/payment-logos/apple-pay.svg alt="Apple Pay"> </a> <a href=# rel=nofollow> <img style="width: 55px; height: 35px;" class=alignnone title="Vi accepterer Crypto" src=https://prohoster.info/wp-content/uploads/payment-logos/crypto.svg alt="Krypto betaling"> </a></div></div></div><div id=custom_html-25 class="widget_text widget widget_custom_html"><h3 class="widget-title">Deltag med os</h3><div class="textwidget custom-html-widget"><div class=social-links> <a href=https://www.youtube.com/@prohoster_info target=_blank rel=nofollow aria-label=YouTube> <img class=lazy src=data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201%201%22%3E%3C%2Fsvg%3E data-src=/wp-content/uploads/social/youtube-icon.webp alt=YouTube title="Vi er på YouTube"> </a> <a href=https://www.facebook.com/prohoster/ target=_blank rel=nofollow aria-label=Facebook> <img class=lazy src=data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201%201%22%3E%3C%2Fsvg%3E data-src=/wp-content/uploads/social/facebook-icon.webp alt=Facebook title="Vi er på Facebook"> </a> <a href=https://t.me/prohoster_news target=_blank rel=nofollow aria-label=Telegram> <img class=lazy src=data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201%201%22%3E%3C%2Fsvg%3E data-src=/wp-content/uploads/social/telegram-icon.webp alt=Telegram title="Vi er på Telegram"> </a> <a href=https://www.tiktok.com/@prohoster.info target=_blank rel=nofollow aria-label=tiktok> <img class=lazy src=data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201%201%22%3E%3C%2Fsvg%3E data-src=/wp-content/uploads/social/tiktok1-icon.webp alt=tiktok title="Vi er på tiktok"> </a></div><style>.social-links{display:grid;grid-template-columns:repeat(4, 1fr);gap:15px 10px;justify-items:center;max-width:300px;margin:0
auto}.social-links
img{width:28px;height:28px;object-fit:contain;transition:transform 0.2s ease}.social-links img:hover{transform:scale(1.15)}</style></div></div><div id=custom_html-20 class="widget_text widget widget_custom_html"><div class="textwidget custom-html-widget"><style>.awards-wrapper-2{display:flex;flex-wrap:wrap;justify-content:center;gap:15px;max-width:240px;margin:0
auto}.awards-wrapper-2
img{width:105px;height:auto;object-fit:contain}</style><div class=awards-wrapper-2 style="    margin-top: 107px;"> <a href=https://ru.hostings.info/prohoster.html target=_blank rel=nofollow> <img class=lazy src=data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201%201%22%3E%3C%2Fsvg%3E data-src=https://ru.hostings.info/informers/cache/730-11-blue.png alt="Kundeanmeldelser på Hostings.info" title="Kundeanmeldelser - åbnes i nyt vindue"> </a><a href=https://hostadvice.com/hosting-company/prohoster-reviews/ rel=nofollow target=_blank> <img class=lazy src=data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201%201%22%3E%3C%2Fsvg%3E data-src=https://hostadvice.com/awards/2022-top25-dedicated-hosting.png alt="ProHoster Anmeldelser"> </a></div></div></div><div id=block-2 class="widget widget_block widget_text"><p class=wp-block-paragraph></p></div></div></div></div><div class=site-info><div class=container><div class=row><div class="col-md-12 text-center-xs"><div class="textwidget custom-html-widget"><a href="https://apps.db.ripe.net/db-web-ui/lookup?source=ripe&key=ORG-IWL5-RIPE&type=organisation" target=_blank rel=nofollow> <img class=" lazy" src=data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2088%2031%22%3E%3C%2Fsvg%3E data-src=/wp-content/uploads/ripe-ncc-m-w.png alt=ripe-ncc-m-w width=88 height=31> </a></div><div class="textwidget custom-html-widget"><div style="content-visibility:auto; contain-intrinsic-size:auto 400px;"><div data-submi-badges=bk_R8PRdHn3TQFt-vxA data-submi-size=small data-submi-layout=scroll style="max-width:50%; margin:0 auto;"> … 99 katalog links …</div></div> <script>(function(){var box=document.querySelector('[data-submi-badges]');if(!box)return;function fix(){box.querySelectorAll('a').forEach(function(a){if(a.getAttribute('rel')!=='nofollow noopener')a.setAttribute('rel','nofollow noopener');});box.querySelectorAll('img:not([loading])').forEach(function(img){img.loading='lazy';img.decoding='async';});}
var loaded=false;function load(){if(loaded)return;loaded=true;var s=document.createElement('script');s.src='https://app.submi.io/b/bk_R8PRdHn3TQFt-vxA/js';s.async=true;s.onload=function(){fix();var mo=new MutationObserver(fix);mo.observe(box,{childList:true,subtree:true});setTimeout(function(){mo.disconnect();},5000);};document.head.appendChild(s);}
if('IntersectionObserver'in window){var io=new IntersectionObserver(function(entries){if(entries[0].isIntersecting){io.disconnect();load();}},{rootMargin:'300px'});io.observe(box);}else{window.addEventListener('load',load);}})();</script></div>	© 2014 - 2026<span class=sep> | </span>Alle rettigheder forbeholdes.</div></div></div></div></footer></div><template id=tp-language data-tp-language=da_DK></template><script type=speculationrules>{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/da/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/universal55x5old/*","/da/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]}</script> <style>.ph2-tt-wrap{position:relative;display:inline-block;cursor:help}.ph2-tt-wrap .ph2-tt-box{display:none !important;position:absolute !important;bottom:125%;left:50%;transform:translateX(-50%);background:#333;color:#fff;padding:8px
10px;border-radius:4px;font-size:12px;line-height:1.4;width:240px;z-index:999;text-align:left;white-space:normal;box-shadow:0 2px 8px rgba(0,0,0,.2)}.ph2-tt-wrap:hover .ph2-tt-box,
.ph2-tt-wrap.ph2-active .ph2-tt-box{display:block !important}.has-percent::after{content:"%"}</style> <script>document.addEventListener('click',function(e){document.querySelectorAll('.ph2-tt-wrap.ph2-active').forEach(function(el){if(!el.contains(e.target))el.classList.remove('ph2-active');});var wrap=e.target.closest('.ph2-tt-wrap');if(wrap){e.preventDefault();wrap.classList.toggle('ph2-active');}});</script> <script>function loadVideo(el){const videoId=el.dataset.id;const iframe=document.createElement("iframe");iframe.src=`https://www.youtube.com/embed/${videoId}?autoplay=1`;iframe.width="750";iframe.height="422";iframe.frameBorder="0";iframe.allow="autoplay; encrypted-media";iframe.allowFullscreen=true;el.innerHTML="";el.appendChild(iframe);}</script> <style>.youtube-placeholder{position:relative;width:100%;height:0;padding-bottom:56.25%;background-color:#000;cursor:pointer;overflow:hidden}.youtube-placeholder img,
.youtube-placeholder
iframe{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover}.youtube-placeholder .play-button{position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);width:68px;height:48px;background:rgba(0, 0, 0, 0.6);border-radius:12px}.youtube-placeholder .play-button::before{content:'';position:absolute;left:26px;top:12px;width:0;height:0;border-left:16px solid white;border-top:10px solid transparent;border-bottom:10px solid transparent}</style><div class=mwai-chatbot-container data-params='{"aiName":"ProHoster Chat","userName":"User: ","guestName":"Guest:","aiAvatar":true,"aiAvatarUrl":"chat-robot-1.svg","textSend":"Send","textClear":"Clear","imageUpload":false,"fileUpload":false,"multiUpload":false,"maxUploads":1,"fileUploads":0,"mode":"chat","textInputPlaceholder":"Type your message...","textEmptyHint":"","textInputMaxLength":1500,"textCompliance":"","startSentence":"Hi! How can I help you?","localMemory":true,"themeId":"chatgpt","window":true,"icon":"","iconText":"ProHoster Agent","iconTextDelay":1,"iconTextDuration":0,"iconTextOnce":"session","iconAlt":"AI Engine Chatbot","iconPosition":"bottom-right","centerOpen":false,"width":"","openDelay":"","iconBubble":true,"windowAnimation":"zoom","fullscreen":false,"copyButton":true,"pdfButton":false,"headerSubtitle":"Discuss with ProHoster Agent","popupTitle":"ProHoster Agent","containerType":"standard","headerType":"standard","messagesType":"standard","inputType":"standard","footerType":"standard"}' data-system='{"botId":"default","customId":null,"userData":null,"sessionId":null,"restNonce":null,"contextId":36968,"pluginUrl":"https:\/\/prohoster.info\/wp-content\/plugins\/ai-engine","restUrl":"https:\/\/prohoster.info\/da\/wp-json","stream":true,"debugMode":false,"eventLogs":false,"speech_recognition":false,"speech_synthesis":false,"typewriter":false,"crossSite":false,"texts":{"Ask me anything!":"Ask me anything!","Jump to the latest message":"Jump to the latest message","Try again":"Try again","Conversation cleared.":"Conversation cleared.","Undo":"Undo","Done!":"Done!","New Chat":"New Chat","No messages yet":"No messages yet","Rename":"Rename","Delete":"Delete","Your text was cut at %d characters.":"Your text was cut at %d characters.","Hold to Talk":"Hold to Talk","Release to Send":"Release to Send","Press Space to talk":"Press Space to talk","Start session to upload images":"Start session to upload images","Usage limit exceeded":"Usage limit exceeded","Connection failed":"Connection failed","Connection failed. Please check your network and try again.":"Connection failed. Please check your network and try again.","Connection lost. Reconnecting...":"Connection lost. Reconnecting...","Connection lost while uploading image. Please try again.":"Connection lost while uploading image. Please try again.","Connection timeout: The server took too long to respond.":"Connection timeout: The server took too long to respond.","Could not start realtime session.":"Could not start realtime session.","An error occurred while starting the realtime session.":"An error occurred while starting the realtime session.","An error occurred while processing your request. Please try again.":"An error occurred while processing your request. Please try again.","An error occurred while committing the stats.":"An error occurred while committing the stats.","An error occurred while committing the discussion.":"An error occurred while committing the discussion.","An error occurred while executing the function.":"An error occurred while executing the function.","Authentication failed: Your session has expired. Please refresh the page.":"Authentication failed: Your session has expired. Please refresh the page.","Error uploading image. Please try again.":"Error uploading image. Please try again.","Failed to access microphone: ":"Failed to access microphone: ","Failed to access microphone. Please ensure microphone permissions are granted and try again.":"Failed to access microphone. Please ensure microphone permissions are granted and try again.","Failed to establish connection with OpenAI servers. Please try again.":"Failed to establish connection with OpenAI servers. Please try again.","Failed to read image file.":"Failed to read image file.","Failed to send image. Please try again.":"Failed to send image. Please try again.","Failed to upload image.":"Failed to upload image.","Image file size must be less than 20MB.":"Image file size must be less than 20MB.","Internal server error: An unexpected error occurred. Please try again.":"Internal server error: An unexpected error occurred. Please try again.","Invalid API key: Please check your OpenAI API key in settings.":"Invalid API key: Please check your OpenAI API key in settings.","Invalid request: The message format was not recognized by the server.":"Invalid request: The message format was not recognized by the server.","MediaDevices API not available. Please ensure you are using HTTPS and a modern browser.":"MediaDevices API not available. Please ensure you are using HTTPS and a modern browser.","Model overloaded: The AI model is currently experiencing high demand.":"Model overloaded: The AI model is currently experiencing high demand.","Network error: Failed to establish connection to the AI service.":"Network error: Failed to establish connection to the AI service.","Please select an image file.":"Please select an image file.","Please start a session before uploading images.":"Please start a session before uploading images.","Quota exceeded: You have reached your usage limit for this period.":"Quota exceeded: You have reached your usage limit for this period.","Rate limit exceeded: Too many requests. Please try again later.":"Rate limit exceeded: Too many requests. Please try again later.","Service unavailable: The AI service is temporarily down for maintenance.":"Service unavailable: The AI service is temporarily down for maintenance."},"actions":[],"blocks":[],"shortcuts":[]}' data-theme={"type":"internal","name":"ChatGPT","themeId":"chatgpt","settings":[],"style":"","cssUrl":"https:\/\/prohoster.info\/wp-content\/plugins\/ai-engine\/themes\/chatgpt.css"}></div><script id=flying-scripts>const loadScriptsTimer=setTimeout(loadScripts,5000*1000);const userInteractionEvents=['click','mousemove','keydown','touchstart','touchmove','wheel'];userInteractionEvents.forEach(function(event){window.addEventListener(event,triggerScriptLoader,{passive:!0})});function triggerScriptLoader(){loadScripts();clearTimeout(loadScriptsTimer);userInteractionEvents.forEach(function(event){window.removeEventListener(event,triggerScriptLoader,{passive:!0})})}
function loadScripts(){document.querySelectorAll("script[data-type='lazy']").forEach(function(elem){elem.setAttribute("src",elem.getAttribute("data-src"))})}</script> <script id=trp-dynamic-translator-js-extra>var trp_data={"trp_custom_ajax_url":"https://prohoster.info/wp-content/plugins/translatepress-multilingual/includes/trp-ajax.php","trp_wp_ajax_url":"https://prohoster.info/wp-admin/admin-ajax.php","trp_language_to_query":"da_DK","trp_original_language":"ru_RU","trp_current_language":"da_DK","trp_skip_selectors":["[data-no-translation]","[data-no-dynamic-translation]","[data-trp-translate-id-innertext]","script","style","head","trp-span","translate-press","[data-trp-translate-id]","[data-trpgettextoriginal]","[data-trp-post-slug]"],"trp_base_selectors":["data-trp-translate-id","data-trpgettextoriginal","data-trp-post-slug"],"trp_attributes_selectors":{"text":{"accessor":"outertext","attribute":false},"block":{"accessor":"innertext","attribute":false},"image_src":{"selector":"img[src]","accessor":"src","attribute":true},"submit":{"selector":"input[type='submit'],input[type='button'], input[type='reset']","accessor":"value","attribute":true},"placeholder":{"selector":"input[placeholder],textarea[placeholder]","accessor":"placeholder","attribute":true},"title":{"selector":"[title]","accessor":"title","attribute":true},"a_href":{"selector":"a[href]","accessor":"href","attribute":true},"button":{"accessor":"outertext","attribute":false},"option":{"accessor":"innertext","attribute":false},"aria_label":{"selector":"[aria-label]","accessor":"aria-label","attribute":true},"video_src":{"selector":"video[src]","accessor":"src","attribute":true},"video_poster":{"selector":"video[poster]","accessor":"poster","attribute":true},"video_source_src":{"selector":"video source[src]","accessor":"src","attribute":true},"audio_src":{"selector":"audio[src]","accessor":"src","attribute":true},"audio_source_src":{"selector":"audio source[src]","accessor":"src","attribute":true},"picture_image_src":{"selector":"picture image[src]","accessor":"src","attribute":true},"picture_source_srcset":{"selector":"picture source[srcset]","accessor":"srcset","attribute":true},"image_alt":{"selector":"img[alt]","accessor":"alt","attribute":true},"meta_desc":{"selector":"meta[name=\"description\"],meta[property=\"og:title\"],meta[property=\"og:description\"],meta[property=\"og:site_name\"],meta[property=\"og:image:alt\"],meta[name=\"twitter:title\"],meta[name=\"twitter:description\"],meta[name=\"twitter:image:alt\"],meta[name=\"DC.Title\"],meta[name=\"DC.Description\"],meta[property=\"article:section\"],meta[property=\"article:tag\"]","accessor":"content","attribute":true},"page_title":{"selector":"title","accessor":"innertext","attribute":false},"meta_desc_img":{"selector":"meta[property=\"og:image\"],meta[property=\"og:image:secure_url\"],meta[name=\"twitter:image\"]","accessor":"content","attribute":true}},"trp_attributes_accessors":["outertext","innertext","src","value","placeholder","title","href","aria-label","poster","srcset","alt","content"],"gettranslationsnonceregular":"3abb3eb41e","showdynamiccontentbeforetranslation":"","skip_strings_from_dynamic_translation":[],"skip_strings_from_dynamic_translation_for_substrings":{"href":["amazon-adsystem","googleads","g.doubleclick"]},"duplicate_detections_allowed":"100","trp_translate_numerals_opt":"no","trp_no_auto_translation_selectors":["[data-no-auto-translation]"]};</script> <script id=trp-dynamic-translator-js src="https://prohoster.info/wp-content/plugins/translatepress-multilingual/assets/js/trp-translate-dom-changes.js?ver=3.3.8"></script> <script id=heartbeat-js-extra>var heartbeatSettings={"ajaxurl":"/wp-admin/admin-ajax.php","interval":"15"};var dfehc_heartbeat_vars={"recommendedInterval":"21.516231617647","heartbeat_control_enabled":"1","nonce":"f81cdd88e8","ver":"1791319534","cache_bypass_rate":"0.05"};</script> <script id=heartbeat-js src="https://prohoster.info/wp-content/plugins/dynamic-front-end-heartbeat-control/js/heartbeat.min.js?ver=1.6.5"></script> <script id=react-js src="https://prohoster.info/wp-includes/js/dist/vendor/react.min.js?ver=18.3.1.1"></script> <script id=react-dom-js src="https://prohoster.info/wp-includes/js/dist/vendor/react-dom.min.js?ver=18.3.1.1"></script> <script id=wp-escape-html-js src="https://prohoster.info/wp-includes/js/dist/escape-html.min.js?ver=87ebe53e97bba59805a5"></script> <script id=wp-element-js src="https://prohoster.info/wp-includes/js/dist/element.min.js?ver=4a4370b2b349066fd440"></script> <script id=mwai_chatbot-js defer data-type=lazy data-src="https://prohoster.info/wp-content/plugins/ai-engine/app/chatbot.js?ver=1792068262"></script> <script id=mwai_highlight-js defer data-type=lazy data-src="https://prohoster.info/wp-content/plugins/ai-engine/vendor/highlightjs/highlight.min.js?ver=11.7"></script> <script id=gt_widget_script_46880739-js-before data-type=lazy data-src=data:text/javascript;base64,CndpbmRvdy5ndHJhbnNsYXRlU2V0dGluZ3MgPSAvKiBkb2N1bWVudC53cml0ZSAqLyB3aW5kb3cuZ3RyYW5zbGF0ZVNldHRpbmdzIHx8IHt9O3dpbmRvdy5ndHJhbnNsYXRlU2V0dGluZ3NbJzQ2ODgwNzM5J10gPSB7ImRlZmF1bHRfbGFuZ3VhZ2UiOiJydSIsImxhbmd1YWdlcyI6WyJhZiIsImFtIiwiYXIiLCJoeSIsImF6IiwiYmUiLCJibiIsImJzIiwiemgtQ04iLCJ6aC1UVyIsImhyIiwiZmkiLCJrYSIsImVsIiwiaXciLCJodSIsImlzIiwiaWQiLCJqYSIsImtrIiwia28iLCJreSIsImx2IiwibHQiLCJtbiIsIm15Iiwibm8iLCJmYSIsInJ1Iiwic2siLCJzbCIsInN3Iiwic3YiLCJ0aCIsInRyIiwidWsiLCJ1eiIsInZpIl0sInVybF9zdHJ1Y3R1cmUiOiJzdWJfZGlyZWN0b3J5IiwiZmxhZ19zdHlsZSI6IjJkIiwiZmxhZ19zaXplIjoyNCwid3JhcHBlcl9zZWxlY3RvciI6IiNndC13cmFwcGVyLTQ2ODgwNzM5IiwiYWx0X2ZsYWdzIjpbXSwiY3VzdG9tX2NzcyI6Ii5ndHJhbnNsYXRlX3dyYXBwZXIgLmd0X29wdGlvbiB7cG9zaXRpb246IGFic29sdXRlO2Zsb2F0OiByaWdodDt9IiwiaG9yaXpvbnRhbF9wb3NpdGlvbiI6ImlubGluZSIsImZsYWdzX2xvY2F0aW9uIjoiXC93cC1jb250ZW50XC9wbHVnaW5zXC9ndHJhbnNsYXRlXC9mbGFnc1wvIn07Ci8vIyBzb3VyY2VVUkw9Z3Rfd2lkZ2V0X3NjcmlwdF80Njg4MDczOS1qcy1iZWZvcmUK></script><script data-no-optimize=1 data-no-minify=1 data-gt-orig-url=/da/blog/administrirovanie/sposoby-integratsii-s-1s data-gt-orig-domain=prohoster.info data-gt-widget-id=46880739 defer data-type=lazy data-src="https://prohoster.info/wp-content/plugins/gtranslate/js/popup.js?ver=5.0.1"></script><script>document.getElementById('burger').addEventListener('click',function(){document.getElementById('mainNav').classList.toggle('open');});document.querySelectorAll('.submenu-toggle').forEach(function(btn){btn.addEventListener('click',function(e){e.preventDefault();const parent=btn.closest('.has-submenu');const submenu=parent.querySelector('.submenu');const isOpen=parent.classList.toggle('open');if(isOpen){submenu.style.display='block';btn.textContent='◀';}else{submenu.style.display='none';btn.textContent='▼';}});});</script> <script>document.addEventListener("DOMContentLoaded",function(){const hamburgerBtn=document.querySelector(".gamburger-btn");const primaryMenu=document.querySelector("ul#primary-menu");if(hamburgerBtn&&primaryMenu){hamburgerBtn.addEventListener("click",function(event){event.preventDefault();this.classList.toggle("gamburger-btn_active");primaryMenu.classList.toggle("active_primary");});}
const mobileSidebar=document.getElementById("mobile_sidebar");const secondaryAside=document.querySelector("aside#secondary");if(mobileSidebar&&secondaryAside){mobileSidebar.addEventListener("click",function(){this.classList.toggle("open_mobile_sidebar");secondaryAside.classList.toggle("open_secondary");});}});</script> <script>document.addEventListener("DOMContentLoaded",function(){const masthead=document.getElementById("masthead");function toggleHeaderFixed(){const isDesktop=window.innerWidth>991;const scrollTop=window.scrollY;if(masthead){if(isDesktop){if(scrollTop>150){masthead.classList.add("header-fixed");}else{masthead.classList.remove("header-fixed");}}else{masthead.classList.remove("header-fixed");}}}
window.addEventListener("scroll",toggleHeaderFixed);window.addEventListener("resize",toggleHeaderFixed);toggleHeaderFixed();});</script> <div id=cookie-data-source style="display:none !important;"> <span class=src-text>Vi bruger cookies <a target=_blank rel=nofollow href=https://prohoster.info/da/kompaniya/privacy-policy/#cookie>cookie</a>, for at sikre den bedste oplevelse på vores hjemmeside. Ved at fortsætte med at bruge hjemmesiden, accepterer du vores fortrolighedspolitik.</span> <span class=src-btn>Accepter</span></div> <script>(function(){const cookieName='user_cookies_accepted';if(localStorage.getItem(cookieName))return;setTimeout(function(){const dataSource=document.getElementById('cookie-data-source');if(!dataSource)return;const textContent=dataSource.querySelector('.src-text').innerHTML;const btnContent=dataSource.querySelector('.src-btn').innerText;const styles=`

            `;const styleSheet=document.createElement("style");styleSheet.innerText=styles;document.head.appendChild(styleSheet);const finalHtml=`
                <div id=cookie-banner>
                    <div class=cookie-container>
                        <div class=cookie-text>${textContent}</div>
                        <button id=accept-cookies class=cookie-btn>${btnContent}</button>
                    </div>
                </div>
            `;document.body.insertAdjacentHTML('beforeend',finalHtml);const banner=document.getElementById('cookie-banner');const btn=document.getElementById('accept-cookies');setTimeout(()=>{banner.classList.add('show');},100);btn.addEventListener('click',function(){localStorage.setItem(cookieName,'true');banner.classList.remove('show');setTimeout(()=>{banner.remove();},500);});},2000);})();</script> <div id=gt-text-source style="position:absolute; left:-9999px; top:-9999px; opacity:0;"> <span id=gt-org-desc>Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere</span> <span id=gt-page-name>🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster</span></div> <script>(function(){function injectSchemas(){if(document.getElementById('added-org-schema'))return;var orgDesc=document.getElementById('gt-org-desc').innerText;var pageName=document.getElementById('gt-page-name').innerText;var schemas=[{"@context":"https://schema.org","@type":"Organization","id":"added-org-schema","name":"ProHoster","url":"https://prohoster.info/","logo":"https://prohoster.info/wp-content/uploads/2019/08/logo_prohoster.png","email":"support@prohoster.info","description":orgDesc,"address":{"@type":"PostalAddress","streetAddress":"Tulpenstraat, 6","addressLocality":"Meppel","postalCode":"7943 DN","addressCountry":"NL"},"aggregateRating":{"@type":"AggregateRating","ratingValue":"4.85","reviewCount":"1297","bestRating":"5","worstRating":"1"},"sameAs":["https://hostadvice.com/hosting-company/prohoster-reviews/","https://facebook.com/prohoster","https://twitter.com/prohoster","https://www.instagram.com/prohoster.info/","https://www.tiktok.com/@prohoster.info","https://www.youtube.com/@prohoster_info","https://www.linkedin.com/company/prohoster"]},{"@context":"https://schema.org","@type":"WebPage","name":pageName,"url":window.location.href}];schemas.forEach(function(s){var script=document.createElement('script');script.type='application/ld+json';if(s.id)script.id=s.id;script.text=JSON.stringify(s);document.head.appendChild(script);});}
var checkTimer=setInterval(function(){var currentLang=document.documentElement.lang||document.querySelector('html').getAttribute('lang');var text=document.getElementById('gt-org-desc').innerText;if(!/[а-яА-Я]/.test(text)||currentLang!=='ru'){injectSchemas();clearInterval(checkTimer);}},500);setTimeout(function(){injectSchemas();clearInterval(checkTimer);},4000);})();</script> <script>function w3tc_ll_observe(ll){if(!ll||!ll.update)return;var t;new MutationObserver(function(){clearTimeout(t);t=setTimeout(function(){ll.update();},200);}).observe(document.documentElement,{childList:true,subtree:true});}window.addEventListener("LazyLoad::Initialized",function(e){setTimeout(function(){window.w3tc_lazyload=e.detail.instance;w3tc_ll_observe(window.w3tc_lazyload);},1);});window.w3tc_lazyload=1,window.lazyLoadOptions={elements_selector:".lazy",callback_loaded:function(t){var e;try{e=new CustomEvent("w3tc_lazyload_loaded",{detail:{e:t}})}catch(a){(e=document.createEvent("CustomEvent")).initCustomEvent("w3tc_lazyload_loaded",!1,!1,{e:t})}window.dispatchEvent(e)}}</script><script async src=https://prohoster.info/wp-content/plugins/w3-total-cache/pub/js/lazyload.min.js></script></body></html>