Bahasa kueri 1c 8.3 serupa. Mirip dengan kondisi kueri. Spesifikasi string yang tepat

Terkadang situasi muncul ketika di 1C 8.3 atau 8.2 Anda perlu membuat pilihan, misalnya, dari direktori semua elemen yang memiliki kata "glaze" di namanya. Atau, dari direktori, pilih semua kontraktor yang nama belakangnya mengandung kata “Ivan”. Secara umum, periksa beberapa nilai string.

Untuk tujuan ini, ada operator di kueri 1C 8.3 dan 8.2 - "Serupa". Ini digunakan, masing-masing, dalam kondisi berikut:

Dapatkan 267 pelajaran video di 1C gratis:

Bagaimana cara menggunakan templat dalam kueri 1C?

Untuk menghasilkan kondisi pemilihan, Anda perlu meneruskan template tertentu sebagai parameter. Untuk membuat template, ada yang disebut simbol layanan.

Misalnya, karakter "%" mengizinkan rangkaian karakter arbitrer apa pun:

Ada yang lain karakter khusus:

  • % (persentase) - mengizinkan urutan karakter arbitrer apa pun;
  • _ (garis bawah) - karakter tunggal apa pun;
  • […] – satu karakter arbitrer dari yang tercantum di dalam tanda kurung. Selain membuat daftar karakter, Anda dapat menggunakan rentang. Contoh: ao;
  • [^...] – sama seperti yang sebelumnya, tetapi terbalik. Tanda "^" berarti negasi.

MENYUKAI- Operator untuk memeriksa kesamaan string dengan suatu pola. Analogi LIKE dalam SQL.
Operator MENYUKAI memungkinkan Anda membandingkan nilai ekspresi yang ditentukan di sebelah kirinya dengan string pola yang ditentukan di sebelah kanan. Nilai ekspresi harus bertipe string. Jika nilai ekspresi cocok dengan pola, hasil operatornya adalah TRUE, jika tidak, maka FALSE.
Karakter berikut dalam string pola adalah karakter layanan dan memiliki arti berbeda dari karakter string:
. % (persen): urutan yang berisi sejumlah karakter arbitrer
. _ (garis bawah): satu karakter arbitrer
. […] (satu atau lebih karakter dalam tanda kurung siku): setiap karakter yang tercantum di dalamnya tanda kurung siku
Pencacahan dapat berisi rentang, misalnya a-z, yang menunjukkan karakter sembarang yang termasuk dalam rentang tersebut, termasuk ujung rentang.
. [^...] (dalam tanda kurung siku, tanda negasi diikuti oleh satu atau lebih karakter): setiap karakter selain yang tercantum setelah tanda negasi
Simbol lainnya berarti dirinya sendiri dan tidak membawa beban tambahan apa pun.
Jika salah satu karakter yang tercantum perlu ditulis sendiri, maka harus didahului dengan<Спецсимвол>. Saya sendiri<Спецсимвол>(karakter apa pun yang sesuai) didefinisikan dalam pernyataan yang sama setelah kata kunci KARAKTER KHUSUS.
Misalnya, pola “%ABV[abvg]\_abv%” KARAKTER KHUSUS “\” berarti substring yang terdiri dari rangkaian karakter:
huruf A; huruf B; huruf B; satu angka; salah satu huruf a, b, c atau d; menggarisbawahi; huruf a; huruf b; huruf v.
Selain itu, urutan ini dapat didahului oleh serangkaian karakter yang berubah-ubah.

Contoh penggunaan:
Kode 1C v 8.x Prosedur BankEndTextInput (Elemen, Teks, Nilai, Pemrosesan Standar)
Pemrosesan Standar = Salah;
//Buat kueri dengan penelusuran menggunakan pola seperti "%" +<Текст введенный пользователм в поле ввода> + "%"
Permintaan = Permintaan Baru;
Query.SetParameter("Nama", "%" + Teks + "%");
Kueri.Teks = "PILIH
| Bank.Link
|DARI
| Direktori.Bank BAGAIMANA Bank
|DIMANA
| Bank.Nama SERUPA &Nama";

