Metode integrasi dengan 1C

Apa persyaratan paling penting untuk aplikasi bisnis? Beberapa tugas terpenting adalah sebagai berikut:

  • Kemudahan mengubah/menyesuaikan logika aplikasi dengan perubahan tugas bisnis.
  • Integrasi yang mudah dengan aplikasi lain.

Bagaimana tugas pertama diselesaikan dalam 1C dijelaskan secara singkat di bagian “Penyesuaian dan Dukungan”. artikel ini; Kami akan kembali ke topik menarik ini di artikel mendatang. Hari ini kita akan membicarakan tugas kedua, integrasi.

Tugas integrasi

Tugas integrasi bisa berbeda. Untuk mengatasi beberapa masalah, pertukaran data interaktif sederhana sudah cukup - misalnya, untuk mentransfer daftar karyawan ke bank untuk menerbitkan kartu plastik gaji. Untuk tugas yang lebih kompleks, pertukaran data yang sepenuhnya otomatis mungkin diperlukan, mungkin dengan mengacu pada logika bisnis sistem eksternal. Ada tugas yang bersifat khusus, seperti integrasi dengan peralatan eksternal (misalnya, peralatan ritel, pemindai seluler, dll.) atau dengan sistem lama atau yang sangat terspesialisasi (misalnya, dengan sistem pengenalan tag RFID). Sangatlah penting untuk memilih mekanisme integrasi yang paling tepat untuk setiap tugas.

Opsi integrasi dengan 1C

Ada pendekatan berbeda untuk mengimplementasikan integrasi dengan aplikasi 1C, yang mana yang harus dipilih bergantung pada persyaratan tugas.

  1. Berbasis implementasi mekanisme integrasidisediakan oleh platform, API khusus miliknya sendiri di sisi aplikasi 1C (misalnya, sekumpulan layanan Web atau HTTP yang akan memanggil aplikasi pihak ketiga untuk bertukar data dengan aplikasi 1C). Keuntungan dari pendekatan ini adalah ketahanan API terhadap perubahan implementasi di sisi aplikasi 1C. Keunikan dari pendekatan ini adalah perlunya mengubah kode sumber dari solusi standar 1C, yang mungkin memerlukan upaya saat menggabungkan kode sumber saat berpindah ke versi konfigurasi yang baru. Dalam hal ini, fungsi progresif baru dapat membantu - ekstensi konfigurasi. Ekstensi pada dasarnya adalah mekanisme plugin yang memungkinkan Anda membuat penambahan pada solusi aplikasi tanpa mengubah solusi aplikasi itu sendiri. Memindahkan API integrasi ke dalam ekstensi konfigurasi akan menghindari kesulitan saat menggabungkan konfigurasi saat berpindah ke versi baru dari solusi standar.
  2. Menggunakan mekanisme integrasi platform yang menyediakan akses eksternal ke model objek aplikasi dan tidak memerlukan modifikasi aplikasi atau pembuatan ekstensi. Keuntungan dari pendekatan ini adalah tidak perlu mengubah aplikasi 1C. Minus - jika aplikasi 1C telah ditingkatkan, maka mungkin diperlukan perbaikan pada aplikasi terintegrasi. Contoh dari pendekatan ini adalah penggunaan protokol OData untuk integrasi, yang diimplementasikan pada sisi platform 1C:Enterprise (lebih lanjut tentangnya di bawah).
  3. Penggunaan protokol aplikasi siap pakai yang diimplementasikan dalam solusi standar 1C. Banyak solusi standar dari 1C dan mitranya mengimplementasikan protokol aplikasi mereka sendiri, berfokus pada tugas tertentu, berdasarkan mekanisme integrasi yang disediakan oleh platform. Saat menggunakan mekanisme ini, tidak perlu menulis kode di sisi aplikasi 1C, karena Kami menggunakan kemampuan standar solusi aplikasi. Di sisi aplikasi 1C, kita hanya perlu melakukan pengaturan tertentu.

Mekanisme integrasi dalam platform 1C:Enterprise

