Pemrograman 1s bekerja dengan excel. Mana yang lebih baik - "1C" atau "Excel"? Apakah Anda memiliki pertanyaan atau butuh bantuan dari konsultan?

Di 1C, ada 2 cara untuk bekerja dengan file MS Excel, melalui objek COM dan alat 1C bawaan menggunakan objek dokumen spreadsheet. Mari kita periksa kedua metode ini lebih terinci.

1. Bekerja melalui objek COM.

Metode ini membutuhkan penginstalan MS Excel, dan jika Anda bekerja dengan file di server, maka MS Excel harus diinstal di server, jika di klien, maka MS Excel juga diperlukan di sisi klien.

Contoh (di akhir artikel dapat dilihat dalam bentuk teks):

Perlu dicatat bahwa semua objek, metode, dan properti yang disediakan oleh objek COM "Excel.Application" adalah objek, metode, dan properti VBA, bahasa pemrograman MS Office.

Catatan:

Terkadang Anda perlu bekerja dengan template yang sudah ada. Kemudian kita perlu menyimpan template ini di suatu tempat sehingga semua pengguna yang diperlukan memiliki akses ke sana. Namun, ada solusi yang lebih mudah, kami menyimpan template sebagai tata letak biner.

2. Bekerja melalui Dokumen Spreadsheet 1C.

Dokumen spreadsheet 1C mendukung format MS Excel untuk perekaman mulai dari platform 8, tetapi untuk pembukaan hanya mulai dari platform 8.3.6. Apalagi saat dibuka, semua sheet dimuat ke dalam satu dokumen spreadsheet. Dari versi 8.3.10 saat boot lembaran yang berbeda dimuat sebagai area yang berbeda.

Contoh rekamannya sangat sederhana dan tidak memerlukan banyak perhatian:

Namun, di sini kita punya masalah. Saat merekam dari 1C di buku kerja Excel, tampilan nama sheet dinonaktifkan secara default.

Masalah ini dapat diselesaikan dengan 2 cara, 1 - aktifkan tampilan lembar dalam buku itu sendiri dalam pengaturan (tidak semua pengguna akan setuju untuk melakukan ini), 2 - lakukan melalui objek COM (kami perlu menginstal MS Excel lagi) .

Setelah penambahan kecil ini, label lembar akan terlihat di file MS Excel.

Membaca MS Excel bukanlah tugas yang mudah, karena metode baca hanya tersedia di server atau klien tebal. Untuk melakukan ini, kita perlu mentransfer file MS Excel ke server.

&Pada Klien

CreateDocument() Prosedur

Pengecualian

Akhir Percobaan;

Buku = Excel.WorkBooks.Add(); // Buat buku kerja MS Excel baru

Sheet = Book.WorkSheets.Add(); //Tambahkan lembar

Sheet.Name = "Contoh dari 1C"; // Tetapkan nama sheet

Sheet.Cells (1,1).Value = "Ayo buat rumus";!}

Lembar.Sel(2,1).Nilai = 1;

Lembar.Sel(2,2).Nilai = 2;

Lembar.Sel(2,3).Formula = "=A2+B2";

Sheet.Cells(3,1).Value = CurrentDate();

Book.SaveAs("C:\1\Test.xlsx");

Pesan.Tutup();

Prosedur Akhir

& Di server

fungsi GetLayoutServer()

Return FormAttributeToValue("Object").GetLayout("Upload Template"); //Beginilah cara kami mendapatkan tata letak pemrosesan eksternal;

Fungsi Akhir

&Pada Klien

Pekerjaan Prosedur()

Excel = New COMObject("Excel.Application");

Pengecualian

Show("Gagal mencoba menghubungkan komponen Excel. Program Excel tidak diinstal pada komputer ini!");

Akhir Percobaan;

Tata Letak = GetLayoutServer();

Layout.Write(TemporaryFileName);

Apakah Anda memiliki pertanyaan, apakah Anda memerlukan bantuan konsultan?

Buku = Excel.WorkBooks.Open(TempFileName);

SheetTemplate = Book.WorkSheets(1);

SheetTemplate.Cells (6,1).Nilai = "Tanggal:";!}

SheetTemplate.Cells(6,2).Value = CurrentDate();

SheetTemplate.NumberFormat = "dd/mm/yy;@"; // Mari berikan format tanggal, format ini diperoleh dengan merekam makro di MS Excel

SheetTemplate.Columns("B:B").EntireColumn.AutoFit; // Regangkan kolom agar pas dengan tanggal

Buku.SaveAs(NamaBerkas);

Pesan.Tutup();

Prosedur Akhir

&Pada Klien

Prosedur Akhir

&Pada Klien

Prosedur WriteSpreadsheetDocument()

SpreadsheetDocument = Dokumen Spreadsheet Baru();

SpreadsheetDocument.Area("R1C1").Text = "Contoh entri di MS Excel dari 1C";

SpreadDocument.Write("C:\1\Test2.xls",SpreadDocumentFileType.XLSX);

Excel = New COMObject("Excel.Application");

Excel.WorkBooks.Open("C:\1\Test2.xls");

Excel.Terlihat = 0;

Excel.ActiveWindow.DisplayWorkbookTabs = 1;

Excel.ActiveWindow.TabRatio = 0,6;

Excel.ActiveWorkbook.Save();

Excel.Application.Quit()

Prosedur Akhir

BinaryData = New BinaryData("C:\1\test2.xlsx");

Address=PutToTempStorage(BinaryData,ThisForm.UniqueIdentifier) ​​​​;

SpreadsheetDocument = DownloadOnServer(Alamat);

SpreadsheetDocument.Show();

Prosedur Akhir

& Di server

Fungsi LoadOnServer(Alamat)

TempFileName = GetTemporaryFileName("xlsx");

FileData = GetFromTempStorage(Alamat);

FileData.Write(NamaFile Sementara);

SpreadsheetDocument = Dokumen Spreadsheet Baru();

Kembalikan Dokumen Spreadsheet;

