Methoden voor integratie met 1C

Wat zijn de belangrijkste vereisten voor zakelijke toepassingen? Enkele van de belangrijkste taken zijn de volgende:

  • Eenvoudig wijzigen/aanpassen van applicatielogica aan veranderende bedrijfstaken.
  • Eenvoudige integratie met andere applicaties.

Hoe de eerste taak in 1C wordt opgelost, werd kort beschreven in de sectie ‘Aanpassing en ondersteuning’ dit artikel; We zullen in een toekomstig artikel op dit interessante onderwerp terugkomen. Vandaag zullen we het hebben over de tweede taak, integratie.

Integratie taken

Integratietaken kunnen verschillend zijn. Om sommige problemen op te lossen is een eenvoudige interactieve gegevensuitwisseling voldoende, bijvoorbeeld om een ​​lijst met werknemers over te dragen aan een bank voor de uitgifte van salarisplastickaarten. Voor complexere taken kan volledig geautomatiseerde gegevensuitwisseling nodig zijn, eventueel met verwijzing naar de bedrijfslogica van een extern systeem. Er zijn taken die gespecialiseerd zijn van aard, zoals integratie met externe apparatuur (bijvoorbeeld winkelapparatuur, mobiele scanners, enz.) of met oudere of zeer gespecialiseerde systemen (bijvoorbeeld met RFID-tagherkenningssystemen). Het is uiterst belangrijk om voor elke taak het meest geschikte integratiemechanisme te selecteren.

Integratiemogelijkheden met 1C

Er zijn verschillende benaderingen voor het implementeren van integratie met 1C-applicaties; welke u kiest, hangt af van de vereisten van de taak.

  1. Implementatie gebaseerd integratiemechanismengeleverd door het platform, zijn eigen gespecialiseerde API aan de kant van de 1C-applicatie (bijvoorbeeld een reeks web- of HTTP-services die applicaties van derden aanroepen om gegevens uit te wisselen met de 1C-applicatie). Het voordeel van deze aanpak is de weerstand van de API tegen veranderingen in de implementatie aan de kant van de 1C-applicatie. Het bijzondere van deze aanpak is dat het noodzakelijk is om de broncode van een standaard 1C-oplossing te wijzigen, wat mogelijk inspanning kan vergen bij het samenvoegen van broncodes bij het overstappen naar een nieuwe versie van de configuratie. In dit geval kan een nieuwe progressieve functionaliteit te hulp komen - configuratie-uitbreidingen. Extensies zijn in wezen een plug-inmechanisme waarmee u toevoegingen aan applicatieoplossingen kunt maken zonder de applicatieoplossingen zelf te wijzigen. Door de integratie-API naar de configuratie-extensie te verplaatsen, kunt u problemen voorkomen bij het samenvoegen van configuraties bij het overstappen naar een nieuwe versie van een standaardoplossing.
  2. Gebruik maken van platformintegratiemechanismen die externe toegang bieden tot het applicatieobjectmodel en geen wijziging van de applicatie of het maken van een extensie vereisen. Het voordeel van deze aanpak is dat het niet nodig is om de 1C-applicatie te wijzigen. Minus - als de 1C-applicatie is verbeterd, zijn er mogelijk verbeteringen nodig in de geïntegreerde applicatie. Een voorbeeld van deze aanpak is het gebruik van het OData-protocol voor integratie, geïmplementeerd aan de kant van het 1C:Enterprise-platform (meer hierover hieronder).
  3. Gebruik van kant-en-klare applicatieprotocollen geïmplementeerd in standaard 1C-oplossingen. Veel standaardoplossingen van 1C en partners implementeren hun eigen applicatieprotocollen, gericht op specifieke taken, gebaseerd op de integratiemechanismen die door het platform worden geboden. Wanneer u deze mechanismen gebruikt, is het niet nodig om code te schrijven aan de 1C-toepassingszijde, omdat Wij maken gebruik van de standaardmogelijkheden van de applicatieoplossing. Aan de 1C-toepassingskant hoeven we alleen bepaalde instellingen te maken.

Integratiemechanismen in het 1C:Enterprise-platform

Bestanden importeren/exporteren