Impor/ekspor file

Misalkan kita dihadapkan pada tugas pertukaran data dua arah antara aplikasi 1C dan aplikasi arbitrer. Misalnya, kita perlu menyinkronkan daftar produk (Direktori Nomenklatur) antara aplikasi 1C dan aplikasi arbitrer.

Metode integrasi dengan 1C
Untuk mengatasi masalah ini, Anda dapat menulis ekstensi yang mengunduh direktori Nomenklatur ke dalam file dengan format tertentu (teks, XML, JSON, ...) dan dapat membaca format ini.

Platform ini mengimplementasikan mekanisme untuk membuat serialisasi objek aplikasi dalam XML baik secara langsung, melalui metode konteks global WriteXML/ReadXML, dan menggunakan objek tambahan XDTO (XML Data Transfer Objects).

Objek apa pun di sistem 1C:Enterprise dapat diserialkan menjadi representasi XML dan sebaliknya.

Fungsi ini akan mengembalikan representasi XML objek:

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

Seperti inilah tampilan ekspor direktori Nomenklatur ke XML menggunakan XDTO:

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

Dengan hanya memodifikasi kode, kami mengekspor direktori ke JSON. Produk akan ditulis ke array; Untuk variasi, berikut adalah sintaks versi bahasa Inggris:

&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

Kemudian yang tersisa hanyalah mentransfer data ke konsumen akhir. Platform 1C:Enterprise mendukung protokol Internet utama HTTP, FTP, POP3, SMTP, IMAP, termasuk versi amannya. Anda juga dapat menggunakan layanan HTTP dan/atau Web untuk mentransfer data.

HTTP dan layanan web

Metode integrasi dengan 1C

Aplikasi 1C dapat mengimplementasikan HTTP dan layanan webnya sendiri, serta memanggil HTTP dan layanan web yang diimplementasikan oleh aplikasi pihak ketiga.

Antarmuka REST dan protokol OData

Mulai dari versi 8.3.5, platform 1C:Enterprise dapat secara otomatis membuat antarmuka REST untuk seluruh solusi aplikasi. Objek konfigurasi apa pun (direktori, dokumen, register informasi, dll.) dapat disediakan untuk menerima dan memodifikasi data melalui antarmuka REST. Platform menggunakan protokol sebagai protokol akses Sekali waktu versi 3.0. Penerbitan layanan OData dilakukan dari menu Configurator “Administrasi -> Penerbitan di server web”, kotak centang “Terbitkan antarmuka OData standar” harus dicentang. Format Atom/XML dan JSON didukung. Setelah solusi aplikasi dipublikasikan di server web, sistem pihak ketiga dapat mengaksesnya melalui antarmuka REST menggunakan permintaan HTTP. Untuk bekerja dengan aplikasi 1C melalui protokol OData, pemrograman di sisi 1C tidak diperlukan.

Jadi, URL seperti http://<сервер>/<конфигурация>/odata/standard.odata/Catalog_Номенклатура akan mengembalikan kepada kita isi katalog Nomenklatur dalam format XML - kumpulan elemen entri (judul pesan dihilangkan agar singkatnya):

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

Dengan menambahkan string “?$format=application/json” ke URL, kita mendapatkan konten katalog Nomenklatur dalam 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 eksternal

Metode integrasi dengan 1C
Dalam beberapa kasus, pertukaran data melalui sumber data eksternal mungkin merupakan solusi terbaik. Sumber data eksternal adalah objek konfigurasi aplikasi 1C yang memungkinkan Anda berinteraksi dengan database apa pun yang kompatibel dengan ODBC, baik untuk membaca maupun menulis. Sumber data eksternal tersedia di Windows dan Linux.

Mekanisme pertukaran data

Mekanisme pertukaran data dimaksudkan baik untuk menciptakan sistem yang terdistribusi secara geografis berdasarkan 1C:Enterprise, dan untuk mengatur pertukaran data dengan sistem informasi lain yang tidak berdasarkan 1C:Enterprise.