Sejak lama, aplikasi 1C telah menjadi program paling populer di kalangan akuntan, perencana, ekonom, dan manajer. Ini tidak hanya memiliki sejumlah konfigurasi yang bervariasi untuk berbagai macam kegiatan, tetapi juga lokalisasi di bawah standar akuntansi di beberapa negara di dunia. Semakin banyak perusahaan beralih ke akuntansi dalam program ini. Tetapi prosedur untuk mentransfer data secara manual dari program akuntansi lain ke 1C adalah tugas yang agak panjang dan membosankan yang memakan banyak waktu. Jika perusahaan menyimpan catatan menggunakan Excel, maka proses transfer dapat diotomatisasi dan dipercepat secara signifikan.

Mentransfer data dari Excel ke 1C diperlukan tidak hanya pada periode awal bekerja dengan program ini. Terkadang ada kebutuhan untuk ini ketika, selama aktivitas, Anda perlu memasukkan beberapa daftar yang disimpan di buku spreadsheet. Misalnya, jika Anda ingin mentransfer daftar harga atau pesanan dari toko online. Jika daftarnya kecil, daftar tersebut dapat dimasukkan secara manual, tetapi bagaimana jika berisi ratusan item? Untuk mempercepat prosedur, Anda dapat menggunakan beberapa fitur tambahan.

Untuk unduhan otomatis cocok untuk hampir semua jenis dokumen:

  • daftar nomenklatur;
  • Daftar kontraktor;
  • Daftar harga;
  • Daftar pesanan;
  • Informasi tentang pembelian atau penjualan, dll.

Perlu dicatat segera bahwa 1C tidak memiliki alat bawaan yang memungkinkan Anda mentransfer data dari Excel. Untuk keperluan ini, Anda perlu menghubungkan loader eksternal, yang merupakan file dalam format epf.

Persiapan data

Kami perlu menyiapkan data dalam spreadsheet Excel itu sendiri.


Selain tindakan universal untuk menyiapkan data dalam buku Excel ini, Anda juga perlu menyesuaikan dokumen dengan persyaratan loader khusus yang akan kami gunakan, tetapi kami akan membicarakannya nanti.

Menghubungkan bootloader eksternal

Hubungkan bootloader eksternal dengan ekstensi epf ke aplikasi 1C dimungkinkan, baik sebelum menyiapkan file Excel, dan setelahnya. Hal utama adalah pada awal proses pengunduhan, kedua poin persiapan ini telah diselesaikan.

Ada beberapa pemuat spreadsheet Excel eksternal untuk 1C, yang dibuat oleh berbagai pengembang. Kami akan mempertimbangkan contoh menggunakan alat pemrosesan informasi "Memuat data dari dokumen spreadsheet" untuk versi 1C 8.3.


Salah satu database utama yang digunakan 1C adalah daftar barang dan jasa. Oleh karena itu, untuk menjelaskan prosedur memuat dari Excel, kami akan fokus pada contoh transfer jenis data khusus ini.

  1. Kami kembali ke jendela pemrosesan. Karena kita akan memuat rangkaian produk, sakelar di parameter harus berada di posisinya "Direktori". Namun, ini diatur seperti itu secara default. Anda harus menggantinya hanya ketika Anda akan mentransfer jenis data lain: bagian tabel atau daftar informasi. Lebih jauh ke lapangan "Tampilan Direktori" klik pada tombol dengan elipsis. Daftar drop-down terbuka. Di dalamnya, kita harus memilih item "Tata nama".
  2. Setelah itu, handler secara otomatis menyusun bidang yang digunakan program dalam jenis direktori ini. Perlu dicatat segera bahwa tidak perlu mengisi semua kolom.
  3. Sekarang buka lagi portabel dokumen Excel. Jika nama kolomnya berbeda dengan nama bidang direktori 1C yang berisi bidang yang sesuai, maka Anda perlu mengganti nama kolom ini di Excel agar namanya benar-benar cocok. Jika tabel berisi kolom yang tidak memiliki analog di direktori, maka kolom tersebut harus dihapus. Dalam kasus kami, kolom ini adalah "Kuantitas" Dan "Harga". Juga harus ditambahkan bahwa urutan kolom dalam dokumen harus benar-benar sesuai dengan yang disajikan dalam pemrosesan. Jika untuk beberapa kolom yang ditampilkan di loader, Anda tidak memiliki data, maka kolom ini dapat dibiarkan kosong, tetapi penomoran kolom yang berisi data harus cocok. Untuk kenyamanan dan kecepatan pengeditan, Anda dapat menggunakan fitur khusus Excel untuk memindahkan kolom dengan cepat di beberapa tempat.

    Setelah tindakan ini dilakukan, klik ikonnya "Menyimpan", yang direpresentasikan sebagai ikon floppy disk di sudut kiri atas jendela. Kemudian tutup file dengan mengklik tombol tutup standar.

  4. Kami kembali ke jendela pemrosesan 1C. Klik tombolnya "Membuka", yang ditampilkan sebagai folder kuning.
  5. Jendela buka file diluncurkan. Kami pergi ke direktori tempat dokumen Excel yang kami butuhkan berada. Pengalih tampilan file default disetel ke ekstensi mxl. Untuk menampilkan file yang kita butuhkan, perlu diatur ulang ke posisinya "Lembar Excel". Setelah itu, pilih dokumen yang ditransfer dan klik tombol "Membuka".
  6. Konten tersebut kemudian dibuka di handler. Untuk memeriksa kebenaran pengisian data, klik tombol "Isi kontrol".
  7. Seperti yang Anda lihat, alat kontrol pengisian memberi tahu kami bahwa tidak ada kesalahan yang ditemukan.
  8. Sekarang mari kita pergi ke tab. "Pengaturan". DI DALAM "Bidang pencarian" beri tanda centang pada baris yang unik untuk semua item yang dimasukkan dalam buku referensi nomenklatur. Paling sering, bidang digunakan untuk ini. "Kode vendor" atau "Nama". Ini harus dilakukan agar saat menambahkan posisi baru ke dalam daftar, data tidak terduplikasi.
  9. Setelah semua data dimasukkan dan pengaturan dibuat, Anda dapat melanjutkan untuk memuat informasi langsung ke direktori. Untuk melakukan ini, klik pada prasasti "Muat data".
  10. Proses pengunduhan sedang berlangsung. Setelah selesai, Anda dapat membuka buku referensi nomenklatur dan memastikan bahwa semua data yang diperlukan ditambahkan di sana.

