Bagaimana cara mendapatkan Tipe (tipe) Dokumen dalam permintaan? Bandingkan jenis dokumen dalam permintaan 1c.

Perhatian! Ini adalah pelajaran versi pengantar, yang materinya mungkin tidak lengkap.

Masuk ke situs sebagai pelajar

Masuk sebagai siswa untuk mengakses materi sekolah

Bahasa kueri 1C 8.3 untuk pemrogram pemula: fungsi dan operator untuk bekerja dengan tipe (VALUE TYPE, TYPE, REFERENCE, ISNULL, EXPRESS)

Ingatlah bahwa setiap atribut (properti, bidang) dari direktori, dokumen, atau objek aplikasi lainnya memiliki tipenya sendiri. Dan kita dapat melihat tipe ini di konfigurator:

Dalam bahasa kueri, ada seluruh kelas fungsi dan operator untuk bekerja dengan tipe detail. Mari kita lihat mereka.

fungsi JENIS NILAI

Fungsi ini mengambil satu parameter (nilai) dan mengembalikan tipenya. Untuk alat peraga dijelaskan pada gambar (di atas) Mencicipi direktori Makanan berikut ini akan dikembalikan:

Sekarang mari kita lihat alat peraganya Ciri khas di direktori kota:

Anda melihat bahwa prop ini dapat berupa salah satu dari beberapa jenis: Garis, Direktori.Rasa, Direktori.Warna. Jenis detail ini disebut KOMPOSIT.

Jika kami mencoba mengisi nilai detail tersebut dalam mode 1C:Enterprise, sistem akan menanyakan jenis nilai apa yang akan dimasukkan:

Dan hanya setelah pilihan kita barulah kita dapat memasukkan nilai dari tipe yang dipilih.

Jadi, elemen direktori bertipe sama ( Direktori.Kota) akan dapat menyimpan dalam atribut yang sama ( Ciri khas) nilai dari berbagai jenis (String, Warna, atau Rasa).

Anda dapat melihatnya sendiri dengan mengklik elemen direktori kota dalam 1C:Mode Perusahaan. Anda sedang membaca versi percobaan pelajaran, pelajaran lengkap tersedia.

Di sini nilai fitur pembedanya adalah elemen direktori rasa:

Inilah barisnya:

Dan ini umumnya merupakan elemen buku referensi Warna:

Ini adalah kemungkinan yang terbuka bagi kita tipe data komposit!

Saya ingin tahu bagaimana fungsi tersebut akan berperilaku JENIS NILAI pada alat peraga Elemen Khas, memiliki tipe data komposit:

Ini sudah sangat menarik. Mari kita lihat setiap baris satu per satu.

Jenis nilai ciri pembeda untuk elemen Rusia sama dengan BATAL. Ini adalah pertama kalinya kami menjumpai tipe ini. Nilai jenis ini digunakan semata-mata untuk menentukan nilai yang hilang saat bekerja dengan database.

Hal ini benar, karena elemen Russia adalah grup, dan bukan elemen direktori biasa kota, jadi tidak memiliki bidang Ciri khas. Dan tipe nilai yang hilang, seperti yang kita baca di atas, selalu sama dengan BATAL.

Jenis nilai ciri pembeda untuk Perm sama dengan rasa. Hal ini benar, karena nilai ciri khas yang dimasukkan ke dalam database kota Perm adalah link ke elemen direktori rasa.

Untuk Krasnoyarsk, jenis atributnya sama dengan Warna, karena nilai yang dipilih dalam database adalah link ke elemen direktori Warna.

Untuk Voronezh, jenis atributnya sama dengan Garis, karena nilai yang dimasukkan ke dalam database adalah string biasa.

India adalah grup lagi, jadi tidak ada signifikansinya. Dan jenis nilai yang hilang, seperti yang kita ingat, adalah sama dengan BATAL.

Inilah masalahnya. Jika Anda pergi ke elemen direktori kota dengan nama Sao Paulo, maka Anda akan melihat bidang itu Ciri khas tidak terisi sama sekali. Ini kosong. A semua bidang kosong dari tipe komposit memiliki arti khusus BELUM DIARTIKAN .