Mekanisme ini secara aktif digunakan dalam implementasi 1C, dan jangkauan tugas yang diselesaikan dengan bantuannya sangat luas. Ini termasuk pertukaran data antara aplikasi 1C yang dipasang di cabang organisasi, dan pertukaran antara aplikasi 1C dan situs web toko online, dan pertukaran data antara aplikasi server 1C dan klien seluler (dibuat menggunakan platform seluler 1C:Enterprise), dan banyak lagi lagi.

Salah satu konsep kunci dalam mekanisme pertukaran data adalah rencana pertukaran. Rencana pertukaran adalah jenis objek khusus dari platform aplikasi 1C, yang menentukan, khususnya, komposisi data yang akan berpartisipasi dalam pertukaran (direktori, dokumen, register, dll.). Rencana pertukaran juga berisi informasi tentang peserta pertukaran (disebut node pertukaran).
Komponen kedua dari mekanisme pertukaran data adalah mekanisme registrasi perubahan. Mekanisme ini secara otomatis memonitor sistem untuk perubahan data yang harus ditransfer ke pengguna akhir sebagai bagian dari rencana pertukaran. Dengan menggunakan mekanisme ini, platform melacak perubahan yang terjadi sejak sinkronisasi terakhir dan memungkinkan Anda meminimalkan jumlah data yang ditransfer selama sesi sinkronisasi berikutnya.

Pertukaran data terjadi menggunakan pesan XML dengan struktur tertentu. Pesan tersebut berisi data yang telah berubah sejak sinkronisasi terakhir dengan node dan beberapa informasi layanan. Struktur pesan mendukung penomoran pesan dan memungkinkan Anda menerima konfirmasi dari node penerima bahwa pesan telah diterima. Konfirmasi tersebut terdapat pada setiap pesan yang datang dari node penerima, berupa nomor pesan terakhir yang diterima. Penomoran pesan memungkinkan platform untuk memahami data apa yang telah berhasil dikirim ke node penerima, dan untuk menghindari transmisi ulang dengan hanya mentransmisikan data yang telah berubah sejak node pengirim menerima pesan terakhir dengan tanda terima untuk data yang diterima oleh node penerima. Skema operasi ini memastikan jaminan pengiriman bahkan dengan saluran transmisi yang tidak dapat diandalkan dan kehilangan pesan.

Komponen Eksternal

Dalam beberapa kasus, ketika memecahkan masalah integrasi, seseorang harus berurusan dengan persyaratan khusus, misalnya, protokol interaksi, format data, yang tidak disediakan dalam platform 1C:Enterprise. Untuk berbagai tugas seperti itu, platform menyediakan teknologi komponen eksternal, yang memungkinkan Anda membuat modul plug-in secara dinamis yang memperluas fungsionalitas 1C:Enterprise.

Contoh umum dari tugas dengan persyaratan serupa adalah integrasi solusi aplikasi 1C dengan peralatan ritel, mulai dari timbangan hingga mesin kasir dan pemindai kode batang. Komponen eksternal dapat dihubungkan baik di sisi server 1C:Enterprise dan di sisi klien (termasuk, namun tidak terbatas pada, klien web, serta versi berikutnya dari platform seluler 1C:Perusahaan). Teknologi komponen eksternal menyediakan antarmuka perangkat lunak (C++) yang cukup sederhana dan mudah dipahami untuk interaksi komponen dengan platform 1C:Enterprise, yang harus diimplementasikan oleh pengembang.

Kemungkinan yang terbuka ketika menggunakan komponen eksternal sangat luas. Anda dapat menerapkan interaksi menggunakan protokol pertukaran data tertentu dengan perangkat dan sistem eksternal, membangun algoritma khusus untuk memproses data dan format data, dll.

Mekanisme integrasi sudah ketinggalan zaman

Platform ini menyediakan mekanisme integrasi yang tidak direkomendasikan untuk digunakan dalam solusi baru; mereka dibiarkan karena alasan kompatibilitas ke belakang, dan juga jika pihak lain tidak dapat bekerja dengan protokol yang lebih modern. Salah satunya adalah bekerja dengan file berformat DBF (didukung dalam bahasa bawaan menggunakan objek XBase).

