Metodes van integrasie met 1C

Wat is die belangrikste vereistes vir besigheidstoepassings? Sommige van die belangrikste take is die volgende:

  • Gemak om toepassingslogika te verander/aan te pas by veranderende besigheidstake.
  • Maklike integrasie met ander toepassings.

Hoe die eerste taak in 1C opgelos word, is kortliks beskryf in die afdeling "Aanpassing en ondersteuning". Hierdie artikel; Ons sal in 'n toekomstige artikel na hierdie interessante onderwerp terugkeer. Vandag sal ons praat oor die tweede taak, integrasie.

Integrasie take

Integrasietake kan anders wees. Om 'n paar probleme op te los, is 'n eenvoudige interaktiewe data-uitruiling voldoende - byvoorbeeld om 'n lys van werknemers na 'n bank oor te dra vir die uitreiking van salarisplastiekkaarte. Vir meer komplekse take kan volledig outomatiese data-uitruiling nodig wees, moontlik met verwysing na die besigheidslogika van 'n eksterne stelsel. Daar is take wat van aard gespesialiseerd is, soos integrasie met eksterne toerusting (byvoorbeeld kleinhandeltoerusting, mobiele skandeerders, ens.) of met verouderde of hoogs gespesialiseerde stelsels (byvoorbeeld met RFID-merkerherkenningstelsels). Dit is uiters belangrik om die mees geskikte integrasiemeganisme vir elke taak te kies.

Integrasie opsies met 1C