DENGAN BELUM DIARTIKAN kami juga bertemu untuk pertama kalinya. Arti BELUM DIARTIKAN digunakan ketika perlu menggunakan nilai kosong yang bukan milik tipe lainnya. Inilah situasi kita. Dan tipe nilainya BELUM DIARTIKAN, seperti yang mungkin sudah Anda duga, sama dengan BATAL.

JENIS Fungsi

Hanya dibutuhkan satu parameter - nama tipe primitif ( GARIS, NOMOR, TANGGAL, BOOLEAN), atau nama tabel yang tipe linknya ingin Anda dapatkan.

Hasil dari konstruksi ini akan menjadi nilai tipe Type untuk tipe yang ditentukan.

Kedengarannya tidak jelas, bukan?

Mari kita lihat penerapan desain ini dan semuanya akan langsung beres.

Misalkan kita perlu memilih semua entri direktori kota, yang memiliki alat peraga gabungan Ciri khas memiliki nilai tipe GARIS:

Sekarang mari kita pilih semua record yang memiliki nilai atribut Ciri khas adalah tautan ke elemen direktori Warna(meja Direktori.Warna):

Mundur

Seperti yang Anda ingat, beberapa elemen direktori kota tidak memiliki alat peraga Ciri khas. Fungsi JENIS NILAI untuk elemen-elemen yang dihasilkannya BATAL.

Bagaimana Anda bisa memilih elemen seperti itu dalam kueri? Operator logika khusus disediakan untuk ini ADALAH BATAL(jangan bingung dengan fungsinya TIDAK BOLEH, yang akan kita lihat di bawah). Anda sedang membaca versi percobaan pelajaran, pelajaran lengkap tersedia.

Berikut ini contoh penggunaannya:

Besar. Namun tahukah Anda bahwa tidak ada elemen Sao Paulo, tipe nilai props Ciri khas yang juga dia berikan BATAL. Kenapa ini terjadi?

Tetapi masalahnya adalah situasi untuk kelompok (Rusia, India, Brasil), yang harus mengisi rinciannya Ciri khas pada prinsipnya tidak mungkin, karena mereka tidak memilikinya sama sekali, berbeda dengan situasi elemen Sao Paulo, yang mana pengisian alat peraga dimungkinkan, tetapi tidak diisi dan sama, seperti yang kita ingat, dengan a nilai khusus BELUM DIARTIKAN.

Untuk memilih semua catatan yang memiliki persyaratan Ciri khas ada, tetapi tidak diisi, konstruksi yang berbeda harus digunakan:

Namun perbandingan dengan UNDEFINED untuk menentukan atribut kosong (unfilled) hanya akan berfungsi untuk tipe komposit.

Omong-omong, operator logika IS NULL memiliki bentuk negasi seperti ini:

LINK operator logis

Misalnya, pilih dari direktori kota hanya catatan-catatan yang memiliki nilai atribut gabungan Ciri khas adalah tautan ke elemen direktori rasa:

Seperti yang Anda ingat, kita bisa menyelesaikan masalah yang sama dengan menggunakan JENIS NILAI Dan JENIS:

Fungsi ISNULL

Fungsi ini dirancang untuk menggantikan nilai BATAL ke arti yang berbeda.

Kami ingat itu artinya BATAL dikembalikan jika atribut yang diminta (bidang, properti) tidak ada.

Misalnya, alat peraga Ciri khas untuk grup direktori kota:

Fungsi TIDAK BOLEH akan membantu kami mengeluarkan nilai yang berbeda jika nilai ini sama dengan BATAL. Anda sedang membaca versi percobaan pelajaran, pelajaran lengkap tersedia. Misalkan dalam hal ini ada baris “Tidak ada penyangga seperti itu!”:

Ternyata jika parameter pertama dari fungsi tersebut TIDAK BOLEH tidak sama BATAL, lalu dia kembali. Jika NULL, maka parameter kedua dikembalikan.

fungsi EKSPRES

Fungsi ini hanya untuk bidang yang memiliki tipe komposit. Contoh yang bagus dari bidang tersebut adalah properti Ciri khas untuk elemen direktori kota.

Seperti yang kita ingat, bidang komposit dapat berupa salah satu dari beberapa tipe yang ditentukan di konfigurator.

Untuk lapangan Ciri khas tipe valid seperti itu adalah GARIS, Direktori.Warna Dan Direktori.Rasa.