Mekanisme integrasi warisan lainnya adalah penggunaan teknologi COM (hanya tersedia pada platform Windows). Platform 1C:Enterprise menyediakan dua metode integrasi untuk Windows menggunakan teknologi COM: Server otomatisasi dan koneksi Eksternal. Mereka sangat mirip, tetapi salah satu perbedaan mendasar adalah bahwa dalam kasus server Otomatisasi, aplikasi klien 1C:Enterprise 8 yang lengkap diluncurkan, dan dalam kasus koneksi eksternal, COM dalam proses yang relatif kecil server diluncurkan. Artinya, jika Anda bekerja melalui server Otomatisasi, Anda dapat menggunakan fungsionalitas aplikasi klien dan melakukan tindakan yang serupa dengan tindakan interaktif pengguna. Saat menggunakan koneksi eksternal, Anda hanya dapat menggunakan fungsi logika bisnis, dan fungsi tersebut dapat dijalankan di sisi klien koneksi, tempat server COM dalam proses dibuat, dan Anda dapat memanggil logika bisnis di server 1C:Enterprise samping.

Teknologi COM juga dapat digunakan untuk mengakses sistem eksternal dari kode aplikasi pada platform 1C:Enterprise. Dalam hal ini, aplikasi 1C bertindak sebagai klien COM. Namun perlu diingat bahwa mekanisme ini hanya akan berfungsi jika server 1C beroperasi di lingkungan Windows.

Mekanisme integrasi diterapkan dalam konfigurasi standar

Format Data Perusahaan

Metode integrasi dengan 1C
Dalam sejumlah konfigurasi 1C (daftar di bawah), berdasarkan mekanisme pertukaran data platform yang dijelaskan di atas, mekanisme siap pakai untuk pertukaran data dengan aplikasi eksternal diterapkan, yang tidak memerlukan perubahan kode sumber konfigurasi (persiapan data pertukaran dilakukan dalam pengaturan solusi aplikasi):

  • "1C:ERP Manajemen Perusahaan 2.0"
  • "Otomasi kompleks 2"
  • "Akuntansi Perusahaan", edisi 3.0
  • "Akuntansi Perusahaan CORP", edisi 3.0
  • "Ritel", edisi 2.0
  • “Dasar Manajemen Perdagangan”, edisi 11
  • Manajemen Perdagangan, Edisi 11
  • “Gaji dan manajemen personalia CORP”, edisi 3

Format yang digunakan untuk pertukaran data adalah Data Perusahaan, berdasarkan XML. Formatnya berorientasi bisnis - struktur data yang dijelaskan di dalamnya sesuai dengan entitas bisnis (dokumen dan elemen direktori) yang disajikan dalam program 1C, misalnya: tindakan penyelesaian, pesanan penerimaan kas, rekanan, item, dll.

Pertukaran data antara aplikasi 1C dan aplikasi pihak ketiga dapat terjadi:

  • melalui direktori file khusus
  • melalui direktori FTP
  • melalui layanan web yang digunakan di sisi aplikasi 1C. File data diteruskan sebagai parameter ke metode web
  • melalui email

Dalam hal pertukaran melalui layanan web, aplikasi pihak ketiga akan memulai sesi pertukaran data dengan memanggil metode web yang sesuai dari aplikasi 1C. Dalam kasus lain, pemrakarsa sesi pertukaran adalah aplikasi 1C (dengan menempatkan file data di direktori yang sesuai atau mengirim file data ke alamat email yang dikonfigurasi).
Juga di sisi 1C Anda dapat mengonfigurasi seberapa sering sinkronisasi akan terjadi (untuk opsi dengan pertukaran file melalui direktori dan email):

  • sesuai jadwal (dengan frekuensi tertentu)
  • secara manual; pengguna harus memulai sinkronisasi secara manual setiap kali dia membutuhkannya

Mengakui pesan