Hasil = Kueri.Jalankan();
Pilihan = Hasil.Pilih();
Jika Hasil.Kosong() Lalu
//Tidak ada yang ditemukan. Di sini Anda dapat menampilkan pesan atau melakukan hal lain :)
Jika tidak
//Dapatkan hasilnya
tzResults = Hasil.Bongkar();
//Siapkan daftar nilai yang akan berisi elemen yang ditemukan.
Nilai = Daftar Nilai Baru();
Nilai.LoadValues(tzResults.UnloadColumn("Link"));
akhirJika;
Akhir Prosedur

“Perjanjian Default” harus hanya menyertakan Nama Perjanjian Utama, dll.:
Kode 1C v 8.x Pilihan
Jika Namanya SAMA dengan “Nomor Perjanjian%” maka “Perjanjian dengan nomor” // Baris apa pun yang dimulai dengan “Nomor Perjanjian” dapat digunakan
Jika Namanya SAMA dengan "Perjanjian Utama%[^А-яЁе"+Symbol(33)+"-"+Symbol(126)+"№"""+Symbols.PS+Symbols.Tab+Symbols.PF+Symbols .NPP+ Symbols.VTab+"]%" lalu "Kontrak Default" // Baris apa pun yang dimulai dengan "Kontrak Utama" dapat digunakan
Jika tidak, "Lainnya"
Berakhir Seperti Jenis Kontrak

Informasi diambil dari situs

Pada artikel ini kami ingin mendiskusikan semuanya dengan Anda Fungsi bahasa kueri 1C, dan juga konstruksi bahasa kueri. Apa perbedaan antara fungsi dan desain? Fungsi tersebut dipanggil dengan tanda kurung dan parameter yang mungkin di dalamnya, dan konstruksinya ditulis tanpa tanda kurung. Niscaya semua struktur dan fungsi bahasa kueri 1C menjadikan proses akuisisi data fleksibel dan multifungsi. Fungsi dan konstruksi ini berlaku untuk bidang permintaan, dan beberapa juga berlaku untuk kondisi.

Fungsi Bahasa Kueri 1C

Karena penjelasannya jelas Fungsi bahasa kueri 1C jauh lebih jarang dibandingkan deskripsi struktur, kami memutuskan untuk mulai melihat fungsi. Sekarang mari kita lihat masing-masing secara terpisah, jelaskan tujuan, sintaksis, dan contoh penggunaannya, jadi:

1. Fungsi TANGGAL WAKTU - fungsi ini membuat bidang konstan bertipe "Tanggal".

Sintaksis: TANGGAL WAKTU(<Год>,<Месяц>,<День>,<Час>,<Минута>,<Секунда>)

Contoh penggunaan:

2. Fungsi PERBEDAAN TANGGAL- mengembalikan selisih antara dua tanggal dalam salah satu dimensi (tahun, bulan, hari, jam, menit, detik). Pengukuran dilewatkan sebagai parameter.

Sintaksis: TANGGAL PERBEDAAN(<Дата1>, <Дата2>, <Тип>)

Contoh penggunaan:

Query.Text = "SELECT | DIFFERENCEDATE(DATETIME(2015, 4, 17), DATETIME(2015, 2, 1), DAY) | SEBAGAI Jumlah Hari";

3. Fungsi NILAI- menetapkan bidang konstan dengan catatan yang telah ditentukan sebelumnya dari database; Anda juga bisa mendapatkan tautan kosong jenis apa pun.

Sintaks: NILAI(<Имя>)

Contoh penggunaan:

Request.Text = "PILIH //elemen yang telah ditentukan | VALUE(Direktori.Mata Uang.Dolar) SEBAGAI Dolar, //tautan kosong | VALUE(Dokumen.Kwitansi Barang dan Jasa.EmptyLink) SEBAGAI Kwitansi, //nilai transfer | VALUE(Transfer . Perorangan Hukum. Perorangan) SEBAGAI Perorangan, // NILAI akun yang telah ditentukan sebelumnya (Bagan Akun. Akuntansi Mandiri. Bahan) SEBAGAI Akun_10" ;