Terkadang ada kebutuhan untuk memasukkan nilai bidang komposit ke tipe tertentu.

Mari kita daftar semua nilai bidang Ciri khas mengetik Referensi. Warna:

Hasilnya, semua nilai elemen bertipe Direktori.Warna, tetap terisi dan dikonversi ke tipe yang ditentukan. Semua nilai tipe lain ( GARIS, Direktori.Rasa) sekarang setara BATAL. Inilah kekhasan tipe casting yang menggunakan fungsi CEPAT.

Anda dapat memasukkan suatu tipe ke tipe primitif ( BOOLEAN, NOMOR, GARIS, TANGGAL) atau ke tipe referensi. Anda sedang membaca versi percobaan pelajaran, pelajaran lengkap tersedia. Namun tipe yang digunakan untuk membuat cetakan harus disertakan dalam daftar tipe untuk bidang komposit ini, jika tidak, sistem akan menimbulkan kesalahan.

Ikuti tesnya

Mulai tes

1. Pilihlah pernyataan yang paling benar

2. Detail yang dapat mengambil nilai salah satu dari beberapa tipe disebut

3. Untuk menentukan jenis nilai atribut, gunakan fungsi

4. Bagian kosong dari tipe komposit itu penting

1C memungkinkan Anda menyederhanakan akuntansi secara signifikan atau sekadar mengelola organisasi apa pun, baik itu toko kecil atau perusahaan besar. Program ini adalah sistem manajemen basis data yang besar. Agar tidak bingung dengan semua itu, Anda harus bisa melakukan berbagai tindakan sederhana dan memahami esensinya. Selanjutnya Anda akan memahami cara memeriksa jenis nilai dalam permintaan di 1C, apa saja umumnya, serta cara membedakannya.

Jenis nilai

1C: Perusahaan telah menyertakan fungsi khusus dalam versi baru (platform 8.2). Dengan menggunakannya, Anda dapat menambahkan parameter khusus apa pun ke nama atau elemen sistem data apa pun. Hal ini dilakukan untuk membuat sistem lebih mudah untuk mengedit dan menambahkan elemen baru. Fungsi ini disebut “Tipe Nilai”.

Faktanya, ini adalah salah satu konsep dasar yang dimiliki sebagian besar bahasa pemrograman. Dengan menggunakannya, Anda dapat mengklasifikasikan berbagai data. Misalnya: tanggal, angka, string, link. Ini hanyalah klasifikasi dasar. Mungkin masih banyak lagi. Katakanlah, jika Anda memasukkan informasi tentang kota ke dalam sistem Anda, Anda dapat menggunakan: benua, negara, wilayah, dll.

Penyelidikan

Anda dapat memeriksa bidang tertentu menggunakan bahasa kueri. Atau lebih tepatnya fungsinya: TYPE VALUE. Artinya, jika kita ingin mengetahui jenis informasi apa yang terkandung dalam sel yang bersangkutan, kita harus menggunakan perintah.

JENIS NILAI(Nilai) = JENIS(String)

Pada contoh di atas, kami mendefinisikan tipe paling sederhana menggunakan perintah. Contoh lain dari validasi permintaan:

Dokumentasi

Ada beberapa jenis; pengguna dapat puas dengan yang awal atau memasukkannya sendiri untuk meningkatkan basis informasi. Inilah beberapa di antaranya.

  • Tautan Dokumen. Ini digunakan untuk menyimpan referensi ke berbagai objek dengan mudah di bagian lain sistem.
  • DocumentObject - mengedit dokumen.
  • DocumentSelection - menyortir objek dari database.

Selain itu, ada istilah khusus yang menjadi ciri data apa pun:

  • membentuk;
  • garis;
  • boolean;
  • nomor;
  • tanggal;
  • Himpunan;
  • kotak centang;
  • gambar.

Ini hanyalah beberapa di antaranya. Objek apa pun hanya dapat berupa sesuatu dari daftar ini. Boolean adalah parameter khusus yang mengambil dua nilai: benar atau salah. Ada juga tag khusus yang memungkinkan Anda menyesuaikan permintaan: kapan, di mana, bagaimana, sebaliknya, dll. Tag tersebut mengatur algoritme perilaku program. 1C dibedakan oleh fakta bahwa kata-kata ini di sini, seperti yang lainnya, dapat dimasukkan dalam bahasa Rusia.