Stel dat we worden geconfronteerd met de taak van bidirectionele gegevensuitwisseling tussen een 1C-applicatie en een willekeurige applicatie. We moeten bijvoorbeeld een lijst met producten (nomenclatuurdirectory) synchroniseren tussen de 1C-applicatie en een willekeurige applicatie.

Methoden voor integratie met 1C
Om dit probleem op te lossen, kunt u een extensie schrijven die de nomenclatuurdirectory downloadt naar een bestand met een bepaald formaat (tekst, XML, JSON, ...) en dit formaat kan lezen.

Het platform implementeert een mechanisme voor het serialiseren van applicatieobjecten in XML, zowel rechtstreeks, via de globale contextmethoden WriteXML/ReadXML, als met behulp van het XDTO-hulpobject (XML Data Transfer Objects).

Elk object in het 1C:Enterprise-systeem kan worden geserialiseerd in een XML-representatie en omgekeerd.

Deze functie retourneert een XML-weergave van het object:

Функция Объект_В_XML(Объект)
    ЗаписьXML = Новый ЗаписьXML();
    ЗаписьXML.УстановитьСтроку();
    ЗаписатьXML(ЗаписьXML, Объект);
    Возврат ЗаписьXML.Закрыть();
КонецФункции

Dit is hoe het exporteren van de nomenclatuurdirectory naar XML met behulp van XDTO eruit zal zien:

&НаСервере
Процедура ЭкспортXMLНаСервере()	
	НовыйСериализаторXDTO  = СериализаторXDTO;
	НоваяЗаписьXML = Новый ЗаписьXML();
	НоваяЗаписьXML.ОткрытьФайл("C:DataНоменклатура.xml", "UTF-8");
	
	НоваяЗаписьXML.ЗаписатьОбъявлениеXML();
	НоваяЗаписьXML.ЗаписатьНачалоЭлемента("СправочникНоменклатура");
	
	Выборка = Справочники.Номенклатура.Выбрать();
	
	Пока Выборка.Следующий() Цикл 
		ОбъектНоменклатура = Выборка.ПолучитьОбъект();
		НовыйСериализаторXDTO.ЗаписатьXML(НоваяЗаписьXML, ОбъектНоменклатура, НазначениеТипаXML.Явное);
	КонецЦикла;
	
	НоваяЗаписьXML.ЗаписатьКонецЭлемента();
	НоваяЗаписьXML.Закрыть();	
КонецПроцедуры

Door simpelweg de code aan te passen, exporteren we de directory naar JSON. De producten worden naar een array geschreven; Voor de variatie is hier de Engelse versie van de syntaxis:

&AtServer
Procedure ExportJSONOnServer()
	NewXDTOSerializer  = XDTOSerializer;
	NewJSONWriter = New JSONWriter();
	NewJSONWriter.OpenFile("C:DataНоменклатура.json", "UTF-8");
	
	NewJSONWriter.WriteStartObject();
	NewJSONWriter.WritePropertyName("СправочникНоменклатура");
	NewJSONWriter.WriteStartArray();
	
	Selection = Catalogs.Номенклатура.Select();	
	
	While Selection.Next() Do 
		NomenclatureObject = Selection.GetObject();
		
		NewJSONWriter.WriteStartObject();
		
		NewJSONWriter.WritePropertyName("Номенклатура");
		NewXDTOSerializer.WriteJSON(NewJSONWriter, NomenclatureObject, XMLTypeAssignment.Implicit);
		
		NewJSONWriter.WriteEndObject();
	EndDo;
	
	NewJSONWriter.WriteEndArray();
	NewJSONWriter.WriteEndObject();
	NewJSONWriter.Close();	
EndProcedure

Dan rest alleen nog de overdracht van de data naar de eindconsument. Het 1C:Enterprise-platform ondersteunt de belangrijkste internetprotocollen HTTP, FTP, POP3, SMTP, IMAP, inclusief hun beveiligde versies. U kunt ook HTTP- en/of webservices gebruiken om gegevens over te dragen.

HTTP- en webservices

Methoden voor integratie met 1C

1C-applicaties kunnen hun eigen HTTP- en webservices implementeren, maar ook HTTP- en webservices aanroepen die zijn geïmplementeerd door applicaties van derden.

REST-interface en OData-protocol