4. fungsi PILIH- kami memiliki analog dari konstruksi IF, yang digunakan dalam kode, hanya yang ini yang digunakan dalam kueri 1C.

Sintaksis: PILIHAN KAPAN<Выражение>KEMUDIAN<Выражение>JIKA TIDAK<Выражение>AKHIR

Contoh penggunaan:

Request.Text = //jika jumlahnya lebih dari 7500, maka harus ada diskon 300 rubel, //jadi jika kondisi dipicu maka fungsinya //mengembalikan Jumlah - 300 //jika tidak, permintaan akan mengembalikan Jumlah saja "PILIH | PILIH | KAPAN TCReceipts.Amount > 7500 | LALU TCReceipts.Amount - 300 | LAINNYA TCReceipts.Amount | AKHIR SEBAGAI AmountWithDiscount | FROM |

5. fungsi EKSPRES- memungkinkan Anda mengekspresikan bidang konstan dengan tipe tertentu.

Sintaksis: EXPRESS(Nama Bidang SEBAGAI Nama Tipe)

Contoh penggunaan:

Query.Text = "PILIH BERBAGAI | Sales.Registrar.Number, | SELECT | WHEN Sales.Registrar LINK Document.Expense | THEN EXPRESS(Sales.Registrar AS Document.Expense) | ELSE SELECT | KETIKA Sales.Registrar LINK Document.Implementation | KEMUDIAN EXPRESS(Penjualan.Registrar SEBAGAI Dokumen.Implementasi) |.END |.END SEBAGAI Nomor |.

Apakah ada pilihan lain untuk menggunakan fungsi EXPRESS di bidang tipe campuran, di mana hal itu terjadi? Contoh paling sederhana adalah “Registrar” untuk register apa pun. Jadi mengapa kita perlu memenuhi syarat tipe di registrar? Mari kita pertimbangkan situasi ketika kita memilih bidang "Nomor" dari registrar, dari tabel manakah nomor tersebut akan dipilih? Jawaban yang benar dari semuanya! Oleh karena itu, agar kueri kita bekerja dengan cepat, kita harus menentukan tipe eksplisit menggunakan fungsi EXPRESS

Contoh penggunaan:

Query.Text = "SELECT | EXPRESS(Nomenclature.Comment AS Line(300)) AS Comment, | EXPRESS(Nomenclature.Sum AS Number(15,2)) AS Sum |FROM | Directory.Nomenclature AS Nomenclature";

6. fungsi ISNULL (ejaan alternatif ISNULL) - jika bidang bertipe NULL, maka diganti dengan parameter kedua dari fungsi tersebut.

Sintaksis: TIDAK BATAL(<Поле>, <ПодставляемоеЗначение>)

Contoh penggunaan:

Perhatikan juga bahwa disarankan untuk SELALU mengganti tipe NULL dengan nilai tertentu, karena perbandingan dengan tipe NULL selalu menghasilkan FALSE meskipun Anda membandingkan NULL dengan NULL. Paling sering, nilai NULL terbentuk sebagai hasil penggabungan tabel (semua jenis penggabungan kecuali yang internal).

Query.Text = //Pilih seluruh item dan saldonya //jika tidak ada saldo pada beberapa item, maka akan ada field //NULL yang akan diganti dengan nilai 0 "SELECT | No. Link, | ISNULL (ProductsInStockRemains.InStockRemaining, 0) BAGAIMANA SISA |.

7. fungsi REPRESENTASI- memungkinkan Anda mendapatkan representasi bidang permintaan.

Sintaksis: PERTUNJUKAN(<НаименованиеПоля>)

Contoh penggunaan:

Query.Text = "PILIH | REPRESENTASI(FreeRemainingRemains.Nomenclature) SEBAGAI Nomenklatur, | REPRESENTASI(FreeRemainingRemaining.Warehouse) SEBAGAI Gudang, | FreeRemainingRemaining.InStockRemaining |FROM |Daftar Akumulasi.FreeRemaining.Remaining SEBAGAI FreeRemainingRemaining";

Dibangun dalam bahasa kueri 1C