Penting untuk dipahami bahwa semua ini akan dianggap oleh pemula dan non-profesional sebagai literasi bahasa Mandarin. Untuk memahami apa yang dipertaruhkan dan menggunakan 1C secara efektif, Anda perlu mengetahui dasar-dasar pemrograman. Secara umum, memeriksa jenis permintaan di program 1C akan cukup mudah dibandingkan dengan tindakan lainnya.

Meminta . Teks = "MEMILIH | Unit Penyimpanan.Tautan |DARI | Directory.usStorageUnits BAGAIMANA menggunakanStorageUnits // Contoh 1: perbandingan dengan nilai boolean kosong: |DIMANA | StorageUnits.AllowSelectionFromReserveZone = Salah // Contoh 2. tetapi jika Boolean ini didefinisikan, sebaiknya seperti ini: // kondisi untuk Boolean negatif: |DIMANA | BUKAN Unit Penyimpanan Izinkan Pemilihan Dari Zona Cadangan // Contoh 3. pemilihan berdasarkan kondisi field kosong yang bertipe “direktori dengan tipe tertentu” |DIMANA | StorageUnits.ActiveSelectionArea = VALUE(Directory.usSelectionArea.EmptyRef) // Contoh 3a. pemilihan berdasarkan kondisi kolom kosong yang bertipe “dokumen tipe tertentu” |DIMANA | OurInformationRegister.Document = VALUE(Document.OurDocument.EmptyLink) // Contoh 3b. pemilihan berdasarkan kondisi kolom kosong yang bertipe “dokumen dengan tipe berbeda” ( bidang komposit) |DIMANA | (OurInformationRegister.Document = VALUE(Document.OurDocument1.EmptyLink) | OR OurInformationRegister.Document = VALUE(Document.OurDocument2.EmptyLink) | OR... (dll. - kami secara berurutan membuat daftar kondisi untuk semua kemungkinan jenis bidang gabungan ini) ) // Contoh 4. atau sebaliknya, jika Anda perlu memilih nilai yang diisi dari tipe "string", maka kondisinya akan membantu: |DIMANA | Nama Unit Penyimpanan > """" // Contoh 5. jika Anda perlu memilih dokumen dengan tipe tertentu, dengan tipe data komposit, misalnya, dalam register "RunningTasks", sumber daya "Tugas" memiliki tipe komposit, di antara nilainya adalah dokumen "Seleksi" dimungkinkan |DIMANA | EXPRESS(Daftar InformasiExecutedTasks.Tugas SEBAGAI Dokumen.Seleksi) LINK Dokumen.Seleksi // Contoh 5a. Contoh serupa lainnya ketika Anda perlu memilih dokumen dari jenis tertentu | PILIHAN | KAPAN EKSPRESIKAN (ag Korespondensi Dokumen. DokumenBU SEBAGAI Dokumen. Penerimaan Barang dan Jasa) LINK Dokumen Penerimaan Barang dan Jasa | LALU ""Penerimaan Barang dan Jasa"" | KAPAN MENGUNGKAPKAN (ag Korespondensi Dokumen. DokumenBU SEBAGAI Dokumen. Penjualan Barang dan Jasa) LINK Dokumen Penjualan Barang dan Jasa | LALU ""Penjualan Barang dan Jasa"" | LAINNYA """" | AKHIR SEBAGAI Tampilan Dokumen // Contoh 6. pemilihan berdasarkan kondisi nilai yang tidak ditentukan: |DIMANA | SavedSettings.User = TIDAK DITENTUKAN // Contoh 7. pemilihan berdasarkan jenis pergerakan "Masuk" dari register akumulasi, "Beban" - serupa): |DIMANA | RegProductsInRetail.MovementType = VALUE(MovementTypeAccumulation.Masuk) // Contoh 8. Cara menunjukkan dalam permintaan bahwa permintaan tidak perlu dijalankan (misalnya, Anda perlu secara terprogram, bergantung pada beberapa kondisi, mengembalikan hasil permintaan kosong - Request.Text = StrReplace(Request.Text, "WHERE Doc.Link = &DocumentLink" , "DIMANA KEBOHONGAN");). Untuk melakukan ini, cukup tambahkan kondisi “Where is False”. Omong-omong, berapa pun volume data yang diminta dalam sampel, permintaan seperti itu akan langsung dieksekusi. |DIMANA KEBOHONGANNYA // Contoh 9. Memeriksa apakah hasil query berisi data: Jika tidakMeminta.Menjalankan().Kosong() Kemudian // Contoh 10. pemilihan berdasarkan tanggal kosong: |DIMANA | tbStrings.CancellationDate = DATETIME(1, 1, 1)