Vanaf versie 8.3.5 kan het 1C:Enterprise-platform dit automatisch doen maak een REST-interface voor de gehele applicatieoplossing. Via de REST-interface kan elk configuratieobject (directory, document, informatieregister, etc.) beschikbaar worden gesteld voor het ontvangen en wijzigen van gegevens. Het platform gebruikt het protocol als toegangsprotocol OData versie 3.0. Het publiceren van OData-services wordt uitgevoerd vanuit het Configurator-menu “Beheer -> Publiceren op een webserver”, het selectievakje “Standaard OData-interface publiceren” moet zijn aangevinkt. Atom/XML- en JSON-formaten worden ondersteund. Nadat de applicatieoplossing op de webserver is gepubliceerd, kunnen systemen van derden er toegang toe krijgen via de REST-interface met behulp van HTTP-verzoeken. Om via het OData-protocol met de 1C-applicatie te werken is programmeren aan de 1C-kant niet nodig.

Dus een URL zoals http://<сервер>/<конфигурация>/odata/standard.odata/Catalog_Номенклатура zal ons de inhoud van de nomenclatuurcatalogus in XML-formaat retourneren - een verzameling invoerelementen (de titel van het bericht is vanwege beknoptheid weggelaten):

<entry>
	<id>http://server/Config/odata/standard.odata/Catalog_Номенклатура(guid'35d1f6e4-289b-11e6-8ba4-e03f49b16074')</id>
	<category term="StandardODATA.Catalog_Номенклатура" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme"/>
	<title type="text"/>
	<updated>2016-06-06T16:42:17</updated>
	<author/>
	<summary/>
	<link rel="edit" href="Catalog_Номенклатура(guid'35d1f6e4-289b-11e6-8ba4-e03f49b16074')" title="edit-link"/>
	<content type="application/xml">
		<m:properties  >
			<d:Ref_Key>35d1f6e4-289b-11e6-8ba4-e03f49b16074</d:Ref_Key>
			<d:DataVersion>AAAAAgAAAAA=</d:DataVersion>
			<d:DeletionMark>false</d:DeletionMark>
			<d:Code>000000001</d:Code>
			<d:Description>Кондиционер Mitsubishi</d:Description>
			<d:Описание>Мощность 2,5 кВт, режимы работы: тепло/холод</d:Описание>
		</m:properties>
	</content>
</entry>
<entry>
	<id>http://server/Config/odata/standard.odata/Catalog_Номенклатура(guid'35d1f6e5-289b-11e6-8ba4-e03f49b16074')</id>
	<category term="StandardODATA.Catalog_Номенклатура" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme"/>
...