Daar is verskillende benaderings tot die implementering van integrasie met 1C-toepassings; watter een om te kies hang af van die vereistes van die taak.

  1. Implementering gebaseer integrasiemeganismesverskaf deur die platform, sy eie gespesialiseerde API aan die 1C-toepassingskant (byvoorbeeld 'n stel web- of HTTP-dienste wat derdepartytoepassings sal oproep om data met die 1C-toepassing uit te ruil). Die voordeel van hierdie benadering is die API se weerstand teen veranderinge in implementering aan die 1C-toepassingskant. Die eienaardigheid van die benadering is dat dit nodig is om die bronkode van 'n standaard 1C-oplossing te verander, wat moontlik moeite kan verg wanneer bronkodes saamgevoeg word wanneer na 'n nuwe weergawe van die konfigurasie beweeg word. In hierdie geval kan 'n nuwe progressiewe funksionaliteit tot die redding kom - konfigurasie uitbreidings. Uitbreidings is in wese 'n inpropmeganisme wat jou toelaat om toevoegings tot toepassingsoplossings te skep sonder om die toepassingsoplossings self te verander. Deur die integrasie-API na die konfigurasie-uitbreiding te skuif, kan u probleme vermy wanneer u konfigurasies saamvoeg wanneer u na 'n nuwe weergawe van 'n standaardoplossing beweeg.
  2. Die gebruik van platformintegrasiemeganismes wat eksterne toegang tot die toepassingobjekmodel verskaf en nie verandering van die toepassing of die skepping van 'n uitbreiding vereis nie. Die voordeel van hierdie benadering is dat dit nie nodig is om die 1C-toepassing te verander nie. Minus - as die 1C-toepassing verbeter is, kan verbeterings in die geïntegreerde toepassing vereis word. 'n Voorbeeld van hierdie benadering is die gebruik van die OData-protokol vir integrasie, geïmplementeer aan die kant van die 1C:Enterprise-platform (meer daaroor hieronder).
  3. Gebruik van klaargemaakte toepassingsprotokolle geïmplementeer in standaard 1C-oplossings. Baie standaardoplossings van 1C en vennote implementeer hul eie toepassingsprotokolle, gefokus op spesifieke take, gebaseer op die integrasiemeganismes wat deur die platform verskaf word. Wanneer hierdie meganismes gebruik word, is dit nie nodig om kode aan die 1C-toepassingskant te skryf nie, want Ons gebruik die standaard vermoëns van die toepassingsoplossing. Aan die 1C-toepassingskant hoef ons net sekere instellings te maak.

Integrasiemeganismes in die 1C:Enterprise-platform

Voer lêers in/uitvoer uit

Gestel ons word gekonfronteer met die taak van tweerigting-data-uitruiling tussen 'n 1C-toepassing en 'n arbitrêre toepassing. Byvoorbeeld, ons moet 'n lys produkte (Nomenklatuurgids) tussen die 1C-toepassing en 'n arbitrêre toepassing sinchroniseer.

Metodes van integrasie met 1C
Om hierdie probleem op te los, kan jy 'n uitbreiding skryf wat die nomenklatuurgids aflaai in 'n lêer van 'n sekere formaat (teks, XML, JSON, ...) en hierdie formaat kan lees.

Die platform implementeer 'n meganisme vir die serialisering van toepassingsvoorwerpe in XML beide direk, deur die WriteXML/ReadXML globale konteks metodes, en die gebruik van die XDTO (XML Data Transfer Objects) hulpobjek.

Enige voorwerp in die 1C:Enterprise-stelsel kan in 'n XML-voorstelling geserialiseer word en omgekeerd.

Hierdie funksie sal 'n XML-voorstelling van die voorwerp terugstuur:

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

Dit is hoe die uitvoer van die nomenklatuurgids na XML met XDTO sal lyk:

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

Deur eenvoudig die kode te wysig, voer ons die gids na JSON uit. Die produkte sal na 'n skikking geskryf word; Vir verskeidenheid, hier is die Engelse weergawe van die sintaksis:

&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 is al wat oorbly om die data na die eindverbruiker oor te dra. Die 1C:Enterprise-platform ondersteun die belangrikste internetprotokolle HTTP, FTP, POP3, SMTP, IMAP, insluitend hul veilige weergawes. Jy kan ook HTTP- en/of webdienste gebruik om data oor te dra.

HTTP en webdienste

Metodes van integrasie met 1C

1C-toepassings kan hul eie HTTP en webdienste implementeer, sowel as HTTP oproep en webdienste wat deur derdepartytoepassings geïmplementeer word.

REST-koppelvlak en OData-protokol

Vanaf weergawe 8.3.5 kan die 1C:Enterprise-platform outomaties skep 'n REST-koppelvlak vir die hele toepassingsoplossing. Enige konfigurasie-objek (gids, dokument, inligtingsregister, ens.) kan beskikbaar gestel word vir die ontvangs en wysiging van data via die REST-koppelvlak. Die platform gebruik die protokol as 'n toegangsprotokol Eenkeer weergawe 3.0. Publisering van OData-dienste word uitgevoer vanaf die Configurator-kieslys "Administrasie -> Publiseer op 'n webbediener", die "Publiseer standaard OData-koppelvlak"-merkblokkie moet gemerk word. Atom/XML- en JSON-formate word ondersteun. Nadat die toepassingsoplossing op die webbediener gepubliseer is, kan derdepartystelsels toegang daartoe verkry deur die REST-koppelvlak met behulp van HTTP-versoeke. Om met die 1C-toepassing via die OData-protokol te werk, is programmering aan die 1C-kant nie nodig nie.

Dus, 'n URL soos http://<сервер>/<конфигурация>/odata/standard.odata/Catalog_Номенклатура sal vir ons die inhoud van die nomenklatuurkatalogus in XML-formaat terugstuur - 'n versameling inskrywingselemente (die boodskaptitel word vir bondigheid weggelaat):

<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"/>
...

Deur die string “?$format=toepassing/json” by die URL te voeg, kry ons die inhoud van die nomenklatuurkatalogus in JSON-formaat (URL van die vorm 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 кВт, режимы работы: тепло/холод"
}, …

Eksterne databronne

Metodes van integrasie met 1C
In sommige gevalle word data-uitruiling via eksterne databronne kan die beste oplossing wees. Eksterne databronne is 'n 1C-toepassingkonfigurasie-objek wat jou toelaat om met enige ODBC-versoenbare databasis te kommunikeer, beide vir lees en skryf. Eksterne databronne is beskikbaar op beide Windows en Linux.

Data-uitruilmeganisme

Data-uitruilmeganisme is bedoel vir die skep van geografies verspreide stelsels gebaseer op 1C:Enterprise, en vir die organisering van data-uitruiling met ander inligtingstelsels wat nie op 1C:Enterprise gebaseer is nie.

Hierdie meganisme word aktief gebruik in 1C-implementerings, en die reeks take wat met sy hulp opgelos word, is baie wyd. Dit sluit in data-uitruiling tussen 1C-toepassings wat in die organisasie se takke geïnstalleer is, en uitruiling tussen die 1C-toepassing en die aanlynwinkelwebwerf, en data-uitruiling tussen die 1C-bedienertoepassing en die mobiele kliënt (geskep met behulp van die 1C:Enterprise mobiele platform), en baie meer.

Een van die sleutelkonsepte in die data-uitruilmeganisme is die uitruilplan. 'n Uitruilplan is 'n spesiale tipe voorwerp van die 1C-toepassingsplatform, wat veral die samestelling van die data bepaal wat aan die uitruil sal deelneem (watter dopgehou, dokumente, registers, ens.). Die uitruilplan bevat ook inligting oor uitruildeelnemers (sogenaamde uitruilnodusse).
Die tweede komponent van die data-uitruilmeganisme is die veranderingsregistrasiemeganisme. Hierdie meganisme monitor die stelsel outomaties vir veranderinge in data wat as deel van die uitruilplan na eindgebruikers oorgedra moet word. Deur hierdie meganisme te gebruik, spoor die platform veranderinge na wat plaasgevind het sedert die laaste sinchronisasie en laat jou toe om die hoeveelheid data wat oorgedra word tydens die volgende sinchronisasiesessie te minimaliseer.

Data-uitruiling vind plaas met behulp van XML-boodskappe van 'n sekere struktuur. Die boodskap bevat data wat verander het sedert die laaste sinchronisasie met die nodus en sekere diensinligting. Die boodskapstruktuur ondersteun boodskapnommering en laat jou toe om bevestiging van die ontvangernodus te ontvang dat boodskappe ontvang is. Sodanige bevestiging is vervat in elke boodskap wat van die ontvangende nodus af kom, in die vorm van die nommer van die laaste ontvangde boodskap. Nommerboodskappe stel die platform in staat om te verstaan ​​watter data reeds suksesvol na die ontvangende nodus oorgedra is, en om heruitsending te vermy deur slegs data te versend wat verander het sedert die stuurnodus die laaste boodskap ontvang het met 'n kwitansie vir die data wat deur die ontvangende nodus ontvang is. Hierdie bedryfskema verseker gewaarborgde aflewering selfs met onbetroubare transmissiekanale en boodskapverlies.

Eksterne komponente

In 'n aantal gevalle, wanneer integrasieprobleme opgelos word, moet 'n mens spesifieke vereistes hanteer, byvoorbeeld interaksieprotokolle, dataformate, waarvoor nie in die 1C:Enterprise-platform voorsiening gemaak word nie. Vir so 'n reeks take bied die platform eksterne komponent tegnologie, wat jou toelaat om dinamiese inpropmodules te skep wat die funksionaliteit van 1C:Enterprise uitbrei.

'n Tipiese voorbeeld van 'n taak met soortgelyke vereistes is die integrasie van 'n 1C-toepassingsoplossing met kleinhandeltoerusting, wat wissel van skale tot kasregisters en strepieskodeskandeerders. Eksterne komponente kan beide aan die 1C:Enterprise-bedienerkant en aan die kliëntkant gekoppel word (insluitend, maar nie beperk nie tot, die webkliënt, sowel as volgende weergawe van die mobiele platform 1C: Onderneming). Die tegnologie van eksterne komponente bied 'n redelik eenvoudige en verstaanbare sagteware (C++)-koppelvlak vir die interaksie van komponente met die 1C:Enterprise-platform, wat deur die ontwikkelaar geïmplementeer moet word.

Die moontlikhede wat oopmaak wanneer eksterne komponente gebruik word, is baie wyd. Jy kan interaksie implementeer deur 'n spesifieke data-uitruilprotokol met eksterne toestelle en stelsels te gebruik, spesifieke algoritmes in te bou vir die verwerking van data en dataformate, ens.

Verouderde integrasiemeganismes

Die platform verskaf integrasiemeganismes wat nie aanbeveel word vir gebruik in nuwe oplossings nie; hulle word ingelaat vir redes van terugwaartse versoenbaarheid, en ook indien die ander party nie met meer moderne protokolle kan werk nie. Een van hulle werk met DBF-formaat lêers (ondersteun in die ingeboude taal met behulp van die XBase-objek).

Nog 'n erfenis-integrasiemeganisme is die gebruik van COM-tegnologie (slegs beskikbaar op die Windows-platform). Die 1C:Enterprise-platform bied twee integrasiemetodes vir Windows wat COM-tegnologie gebruik: Outomatiseringsbediener en Eksterne verbinding. Hulle stem baie ooreen, maar een van die fundamentele verskille is dat in die geval van die Automation-bediener 'n volwaardige 1C:Enterprise 8-kliënttoepassing geloods word, en in die geval van 'n eksterne verbinding, 'n relatief klein in-proses COM bediener is geloods. Dit wil sê, as jy deur die Outomatisering-bediener werk, kan jy die funksionaliteit van die kliënttoepassing gebruik en aksies uitvoer soortgelyk aan die interaktiewe aksies van die gebruiker. Wanneer u 'n eksterne verbinding gebruik, kan u slegs besigheidslogika-funksies gebruik, en hulle kan beide aan die kliëntkant van die verbinding uitgevoer word, waar 'n in-proses COM-bediener geskep word, en u kan besigheidslogika op die 1C: Enterprise-bediener oproep kant.

COM-tegnologie kan ook gebruik word om toegang tot eksterne stelsels te verkry vanaf toepassingskode op die 1C:Enterprise-platform. In hierdie geval tree die 1C-toepassing op as 'n COM-kliënt. Maar dit moet onthou word dat hierdie meganismes slegs sal werk as die 1C-bediener in 'n Windows-omgewing werk.

Integrasiemeganismes geïmplementeer in standaardkonfigurasies

Ondernemingsdataformaat

Metodes van integrasie met 1C
In 'n aantal 1C-konfigurasies (lys hieronder), gebaseer op die platform-data-uitruilmeganisme hierbo beskryf, word 'n klaargemaakte meganisme vir die uitruil van data met eksterne toepassings geïmplementeer, wat nie die verandering van die bronkode van die konfigurasies vereis nie (voorbereiding vir data uitruiling word gedoen in die instellings van toepassingsoplossings):

  • "1C:ERP Enterprise Management 2.0"
  • "Komplekse outomatisering 2"
  • "Ondernemingsrekeningkunde", uitgawe 3.0
  • "Rekeningkunde vir 'n CORP-onderneming", uitgawe 3.0
  • "Kleinhandel", uitgawe 2.0
  • "Basiese Handelsbestuur", uitgawe 11
  • Handelsbestuur, Uitgawe 11
  • "Salarisse en personeelbestuur CORP", uitgawe 3

Die formaat wat vir data-uitruiling gebruik word, is Ondernemingsdata, gebaseer op XML. Die formaat is besigheidsgeoriënteerd - die datastrukture wat daarin beskryf word, stem ooreen met besigheidsentiteite (dokumente en gidselemente) wat in 1C-programme aangebied word, byvoorbeeld: handeling van voltooiing, kontantontvangsbestelling, teenparty, item, ens.

Data-uitruiling tussen die 1C-toepassing en 'n derdeparty-toepassing kan plaasvind:

  • via 'n toegewyde lêergids
  • via FTP-gids
  • deur 'n webdiens wat aan die 1C-toepassingskant ontplooi is. Die datalêer word as 'n parameter na webmetodes oorgedra
  • via e-pos

In die geval van uitruiling via 'n webdiens, sal 'n derdeparty-toepassing 'n data-uitruilsessie begin deur die ooreenstemmende webmetodes van die 1C-toepassing te skakel. In ander gevalle sal die inisieerder van die uitruilsessie die 1C-toepassing wees (deur die datalêer in die toepaslike gids te plaas of die datalêer na die gekonfigureerde e-posadres te stuur).
Ook aan die 1C-kant kan u instel hoe gereeld sinchronisasie sal plaasvind (vir opsies met lêeruitruiling via 'n gids en e-pos):

  • volgens skedule (met 'n gespesifiseerde frekwensie)
  • handmatig; die gebruiker sal handmatig moet begin sinchronisasie elke keer as hy dit nodig het

Erkenning van boodskappe

1C-toepassings hou rekord van gestuurde en ontvangde sinchronisasieboodskappe en verwag dieselfde van derdepartytoepassings. Dit laat jou toe om die boodskapnommermeganisme wat hierbo beskryf word in die "Data-uitruilmeganisme"-afdeling te gebruik.

Tydens sinchronisasie stuur 1C-toepassings slegs inligting oor veranderinge wat met sake-entiteite plaasgevind het sedert die laaste sinchronisasie (om die hoeveelheid inligting wat oorgedra is te minimaliseer). Tydens die eerste sinchronisasie sal die 1C-toepassing alle besigheidsentiteite (byvoorbeeld items van die itemnaslaanboek) in die EnterpriseData-formaat in 'n XML-lêer oplaai (aangesien hulle almal "nuut" vir die eksterne toepassing is). Die derdeparty-toepassing moet die inligting van die XML-lêer wat van 1C ontvang is verwerk en, tydens die volgende sinchronisasiesessie, in die lêer wat na 1C gestuur is, in 'n spesiale XML-afdeling, inligting plaas dat die boodskap van 1C met 'n sekere nommer suksesvol was ontvang. Die kwitansieboodskap is 'n sein aan die 1C-toepassing dat alle sake-entiteite suksesvol deur die eksterne toepassing verwerk is en dat dit nie meer nodig is om inligting oor hulle oor te dra nie. Benewens die kwitansie, kan 'n XML-lêer van 'n derdeparty-toepassing ook data bevat vir sinchronisasie deur die toepassing (byvoorbeeld dokumente vir die verkoop van goedere en dienste).

Nadat die kwitansieboodskap ontvang is, merk die 1C-toepassing alle veranderinge wat in die vorige boodskap oorgedra is as suksesvol gesinchroniseer. Slegs ongesinchroniseerde veranderinge aan besigheidsentiteite (skep nuwe entiteite, verandering en verwydering van bestaandes) sal tydens die volgende sinchronisasiesessie na die eksterne toepassing gestuur word.

Metodes van integrasie met 1C
Wanneer data van 'n eksterne toepassing na die 1C-toepassing oorgedra word, word die prentjie omgekeer. Die eksterne toepassing moet die kwitansie-afdeling van die XML-lêer dienooreenkomstig invul en die besigheidsdata vir sinchronisasie van sy kant in die EnterpriseData-formaat plaas.

Metodes van integrasie met 1C

Vereenvoudigde data-uitruiling sonder handdruk

Vir gevalle van eenvoudige integrasie, wanneer dit genoeg is om slegs inligting van 'n derdeparty-toepassing na die 1C-toepassing oor te dra en omgekeerde oordrag van data van die 1C-toepassing na 'n derdepartytoepassing is nie nodig nie (byvoorbeeld, integrasie van 'n aanlyn winkel wat verkoopsinligting na 1C: Rekeningkunde oordra), is daar 'n vereenvoudigde opsie om deur 'n webdiens te werk (sonder erkenning), wat nie instellings aan die kant van die 1C-toepassing vereis nie.

Pasgemaakte integrasie-oplossings

Daar is 'n standaardoplossing "1C: Data Conversion", wat platformmeganismes gebruik vir die omskakeling en uitruil van data tussen standaard 1C-konfigurasies, maar kan ook gebruik word vir integrasie met derdeparty-toepassings.

Integrasie met bankoplossings

Standard "Kliëntbank", wat meer as 1 jaar gelede deur 10C-spesialiste ontwikkel is, het eintlik 'n industriestandaard in Rusland geword. Die volgende stap in hierdie rigting is tegnologie DirectBank, waarmee u betalingsdokumente aan die bank kan stuur en state van die bank direk vanaf die programme van die 1C:Enterprise-stelsel kan ontvang deur een knoppie in die 1C-program te druk; dit vereis nie die installering en loop van bykomende programme op die kliëntrekenaar nie.

Daar is ook standaard vir data-uitruiling in salarisprojekte.

Ander

Noemenswaardig uitruilprotokol tussen die 1C:Enterprise-stelsel en die webwerf, kommersiële inligting uitruil standaard CommerceML (saam ontwikkel met Microsoft, Intel, Price.ru en ander maatskappye), standaard vir data-uitruiling vir die verkryging van transaksies.

Bron: will.com

Voeg 'n opmerking