Ekstensi 1C universal untuk Google Sheets dan Documents - ambil dan gunakan

Artikel ini ditujukan untuk mereka yang menggunakan G Suite dan 1C.

PIK Digital adalah perusahaan IT yang membuat teknologi bangunan. Tahun lalu, kami mentransfer Grup Perusahaan PIK ke G Suite . Untuk sepenuhnya bekerja dengan Google Sheets dan Documents, perlu menyempurnakan sistem kami.

Salah satu peningkatan ini adalah ekstensi untuk mengunggah laporan dan formulir dari 1C ke Google Drive dalam format Google Sheets dan Google Docs . Dalam artikel ini kami akan membagikan solusi siap pakai dan informasi berguna tentang implementasinya. Ekstensi ini gratis. Ambil dan gunakan.

Ekstensi unduhan
Lihat kode di GitHub



Agar ekstensi berfungsi, Anda perlu:

  1. Daftarkan Akun Google
  2. Buat proyek di Google Cloud Platform
  3. Buat Klien OAuth
  4. Konfigurasikan akses ke Google Drive API
  5. Pasang ekstensi 1C
  6. Konfigurasikan koneksi ke Google API dalam 1C

Selanjutnya, kami mempertimbangkan setiap tahap secara terpisah dan memberikan contoh kode.

Registrasi Akun Google


Untuk bekerja, Anda memerlukan akun Google . Tanpa itu, ekstensi tidak akan dapat berinteraksi dengan layanan G Suite. Sudah punya akun yang ada - gunakan saja.

Membuat proyek di GCP


Untuk mengaktifkan akses ke Google Drive API, Anda harus membuat proyek di Google Cloud Platform (GCP). Ada dua opsi untuk bekerja dengan GCP secara gratis:

  • Masa percobaan 12 bulan dengan anggaran $ 300.
  • Selalu Gratis - akses ke sebagian besar sumber daya GCP.

Kedua metode memiliki keterbatasan, lebih lanjut tentang mereka dijelaskan di sini . Kami merekomendasikan opsi dengan masa uji coba 12 bulan. Setelah masa percobaan, uang tidak akan didebit jika Anda tidak mulai menggunakan layanan berbayar. Semua yang Anda butuhkan untuk pekerjaan integrasi adalah gratis.

Kami mendaftarkan proyek menggunakan tautan console.cloud.google.com , klik "Pilih proyek", lalu - "Buat proyek." Setelah membuat proyek, pilih dengan menekan tombol “Select Project” lagi.



Membuat Klien OAuth


Buat kredensial untuk terhubung ke G Suite menggunakan protokol OAUth 2.0. Di GCP, buka item menu "API dan Layanan" - "Kredensial" - "Buat Kredensial" - "OAUth Key Identifier".

Prompt muncul untuk membuat jendela permintaan akses. Jendela ini terbentuk ketika pengguna diminta izin untuk mengakses datanya.



Biarkan jenis akses "Buka Akses" dan masukkan nama aplikasi yang akan ditampilkan ketika karyawan memulai proyek dan memerlukan izin untuk mengakses data. Klik "Simpan."

Setelah itu, atur "Tipe Aplikasi". Pilih Jenis Lainnya dan masukkan ID klien OAuth. Harap dicatat bahwa ini tidak sama dengan nama tampilan aplikasi. Akibatnya, jendela terbuka dengan pengidentifikasi dan rahasia klien. Simpan mereka, ini penting.

Menghubungkan Perpustakaan API Google Drive


Untuk mendapatkan akses ke fungsionalitas API, buka item menu "Perpustakaan API", cari perpustakaan yang diinginkan dan sambungkan.



Karena kami ingin bekerja dengan format G Suite, kami perlu menghubungkan pustaka Google Drive API ke proyek. Selain itu, kita akan membutuhkan pustaka Google Sheets API, Google Docs API. Temukan dan hubungkan dengan cara yang sama.

Pasang ekstensi dalam mode pengguna


Sekarang Anda dapat merumuskan permintaan ke API. Ingat: tugas kami adalah mengunggah data dari laporan 1C dari formulir standar ke Google Sheets atau Google Docs.