Door de string “?$format=application/json” aan de URL toe te voegen, krijgen we de inhoud van de nomenclatuurcatalogus in JSON-formaat (URL van het formulier http://<сервер>/<конфигурация>/odata/standard.odata/Catalog_Номенклатура?$format=application/json ):

{
"odata.metadata": "http://server/Config/odata/standard.odata/$metadata#Catalog_Номенклатура",
"value": [{
"Ref_Key": "35d1f6e4-289b-11e6-8ba4-e03f49b16074",
"DataVersion": "AAAAAgAAAAA=",
"DeletionMark": false,
"Code": "000000001",
"Description": "Кондиционер Mitsubishi",
"Описание": "Мощность 2,5 кВт, режимы работы: тепло/холод"
},{
"Ref_Key": "35d1f6e5-289b-11e6-8ba4-e03f49b16074",
"DataVersion": "AAAAAwAAAAA=",
"DeletionMark": false,
"Code": "000000002",
"Description": "Кондиционер Daikin",
"Описание": "Мощность 3 кВт, режимы работы: тепло/холод"
}, …

Externe gegevensbronnen

Methoden voor integratie met 1C
In sommige gevallen vindt gegevensuitwisseling plaats via externe gegevensbronnen kan de beste oplossing zijn. Externe gegevensbronnen zijn een 1C-toepassingsconfiguratieobject waarmee u kunt communiceren met elke ODBC-compatibele database, zowel voor lezen als schrijven. Externe gegevensbronnen zijn beschikbaar op zowel Windows als Linux.

Mechanisme voor gegevensuitwisseling

Mechanisme voor gegevensuitwisseling is zowel bedoeld voor het creëren van geografisch verspreide systemen gebaseerd op 1C:Enterprise, als voor het organiseren van gegevensuitwisseling met andere informatiesystemen die niet gebaseerd zijn op 1C:Enterprise.

Dit mechanisme wordt actief gebruikt in 1C-implementaties en het scala aan taken dat met zijn hulp wordt opgelost, is zeer breed. Dit omvat gegevensuitwisseling tussen 1C-applicaties die in de filialen van de organisatie zijn geïnstalleerd, en uitwisseling tussen de 1C-applicatie en de website van de online winkel, en gegevensuitwisseling tussen de 1C-serverapplicatie en de mobiele client (gemaakt met behulp van het mobiele 1C:Enterprise-platform), en nog veel meer. meer.

Een van de sleutelconcepten in het gegevensuitwisselingsmechanisme is het uitwisselingsplan. Een uitwisselingsplan is een speciaal type object van het 1C-applicatieplatform, dat met name de samenstelling bepaalt van de gegevens die aan de uitwisseling zullen deelnemen (welke mappen, documenten, registers, enz.). Het uitwisselingsplan bevat ook informatie over uitwisselingsdeelnemers (zogenaamde uitwisselingsknooppunten).
Het tweede onderdeel van het gegevensuitwisselingsmechanisme is het wijzigingsregistratiemechanisme. Dit mechanisme controleert het systeem automatisch op wijzigingen in gegevens die moeten worden overgedragen aan eindgebruikers als onderdeel van het uitwisselingsplan. Met behulp van dit mechanisme houdt het platform de wijzigingen bij die sinds de laatste synchronisatie hebben plaatsgevonden en kunt u de hoeveelheid gegevens die tijdens de volgende synchronisatiesessie wordt overgedragen, minimaliseren.

Gegevensuitwisseling vindt plaats via XML-berichten met een bepaalde structuur. Het bericht bevat gegevens die zijn gewijzigd sinds de laatste synchronisatie met het knooppunt en enige service-informatie. De berichtstructuur ondersteunt berichtnummering en stelt u in staat een bevestiging te ontvangen van het ontvangende knooppunt dat berichten zijn ontvangen. Een dergelijke bevestiging is opgenomen in elk bericht dat afkomstig is van het ontvangende knooppunt, in de vorm van het nummer van het laatst ontvangen bericht. Door berichten te nummeren kan het platform begrijpen welke gegevens al met succes naar het ontvangende knooppunt zijn verzonden, en kan hertransmissie worden vermeden door alleen gegevens te verzenden die zijn gewijzigd sinds het verzendende knooppunt het laatste bericht heeft ontvangen met een ontvangstbewijs voor de gegevens die door het ontvangende knooppunt zijn ontvangen. Dit bedieningsschema garandeert een gegarandeerde bezorging, zelfs bij onbetrouwbare transmissiekanalen en berichtverlies.

Externe componenten

In een aantal gevallen heeft men bij het oplossen van integratieproblemen te maken met specifieke eisen, bijvoorbeeld interactieprotocollen, dataformaten, die niet voorzien zijn in het 1C:Enterprise platform. Voor een dergelijk scala aan taken biedt het platform technologie voor externe componenten, waarmee u dynamisch plug-inmodules kunt maken die de functionaliteit van 1C:Enterprise uitbreiden.

Een typisch voorbeeld van een taak met vergelijkbare vereisten is de integratie van een 1C-applicatieoplossing met winkelapparatuur, variërend van weegschalen tot kassa's en barcodescanners. Externe componenten kunnen zowel aan de 1C:Enterprise-serverzijde als aan de clientzijde worden aangesloten (inclusief, maar niet beperkt tot, de webclient, evenals volgende versie van het mobiele platform 1C: Onderneming). De technologie van externe componenten biedt een vrij eenvoudige en begrijpelijke software-interface (C++) voor de interactie van componenten met het 1C:Enterprise-platform, die door de ontwikkelaar moet worden geïmplementeerd.

De mogelijkheden die zich voordoen bij het gebruik van externe componenten zijn zeer breed. U kunt interactie implementeren met behulp van een specifiek gegevensuitwisselingsprotocol met externe apparaten en systemen, specifieke algoritmen inbouwen voor het verwerken van gegevens en gegevensformaten, enz.

Verouderde integratiemechanismen

Het platform biedt integratiemechanismen die niet worden aanbevolen voor gebruik in nieuwe oplossingen; ze worden erin gelaten vanwege achterwaartse compatibiliteit, en ook voor het geval de andere partij niet met modernere protocollen kan werken. Eén daarvan werkt met bestanden in DBF-formaat (ondersteund in de ingebouwde taal met behulp van het XBase-object).

Een ander bestaand integratiemechanisme is het gebruik van COM-technologie (alleen beschikbaar op het Windows-platform). Het 1C:Enterprise-platform biedt twee integratiemethoden voor Windows met behulp van COM-technologie: Automatiseringsserver en Externe verbinding. Ze lijken erg op elkaar, maar een van de fundamentele verschillen is dat in het geval van de Automation-server een volwaardige 1C:Enterprise 8-clienttoepassing wordt gestart, en in het geval van een externe verbinding een relatief kleine in-process COM server wordt gelanceerd. Dat wil zeggen dat als u via de Automation-server werkt, u de functionaliteit van de clienttoepassing kunt gebruiken en acties kunt uitvoeren die vergelijkbaar zijn met de interactieve acties van de gebruiker. Wanneer u een externe verbinding gebruikt, kunt u alleen bedrijfslogica-functies gebruiken, en deze kunnen zowel aan de clientzijde van de verbinding worden uitgevoerd, waar een in-process COM-server wordt gemaakt, als u kunt bedrijfslogica aanroepen op de 1C:Enterprise-server kant.

COM-technologie kan ook worden gebruikt om toegang te krijgen tot externe systemen vanuit applicatiecode op het 1C:Enterprise-platform. In dit geval fungeert de 1C-applicatie als COM-client. Maar we moeten niet vergeten dat deze mechanismen alleen werken als de 1C-server in een Windows-omgeving werkt.

Integratiemechanismen geïmplementeerd in standaardconfiguraties

Enterprise-gegevensformaat

Methoden voor integratie met 1C
In een aantal 1C-configuraties (lijst hieronder), gebaseerd op het hierboven beschreven platformgegevensuitwisselingsmechanisme, is een kant-en-klaar mechanisme voor het uitwisselen van gegevens met externe applicaties geïmplementeerd, waarbij het niet nodig is de broncode van de configuraties te wijzigen (voorbereiding op gegevensuitwisseling). uitwisseling gebeurt in de instellingen van applicatieoplossingen):

  • "1C:ERP Enterprise Management 2.0"
  • "Complexe automatisering 2"
  • "Enterprise Accounting", editie 3.0
  • "Boekhouding voor een CORP-onderneming", editie 3.0
  • "Detailhandel", editie 2.0
  • "Basishandelsbeheer", editie 11
  • Handelsbeheer, uitgave 11
  • “Salaris- en personeelsbeheer CORP”, editie 3

Het formaat dat wordt gebruikt voor gegevensuitwisseling is Enterprisegegevens, gebaseerd op XML. Het formaat is bedrijfsgericht - de daarin beschreven datastructuren komen overeen met bedrijfsentiteiten (documenten en directory-elementen) gepresenteerd in 1C-programma's, bijvoorbeeld: voltooiingshandeling, bestelling voor contante ontvangst, tegenpartij, item, enz.

Gegevensuitwisseling tussen de 1C-applicatie en een applicatie van derden kan plaatsvinden:

  • via een speciale bestandsmap
  • via FTP-map
  • via een webservice die is geïmplementeerd aan de kant van de 1C-applicatie. Het gegevensbestand wordt als parameter doorgegeven aan webmethoden
  • via e-mail

Bij uitwisseling via een webservice zal een applicatie van derden een data-uitwisselingssessie initiëren door de overeenkomstige webmethoden van de 1C-applicatie aan te roepen. In andere gevallen is de initiatiefnemer van de uitwisselingssessie de 1C-applicatie (door het gegevensbestand in de juiste map te plaatsen of door het gegevensbestand naar het geconfigureerde e-mailadres te verzenden).
Ook aan de 1C-kant kun je configureren hoe vaak synchronisatie zal plaatsvinden (voor opties met bestandsuitwisseling via een directory en e-mail):

  • volgens schema (met een bepaalde frequentie)
  • handmatig; de gebruiker zal de synchronisatie handmatig moeten starten elke keer dat hij deze nodig heeft

Berichten bevestigen

1C-applicaties houden gegevens bij van verzonden en ontvangen synchronisatieberichten en verwachten hetzelfde van applicaties van derden. Hierdoor kunt u het berichtnummeringsmechanisme gebruiken dat hierboven is beschreven in de sectie “Gegevensuitwisselingsmechanisme”.

Tijdens de synchronisatie verzenden 1C-applicaties alleen informatie over wijzigingen die hebben plaatsgevonden bij bedrijfsentiteiten sinds de laatste synchronisatie (om de hoeveelheid overgedragen informatie te minimaliseren). Tijdens de eerste synchronisatie uploadt de 1C-applicatie alle bedrijfsentiteiten (bijvoorbeeld items uit het artikelreferentieboek) in het EnterpriseData-formaat naar een XML-bestand (aangezien ze allemaal “nieuw” zijn voor de externe applicatie). De applicatie van derden moet de informatie uit het XML-bestand ontvangen van 1C verwerken en tijdens de volgende synchronisatiesessie in het naar 1C verzonden bestand in een speciale XML-sectie de informatie plaatsen dat het bericht van 1C met een bepaald nummer succesvol is ontvangen ontvangen. Het ontvangstbericht is een signaal naar de 1C-applicatie dat alle bedrijfsentiteiten met succes zijn verwerkt door de externe applicatie en dat er geen noodzaak meer is om informatie over hen te verzenden. Naast de kassabon kan een XML-bestand van een applicatie van derden ook gegevens bevatten voor synchronisatie door de applicatie (bijvoorbeeld documenten voor de verkoop van goederen en diensten).

Na ontvangst van het ontvangstbericht markeert de 1C-applicatie alle wijzigingen die in het vorige bericht zijn verzonden als succesvol gesynchroniseerd. Alleen niet-gesynchroniseerde wijzigingen aan bedrijfsentiteiten (nieuwe entiteiten aanmaken, bestaande wijzigen en verwijderen) worden tijdens de volgende synchronisatiesessie naar de externe applicatie verzonden.

Methoden voor integratie met 1C
Bij het overbrengen van gegevens van een externe applicatie naar de 1C-applicatie is het beeld omgekeerd. De externe applicatie moet het ontvangstgedeelte van het XML-bestand dienovereenkomstig invullen en de bedrijfsgegevens voor synchronisatie van zijn kant in het EnterpriseData-formaat plaatsen.

Methoden voor integratie met 1C

Vereenvoudigde gegevensuitwisseling zonder handdruk

In gevallen van eenvoudige integratie, wanneer het voldoende is om alleen informatie over te dragen van een applicatie van derden naar de 1C-applicatie en de omgekeerde overdracht van gegevens van de 1C-applicatie naar een applicatie van derden niet vereist is (de integratie van een online applicatie is bijvoorbeeld niet vereist). winkel die verkoopinformatie doorgeeft aan 1C: Boekhouding), is er een vereenvoudigde mogelijkheid om via een webservice te werken (zonder bevestiging), waarvoor geen instellingen aan de kant van de 1C-applicatie nodig zijn.

Integratieoplossingen op maat

Er is een standaardoplossing “1C: Data Conversion”, die gebruik maakt van platformmechanismen voor het converteren en uitwisselen van gegevens tussen standaard 1C-configuraties, maar die ook kan worden gebruikt voor integratie met applicaties van derden.

Integratie met bankoplossingen

Standaard "Klantenbank", meer dan 1 jaar geleden ontwikkeld door 10C-specialisten, is feitelijk een industriestandaard geworden in Rusland. De volgende stap in deze richting is technologie DirectBank, waarmee u betaaldocumenten naar de bank kunt sturen en afschriften van de bank rechtstreeks vanuit de programma's van het 1C:Enterprise-systeem kunt ontvangen met één druk op de knop in het 1C-programma; Er zijn geen extra programma's op de clientcomputer geïnstalleerd en uitgevoerd.

Есть така standaard voor gegevensuitwisseling bij salarisprojecten.

Ander

Het vermelden waard uitwisselingsprotocol tussen het 1C:Enterprise-systeem en de website, standaard voor commerciële informatie-uitwisseling CommerceML (ontwikkeld samen met Microsoft, Intel, Price.ru en andere bedrijven), standaard voor gegevensuitwisseling voor het verwerven van transacties.

Bron: www.habr.com

Voeg een reactie