Kami mengikuti prosedur untuk menambahkan data ke buku referensi nomenklatur dalam program 1C 8.3. Untuk direktori dan dokumen lain, pengunduhan akan dilakukan dengan prinsip yang sama, tetapi dengan beberapa nuansa yang dapat diketahui sendiri oleh pengguna. Perlu juga dicatat bahwa prosedurnya mungkin berbeda untuk berbagai pemuat pihak ketiga, tetapi pendekatan umumnya tetap sama untuk semua orang: pertama, penangan memuat informasi dari file ke jendela tempat ia diedit, dan baru kemudian ditambahkan langsung ke database 1C.

  • Saat melakukan pertukaran informasi antara rekanan (daftar harga, tindakan rekonsiliasi, dll.);
  • Untuk memfasilitasi pekerjaan operator dalam kasus di mana akuntansi utama disimpan dalam 1C, dan sebagian dilakukan dalam tabel Excel;
  • Selama pengisian awal database.

Untuk melakukan operasi ini, Anda dapat menggunakan fungsionalitas standar yang tersedia dengan berlangganan dukungan teknologi informasi (ITS), dan pemrosesan yang ditulis sendiri yang diimplementasikan melalui berbagai pilihan koneksi. Dalam artikel kami, kami akan mencoba menganalisis semua kemungkinan kasus semaksimal mungkin dan menjawab sebagian besar pertanyaan yang ada tentang memuat data dari Excel ke 1C.

Gerakan semesta

Di disk ITS, serta di portal 1C, dengan masuk ke menu "Dukungan teknologi" -> "Laporan dan pemrosesan universal", di folder "Memuat data dari dokumen spreadsheet" ada pemrosesan yang sesuai.

Saat diluncurkan, formulir terbuka (Gbr. 1):

Seperti yang Anda lihat dari formulir, ini memungkinkan Anda mentransfer informasi ke objek konfigurasi berikut:

  1. Direktori;
  2. bagian tabular dokumen atau panduan;
  3. Daftar informasi.

Bergantung pada posisi sakelar, bidang pemilihan objek berubah.

Formulir tabel pemrosesan diisi saat Anda membuka file yang diunggah.

Pemrosesan jenis mendukung unggahan dari:

  • Dikembangkan oleh spesialis perusahaan 1C, format filemxl;
  • Daftarxls disimpan dalam formatUnggul 97-2003;
  • file tekstxt;
  • tabeldbf.

File Excel dengan volume besar dapat memakan waktu lama untuk dimuat, jadi jika diasumsikan pemuatan data dapat berlangsung dalam beberapa tahap atau Anda tahu pasti bahwa Anda harus membuka file yang ada beberapa kali, lebih baik simpan informasinya dari itu dalam mxl untuk menghemat saraf dan format waktu. Anda dapat melakukan ini langsung dari formulir pemrosesan.

Penting untuk dipahami bahwa jika sumber data ada pengelompokan garis, subjudul dan catatan, harus dihapus secara manual.

Sekarang mari beralih ke tab "Pengaturan" (Gbr. 2):

Gbr.2

Cukup sering, spreadsheet Excel berisi tajuk dengan segala macam detail dan data (nama formulir cetak, detail rekanan, tanggal dan nomor dokumen yang masuk, nama kolom, dan sebagainya), untuk mengecualikan pemrosesannya dengan program pada formulir, di atribut "Baris pertama dokumen spreadsheet", Anda harus menentukan baris pertama dengan informasi yang ditransfer

Setelah memilih objek metadata tempat informasi akan ditulis, bagian tabular dari tab "Pengaturan" akan secara otomatis diisi dengan nama atribut, deskripsi jenisnya, dan lainnya informasi penting. Pertimbangan kolom bagian tabular dari tab "Pengaturan" harus dikhususkan untuk bagian terpisah.

Kolom pengaturan

Tandai - dengan mencentang atau tidak mencentang kotak di baris, ditentukan apakah atribut yang sesuai akan diisi.

Representasi atribut - sinonim (nama) dari atribut metadata ditulis di sini, seperti yang ditentukan di konfigurator.

Bidang pencarian - jika Anda mencentang kotak ini, pemrosesan akan mencari elemen dengan atribut yang sesuai dan, jika berhasil, mengubah data yang ada, fungsi tambahan bidang ini - perlindungan terhadap munculnya duplikat.

Deskripsi tipe - menampilkan tipe data yang memiliki satu atau beberapa atribut metadata.

Mode unduh - menawarkan tiga opsi untuk dipilih (Gbr. 3):

Gbr.3

  • Cari - elemen yang sesuai akan dicari, jika tidak ada, yang baru dapat dibuat;
  • Set - nilai tertentu diatur dengan cara yang lebih rendah;
  • Hitung – dalam hal ini, hasil perhitungan ekspresi yang ditentukan dalam kolom "Kondisi link/Ekspresi untuk nilai" akan diatur dalam bidang elemen yang sedang dibuat.

Dalam kasus terakhir, mengaktifkan bidang Ekspresi akan membuka formulir (Gbr.4).

Gbr.4

Nomor kolom - bidang yang digunakan untuk menunjukkan dari kolom spreadsheet Excel mana Anda perlu mengambil data untuk diisi.

Nilai default – cukup sering muncul situasi ketika file yang diunggah tidak berisi semua data yang diperlukan untuk merekam suatu elemen, dalam hal ini informasi yang terkandung dalam bidang ini akan diisi untuk diisi.

Kondisi tautan / Ekspresi untuk nilai - kami telah menyentuh sebagian bidang ini ketika kami mempertimbangkan bidang yang dihitung, selain itu, Anda dapat menentukan kondisi yang sesuai dengan data sumber yang akan disinkronkan.

Di sini, pada prinsipnya, semua informasi yang tersedia di tab "Pengaturan".

Agar tidak menghabiskan banyak waktu setiap kali memuat, meresepkan korespondensi dan ekspresi, pengembang telah menyediakan kemampuan untuk menyimpan opsi pengaturan ke file dengan ekstensi mxlz.

Anda dapat memeriksa kebenaran data yang ditransfer dengan mengklik tombol "Isi kontrol" (Gbr. 1). Setelah itu, Anda dapat memulai proses pengunduhan. Anda akan diberi tahu secara terpisah tentang keberhasilan penyelesaian prosedur atau situasi non-standar.

