Pemrograman 1C tidak hanya terdiri dari menulis program. 1C adalah ingot tindakan pengguna dan data yang digunakannya.
Data tersebut disimpan dalam database. Kueri 1C adalah cara untuk mendapatkan data dari database untuk menunjukkannya kepada pengguna dalam bentuk atau untuk memprosesnya.
Bagian mendasar dari laporan ini adalah permintaan 1C. Kapan laporan SKD adalah sebagian besar laporan.
Duduk. Mengambil napas. Santai saja. Sekarang saya akan memberi tahu Anda beritanya.
Untuk memprogram dalam 1C, tidak cukup mengetahui bahasa pemrograman 1C. Anda juga perlu mengetahui bahasa kueri 1C.
Bahasa kueri 1C adalah bahasa yang sepenuhnya terpisah yang memungkinkan Anda menentukan data apa yang perlu kami dapatkan dari database.
Ini juga dwibahasa - yaitu, Anda dapat menulis dalam bahasa Rusia atau Inggris. Ini sangat mirip dengan bahasa kueri SQL dan mereka yang tahu ini - Anda dapat bersantai.
Bagaimana Permintaan 1C digunakan
Saat pengguna memulai 1C dalam mode Perusahaan - di menjalankan klien tidak ada satu ons data pun. Oleh karena itu, ketika Anda perlu membuka direktori, 1C meminta data dari database, yaitu, membuat permintaan 1C.
Permintaan 1C adalah:
Membuat dan menjalankan permintaan 1C
Permintaan 1C adalah teks permintaan yang sebenarnya dalam bahasa permintaan 1C.
Teks dapat ditulis dengan tangan. Artinya, ambil dan tulis (jika Anda tahu bahasa ini).
Karena 1C mempromosikan konsep pemrograman visual, di mana banyak atau hampir semuanya dapat dilakukan tanpa menulis kode dengan pena, ada objek Konstruktor Kueri khusus yang memungkinkan Anda menggambar teks kueri tanpa mengetahui bahasa kueri. Namun, keajaiban tidak terjadi - untuk ini Anda perlu tahu cara bekerja dengan konstruktor.
Setelah teks permintaan 1C siap, itu harus dieksekusi. Untuk ini, ada objek dalam kode 1C Request(). Berikut ini contohnya:
Permintaan = Permintaan Baru();
Query.Teks = "PILIH
| Nomenklatur.Link
| DARI
| Direktori Nomenklatur SEBAGAI Nomenklatur
| DIMANA
| Nomenklatur.Layanan";
Pilihan = Query.Execute().Select();
Laporan (Pilihan. Tautan);
Siklus Akhir;
Seperti yang Anda lihat pada contoh, setelah menjalankan permintaan 1C, hasilnya datang kepada kami dan kami harus memprosesnya. Hasilnya adalah satu atau lebih baris tabel (dalam bentuk khusus).
Hasilnya dapat diturunkan ke tabel biasa:
Pilihan = Request.Execute().Upload(); //Hasil - tabel nilai
Atau hanya pergi baris demi baris.
Pilihan = Query.Execute().Select();
While Selection.Next() Loop
//Lakukan sesuatu dengan hasil kueri
Siklus Akhir;
Bekerja dengan permintaan 1C
Prinsip dasar permintaan 1C
Prinsip dasar membangun permintaan 1C -
PILIH Daftar Bidang FROM TableName WHERE Kondisi
Contoh pembuatan kueri 1C seperti itu:
MEMILIH
//daftar bidang untuk dipilih
Tautan,
Nama,
Kode
DARI
//nama tabel tempat kita memilih data
//daftar tabel adalah daftar objek di jendela konfigurator
Direktori.Nomenklatur
DI MANA
// tentukan pilihan
ProductType = &Layanan //pemilihan berdasarkan nilai eksternal
Atau Service // Atribut "Service" dari tipe Boolean, seleksi berdasarkan nilai True
SORTIR DENGAN
//Penyortiran
Nama
Daftar tabel 1C
Anda dapat melihat nama tabel di jendela konfigurator. Anda hanya perlu menulis "Direktori" alih-alih "Direktori", misalnya, "Direktori. Nomenklatur" atau "Dokumen. Penjualan Barang dan Jasa" atau "Daftar Akumulasi. Penjualan".
Untuk register, ada tabel tambahan (virtual) yang memungkinkan Anda mendapatkan angka total.
Information Register.RegisterName.SliceLast(&Date) - permintaan 1C dari register informasi, jika periodik, pada tanggal tertentu
Akumulasi Register.RegisterName.Remains(&Date) - permintaan 1C dari register saldo untuk tanggal tertentu
Akumulasi Register.RegisterName.Turnovers(&StartDate, &EndDate) – kueri 1C dari register turnover untuk periode dari tanggal mulai hingga tanggal akhir.
Prinsip tambahan
Saat kami meminta daftar beberapa data, prinsip dasarnya berfungsi. Tetapi kami juga dapat meminta nomor dan permintaan tersebut dapat menghitungnya untuk kami (tambahkan misalnya).
MEMILIH
//Quantity(FieldName) – menghitung kuantitas
//Field AS OtherName - mengganti nama field
Kuantitas (Referensi) SEBAGAI Kuantitas Dokumen yang Dilakukan
DARI
DI MANA
Dipegang
Kueri 1C ini akan mengembalikan jumlah total dokumen kepada kami. Namun, setiap dokumen memiliki bidang Organisasi. Katakanlah kita ingin menghitung jumlah dokumen untuk setiap organisasi menggunakan kueri 1C.
MEMILIH
//hanya kolom dokumen
Organisasi,
// hitung angkanya
Kuantitas (Referensi) SEBAGAI Kuantitas Menurut Organisasi
DARI
Dokumen.Penjualan Barang/Jasa
DI MANA
Dipegang
KELOMPOK OLEH
Organisasi
Kueri 1C ini akan mengembalikan kepada kami jumlah dokumen untuk setiap organisasi (mereka juga mengatakan "berdasarkan organisasi").
Mari kita hitung tambahan jumlah dokumen ini menggunakan permintaan 1C:
MEMILIH
//hanya kolom dokumen
Organisasi,
// hitung angkanya
//hitung jumlahnya
DARI
Dokumen.Penjualan Barang/Jasa
DI MANA
Dipegang
KELOMPOK OLEH
//harus digunakan jika daftar bidang memiliki fungsi count() dan satu atau lebih bidang pada saat yang sama - maka Anda perlu mengelompokkan berdasarkan bidang ini
Organisasi
Permintaan 1C ini juga akan mengembalikan sejumlah dokumen kepada kami.
MEMILIH
//hanya kolom dokumen
Organisasi,
// hitung angkanya
Kuantitas (Referensi) SEBAGAI Kuantitas Berdasarkan Organisasi,
//hitung jumlahnya
Jumlah (Jumlah Dokumen) SEBAGAI Jumlah
DARI
Dokumen.Penjualan Barang/Jasa
DI MANA
Dipegang
KELOMPOK OLEH
//harus digunakan jika daftar bidang memiliki fungsi count() dan satu atau lebih bidang pada saat yang sama - maka Anda perlu mengelompokkan berdasarkan bidang ini
Organisasi
HASIL Umum
Bahasa kueri 1C sangat luas dan kompleks dan kami tidak akan mempertimbangkan semua fiturnya dalam satu pelajaran - baca pelajaran kami berikutnya.
Secara singkat tentang fitur tambahan bahasa kueri 1C:
Konstruktor kueri 1C
Agar tidak menulis teks kueri dengan tangan Anda, ada konstruktor kueri 1C. Cukup klik kanan di mana saja di modul dan pilih Query Builder 1C.
Pilih tabel yang diinginkan di desainer kueri 1C di sebelah kiri dan seret ke kanan.
Pilih bidang yang diperlukan dalam desainer kueri 1C dari tabel dan seret ke kanan. Jika Anda ingin tidak hanya memilih bidang, tetapi menerapkan beberapa fungsi penjumlahan, setelah menyeretnya, klik dua kali bidang dengan mouse. Pada tab Pengelompokan, Anda kemudian harus memilih (seret dan lepas) bidang yang diperlukan untuk pengelompokan.
Pada tab Kondisi di pembuat kueri 1C, Anda dapat memilih filter yang diperlukan dengan cara yang sama (dengan menyeret bidang yang akan Anda pilih). Pastikan untuk memilih kondisi yang benar.
Pada tab Pesanan, pengurutan ditunjukkan. Pada tab Total - menjumlahkan total.
Dengan menggunakan pembuat kueri 1C, Anda dapat mempelajari kueri yang ada. Untuk melakukannya, klik kanan pada teks kueri yang ada dan juga pilih perancang kueri 1C - dan kueri akan dibuka di perancang kueri 1C.
Minta konstruktor merupakan salah satu sarana pengembangan. Ini memungkinkan Anda untuk membuat teks kueri dalam bahasa kueri hanya menggunakan sarana visual.
Tombol Lebih jauh dan Kembali Anda dapat menavigasi melalui tab konstruktor dan menentukan data apa yang harus ada dalam hasil kueri, bagaimana mereka terkait, dikelompokkan, total apa yang harus dihitung, bekerja dengan tabel sementara, mengedit paket kueri:
Hasil kerja konstruktor akan menjadi teks kueri yang benar secara sintaksis. Dengan demikian, pengembang dapat membuat kueri yang dapat diterapkan bahkan tanpa mengetahui sintaks bahasa kueri - konstruktor akan secara otomatis menghasilkan konstruksi sintaksis yang diperlukan. Teks permintaan yang disiapkan dapat segera ditempelkan ke teks modul atau disalin ke papan klip.
Selain itu, pembuat kueri memungkinkan Anda untuk mengedit teks kueri yang sudah ada dalam program. Untuk melakukan ini, cukup tempatkan kursor di dalam teks kueri yang ada dan panggil konstruktor. Teks kueri yang ada akan diuraikan dan disajikan dalam konstruktor sebagai bidang basis data yang dipilih sesuai dan satu set tautan, pengelompokan, kondisi, dll yang ditentukan.
Salah satu alat yang paling kuat dari 1C Enterprise 8, tanpa diragukan lagi, adalah Query Builder. Konstruktor adalah alat visual untuk bekerja dengan kueri dalam bahasa 1C. Tetapi konstruktor memiliki satu kelemahan besar - tidak menunjukkan hasil eksekusi kueri. Kelemahan ini terutama dirasakan oleh pengembang pemula dari solusi aplikasi pada platform 1C:Enterprise 8.3 dan 8.2.
Selain itu, programmer 1C yang berpengalaman pun sering dihadapkan pada situasi di mana perlu untuk melakukan analisis data "satu kali". basis informasi di berbagai bagian, tetapi saya tidak ingin menulis laporan lengkap demi "kesimpulan satu kali" seperti itu.
Untuk semua ini dan banyak kasus lainnya, dengan senang hati kami menawarkan Anda pemrosesan eksternal Konsol kueri dengan kemampuan untuk memproses hasil untuk 1C 8.3 dan 1C 8.2!
Pemrosesan universal, berjalan pada konfigurasi platform 1C apa pun: Enterprise 8.1 - 8.3;
- berjalan dalam 1C: mode Perusahaan;
- kueri dapat ditulis secara manual, atau Anda dapat memanggil Pembuat Kueri;
- menunjukkan hasil permintaan;
- Anda dapat menentukan parameter laporan secara langsung di Konsol Kueri;
- dapat menyimpan dan memuat file permintaan.
Untuk meluncurkan Konsol Kueri, Anda perlu menjalankan konfigurasi dalam mode 1C:Enterprise dan membuka pemrosesan eksternal Konsol Kueri seperti file lain yang disimpan di disk. Pemrosesan seperti itu akan bekerja dengan cara yang persis sama seolah-olah itu adalah bagian dari solusi yang diterapkan.
Konsol Kueri pemrosesan eksternal mengulangi antarmuka yang sudah dikenal dan sebagian besar Kegunaan toolkit standar untuk mengkompilasi kueri sistem 1C: Enterprise 8.3 dan 8.2. Ini juga memungkinkan Anda untuk mendapatkan hasil kueri, kueri batch, dan tabel sementara.
Konsol kueri dijalankan baik dalam mode operasi server-klien dan server-file dari sistem, baik di bawah klien tebal maupun tipis! Konsol Kueri mengintegrasikan Pembuat Kueri standar, yang dipanggil melalui menu konteks di bidang teks kueri.
PENTING! Konstruktor kueri di klien kurus tidak berfungsi, item menu untuk membuka Konstruktor ini tidak tersedia. Di klien tebal, Pembuat Kueri tersedia!
Di klien tipis, kami hanya dapat menulis permintaan dengan tangan, semua fungsi lainnya berfungsi tanpa perubahan.
Query Builder di 1C 8.3 dan 8.2 adalah alat pengembangan yang paling kuat. Ini memungkinkan Anda untuk menulis teks permintaan menggunakan lingkungan visual khusus. Jadi, untuk membuat permintaan 1s, tidak perlu mengetahui bahasa kueri bawaan, cukup menavigasi dalam antarmuka desainer yang sederhana dan intuitif.
Pembuat kueri adalah sekumpulan tab, yang masing-masing bertanggung jawab atas bagian kuerinya sendiri. Jadi mengisi tab Tabel dan bidang kami memilih tabel dari mana kueri 1s akan menerima data dan bidang tabel ini yang diperlukan untuk menyelesaikan tugas tertentu. Mengisi batu Ketentuan kami memaksakan kondisi pada tabel yang dipilih untuk memilih hanya data yang kami butuhkan dari mereka, dan seterusnya.
Deskripsi konstruktor kueri di situs web resmi 1C 8: v8.1c.ru
Tabel dan bidang; ; ; ; ; ; Subquery (dalam pengembangan).
Untuk memanggil perancang kueri 1s 8 in kode program diperlukan:
Mari kita pertimbangkan semua tab utama desainer kueri menggunakan contoh kecil dengan kompleksitas yang meningkat. Pendekatan ini akan memungkinkan programmer 1c pemula untuk lebih efektif mempelajari konstruktor dan semua kemampuannya. Sebagai contoh, kita akan menggunakan konfigurasi Akuntansi 3.0.
Tugas: tulis permintaan ke direktori nomenklatur, pilih seluruh nomenklatur direktori.
Tab baru: Tabel dan bidang.
Mekanisme baru: melihat dan mengedit teks permintaan menggunakan tombol "Permintaan".
Untuk mulai membuat permintaan, mari buat permintaan baru dan panggil konstruktor (seperti yang dijelaskan dalam beberapa paragraf di atas). Setelah itu, jendela desainer akan terbuka di tab Tabel dan bidang.
tab Tabel dan bidang terdiri dari tiga bagian:
Basis data. Bagian ini menyajikan semua tabel database yang dapat digunakan untuk membuat kueri;
meja. Bagian ini memilih tabel yang diperlukan untuk permintaan yang diberikan. Untuk kemudian pindahkan mereka keluar dari bagian basis data membutuhkan:
Bagian atas meja Ada sejumlah tombol. Sebagian besar dari mereka akan dibahas secara lebih rinci dalam pelajaran berikut. Untuk saat ini, saya hanya akan memberikan penjelasan singkat.
bidang. Di bagian ini, bidang tabel dari bagian sebelumnya dipilih. Bidang ini akan menjadi kolom tabel atau pilihan yang diperoleh sebagai hasil kueri. Pertama-tama, mereka diperlukan untuk mendapatkan dari tabel yang dipilih hanya informasi yang diperlukan dalam kasus tertentu. Untuk memindahkan mereka keluar dari bagian Tabel yang dibutuhkan:
Bagian atas bidang Ada sejumlah tombol. Tentang membuat bidang menggunakan ekspresi arbitrer akan dibahas secara lebih rinci dalam pelajaran berikut. Untuk saat ini, saya hanya akan memberikan penjelasan singkat.
Kami menemukan teori yang diperlukan untuk menyelesaikan tugas yang diberikan dalam pelajaran ini. Biarkan saya mengingatkan Anda bagaimana kedengarannya: tulis permintaan ke direktori nomenklatur, pilih seluruh nomenklatur direktori.
Mari kita mulai membuat kueri berdasarkan nomenklatur:
Permintaan di 1C - metode yang efektif dapatkan data di v8 diketahui produk perangkat lunak. Anda bisa mendapatkan data tidak hanya dalam bentuk yang nyaman, tetapi juga dalam jangka pendek. Optimasi merupakan salah satu cara untuk meningkatkan kinerja pemrosesan query dalam sistem. Nyaman itu bahasa permintaan 1C mendukung bahasa Latin dan Sirilik.
Permintaan dalam sistem ditulis ke bahasa khusus, dan Anda dapat men-debug parameternya menggunakan konsol di 1C. Kata kunci dalam bahasa permintaan adalah "PILIH".
Dalam kombinasi dengan konstruksi SELECT, konstruksi berikut dapat bertindak:
Pemrogram tahu bahwa dalam program 1C v8, Anda bisa mendapatkan data terbaru menggunakan dua metode efektif:
Model objek digunakan ketika tujuannya adalah untuk mendapatkan kumpulan data sederhana dengan kumpulan kode sederhana. Bahasa kueri di 1C berfungsi untuk semua kasus, ini adalah keserbagunaannya. Tetapi kueri yang dibuat secara buta huruf menurunkan kinerja dan tidak selalu memungkinkan untuk memperoleh data yang benar. Tetapi untuk menjadi programmer yang baik di 1C, tidak cukup untuk belajar bahasa permintaan, Anda perlu mempelajari cara menerapkan aturannya dengan benar.
Sedikit lebih banyak tentang sistem struktur dasar dalam bahasa 1C, misalnya, kami memiliki tabel data:
Tabel "Nomenklatur".
Tugas: mendapatkan data pada kolom Kode dan Urutkan dalam bentuk tabel.
pada bahasa permintaan terlihat seperti ini:
Permintaan.Teks = »
|PILIH
| Nomenklatur.Kode,
| Nomenklatur Ragam
| DARI
| Buku Pegangan.Nomenklatur SEBAGAI Nomenklatur»;
Dan kami mendapatkan yang berikut:
Kode | Variasi |
00001 | musiman |
00002 | wanita bangsawan |
00003 | meyer |
Bagi mereka dengan desain tingkat dasar bahasa permintaan tidak menimbulkan kesulitan, masuk akal untuk beralih ke pengelompokan. Kuncinya di sini adalah konstruksi "GROUP BY", yang akan membantu Anda mengelompokkan bidang database yang identik. Bahkan, metode pengelompokan mengurangi bidang dengan informasi yang identik menjadi satu. Dalam tabel yang dihasilkan, lebih sedikit baris yang diperoleh, yang nyaman untuk aktivitas dan analisis saat ini. Tetapi penting bahwa semua bidang database memiliki rincian sebelumnya: kami mengelompokkan, kami tidak mengelompokkan.
Pertimbangkan konstruksi "GROUP BY" sebagai contoh.
Produk | Saham | Kuantitas |
Sabun mandi | Dasar | 1 520 |
Bubuk | Dasar | 750 |
Sampo | Dasar | 830 |
Tempel | Grosir | 17 |
Bubuk | Grosir | 2 586 |
Sampo | Grosir | 22 |
Tugas: membuat pengelompokan berdasarkan kuantitas. Untuk melakukan ini, Anda harus mengelompokkan bidang dengan nilai yang sama untuk mendapatkan hasil ringkasan umum. Perintah pengelompokan menciutkan nilai bidang yang identik. Akibatnya, pengguna menerima informasi terkini dengan lebih sedikit garis signifikan, yang nyaman untuk membuat keputusan manajerial dan menganalisis situasi saat ini.
Untuk mengetahui berapa banyak barang yang tersedia tanpa memperhitungkan gudang, Anda perlu:
Permintaan.Teks = »
|PILIH
| Barang Barang,
| SUM(Items.Quantity) SEBAGAI Kuantitas
| DARI
| Direktori Barang SEBAGAI Barang
| KELOMPOK OLEH
| Barang.Barang";
Pengelompokan dilakukan berdasarkan nilai field Barang, jenis field yang dikelompokkan adalah Quantity. Jumlah dalam contoh khusus ini adalah fungsi agregat. Dialah yang menunjukkan apa yang sebenarnya perlu dilakukan dengan jumlah barang yang identik.
Hasilnya, kami mendapatkan tabel dengan informasi berikut:
Pemrosesan khusus "Konsol Kueri" di v8.1/8.2/8.3 memungkinkan peluncuran dalam mode Perusahaan dan merumuskan kueri itu sendiri dalam mode manual atau dengan memanggil fungsi melalui konsol. Anda sudah bisa memperkirakan terlebih dahulu seperti apa hasil eksekusinya, file bisa disimpan.