Kami berdiskusi dengan Anda di atas Fungsi bahasa kueri 1C, sekarang saatnya untuk mempertimbangkan konstruksi dalam bahasa kueri 1C, mereka tidak kalah penting dan berguna, mari kita mulai.

1. Tautan Konstruksi- mewakili operator logis pemeriksaan tipe referensi. Paling sering ditemui saat memeriksa bidang tipe kompleks terhadap tipe tertentu. Sintaksis: LINK<Имя таблицы>

Contoh penggunaan:

Request.Text = //jika tipe nilai pencatat adalah dokumen Resi, //maka query akan mengembalikan "Resi barang", sebaliknya "Penjualan barang" "PILIH | PILIH | KAPAN Tersisa.LINK Registrar Dokumen.Resi BarangLayanan | LALU ""Resi" |.ELSE ""Konsumsi"" |.END SEBAGAI Jenis Pergerakan |.Daftar Akumulasi Produk yang Tersisa di Gudang SEBAGAI Tersisa" ;

2. Desain ANTARA - operator ini memeriksa apakah nilainya berada dalam kisaran yang ditentukan.

Sintaksis: DI ANTARA<Выражение>DAN<Выражение>

Contoh penggunaan:

Request.Text = //dapatkan seluruh nomenklatur yang kodenya terletak pada rentang 1 hingga 100 "SELECT | Nomenclature.Link |FROM | Directory.Nomenclature AS Nomenclature |WHERE | Nomenclature.Code BETWEEN 1 AND 100" ;

3. Konstruksi B dan B HIERARKI- periksa apakah nilainya ada dalam daftar yang ditransfer (array, tabel nilai, dll. dapat ditransfer sebagai daftar). Operator IN HIERARCHY memungkinkan Anda melihat hierarki (contoh penggunaan Bagan Akun).

Sintaksis: DI DALAM(<СписокЗначений>), DALAM HIERARKI(<СписокЗначений>)

Contoh penggunaan:

Request.Text = //pilih semua sub-akun dari akun "PILIH | Swadaya. Tautan SEBAGAI Akun | DARI | Bagan Akun. Swadaya SEBAGAI Swadaya | WHERE | Swadaya. Tautan DALAM NILAI HIERARCHY (Bagan Akun. Swadaya. Barang)";

4. Desain SERUPA- Fungsi ini memungkinkan kita membandingkan string dengan pola string.

Sintaksis: MENYUKAI "<ТекстШаблона>"

Pilihan pola baris:

% - urutan yang berisi sejumlah karakter arbitrer.

Satu karakter sewenang-wenang.

[...] - karakter tunggal atau rangkaian karakter apa pun yang tercantum di dalam tanda kurung siku. Pencacahan dapat menentukan rentang, misalnya a-z, yang berarti karakter sembarang yang termasuk dalam rentang tersebut, termasuk ujung rentang.

[^...] - karakter tunggal atau rangkaian karakter apa pun yang tercantum di dalam tanda kurung siku kecuali yang tercantum setelah tanda negasi.

Contoh penggunaan:

Query.Text = //temukan seluruh nomenklatur yang mengandung akar kata TABUR dan diawali //baik dengan huruf kecil atau kapital t "SELECT | Nomenclature. Link | FROM | Directory. Nomenclature AS Nomenclature | WHERE | Products. Name LIKE "" [Tt ]abur%""" ;

5. Desain DIPERBOLEHKAN- operator ini memungkinkan Anda untuk memilih hanya catatan-catatan dari database yang izin bacanya dimiliki oleh penelepon. Hak-hak ini dikonfigurasi pada tingkat rekaman (RLS).

Sintaksis: ALLOWED ditulis setelah kata kunci SELECT

Contoh penggunaan:

Request.Text = "PILIH DIPERBOLEHKAN | Rekanan. Tautan | DARI | Direktori. Rekanan SEBAGAI Rekanan";

6. Desain BERBAGAI- memungkinkan Anda memilih rekaman yang tidak memiliki rekaman duplikat.

Sintaksis: VARIOUS ditulis setelah kata kunci SELECT

Contoh penggunaan:

Request.Text = //memilih catatan dimana pembaca mempunyai hak "PILIH BERBAGAI | Counterparties.Name |FROM | Direktori. Counterparty SEBAGAI Counterparty" ;

Selain itu, konstruksi VARIOUS dapat digunakan dengan operator yang DIPERBOLEHKAN dan operator lainnya.

Contoh penggunaan:

Request.Text = //memilih berbagai catatan dimana pembaca mempunyai hak "PILIH DIIZINKAN BERBAGAI | Counterparties.Name |FROM | Direktori. Counterparty SEBAGAI Counterparty";

7. Desain PERTAMA- memilih jumlah rekaman yang ditentukan dalam parameter dari hasil kueri.

Sintaks: PERTAMA<число>

Contoh penggunaan:

Request.Text = //pilih 4 nomor CCD pertama dari direktori "PILIH 4 PERTAMA | Nomor CCD. Tautan | DARI | Direktori. Nomor CCD SEBAGAI Nomor CCD";

8. Desain UNTUK PERUBAHAN- memungkinkan Anda mengunci meja, hanya berfungsi dalam transaksi (hanya relevan untuk kunci otomatis).

Sintaksis: UNTUK BERUBAH<НаименованиеТаблицы>

Contoh penggunaan:

Query.Text = "PILIH | Sisa Bebas. Nomenklatur, | Sisa Bebas. Gudang, | Sisa Bebas. Sisa Stok | DARI | Daftar Akumulasi. Sisa Bebas. Sisa SEBAGAI Sisa Bebas | UNTUK PERUBAHAN | Daftar Akumulasi .Sisa Gratis.

9. Desain DIPESAN OLEH- mengatur data berdasarkan bidang tertentu. Jika bidangnya adalah tautan, maka saat menyetel bendera PESANAN OTOMATIS Penyortiran akan terjadi berdasarkan representasi tautan; jika tandanya dimatikan, maka tautan diurutkan berdasarkan senioritas alamat tautan di memori.

Sintaksis: PESAN OLEH<НаименованиеПоля>PESANAN OTOMATIS

Contoh penggunaan:

Query.Text = "PILIH | Sisa Bebas. Nomenklatur SEBAGAI Nomenklatur, | Sisa Sisa Bebas. Gudang SEBAGAI Gudang, | Sisa Bebas. Sisa Persediaan | DARI | Daftar Akumulasi. Sisa Bebas. Sisa SEBAGAI Sisa Bebas | | ORDER BY |.Tata nama |.BACAAN PESANAN OTOMATIS";

10. Desain KELOMPOK OLEH- digunakan untuk mengelompokkan string kueri berdasarkan bidang tertentu. Bidang numerik harus digunakan dengan fungsi agregat apa pun.

Sintaksis: KELOMPOK OLEH<НаименованиеПоля1>, .... , <НаименованиеПоляN>

Contoh penggunaan:

Query.Text = "PILIH | ProductsInWarehouses.Nomenclature SEBAGAI Nomenklatur, | ProductsInWarehouses.Warehouse, | SUM(GoodsInWarehouses.InStock) SEBAGAI INSTOCK |FROM | RegisterAccumulations.ProductsInWarehouses SEBAGAI ProductsInWarehouses | |GROUP BY | ProductsInWarehouses.Nomenclature, | harta karun.Gudang";

11. Desain MEMILIKI- memungkinkan Anda menerapkan fungsi agregat ke kondisi pemilihan data, mirip dengan konstruksi WHERE.

Sintaksis: MEMILIKI<агрегатная функция с условием>

Contoh penggunaan:

Query.Text = //memilih rekaman yang dikelompokkan dengan bidang InStock lebih besar dari 3 "SELECT | ItemsInStocks.Nomenclature AS Nomenclature, | ItemsInWarehouses.Warehouse, | SUM(ItemsInStocks.InStock) AS INSTOCK |FROM | RegisterAccumulations.ItemsInWarehouses AS ItemsInStocks | | KELOMPOK BERDASARKAN |.ProdukDiGudang.Nomenklatur, |.ProdukDiGudang.Gudang |.JUMLAH (ProdukDiGudang.Tersedia) > 3" ;