Untuk mengunggah data dari Excel ke basis informasi"Manajemen dan perdagangan" ada mekanisme lain. Ini kurang universal daripada metode di atas, namun tidak memerlukan langganan ITS dan termasuk dalam pengiriman standar.

Pemrosesan ini dapat ditemukan di tab "Pembelian", di menu "Layanan", disebut "Memuat harga pemasok dari file" (Gbr. 5)

Gbr.5

Formulir pemrosesan berisi:

  1. Bidang pemilihan tanggal yang akan menunjukkan untuk jam berapa harga ini relevan;
  2. Kolom untuk memilih rekanan yang mengirimkan daftar harganya;
  3. Tombol yang memungkinkan Anda memilih jenis harga yang akan ditetapkan;
  4. Bagian tabular yang dapat diisi dengan data yang diunggah.

Bentuk ini dapat dilihat pada Gbr.6

Gbr.6

Legenda di bagian atas formulir menjelaskan cara menggunakan tab pertama formulir.

Setelah memilih rekanan (bergantung pada apakah ia bertindak sebagai pemasok, agen komisi, atau penjual), kolom tambahan untuk setiap jenis harga akan tersedia di tabel.

Saat bekerja melalui antarmuka web, beberapa browser mungkin memerlukan penginstalan add-on browser (Gbr. 7). Kita perlu mengklik tombol "Mulai Instalasi" dan memulai kembali koneksi kita.

Gbr.7

Setelah itu, dengan menggunakan clipboard, kami dapat mentransfer informasi dari satu tabel ke tabel lainnya. Ketika kolom yang kita butuhkan ("Artikel", "Nama", "Harga") diisi, kita menekan tombol "Berikutnya" dan pergi ke halaman kedua (Gbr. 8)

Gbr.8

Program akan secara otomatis mencari kecocokan di dalam database dan, jika tidak ada, akan menawarkan opsi untuk mengatasi kesalahan. Penampilan bagian tabular dapat dikontrol dengan sakelar. Selain itu, pengguna dapat secara mandiri membandingkan elemen file yang diunggah dengan yang ada di database.

  • Daftarkan semuanya;
  • Daftarkan hanya yang telah berubah dibandingkan dengan yang sudah ada di database.

Di bidang teks, Anda dapat memasukkan komentar yang akan direkam dalam dokumen (Gbr. 9):

Gbr.9

Setelah diproses:

  • Elemen yang sesuai akan dibuat di direktori "Nomenklatur Pemasok" (jika tidak ada);
  • Itu akan dicocokkan dengan elemen buku referensi "Nomenklatur";
  • Dokumen "Menetapkan harga item" akan dibuat dan diposting, yang menunjukkan: pemasok, jenis harga, dan tanggal penetapan data.

Memproses "Memuat barang dari file eksternal" bekerja dengan cara yang serupa.

Opsi pemrosesan transfer DIY

Masalah utama dalam mengekstraksi data dari file Excel adalah 1C tidak memiliki mekanisme bawaan yang tidak ambigu untuk membukanya. Ada beberapa opsi untuk menghubungkan Excel ke 1C:

  • Melalui Microsoft ADODB - Cukup cara cepat, yang biasanya berlaku untuk file dan versi client-server penyimpanan dasar;
  • Melalui penggunaan kantor Microsoft- metode yang terkadang gagal saat bekerja dengan database SQL, sebagai aturan, ini bekerja agak lebih lambat dari metode pertama, selain itu, Office diperlukan;
  • Melalui Libre Office - tidak seperti metode sebelumnya, ini gratis, selain format xls dan xlsx, juga mendukung tabelnya sendiri, tetapi membutuhkan paket terpasang LibreOffice dan beberapa persiapan file yang diunggah (baris pertama tabel harus berisi nama kolom).

Mari kita lihat lebih dekat berbagai cara dan opsi.

Melalui ADODB.Connection

Secara umum, ADO adalah singkatan dari ActiveX Data Object dan digunakan untuk akses terprogram ke berbagai database. Masalah terbesar saat membuat koneksi apa pun ke file pihak ketiga (termasuk Excel) adalah menyusun string koneksi dengan benar.

Ada tiga opsi untuk file Excel:

Opsi string koneksi:

  • Penyedia - driver yang digunakan ditentukan di sini;
  • Sumber Data - tentukan nama file yang akan kita buka;
  • Properti Diperpanjang - di sini Anda dapat menentukan apakah baris header diperlukan untuk tabel (HDR = YA menunjukkan bahwa data akan dibaca dari baris pertama, HDR = TIDAK - dari baris kedua), apakah file dibuka hanya-baca ( ReadOnly) dan beberapa opsi tambahan lainnya.

Setelah membuat string koneksi, kita dapat terhubung ke file yang diunduh (Gbr. 13)

Gbr.13

Sekarang kita dapat menggunakan kueri sederhana (Gbr. 14) untuk mulai mengambil informasi dari file yang diunggah.

Dalam hal ini, parameter "Lembar" menentukan lembar mana dari buku kerja Excel yang harus kita gunakan.

Kumpulan catatan yang disimpan pada lembar dapat dibaca menggunakan objek Recordset. Dalam hal ini, record pertama dari sheet dapat diperoleh dengan parameter BOF (awal file), dan EOF terakhir (akhir file).

Melalui aplikasi Excel

Perbedaan utama dari metode sebelumnya adalah selain driver database, Excel harus diinstal di komputer tempat sambungan dibuat. Hanya dalam hal ini kita dapat menginisialisasi aplikasi untuk membaca data dari tabel (Gambar 16).

Objek COM ini memiliki beberapa parameter anak, tetapi yang utama bagi kami, dalam kondisi tugas saat ini, adalah parameter Buku Kerja (Gbr. 17).

Setelah menginisialisasi buku, perlu ditentukan lembar dari mana data akan dibaca (Gbr. 18).

Setelah itu, Anda dapat mengulang di dalam siklus baris dan kolom tabel file yang sedang dibuka.

Beberapa kata tentang kemungkinan kesalahan