Unduh ekstensi 1C.

Dalam 1C, dimungkinkan untuk menginstal ekstensi konfigurasi secara mandiri. Jika ini pertama kalinya Anda menemukan ini, lihat video pendek kami tentang cara melakukan ini.

Ekstensi kami bekerja dengan platform mulai dari versi 8.3.10, pada konfigurasi BP (mulai dari 3.0.65 dan lebih tinggi), ERP (mulai dari 2.4.6 dan lebih tinggi) dan UT (mulai dari 11.4.6 dan lebih tinggi).

Jika Anda melihat peringatan keamanan saat memasang ekstensi, klik Ya. Anda akan melihat pesan yang menyatakan bahwa "Tindakan saat ini terputus untuk mengeluarkan peringatan." Ini berarti bahwa Anda telah mengaktifkan mode aman, jadi Anda harus mengulangi prosedur untuk menambahkan ekstensi, dan menonaktifkan mode aman. Setelah menambahkan, mulai ulang 1C.

Jika instalasi berhasil, maka Anda akan melihat tombol "Simpan ke Google Drive" di laporan dan formulir cetak.



Mengatur parameter untuk menghubungkan ke Google API di 1C


Tetap mengkonfigurasi pengaturan untuk menghubungkan ke Google API, dan Anda dapat bekerja. Sekali lagi, pilih item "Semua Fungsi" di menu dan di bagian "Memproses" kami mencari item "Pengaturan Koneksi API Google".



Kami mengisi bidang Clientid, Clientsecret, dan "Port" dengan nilai yang diperoleh saat membuat proyek di GCP. Secara default, nama file dan folder diganti di mana kunci sementara yang digunakan untuk koneksi akan disimpan. Untuk tujuan keamanan, data tentang kunci (menyegarkan dan mengakses token) pengguna disimpan dalam direktori file sementara pengguna saat ini, dalam folder <nama folder> dan dalam file <nama file>. Jika proyek Google yang sama dibuat dalam konfigurasi yang berbeda, nama file dapat dibuat sama di semuanya, sehingga tidak membuat banyak file dengan informasi yang sama. Saat menyimpan, pengaturan koneksi disimpan dalam repositori pengaturan umum.

Menyimpan Laporan


Sekarang Anda dapat menyimpan laporan dalam format Google Sheets dan Google Docs di Google Drive .

Pada upaya pertama untuk menyimpan laporan, Anda harus melalui prosedur otorisasi pengguna satu kali dalam setiap konfigurasi sehingga layanan menerima hak akses untuk menyimpan data.



Di jendela yang muncul, masukkan alamat email dan kata sandi Gmail Anda. Selanjutnya
di jendela yang terbuka, klik "Izinkan". Jadi Anda memberikan aplikasi untuk menyimpan informasi di Google Drive Anda.



Anda harus memasukkan nama file, pilih jenis dan direktori untuk menyimpan ke drive bersama atau pribadi. Klik "Simpan." Setelah menyimpan, laporan akan terbuka di browser. Selamat menikmati.

Sisi teknis dari masalah ini


Sekarang mari kita lihat cara kerjanya di dalam platform 1C.
Untuk menghubungkan, baris permintaan berikut untuk layanan Google dihasilkan:

="https://accounts.google.com/o/oauth2/auth"+"?" + "response_type=code" + "&client_id=" + _ + "&redirect_uri=http://localhost" + "&access_type=offline" + "&scope=https://www.googleapis.com/auth/drive https://www.googleapis.com/auth/spreadsheets https://www.googleapis.com/auth/drive.apps.readonly https://www.googleapis.com/auth/drive.file https://www.googleapis.com/auth/drive.appdata https://www.googleapis.com/auth/drive.metadata; 

client_id adalah pengidentifikasi klien di mana kami sebelumnya menyimpan nilai variabel.
scope - alamat pustaka API yang akan kami gunakan. Jika Anda perlu menghubungkan beberapa perpustakaan, buat daftar dengan spasi.

