Métode integrasi sareng 1C

Naon sarat anu paling penting pikeun aplikasi bisnis? Sababaraha tugas anu paling penting nyaéta kieu:

  • Gampang ngarobah / adaptasi logika aplikasi pikeun ngarobah tugas bisnis.
  • Gampang integrasi sareng aplikasi anu sanés.

Kumaha tugas munggaran direngsekeun dina 1C ieu sakeudeung dijelaskeun dina bagian "Kustomisasi sarta Rojongan". Artikel ieu; Kami bakal uih deui ka topik anu pikaresepeun ieu dina tulisan anu bakal datang. Dinten ieu kami bakal ngobrol ngeunaan tugas kadua, integrasi.

tugas integrasi

Tugas integrasi tiasa béda. Pikeun ngajawab sababaraha masalah, hiji bursa data interaktif basajan cukup - contona, pikeun mindahkeun daptar karyawan ka bank pikeun ngaluarkeun gaji kartu plastik. Pikeun tugas nu leuwih kompleks, bursa data pinuh otomatis bisa jadi diperlukeun, jigana kalawan rujukan ka logika bisnis hiji sistem éksternal. Aya tugas anu khusus di alam, sapertos integrasi sareng alat éksternal (contona, alat ritel, scanner mobile, jsb) atanapi nganggo sistem warisan atanapi khusus pisan (contona, sistem pangakuan tag RFID). Penting pisan pikeun milih mékanisme integrasi anu paling pas pikeun tiap tugas.

Pilihan integrasi sareng 1C

Aya sababaraha pendekatan anu béda pikeun ngalaksanakeun integrasi sareng aplikasi 1C; anu mana anu dipilih gumantung kana sarat tugas.

  1. Palaksanaan dumasar mékanisme integrasidisayogikeun ku platform, API khusus sorangan dina sisi aplikasi 1C (contona, sakumpulan jasa Wéb atanapi HTTP anu bakal nelepon aplikasi pihak katilu pikeun tukeur data sareng aplikasi 1C). Kauntungannana pendekatan ieu résistansi API kana parobahan palaksanaan di sisi aplikasi 1C. The peculiarity tina pendekatan téh nya éta perlu ngarobah kodeu sumber tina solusi 1C baku, nu bisa berpotensi merlukeun usaha nalika merging kodeu sumber nalika pindah ka versi anyar tina konfigurasi. Dina hal ieu, fungsionalitas progresif anyar tiasa nyalametkeun - ekstensi konfigurasi. Ekstensi, dina dasarna, mékanisme plugin anu ngamungkinkeun anjeun nyiptakeun tambahan kana solusi aplikasi tanpa ngarobih solusi aplikasi sorangan. Mindahkeun API integrasi kana ekstensi konfigurasi bakal ngidinan Anjeun pikeun ngahindarkeun kasusah nalika merging konfigurasi nalika pindah ka versi anyar tina solusi standar.
  2. Ngagunakeun mékanisme integrasi platform nu nyadiakeun aksés éksternal kana model obyék aplikasi tur teu merlukeun modifikasi tina aplikasi atawa kreasi hiji extension. Kauntungannana pendekatan ieu teu perlu ngarobah aplikasi 1C. Minus - upami aplikasi 1C parantos ningkat, maka perbaikan tiasa diperyogikeun dina aplikasi terpadu. Conto pendekatan ieu nyaéta pamakéan protokol OData pikeun integrasi, dilaksanakeun di sisi 1C: platform Perusahaan (langkung seueur ngeunaan eta di handap).
  3. Pamakéan protokol aplikasi siap-siap dilaksanakeun dina solusi 1C standar. Seueur solusi standar ti 1C sareng mitra ngalaksanakeun protokol aplikasi sorangan, fokus kana tugas khusus, dumasar kana mékanisme integrasi anu disayogikeun ku platform. Nalika ngagunakeun mékanisme ieu, teu perlu nulis kode dina sisi aplikasi 1C, sabab Kami nganggo kamampuan standar tina solusi aplikasi. Di sisi aplikasi 1C, urang ngan ukur kedah ngadamel setélan anu tangtu.

Mékanisme integrasi dina platform 1C: Perusahaan

Impor / ékspor file