Bagian terbesar dari kesalahan saat menghubungkan ke file terjadi karena fakta bahwa file tersebut sudah digunakan oleh aplikasi lain. Ada baiknya jika Anda dapat melihat di bilah tugas bahwa Excel sedang berjalan di komputer, tetapi jika Anda atau pengguna lain membukanya dari pemrosesan eksternal, ini hanya dapat ditentukan secara visual melalui "Pengelola Tugas", jadi jangan lupa untuk menutup koneksi sebelum menyelesaikan prosedur transfer:

Dalam hal bekerja melalui ADO (Gbr.19);

Gbr.19

  • Dalam hal bekerja dengan aplikasi (Gbr. 20).

Beras. 20.

Koneksi dan prosedur untuk menyelesaikan pekerjaan dengan data paling baik diatur di dalam konstruk Attempt-Exception-End Attempt, yang menyebabkan deskripsi kesalahan dalam situasi luar biasa. Meskipun terkadang memperlambat pekerjaan, ini sangat menyederhanakan penentuan penyebab kesalahan dan, pada akhirnya, cara untuk menghilangkannya.

Perkenalan.

Banyak orang tahu bahwa Excel jauh lebih tua dari 1C. Menurut pendapat saya, ini adalah produk yang sangat sukses, dan saya belum mendengar keluhan apa pun tentangnya. Excel sederhana dan serbaguna. Itu tidak hanya mampu melakukan operasi aritmatika sederhana, tetapi juga perhitungan kompleks, grafik, dll. Saya tahu contoh ketika organisasi, sebelum beralih ke 1C, menyimpan sebagian akuntansi di Excel. Banyak dan sekarang secara paralel menggunakan dua program. Pada artikel ini, kami akan mempertimbangkan cara untuk bertukar data antara 1C dan Excel.

Tabel 1C dan Excel.

Untuk kenyamanan, banyak pengguna menyimpan tabel 1C ( formulir pencetakan) dalam format Excel (*.xls). Setelah itu, berbagai pengelompokan, penyortiran, perhitungan, dll dibuat di file yang dihasilkan. Hal ini disebabkan oleh fakta bahwa tabel 1C tidak memiliki fungsionalitas sebesar tabel Excel. Namun di versi 1C 8.0 terdapat inovasi yang membuat bekerja dengan meja menjadi lebih nyaman.