String kueri ini diperlukan untuk koneksi satu kali aplikasi klien kami ke layanan Google. Anda dapat memasukkan string kueri di browser, sebagai tanggapan, layanan akan mengembalikan URL dengan sesuatu seperti ini:

 http://localhost/?code=<>&scope=https://www.googleapis.com/auth/admin.directory.user%20https://www.googleapis.com/auth/admin.directory.orgunit 

Anda bisa menambahkan bidang untuk data HTML di perancang formulir 1C dan menjalankan permintaan melalui itu. Kita perlu mendapatkan nilai <CODE> - kode akses untuk layanan dari URL ini.

Tetap mendapatkan dua token dengan membuat permintaan HTTP. Akibatnya, permintaan akan mengembalikan string dengan nilai akses dan penyegaran dalam format JSON. Token penyegaran tidak kehilangan relevansi dari waktu ke waktu, dan token akses hidup selama 60 menit dan kemudian perlu diperbarui. Untuk menerima token ini, kami membutuhkan <CODE> yang baru saja diterima, serta pengidentifikasi dan rahasia klien, yang kami simpan sebelumnya.

Kode dapat berupa seperti ini:

  = "accounts.google.com";  = "/o/oauth2/token";  = ("client_id=%1&client_secret=%2&grant_type=authorization_code&code=%3&redirect_uri=http://localhost", _, _, );  =  HTTP(,443,,,,, OpenSSL);  =  ; .("Content-Type","application/x-www-form-urlencoded”) HTTP =  HTTP(,); HTTP.();  = .HTTP("POST", HTTP);   . = 200  .(("   : %1", .())); ; ;  = .();  =  JSON(); .();  = XDTO.JSON(); .();  = .access_token;  = .refresh_token;  = .expires_in; 

Variabel expires_in berisi masa pakai token akses.
Berikut ini adalah permintaan untuk memperbarui token:

  = "accounts.google.com";  = "/o/oauth2/token";  = Google.refresh_token; _ = Google.client_id; _ = Google.client_secret;  = "grant_type=refresh_token" + "&client_id=" + _ + "&client_secret=" + _ + "&refresh_token=" + ; 

Menyimpan dokumen spreadsheet ke Google Drive


Sekarang mari kita lihat bagaimana cara menyimpan dokumen spreadsheet di Google Drive dan kemudian mengonversinya ke Google Sheets.

 //  HTTP   = "file_for_drive"; // HTTP      = Google()[]; .("Content-Type", "multipart/related; boundary=" + ); //----- //  //----- //  =  ; .("Content-Type: application/json; charset=UTF-8"); //  // json    ,     = GSs(, , id_);  = GoogleAPI_._(, ); //----- //   //----- //----- //  //----- // .(); .("Content-Type: " + ); .("uploadType: media"); //   = (); .(, ()[]);  = GoogleAPI_._(,  ()); //----- //   //----- //----- //    .  =  ; .(); .();  = GoogleAPI_.HTTP(, ); //----- HTTP =  HTTP("/upload/drive/v2/files" + "?uploadType=multipart&convert=true",); HTTP.();  =.HTTP("POST", HTTP);   . = 200   = " HTTP  " + .() + ",   " + .; GoogleAPI_.GS(, ".  ");  ""; ; HTTP = ; HTTP = ;  ();  (" ",.,,,()); ; HTTP = .(); JSON = GoogleAPI_GSheets.JSON(HTTP); //     google drive  GoogleAPI_GSheets.JSON(JSON, "alternateLink"); 

Kode ini menggunakan metode unggah banyak bagian untuk mengunggah file.
Kami membentuk permintaan POST dari dua blok data. Di blok pertama, kita menulis judul dan tipe file mimeType. Blok kedua mentransfer isi file. Blok didefinisikan oleh pembatas, yang ditunjukkan pada akhir dan awal blok.

Pelajari lebih lanjut tentang ini di artikel kami tentang memasukkan file Pangkalan Pengetahuan Google Drive.

Beginilah cara kerjanya. Kami harap sekarang Anda tidak akan membuang waktu mengonversi data yang diunduh dari 1C.

Penulis ekstensi kami adalah pengembang terkemuka PIK Digital Brazhnikova Maria mbrazh

Source: https://habr.com/ru/post/id437824/


All Articles