Anggap urang disanghareupan tugas tukeur data dua arah antara aplikasi 1C sareng aplikasi sawenang. Salaku conto, urang kedah nyinkronkeun daptar produk (diréktori Nomenclature) antara aplikasi 1C sareng aplikasi sawenang.

Métode integrasi sareng 1C
Pikeun ngajawab masalah ieu, anjeun tiasa nyerat ekstensi anu ngaunduh diréktori Nomenclature kana file tina format anu tangtu (téks, XML, JSON, ...) sareng tiasa maca format ieu.

Platformna ngalaksanakeun mékanisme pikeun serializing objék aplikasi dina XML duanana langsung, ngaliwatan métode konteks global WriteXML / ReadXML, sarta ngagunakeun XDTO (Objék Transfer Data XML) obyék bantu.

Sakur obyék dina 1C: Sistem Perusahaan tiasa sérialisasi kana perwakilan XML sareng sabalikna.

Pungsi ieu bakal ngabalikeun perwakilan XML obyék:

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

Ieu naon ngekspor diréktori Nomenclature kana XML nganggo XDTO bakal katingali sapertos:

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

Ku saukur ngaropéa kode, urang ékspor diréktori ka JSON. Produk bakal ditulis ka Asép Sunandar Sunarya; Pikeun rupa-rupa, ieu versi basa Inggris tina 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

Teras sadayana anu tetep nyaéta nransfer data ka konsumen akhir. Platform 1C: Enterprise ngadukung protokol Internét utama HTTP, FTP, POP3, SMTP, IMAP, kalebet versi amanna. Anjeun oge bisa make HTTP jeung/atawa ladenan Wéb pikeun mindahkeun data.

HTTP sareng jasa wéb

Métode integrasi sareng 1C

Aplikasi 1C tiasa nerapkeun jasa HTTP sareng wéb sorangan, ogé nelepon HTTP sareng jasa wéb anu dilaksanakeun ku aplikasi pihak katilu.

panganteur REST sarta protokol OData

Dimimitian ti versi 8.3.5, 1C: platform Perusahaan tiasa otomatis nyieun panganteur REST pikeun sakabéh solusi aplikasi. Sakur objék konfigurasi (diréktori, dokumén, daptar inpormasi, jsb) tiasa disayogikeun pikeun nampi sareng ngarobih data liwat antarmuka REST. Platform ngagunakeun protokol salaku protokol aksés OData Vérsi 3.0. Publikasi jasa OData dilakukeun tina ménu Configurator "Administrasi -> Publikasi dina pangladén wéb", kotak centang "Nyebarkeun antarmuka OData standar" kedah dipariksa. Format Atom/XML sareng JSON dirojong. Saatos solusi aplikasi diémbarkeun dina pangladén wéb, sistem pihak katilu tiasa ngaksés éta ngalangkungan antarmuka REST nganggo pamundut HTTP. Pikeun damel sareng aplikasi 1C via protokol OData, program di sisi 1C henteu diperyogikeun.

Janten, URL sapertos http://<сервер>/<конфигурация>/odata/standard.odata/Catalog_Номенклатура bakal ngabalikeun kami eusi katalog Nomenclature dina format XML - kumpulan elemen éntri (judul pesen dileungitkeun pikeun ringkes):

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

Ku nambahkeun string "? $ format = aplikasi / json" kana URL, urang meunang eusi katalog Nomenclature dina format JSON (URL formulir 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 кВт, режимы работы: тепло/холод"
}, …

Sumber data éksternal

Métode integrasi sareng 1C
Dina sababaraha kasus, bursa data via sumber data éksternal bisa jadi solusi pangalusna. Sumber data éksternal mangrupikeun obyék konfigurasi aplikasi 1C anu ngamungkinkeun anjeun berinteraksi sareng database anu cocog sareng ODBC, boh pikeun maca sareng nyerat. Sumber data éksternal sayogi dina Windows sareng Linux.

Mékanisme tukeur data

Mékanisme tukeur data dimaksudkeun pikeun nyieun sistem anu disebarkeun sacara geografi dumasar kana 1C: Enterprise, sareng pikeun ngatur bursa data sareng sistem inpormasi sanés anu henteu dumasar kana 1C: Enterprise.