12. INDEKS Konstruksi OLEH- digunakan untuk mengindeks bidang kueri. Kueri dengan pengindeksan membutuhkan waktu lebih lama untuk diselesaikan, namun mempercepat pencarian melalui bidang yang diindeks. Hanya dapat digunakan di tabel virtual.

Sintaksis: INDEKS OLEH<Поле1, ... , ПолеN>

Contoh penggunaan:

Request.Text = "PILIH | Ts.NameOS, | Ts.FolderNumber, | Ts.CodeOS, | Ts.Term, | Ts.Type | TEMPAT DataTs | FROM | &Ts AS Ts | | INDEX BY | Ts.NameOS, | Ts .CodeOS";

13. Desain DI MANA- memungkinkan Anda menerapkan ketentuan pada bidang pilihan mana pun. Hasilnya hanya akan mencakup catatan yang memenuhi kondisi tersebut.

Sintaksis: DI MANA<Условие1 ОператорЛогСоединения УсловиеN>

Contoh penggunaan:

Query.Text = //semua catatan dengan CompensationRemaining dipilih<>0 dan //AmountForCalcCompRemaining > 100 "SELECT | CompensationRPOREmains.Counterparty, |CompensationRPOREmains.Child, | CompensationRPOREmains.CompensationRemaining, | CompensationRPOREmains.AmountForCalcCompRemains |Tempatkan DataTz |FROM | Daftar Akumulasi.CompensationRP.Remains AS CompensationRPOREmains |WHERE |CompensationRPOR emaining.KompensasiSisa<>0 | Dan KompensasiRPOREmains.AmountForCalcCompRemaining> 100" ;

14. HASIL Desain... UMUM- digunakan untuk menghitung total; desain menentukan bidang yang akan digunakan untuk menghitung total dan fungsi agregat yang diterapkan pada bidang total. Saat menggunakan total untuk setiap bidang setelah konstruksi TOTAL, data dikelompokkan. Ada konstruksi UMUM opsional; penggunaannya juga menyediakan pengelompokan tambahan. Anda akan melihat contoh hasil permintaan di bawah ini.

Sintaksis: HASIL<АгрегатнаяФункция1, ... , АгрегатнаяФункцияN>OLEH<ОБЩИЕ> <Поле1, ... , ПолеN>

Contoh penggunaan:

Request.Text = "PILIH | Perhitungan. Perjanjian Counterparty. Jenis Perjanjian SEBAGAI Jenis Kontrak, | Perhitungan. Perjanjian Counterparty SEBAGAI Kontrak, | Perhitungan. Counterparty, | Perhitungan. Jumlah Saldo Penyelesaian Bersama SEBAGAI Saldo | DARI | Daftar Akumulasi. Reksa Penyelesaian DENGAN Pihak Rekanan. Saldo SEBAGAI Perhitungan |. TOTAL |.

Gambar tersebut menguraikan pengelompokan yang dibentuk selama pelaksanaan permintaan, yang paling atas mengacu pada bagian UMUM, dan yang kedua mengacu pada bidang Jenis Perjanjian Perjanjian Pihak Lawan.

43
NULL – nilai yang hilang. 26
Jangan bingung dengan nilai nol! NULL bukanlah angka, tidak sama dengan spasi, referensi kosong, atau Tidak Terdefinisi. 18
NULL adalah nilai pembentuk tipe, mis. ada tipe NULL dan satu nilai tipe ini. BATAL... Untuk menghasilkan dan mengeksekusi query ke tabel database di platform 1C, objek khusus dari bahasa pemrograman Query digunakan. Objek ini dibuat dengan memanggil konstruksi Permintaan Baru. Permintaan nyaman... 12
Artikel ini memberikan teknik yang berguna saat bekerja dengan kueri 1C v.8.2, serta informasi yang kurang diketahui tentang bahasa kueri. Saya tidak mencoba memberi deskripsi lengkap bahasa kueri, tapi saya hanya ingin memikirkan ...

Saya dihadapkan pada tugas untuk memilih semua dokumen pembayaran dan mengelompokkannya berdasarkan jenis dokumen!