Pada artikel ini kami akan menganalisis kemungkinan konversi tipe dalam bahasa kueri 1C, yang disediakan oleh fungsi "Ekspres".
Mari kita lihat beberapa opsi untuk menggunakan fungsi ini.
Dan opsi pertama adalah pembulatan angka.

Untuk melakukannya, Anda perlu menggunakan fungsi Express dalam format berikut:

Cepat(<Число>sebagai Angka(<ДлинаЧисла>,<Точность>))

Di mana:
Nomor— bidang yang perlu dibulatkan
PanjangAngka— panjang nomor maksimum
Ketepatan— akurasi pembulatan angka

Parameter panjang dan presisi harus berupa bilangan bulat positif.
Lihat cara kerja fungsi ini pada gambar di bawah.

Kasus penggunaan kedua adalah casting string. Sangat sering, konfigurasi menggunakan string dengan panjang tidak terbatas, yang memberlakukan beberapa batasan. Misalnya, kita tidak dapat membandingkan string yang panjangnya tidak terbatas.
Dalam kueri di bawah ini, bidang Nama Lengkap bertipe string dengan panjang tidak terbatas, dan kueri ini tidak akan berfungsi.

Agar dapat berfungsi, bidang yang panjangnya tidak terbatas harus diubah menjadi string dengan panjang tertentu; ini dilakukan dengan menggunakan fungsi Express dalam format berikut:

Cepat(<Строка>sebagai String(<ДлинаСтроки>)

Di mana
Panjang garis– panjang maksimum senar yang akan dikurangi.
Mari kita ulang kuerinya: dalam kondisi ini kita akan mengonversi string tak terbatas menjadi string dengan panjang tertentu. Maka tidak akan ada kesalahan.

Mari kita pertimbangkan yang terakhir dan, menurut saya, opsi paling penting untuk penerapannya: saat bekerja dengan bidang tipe komposit.
Di bawah ini adalah dua kueri yang menggunakan bidang gabungan. Yang pertama salah dan yang kedua benar.

Itu. Saat Anda perlu mendapatkan bidang dengan tipe yang kompleks, selalu dapatkan nilai bidang ini hanya setelah memasukkan jenis tersebut menggunakan fungsi Express. Dalam hal ini, dokumen dan buku referensi akan memiliki format sebagai berikut:

Cepat(<Документ>sebagai Dokumen.<ИмяТаблицы>)
Cepat(<Справочник>sebagai Direktori.< ИмяТаблицы >)
.

Di mana
Nama Tabel— nama objek dalam .

Selalu gunakan fungsi ekspres saat bekerja dengan tipe komposit, ini sangat mengoptimalkan kueri.

Jika Anda masih "berenang" dalam konstruksi bahasa kueri, dan bahkan kueri yang paling sederhana pun menimbulkan kesulitan bagi Anda, maka saya merekomendasikan kursus saya "Kueri dalam 1C dari pemula hingga profesional". Dimana masalah ini dan banyak masalah lainnya dibahas secara lebih rinci.

Yang istimewa dari kursus ini:
Kursus ini dirancang bagi mereka yang tidak terbiasa dengan bahasa query di 1C;
Materi pendidikan disajikan dengan baik dan mudah dipelajari;
Beberapa lusin pelajaran;
Contoh praktis yang berguna;
Semua pelajaran disajikan dengan bahasa yang jelas dan sederhana

Untuk pembaca saya, kupon diskon 25%: hrW0rl9Nnx

Saya mencoba merilis berbagai artikel gratis dan video tutorial menarik sesering mungkin. Oleh karena itu, saya akan sangat senang jika Anda mendukung proyek saya dengan mentransfer jumlah berapa pun:

Anda dapat mentransfer jumlah berapa pun secara langsung:
Yandex.Uang - 410012882996301
Uang Web - R955262494655

Bergabunglah dengan grup saya.