Mékanisme ieu aktip dianggo dina palaksanaan 1C, sareng rentang tugas anu direngsekeun kalayan bantosanna lega pisan. Ieu kalebet bursa data antara aplikasi 1C anu dipasang dina cabang organisasi, sareng tukeur antara aplikasi 1C sareng situs wéb toko online, sareng bursa data antara aplikasi server 1C sareng klien mobile (dijieun nganggo platform mobile 1C: Enterprise), sareng seueur deui. Tambih deui.

Salah sahiji konsép konci dina mékanisme bursa data nyaéta rencana bursa. Rencana bursa mangrupikeun jinis obyék khusus tina platform aplikasi 1C, anu nangtukeun, khususna, komposisi data anu bakal ilubiung dina bursa (anu diréktori, dokumén, ngadaptar, jsb.). Rencana bursa ogé ngandung émbaran ngeunaan pamilon bursa (disebut titik bursa).
Komponén kadua mékanisme bursa data nyaéta mékanisme pendaptaran robah. Mékanisme ieu otomatis ngawas sistem pikeun parobahan data anu kudu ditransfer ka pamaké tungtung salaku bagian tina rencana bursa. Ngagunakeun mékanisme ieu, platform ngalacak parobahan nu geus lumangsung saprak sinkronisasi panungtungan sarta ngidinan Anjeun pikeun ngaleutikan jumlah data ditransfer salila sési sinkronisasi salajengna.

Bursa data lumangsung ngagunakeun seratan XML tina struktur nu tangtu. Suratna ngandung data anu parantos robih ti saprak sinkronisasi terakhir sareng titik sareng sababaraha inpormasi jasa. Struktur talatah ngarojong panomeran talatah jeung ngidinan Anjeun pikeun nampa konfirmasi ti titik panarima yén talatah geus narima. Konfirmasi sapertos kitu dikandung dina unggal pesen anu asalna tina titik panarima, dina bentuk nomer pesen anu terakhir nampi. Pesen panomeran ngamungkinkeun platform ngartos naon data anu parantos suksés dikirimkeun ka titik panampi, sareng ngahindarkeun pangiriman deui ku ngan ukur ngirimkeun data anu parantos robih ti titik pangirim nampi pesen anu terakhir kalayan resi pikeun data anu ditampi ku titik panampi. Skéma operasi ieu mastikeun pangiriman dijamin sanajan saluran transmisi teu dipercaya jeung leungitna pesen.

Komponén éksternal

Dina sababaraha kasus, nalika ngarengsekeun masalah integrasi, hiji kudu nungkulan sarat husus, contona, protokol interaksi, format data, nu teu disadiakeun dina platform 1C: Perusahaan. Pikeun sauntuyan tugas sapertos kitu, platform nyayogikeun téhnologi komponén éksternal, anu ngamungkinkeun anjeun nyiptakeun modul plug-in dinamis anu ngalegaan fungsionalitas 1C: Enterprise.

Hiji conto has tina tugas kalawan sarat sarupa bakal integrasi solusi aplikasi 1C kalawan parabot ritel, mimitian ti skala nepi ka cash registers na scanner barkod. Komponén éksternal tiasa disambungkeun boh dina sisi server 1C: Enterprise sareng di sisi klien (kalebet, tapi henteu dugi ka, klien wéb, ogé versi salajengna tina platform mobile 1C: Perusahaan). Téknologi komponén éksternal nyayogikeun antarmuka parangkat lunak anu saderhana sareng kaharti (C ++) pikeun interaksi komponén sareng platform 1C: Perusahaan, anu kedah dilaksanakeun ku pamekar.

Kamungkinan anu dibuka nalika nganggo komponén éksternal lega pisan. Anjeun tiasa nerapkeun interaksi nganggo protokol pertukaran data khusus sareng alat sareng sistem éksternal, ngawangun algoritma khusus pikeun ngolah data sareng format data, jsb.

Mékanisme integrasi luntur

Platformna nyayogikeun mékanisme integrasi anu henteu disarankeun pikeun dianggo dina solusi énggal; aranjeunna ditinggalkeun dina alesan kasaluyuan mundur, sarta ogé bisi pihak séjén teu bisa digawekeun ku protokol leuwih modern. Salah sahijina nyaéta damel sareng file format DBF (dirojong dina basa anu diwangun nganggo objek XBase).