Aplikasi 1C menyimpan catatan pesan sinkronisasi yang dikirim dan diterima dan mengharapkan hal yang sama dari aplikasi pihak ketiga. Ini memungkinkan Anda untuk menggunakan mekanisme penomoran pesan yang dijelaskan di atas di bagian “Mekanisme pertukaran data”.

Selama sinkronisasi, aplikasi 1C hanya mengirimkan informasi tentang perubahan yang terjadi pada entitas bisnis sejak sinkronisasi terakhir (untuk meminimalkan jumlah informasi yang ditransfer). Selama sinkronisasi pertama, aplikasi 1C akan mengunggah semua entitas bisnis (misalnya, item buku referensi item) dalam format EnterpriseData ke dalam file XML (karena semuanya “baru” untuk aplikasi eksternal). Aplikasi pihak ketiga harus memproses informasi dari file XML yang diterima dari 1C dan, selama sesi sinkronisasi berikutnya, menempatkan di file yang dikirim ke 1C, di bagian XML khusus, informasi bahwa pesan dari 1C dengan nomor tertentu berhasil diterima. Pesan tanda terima merupakan sinyal kepada aplikasi 1C bahwa semua badan usaha telah berhasil diproses oleh aplikasi eksternal dan tidak perlu lagi mengirimkan informasi tentangnya. Selain tanda terima, file XML dari aplikasi pihak ketiga juga dapat berisi data untuk sinkronisasi oleh aplikasi (misalnya dokumen penjualan barang dan jasa).

Setelah menerima pesan tanda terima, aplikasi 1C menandai semua perubahan yang dikirimkan pada pesan sebelumnya sebagai berhasil disinkronkan. Hanya perubahan yang tidak disinkronkan pada entitas bisnis (membuat entitas baru, mengubah dan menghapus yang sudah ada) yang akan dikirim ke aplikasi eksternal selama sesi sinkronisasi berikutnya.

Metode integrasi dengan 1C
Saat mentransfer data dari aplikasi eksternal ke aplikasi 1C, gambarannya terbalik. Aplikasi eksternal harus mengisi bagian tanda terima file XML yang sesuai dan menempatkan data bisnis untuk sinkronisasi di bagiannya dalam format EnterpriseData.

Metode integrasi dengan 1C

Pertukaran data yang disederhanakan tanpa jabat tangan

Untuk kasus integrasi sederhana, ketika cukup hanya mentransfer informasi dari aplikasi pihak ketiga ke aplikasi 1C dan tidak diperlukan transfer data terbalik dari aplikasi 1C ke aplikasi pihak ketiga (misalnya, integrasi online toko yang mentransfer informasi penjualan ke 1C: Akuntansi), ada opsi sederhana untuk bekerja melalui layanan web (tanpa pengakuan), yang tidak memerlukan pengaturan di samping aplikasi 1C.

Solusi integrasi khusus

Ada solusi standar "1C: Konversi Data", yang menggunakan mekanisme platform untuk mengkonversi dan bertukar data antara konfigurasi standar 1C, tetapi juga dapat digunakan untuk integrasi dengan aplikasi pihak ketiga.

Integrasi dengan solusi perbankan

Standar "Bank Klien", yang dikembangkan oleh spesialis 1C lebih dari 10 tahun yang lalu, sebenarnya telah menjadi standar industri di Rusia. Langkah selanjutnya ke arah ini adalah teknologi Bank Langsung, yang memungkinkan Anda mengirim dokumen pembayaran ke bank dan menerima laporan dari bank langsung dari program sistem 1C:Enterprise dengan menekan satu tombol di program 1C; itu tidak memerlukan instalasi dan menjalankan program tambahan di komputer klien.

Ada juga standar untuk pertukaran data dalam proyek gaji.

Lain

Layak disebut protokol pertukaran antara sistem 1C:Enterprise dan situs web, standar pertukaran informasi komersial PerdaganganML (dikembangkan bersama dengan Microsoft, Intel, Price.ru dan perusahaan lain), standar pertukaran data untuk memperoleh transaksi.

Sumber: www.habr.com

Tambah komentar