Situs web 1C (http://www.1c.ru/) memiliki program berguna yang memungkinkan Anda membuka tabel 1C di Excel dan menyimpan lembar Excel sebagai tabel 1C. Ini berguna jika tabel 1C tidak disimpan dalam format Excel, dan 1C tidak diinstal di komputer tempat Anda perlu membuka tabel ini. Ya, dan selalu ingat bahwa Anda perlu menyimpan tabel 1C dalam format Excel, tidak perlu.

Informasi lengkap tentang program ini dapat ditemukan di sini.
Anda dapat mengunduh program di sini ( arsip zip 682.739 byte).

Komentar: Di Excel, pemisah desimal adalah ",". Oleh karena itu, sebelum menyimpan tabel 1C dalam format Excel, ganti pemisah lain di dalamnya (misalnya, ".") dengan ",". Jika tidak, Excel tidak akan dapat melakukan perhitungan dengan angka-angka ini, atau tidak akan ditampilkan sebagai angka sama sekali. Misalnya, di tabel 1C "15.2" akan ditampilkan di Excel sebagai "15 Feb".

Mendapatkan data dari Excel.

Akses dari 1C ke Excel dilakukan melalui OLE. Misalnya, kode
Percobaan
Pengecualian
Beri tahu (Deskripsi Kesalahan () +
);
Kembali;
Akhir Percobaan;
akan memungkinkan kita untuk mengakses melalui variabel "Excel" untuk menjalankan aplikasi Excel. Dan kemudian Anda sudah bisa mengakses buku (file), sheet dan cell dengan data. Di bawah ini adalah contoh kode.

Membuka buku (file):
Buku = Excel. buku kerja. Buka(PathToFile);
Jalan ke file - jalur penuh ke file buku kerja Excel.

Memilih lembar buku untuk dikerjakan:
atau
Lembar = Buku. Lembar Kerja(NamaLembar);
SheetNumber adalah nomor sheet dalam buku, SheetName adalah nama sheet dalam buku.

Mendapatkan nilai sel lembar:
Nilai = Lembar. Sel (BarisNumber , KolomNumber ). nilai;

Penting: jangan lupa untuk menambahkan kode Excel ke bidang untuk melakukan tindakan yang diperlukan. Berhenti(); , jika tidak, proses yang berjalan akan tetap tidak selesai dan akan menggunakan memori dan prosesor komputer.

Keluaran data ke Excel.

Untuk menampilkan (mengunggah) data ke Excel, Anda harus membuka buku kerja yang ada atau membuat yang baru dan memilih lembar kerja untuk keluaran data. Membuka buku yang sudah ada dijelaskan di atas, tetapi untuk membuat buku baru, Anda perlu menggunakan kode berikut:
Percobaan
Excel = CreateObject("Excel.Application" );
Pengecualian
Beri tahu (Deskripsi Kesalahan () +
"Excel tidak diinstal di komputer ini!");
Kembali;
Akhir Percobaan;
Buku = Excel. buku kerja. menambahkan();

Karena saat membuat buku kerja di Excel, lembar dibuat secara otomatis (Alat->Opsi->Umum->Lembar di buku kerja baru), Anda hanya perlu memilih lembar yang akan digunakan:
Lembar = Buku. Lembar Kerja(Nomor Lembar);
atau tambahkan lembar baru ke buku, jika perlu:
Lembar = Buku. Seprai. menambahkan();
Langkah selanjutnya adalah mengatur nilai sel:
Lembaran. Sel (BarisNumber , KolomNumber ). nilai = nilai;
RowNumber, ColumnNumber - nomor baris dan nomor kolom di persimpangan sel berada.
Dan pada akhirnya, Anda perlu merekam buku yang dibuat:
Percobaan
Buku . SaveAs(PathToFile);
Pengecualian
Beri tahu (Deskripsi Kesalahan ()
+ "File tidak disimpan!");
Kembali;
Akhir Percobaan;
PathToFile - path lengkap ke file buku kerja Excel (termasuk namanya).
Penting: ingat bahwa nama file tidak boleh mengandung \ / : * ? " >< |.

Metode yang umum digunakan untuk membaca/mengatur nilai di Excel.

Excel = CreateObject("Excel.Application" ); Mendapatkan akses ke aplikasi Excel.
Unggul. Terlihat = Visibilitas ; 0 - Excel tidak terlihat, 1 - terlihat.
Buku = Excel. buku kerja. menambahkan(); Membuat buku kerja baru (file) Excel.
Buku . SaveAs(Nama File); Menyimpan buku kerja Excel.
Lembar = Buku. Lembar kerja. menambahkan(); Menambahkan lembar baru ke buku.
Buku = Excel. buku kerja. Buka (Nama file); Membuka buku kerja (file) Excel yang ada.
Lembar = Buku. Lembar Kerja(Nomor Lembar); Menyetel sheet sebagai lembar kerja dengan numberSheetNumber.
Lembaran. Nama = NamaLembar ; Memberi nama lembar kerjaSheetName
Lembaran. Pengaturan halaman . Zoom = Skala ; Menentukan opsi halaman Skala (dari 10 hingga 400).
Lembaran. Pengaturan halaman . Orientasi = Orientasi ; Orientasi: 1 - potret, 2 - lanskap.
Lembaran. Pengaturan halaman . Margin Kiri = Unggul. SentimeterToPoints ( Sentimeter ); Menetapkan batas kiri (dalam sentimeter).
Lembaran. Pengaturan halaman . TopMargin = Unggul. SentimeterToPoints ( Sentimeter ); Menentukan batas atas (dalam sentimeter).
Lembaran. Pengaturan halaman . Margin Kanan = Unggul. SentimeterToPoints ( Sentimeter ); Menentukan batas kanan (dalam sentimeter).
Lembaran. Pengaturan halaman . Margin Bawah = Excel . SentimeterToPoints ( Sentimeter ); Tetapkan batas bawah (dalam sentimeter).
Lembaran. Kolom (ColumnNumber) . Lebar Kolom = Lebar ; Tetapkan lebar kolom.
Lembaran. Sel (BarisNumber , KolomNumber ). nilai = nilai; Memasukkan data ke dalam sel.
Lembaran. Sel (BarisNumber , KolomNumber ). font. Nama = NamaFont ; Mengatur font dalam sel.
Lembaran. Sel (BarisNumber , KolomNumber ). font. Ukuran = FontUkuran ; Atur ukuran font dalam sel.
Lembaran. Sel (BarisNumber , KolomNumber ). font. Tebal = Tebal ; 1 - tebal, 0 - normal.
Lembaran. Sel (BarisNumber , KolomNumber ). font. Miring = Miring ; 1 - font miring, 0 - normal.
Lembaran. Sel (BarisNumber , KolomNumber ). font. Underline = Digarisbawahi ; 2 - digarisbawahi, 1 - tidak.
Lembaran. Sel (BarisNumber , KolomNumber ). BilanganFormat = Format ; Atur format data sel.
Lembaran. Sel (BarisNumber , KolomNumber ). Perbatasan. Gaya Garis = TipeGaris ; Tetapkan batas sel. 1 - padat tipis.

Metode ini sederhana. Esensinya adalah objeknya Dokumen Spreadsheet memiliki metode:

  • membakar (< ИмяФайла>, < ТипФайлаТаблицы >) untuk mengunggah data ke file;
  • Membaca (< ИмяФайла>, < СпособЧтенияЗначений >) untuk memuat data dari file.

Perhatian!

Metode Write() tersedia di klien dan server. Metode Read() hanya tersedia di sisi server. Perlu diingat ini
saat merencanakan interaksi klien-server.

Pertimbangkan contoh menyimpan dokumen spreadsheet ke file. Anda perlu membuat dan mengisi objek TableDocument dengan cara apa pun, dan membongkar file dilakukan hanya dengan satu baris:

TabDok . Tulis (FilePath, SpreadsheetDocumentFileType.XLSX);

Di Sini TabDok- spreadsheet yang dihasilkan, Jalur ke file- nama file yang akan diunggah, SpreadsheetDocumentFileType.XLSX— format file yang dihasilkan. Format Excel berikut didukung:

  • XLS95- format excel 95;
  • XLS97 - format Excel 97;
  • XLSX adalah format Excel 2007.

TabDoc = Dokumen Spreadsheet Baru;
TabDok . Baca (PathToFile, WayToReadSpreadsheetDocumentValues.Value);

Di Sini Jalur ke file- Path ke file Excel yang diunduh. WayToReadValuesSpreadDocument.Value menentukan bagaimana menginterpretasikan data yang dibaca dari dokumen sumber. Pilihan yang tersedia:

  • Arti;
  • Teks.

Tukarkan melalui OLE

Pertukaran melalui teknologi otomasi OLE mungkin merupakan opsi yang paling umum kerja program Dengan File Excel. Ini memungkinkan Anda untuk menggunakan semua fungsionalitas yang disediakan oleh Excel, tetapi lebih lambat dari metode lainnya. Exchange via OLE membutuhkan penginstalan MS Excel:

  • Di komputer pengguna akhir, jika pertukaran terjadi di sisi klien;
  • Di komputer server 1C: Perusahaan, jika pertukaran dilakukan di sisi server.

Contoh membongkar:

// Buat objek COM
Excel = New COMObject("Excel.Application");
// Nonaktifkan peringatan dan pertanyaan
Unggul . displayalerts = false;
// Buat buku baru
Buku = Unggul. buku kerja. menambahkan();
// Memposisikan pada lembar pertama
Lembaran = Buku. Lembar Kerja(1);

// Tulis nilai ke sel
Lembaran . Sel (Nomor Baris, Nomor Kolom). Nilai = Nilai Sel;

// Simpan file
Buku . SaveAs(NamaFile);


Unggul . Berhenti();
Unggul = 0;

Contoh membaca:

// -- PILIHAN 1 --

// Buat objek COM
Excel = New COMObject("Excel.Application");
// Buka buku
Buku = Unggul. buku kerja. Membuka( Jalur ke file );

Lembaran = Buku. Lembar Kerja(1);

// Tutup buku
Buku . Tutup(0);

// Tutup Excel dan kosongkan memori
Unggul . Berhenti();
Unggul = 0 ;

// -- PILIHAN 2 --

// Buka buku
Buku = GetCOMObject( Jalur ke file );
// Memposisikan pada lembar yang diinginkan
Lembaran = Buku. Lembar Kerja(1);

// Baca nilai sel, ini biasanya tempat loop bypass sel berada
CellValue = Lembar. Sel (Nomor Baris, Nomor Kolom). nilai;

// Tutup buku
Buku . aplikasi. Ku T();

Untuk jalan pintas semua baris lembar Excel terisi, Anda dapat menggunakan trik berikut:

// -- PILIHAN 1 --
Jumlah Baris = Lembar. Sel(1 , 1 ). Sel Khusus(11 ). Baris;
Untuk RowNumber = 1 Dengan Jumlah Baris Loop
CellValue = Lembar. Sel (Nomor Baris, Nomor Kolom). nilai;
Akhiri Siklus;

// -- PILIHAN 2 --
Nomor Baris = 0 ;
Sementara True Loop
Nomor Baris = Nomor Baris + 1 ;
CellValue = Lembar. Sel (Nomor Baris, Nomor Kolom). nilai;
Jika TIDAK ValueFilled(CellValue) Kemudian
menggugurkan;
Berakhir jika;
Akhiri Siklus;

Alih-alih melintasi semua garis lembaran secara berurutan, Anda bisa buang semua data ke dalam array dan bekerja dengannya. Pendekatan ini akan lebih cepat saat membaca sejumlah besar data:

TotalKolom = Lembar. Sel(1 , 1 ). Sel Khusus(11 ). Kolom;
Baris Total = Lembar. Sel(1 , 1 ). Sel Khusus(11 ). Baris;

Wilayah = Lembar. Range(Sheet.Cells(1 , 1 ), List.Cells(TotalRows, TotalColumns));
Data = Luas. nilai. membongkar();

Tabel di bawah mencantumkan properti dan metode yang paling banyak diminta untuk bekerja dengan Excel melalui OLE:

Tindakan Kode Komentar
Bekerja dengan aplikasi
Mengatur Visibilitas Jendela Aplikasi Unggul . bisa dilihat= salah;
Mengatur mode tampilan peringatan (display/not display) Unggul . Peringatan Tampilan= salah;
Menutup aplikasi Unggul . Berhenti();
Bekerja dengan buku
Buat buku baru Buku = Unggul. buku kerja. Menambahkan();
Membuka buku kerja yang ada Buku = Unggul. buku kerja. Buka (Nama File);
Menyimpan buku Buku . SaveAs(NamaFile);
penutupan buku Buku . Tutup(0);
Bekerja dengan selembar
Mengatur lembar saat ini Lembaran = Buku. Lembar Kerja(SheetNumber);
Pengaturan nama Lembaran . Nama = Nama;
Perlindungan pengaturan Lembaran . Melindungi();
Penghapusan perlindungan Lembaran . Buka Proteksi();
Mengatur orientasi halaman Lembaran . Pengaturan halaman. Orientasi = 2; 1 - potret, 2 - lanskap
Mengatur batas kiri Lembaran . Pengaturan halaman. Margin Kiri = Unggul. SentimeterToPoints(Sentimeter);
Menetapkan batas atas Lembaran . Pengaturan halaman. TopMargin = Unggul. SentimeterToPoints(Sentimeter);
Mengatur batas kanan Lembaran . Pengaturan halaman. Margin Kanan = Unggul. SentimeterToPoints(Sentimeter);
Mengatur batas bawah Lembaran . Pengaturan halaman. Margin Bawah = Excel. SentimeterToPoints(Sentimeter);
Bekerja dengan baris, kolom, sel
Mengatur lebar kolom Lembaran . Kolom(Nomor Kolom). Lebar Kolom = Lebar;
Menghapus garis Lembaran . Baris(Nomor Baris). Menghapus();
Menghapus kolom Lembaran . Kolom(Nomor Kolom). menghapus();
Menghapus sel Lembaran . Sel (Nomor Baris, Nomor Kolom). Menghapus();
Menetapkan nilai Lembaran . Sel (Nomor Baris, Nomor Kolom). Nilai = Nilai;
Menggabungkan sel Lembaran . Range(Sheet.Cells(RowNumber, ColumnNumber), Sheet.Cells(RowNumber1, ColumnNumber1)). Menggabungkan();
Menginstal font Lembaran . Sel (Nomor Baris, Nomor Kolom). Fon. Nama = NamaFont;
Mengatur ukuran font Lembaran . Sel (Nomor Baris, Nomor Kolom). Fon. Ukuran = FontSize;
Pengaturan font tebal Lembaran . Sel (Nomor Baris, Nomor Kolom). Fon. Berani = 1 ; 1 - tebal, 0 - normal
Pengaturan miring Lembaran . Sel (Nomor Baris, Nomor Kolom). Fon. Miring = 1 ; 1 - miring, 0 - normal
Mengatur font yang digarisbawahi Lembaran . Sel (Nomor Baris, Nomor Kolom). Fon. Menggarisbawahi = 2 ; 2 - digarisbawahi, 1 - tidak

Untuk mengetahui properti mana yang perlu diubah atau metode mana yang harus dipanggil, Anda dapat menggunakan makro Unggul. Jika Anda merekam makro dengan tindakan yang diperlukan, maka Anda dapat melihatnya kode pemrograman pada makro yang direkam VBA.

Menggunakan COMSafeArray

Saat membongkar data dalam jumlah besar dari 1C ke Excel, Anda dapat menggunakan objek untuk mempercepat COMSafeArray. Seperti yang didefinisikan oleh pembantu sintaksis, COMSafeArray adalah pembungkus objek di atas larik multidimensi SafeArray dari COM. Memungkinkan Anda membuat dan menggunakan SafeArray untuk bertukar data antar objek COM. Sederhananya, ini adalah array nilai yang dapat digunakan untuk bertukar antar aplikasi menggunakan teknologi OLE.

// Buat COMSafeArray
ArrayCom = New COMSafeArray("VT_Variant", TotalColumns, TotalRows);
// Mengisi COMSafeArray
Untuk Str = 0 Total Baris - 1 Loop
Untuk Hitung = 0 Total Kolom - 1 Siklus
ArrayCom . SetValue(Nomor, Str, Nilai);
Akhiri Siklus;
Akhiri Siklus;
// Tetapkan area lembar nilai unggul dari COMSafeArray
Lembaran . Range(Sheet.Cells(1 , 1 ), List.Cells(TotalRows, TotalColumns)). Nilai = ArrayCom;

Bertukar melalui ADO

File Excel, saat ditukar melalui ADO, adalah database yang dapat diakses menggunakan kueri SQL. Instalasi MS Excel tidak diperlukan, tetapi diperlukan driver ODBC, yang melaluinya akses akan dilakukan. Driver ODBC yang digunakan ditentukan dengan menentukan string koneksi ke file. Biasanya driver yang dibutuhkan sudah terpasang di komputer.

Pertukaran melalui ADO terasa lebih cepat daripada pertukaran melalui OLE, tetapi saat membongkar, tidak ada cara untuk menggunakan fungsionalitas Excel untuk mendekorasi sel, menandai halaman, mengatur rumus, dll.

Contoh membongkar:


Koneksi = COMObject Baru("ADODB.Connection");


Menggabungkan . ConnectionString = "

|SumberData=" + Nama File + ";
;
Menggabungkan . membuka(); // Buka koneksi

// Buat objek COM untuk perintah
Command = New COMObject("ADODB.Command");
Tim

// Tetapkan teks perintah untuk membuat tabel
Tim . teks perintah= "BUAT TABEL [Lembar1] (Kolom1 karakter (255), tanggal Kolom2, int Kolom3, float Kolom4)";
Tim . menjalankan(); // Eksekusi perintah

// Menugaskan teks perintah untuk menambahkan baris tabel
Tim . teks perintah= "MASUKKAN KE [Lembar1] (Kolom1, Kolom2, Kolom3, Kolom4) nilai ('abvgdeo', '8/11/2017', '12345', '12345,6789')";
Perintah.Jalankan(); // Eksekusi perintah

// Menghapus perintah dan menutup koneksi
perintah = tidak terdefinisi;
Menggabungkan . menutup();
Koneksi = Tidak ditentukan;

Untuk membuat sheet baru dan membentuk strukturnya, Anda dapat menggunakan objek ADOX.Catalog Dan ADOX.Tabel. Dalam hal ini, kode akan terlihat seperti:

// Buat objek COM untuk bekerja dengan buku
Buku = New COMObject("ADOX.Catalog");
Buku . ActiveConnection = Koneksi;

// Buat objek COM untuk bekerja dengan struktur data pada sheet
Table = New COMObject("ADOX.Table");
Meja . Nama = "Lembar1" ;
Meja . Kolom. Tambahkan("Kolom1", 202);
Meja . Kolom. Tambahkan("Kolom2", 7);
Meja . Kolom. Tambahkan("Kolom3", 5);
Meja . Kolom. Tambahkan("Kolom4", 5);

// Buat lembar di buku dengan struktur yang dijelaskan
Buku . tabel. tambahkan(tabel);
tabel = tidak terdefinisi;
buku = tidak terdefinisi;

Dalam contoh di atas, dalam metode

Meja . Kolom. Menambahkan("Kolom1", 202);

parameter kedua menentukan jenis kolom. Parameter bersifat opsional, berikut adalah beberapa nilai tipe kolom:

  • 5-iklanGanda;
  • 6 - mata uang iklan;
  • 7 - tanggal tambahan;
  • 11 - adBoolean;
  • 202 - adVarWChar;
  • 203-adLongVarWChar.

Contoh membaca:

// Buat objek COM untuk koneksi
Koneksi = COMObject Baru("ADODB.Connection");

// Atur string koneksi
Menggabungkan . ConnectionString = "
|Penyedia=Microsoft.ACE.OLEDB.12.0;
|SumberData=" + Nama File + ";
|Properti Diperpanjang=""Excel 12.0 XML;HDR=YA"";";
Menggabungkan . membuka(); // Buka koneksi

// Buat objek COM untuk menerima pilihan
Seleksi = New COMObject("ADODB.Recordset");
Teks Permintaan = "PILIH * DARI [Sheet1$]";

// Eksekusi permintaan
Sampel . Buka(TeksKueri, Sambungan);

// Melewati hasil seleksi
Sementara TIDAK Sampling. EOF() Lingkaran
ColumnValue1 = Pilihan. bidang. Barang("Kolom1"). nilai ; // Merujuk dengan nama kolom
Nilai kolom2 = pilihan. bidang. Barang(0 ). nilai; // Ambil dengan indeks kolom
Sampel . Pindah Selanjutnya();
Akhiri Siklus;

Sampel . menutup();
Sampel = tidak terdefinisi;
Menggabungkan . menutup();
Koneksi = tidak terdefinisi;

Di string koneksi, parameternya HDR menentukan bagaimana baris pertama pada lembar akan dirasakan. Opsi yang memungkinkan:

  • YA - baris pertama dianggap sebagai nama kolom. Nilai dapat diakses dengan nama dan indeks kolom.
  • TIDAK - Baris pertama diambil sebagai data. Nilai hanya dapat diakses oleh indeks kolom.

Dalam contoh yang diberikan, hanya beberapa objek ADO yang dipertimbangkan. Model objek ADO terdiri dari objek-objek berikut:

  • koneksi;
  • memerintah;
  • kumpulan rekaman;
  • catatan;
  • bidang;
  • Sungai kecil;
  • kesalahan;
  • parameter;
  • properti.

Unggah tanpa pemrograman

Untuk menyimpan data dari 1C ke Excel, tidak selalu disarankan untuk menggunakan pemrograman. Jika dalam mode Perusahaan pengguna dapat menampilkan data yang diperlukan untuk mengunggah, maka dimungkinkan untuk menyimpannya di Excel tanpa pemrograman.

Untuk menyimpan dokumen spreadsheet (misalnya, hasil laporan), Anda dapat memanggil perintah Menyimpan atau Simpan sebagai… menu utama.

Di jendela yang terbuka, Anda perlu memilih direktori, nama, dan format file yang disimpan.

Untuk menyimpan data daftar dinamis(misalnya, daftar item) Anda harus:

  1. Output data ke spreadsheet menggunakan perintah Lainnya ⇒ Tampilkan daftar...;
  2. Simpan dokumen spreadsheet dalam format yang diperlukan.



Memuat...
Atas