Mékanisme integrasi warisan anu sanés nyaéta ngagunakeun téknologi COM (ngan sayogi dina platform Windows). Platform 1C: Perusahaan nyayogikeun dua metode integrasi pikeun Windows nganggo téknologi COM: server Automation sareng sambungan éksternal. Aranjeunna sami pisan, tapi salah sahiji bédana dasarna nyaéta dina kasus server Automation, aplikasi klien 1C: Enterprise 8 pinuh diluncurkeun, sareng dina kasus sambungan éksternal, COM dina prosés anu kawilang leutik. server dibuka. Nyaéta, upami anjeun damel ngaliwatan server Automation, anjeun tiasa nganggo fungsionalitas aplikasi klien sareng ngalakukeun tindakan anu sami sareng tindakan interaktif pangguna. Nalika nganggo sambungan éksternal, anjeun ngan ukur tiasa nganggo fungsi logika bisnis, sareng aranjeunna tiasa dieksekusi duanana dina sisi klien sambungan, dimana server COM dina prosés didamel, sareng anjeun tiasa nyauran logika bisnis dina 1C: Server perusahaan. sisi.

Téknologi COM ogé tiasa dianggo pikeun ngaksés sistem éksternal tina kode aplikasi dina platform 1C: Enterprise. Dina hal ieu, aplikasi 1C tindakan salaku klien COM. Tapi kedah émut yén mékanisme ieu ngan ukur tiasa dianggo upami server 1C beroperasi dina lingkungan Windows.

Mékanisme integrasi dilaksanakeun dina konfigurasi baku

Format Data Perusahaan

Métode integrasi sareng 1C
Dina sababaraha konfigurasi 1C (daptar di handap), dumasar kana mékanisme bursa data platform anu dijelaskeun di luhur, mékanisme anu siap-siap pikeun tukeur data sareng aplikasi éksternal dilaksanakeun, anu henteu meryogikeun ngarobih kode sumber konfigurasi (persiapan pikeun data. bursa dilakukeun dina setélan solusi aplikasi):

  • "1C: Manajemén Perusahaan ERP 2.0"
  • "Otomasi kompléks 2"
  • "Akuntansi Perusahaan", édisi 3.0
  • "Akuntansi pikeun perusahaan CORP", édisi 3.0
  • "Eceran", édisi 2.0
  • "Manajemén Perdagangan Dasar", édisi 11
  • Manajemén Perdagangan, édisi 11
  • "Gaji sareng Manajemén Personil CORP", édisi 3

Format anu digunakeun pikeun tukeur data nyaéta EnterpriseData, dumasar kana XML. Formatna berorientasi bisnis - struktur data anu dijelaskeun dina éta pakait sareng éntitas bisnis (dokumen sareng elemen diréktori) anu dipidangkeun dina program 1C, contona: kalakuan parantosan, pesenan resi tunai, counterparty, barang, jsb.

Bursa data antara aplikasi 1C sareng aplikasi pihak katilu tiasa lumangsung:

  • via diréktori file dedicated
  • via diréktori FTP
  • ngaliwatan layanan web deployed dina sisi aplikasi 1C. Berkas data disalurkeun salaku parameter kana metode wéb
  • via email

Dina kasus bursa ngaliwatan layanan wéb, aplikasi pihak katilu bakal ngamimitian sési bursa data ku nelepon metodeu web pakait tina aplikasi 1C. Dina kasus séjén, inisiator sési bursa bakal aplikasi 1C (ku cara nempatkeun file data dina diréktori luyu atawa ngirim file data ka alamat surélék nu dikonpigurasikeun).
Ogé di sisi 1C anjeun tiasa ngonpigurasikeun sabaraha sering sinkronisasi bakal lumangsung (pikeun pilihan sareng bursa file via diréktori sareng email):

  • nurutkeun jadwal (kalayan frékuénsi husus)
  • sacara manual; pangguna kedah ngamimitian sinkronisasi sacara manual unggal waktos anjeunna peryogi

Ngaku pesen

Aplikasi 1C nyimpen rékaman pesen sinkronisasi anu dikirim sareng katampi sareng ngaharepkeun hal anu sami ti aplikasi pihak katilu. Ieu ngamungkinkeun anjeun ngagunakeun mékanisme panomeran pesen anu dijelaskeun di luhur dina bagian "mékanisme bursa data".

Salila sinkronisasi, aplikasi 1C ngan ngirimkeun informasi ngeunaan parobahan nu geus lumangsung kalawan entitas bisnis saprak sinkronisasi panungtungan (pikeun ngaleutikan jumlah informasi ditransfer). Salila sinkronisasi munggaran, aplikasi 1C bakal unggah sadaya badan usaha (contona, item tina buku rujukan item) dina format EnterpriseData kana file XML (sabab aranjeunna sadayana "anyar" pikeun aplikasi éksternal). Aplikasi pihak katilu kedah ngolah inpormasi tina file XML anu ditampi ti 1C sareng, salami sési sinkronisasi salajengna, nempatkeun dina file anu dikirim ka 1C, dina bagian XML khusus, inpormasi yén pesen ti 1C kalayan jumlah anu tangtu suksés. nampi. Pesen kuitansi mangrupikeun sinyal ka aplikasi 1C yén sadaya badan usaha parantos suksés diolah ku aplikasi éksternal sareng henteu kedah ngirimkeun inpormasi ngeunaan aranjeunna deui. Salian resi, file XML tina aplikasi pihak katilu ogé tiasa ngandung data kanggo singkronisasi ku aplikasi (contona, dokumén pikeun penjualan barang sareng jasa).

Saatos nampi pesen resi, aplikasi 1C nandaan sadaya parobihan anu dikirimkeun dina pesen sateuacana parantos suksés disingkronkeun. Ngan perobahan anu teu disingkronkeun kana éntitas bisnis (nyieun éntitas énggal, ngarobih sareng ngahapus anu tos aya) anu bakal dikirim ka aplikasi éksternal salami sési sinkronisasi salajengna.

Métode integrasi sareng 1C
Nalika mindahkeun data tina aplikasi éksternal ka aplikasi 1C, gambarna dibalikkeun. Aplikasi éksternal kedah ngeusian bagian resi tina file XML sasuai sareng nempatkeun data bisnis pikeun singkronisasi dina bagianna dina format EnterpriseData.

Métode integrasi sareng 1C

Bursa data saderhana tanpa sasalaman

Pikeun kasus integrasi saderhana, nalika cukup ngan ukur nransferkeun inpormasi tina aplikasi pihak katilu ka aplikasi 1C sareng ngabalikkeun data tina aplikasi 1C ka aplikasi pihak katilu henteu diperyogikeun (contona, integrasi online. toko nu mindahkeun informasi jualan ka 1C: Akunting), aya hiji pilihan saderhana pikeun digawé ngaliwatan layanan web (tanpa pangakuan), nu teu merlukeun setelan dina sisi aplikasi 1C.

solusi integrasi custom

Aya solusi standar "1C: Konversi Data", anu ngagunakeun mékanisme platform pikeun ngarobah sareng tukeur data antara konfigurasi 1C standar, tapi ogé tiasa dianggo pikeun integrasi sareng aplikasi pihak katilu.

Integrasi sareng solusi perbankan

standar "Bank klien", dikembangkeun ku spesialis 1C leuwih ti 10 taun ka tukang, sabenerna geus jadi standar industri di Rusia. Léngkah salajengna dina arah ieu nyaéta téknologi DirectBank, anu ngamungkinkeun anjeun ngirim dokumén pamayaran ka bank sareng nampi pernyataan ti bank langsung tina program sistem 1C: Enterprise ku mencét hiji tombol dina program 1C; teu merlukeun masang jeung ngajalankeun program tambahan dina komputer klien.

Aya ogé standar pikeun bursa data dina proyék gaji.

Прочее

Pantes disebatkeun protokol bursa antara 1C: Sistem perusahaan jeung website, baku bursa informasi komérsial CommerceML (dimekarkeun babarengan jeung Microsoft, Intel, Price.ru jeung pausahaan séjén), standar pikeun bursa data pikeun acquiring transaksi.

sumber: www.habr.com

Tambahkeun komentar