Tabel utama daftar dinamis 1s 8.3. Metode untuk mengambil dan menyimpan data dalam cache dengan daftar dinamis

Tabel utama daftar dinamis 1s 8.3.  Metode untuk mengambil dan menyimpan data dalam cache dengan daftar dinamis
Tabel utama daftar dinamis 1s 8.3. Metode untuk mengambil dan menyimpan data dalam cache dengan daftar dinamis
Catatan Rumah dari Through the Looking Glass

21/04/2014 Menerima data daftar dinamis

Diimplementasikan pada versi 8.3.6.1977.

Kami telah menerapkan kemampuan untuk memperoleh data yang ditampilkan dengan mudah dan nyaman menggunakan daftar dinamis.

Anda mungkin memerlukan data daftar dinamis untuk mencetaknya dalam bentuk “spesifik” yang tidak standar. Atau untuk melakukan tindakan tertentu dengan mereka. Misalnya, kirimkan surat kepada seluruh kontraktor yang Anda pilih dalam daftar berdasarkan kriteria tertentu.

Selain itu, ada sejumlah tugas di mana pengguna, selain daftar elemen, juga ingin melihat ringkasan data yang terkait dengan daftar ini. Misalnya, setelah memilih produk dari kelompok produk tertentu dan pemasok tertentu, dia langsung ingin melihat jumlah total produk tersebut di database.

Daftar dinamis saja tidak dapat memberikan Anda informasi ini. Tujuan dari daftar dinamis adalah untuk menyediakan tampilan cepat atas sejumlah besar data. Oleh karena itu, ia membaca data dalam potongan-potongan yang diperlukan untuk ditampilkan pada satu atau dua layar. Dan “tidak tahu apa-apa”, misalnya, tentang jumlah total data yang harus dia hitung.

Secara umum, untuk mendapatkan informasi tambahan yang diinginkan pengguna, Anda perlu menjalankan query database. Persis sama dengan yang digunakan dalam daftar dinamis.

Anda dulu bisa melakukan ini. Tapi itu tidak selalu mudah. Lagi pula, selain teks permintaan asli tempat daftar dinamis berfungsi, Anda perlu mengetahui semua pilihan, pengurutan, dan parameter lain yang diatur secara interaktif oleh pengguna dalam tabel yang menampilkan data.

Sekarang masalah ini bisa diselesaikan dengan sederhana. Tabel daftar dinamis kini memiliki dua metode baru:

  • DapatkanExecutableDataCompositionSchema();
  • DapatkanExecutableDataCompositionSettings().

Dengan demikian, Anda mendapatkan skema tata letak data itu sendiri, dan, yang paling penting, semua pengaturannya, berkat itu pengguna melihat daftarnya persis seperti itu. Yang perlu Anda lakukan adalah menyusun tata letak secara terprogram dan menampilkannya dalam kumpulan nilai (untuk pemrosesan program) atau dalam dokumen spreadsheet (untuk ditampilkan):

Hasilnya, Anda akan menerima struktur (atau laporan) yang berisi kolom dan baris yang dikeluarkan ke tabel daftar dinamis.

Poin pentingnya adalah tata letak dan pengaturan yang Anda terima dari tabel daftar dinamis mempertimbangkan, antara lain, visibilitas kolom dan pencarian yang diterapkan. Karena pengaturan diperoleh secara terpisah, Anda dapat mengubah komposisi bidang untuk tujuan Anda sendiri dan mendapatkan, misalnya, semua kolom dalam daftar, dan bukan hanya kolom yang terlihat oleh pengguna.

Saat mengeluarkan ke dokumen spreadsheet, ada momen menyenangkan lainnya. Secara umum tampilan laporan akan sesuai dengan tampilan tabel daftar dinamis pada saat skema dan pengaturan diterima. Termasuk desain meja bersyarat. Anda memerlukan beberapa tindakan tambahan hanya jika Anda ingin mentransfer desain bersyarat formulir ke laporan.

Dalam proses penyelesaian konfigurasi, setiap programmer 1C menemukan daftar dinamis.
Daftar dinamis adalah objek antarmuka yang digunakan untuk menampilkan berbagai daftar objek database atau entri register data non-objek.
Misalnya, daftar dinamis digunakan untuk menampilkan daftar item:

Untuk mendemonstrasikan kemampuan daftar dinamis, mari buat pemrosesan eksternal dan tambahkan formulir utama. Mari tambahkan atribut baru ke formulir dengan tipe “Daftar Dinamis”. Mari masuk ke propertinya dan lihat apa yang ada di sana.
Kami tertarik dengan properti "Permintaan khusus". Mengaktifkannya akan menunjukkan kepada kita semua kemampuan daftar dinamis. Kami akan dapat menulis permintaan menggunakan hampir semua kemampuan bahasa kueri sistem 1C:Enterprise. Centang kotak dan klik tautan "Buka":

Secara default, daftar kami akan menampilkan daftar barang dengan total saldo semua gudang. Untuk menerapkan daftar seperti itu, tambahkan kueri berikut:


Sebagai tabel utama, kita akan memilih "Direktori.Nomenklatur", ini akan memungkinkan kita untuk bekerja dengan daftar dinamis, seperti daftar nomenklatur - menambah, mengubah, menandai elemen direktori untuk dihapus. Selain itu, memasang tabel utama memungkinkan pembacaan data secara dinamis - ini berarti pemilihan akan dilakukan dalam porsi, sesuai kebutuhan.
Selanjutnya kita perlu membuat elemen formulir untuk daftar kita:

Jika kami mencoba menjalankan pemrosesan dalam formulir ini, kami akan mendapatkan kesalahan:


Untuk menghilangkannya, Anda perlu menetapkan nilai untuk parameter “Periode”. Untuk melakukan ini, Anda dapat menggunakan metode “SetParameterValue” dari kumpulan “Parameter” dari daftar dinamis. Metode ini mengambil dua parameter:
. "Parameter" - Jenis: String; ParameterKomposisi Data. Nama parameter atau parameter komposisi data yang nilainya ingin ditetapkan;
. “Nilai” - Jenis: Sewenang-wenang. Nilai yang akan ditetapkan.
Dapat dipanggil dalam handler “OnCreateOnServer” dalam bentuk:

Apakah Anda memiliki pertanyaan atau memerlukan bantuan konsultan?


Kami akan memberi pengguna kesempatan untuk mengubah periode penerimaan saldo. Untuk melakukannya, tambahkan atribut dan elemen formulir “Tanggal” yang terkait dengannya:


Dalam pengendali “OnChange” dari elemen formulir “Tanggal”, kita akan memanggil metode “SetParameterValue”, meneruskan nilai atribut terkait sebagai nilainya. Dengan cara serupa, mari kita ubah prosedur formulir “Saat Membuat Di Server”. Karena metode ini tersedia di klien, tidak perlu memanggil server:


Sekarang ketika tanggal berubah, saldo akan otomatis terupdate:




Anggaplah pengguna ingin melihat saldo saat ini atau penerimaan yang direncanakan. Mari pertimbangkan salah satu opsi implementasi. Mari tambahkan atribut form tipe boolean dan saklar terkait:


Saat mengubah nilai sakelar, kami akan mengubah teks permintaan. Untuk melakukan ini, kita akan menggunakan event handler “On Change” untuk elemen formulir “Display Quantity On Receipt”. Kita perlu mengubah properti “QueryText” dari daftar dinamis bergantung pada nilai atributnya. Karena properti ini tidak tersedia di klien, prosedur server harus dipanggil:


Hasil perubahan yang dilakukan:



Akhirnya, impian setiap anak berusia tujuh tahun menjadi kenyataan. Seberapa sering pengguna program 7.7 meminta pilihan item yang normal? Sehingga Anda bisa melihat saldo, harga, dan mengatur filter. Kami harus menemukan berbagai trik, termasuk menulis komponen eksternal. Daftar dinamis muncul di 1C 8.2. Saya mengusulkan untuk mempertimbangkan apa itu dan apa yang bisa mereka berikan kepada kita di 1C 8.3.

Mari kita ambil konfigurasi pengujian tertentu dari 1C: "Enterprise Accounting 3.0". Kami tidak akan membuat pilihan sekarang, kami hanya akan menambahkan formulir pilihan lain di direktori “Nomenklatur” dan menjadikannya yang utama untuk sementara:

Saat dibuat, sistem secara default akan menambahkan kolom tabel bertipe “Daftar Dinamis” ke formulir.

Mari masuk ke propertinya dan lihat apa yang ada di sana.

Pertama-tama, kami tertarik pada kotak centang “Permintaan khusus”. Ini akan mengungkapkan kepada kita semua keuntungan dari daftar dinamis. Kami akan memiliki kesempatan untuk menulis permintaan kami sendiri, dengan parameter. Centang kotak dan klik tautan "Buka":

Sebuah jendela akan terbuka dengan kode yang sudah selesai dalam format . Untuk saat ini, semua bidang direktori “Nomenklatur” hanya dicantumkan di sana.

Dapatkan 267 pelajaran video di 1C gratis:

Seperti yang Anda lihat, terdapat tombol panggil “ ” dan kotak centang yang memungkinkan untuk mengubah konten daftar secara dinamis. Artinya, ketika pengguna lain mengubah sesuatu di direktori, hal itu juga akan berubah di daftar kita. Selain itu, ada tab "Pengaturan", tapi kita akan membahasnya nanti.

Kueri khusus dalam daftar dinamis

Pertama, mari buat permintaan yang kita perlukan dengan saldo dan harga. Sesuatu seperti ini:

tab "Pengaturan".

Dan sekarang bagian terbaiknya! Buka tab "Pengaturan". Dan kita segera melihat bahwa pada tab pertama kita dapat membuat pilihan apa pun untuk bidang apa pun dalam permintaan:

Mengatur parameter kueri secara terprogram dalam daftar dinamis 1C 8.3

Jangan lupa bahwa kita memiliki dua parameter dalam permintaan: “Periode” dan “Jenis harga”. Kita harus meneruskannya ke dalam permintaan, jika tidak maka akan terjadi kesalahan.

Mari tulis parameter ini di parameter formulir, dan tambahkan baris berikut di modul formulir:

Daftar &OnServerProcedureWhenCreatingOnServer (Kegagalan, Pemrosesan Standar). Pilihan. SetParameterValue("Periode", Parameter.Tanggal) ;

Selain tipe data primitif yang dapat ditemukan dalam bahasa pemrograman apa pun, ada tipe unik di 1C. Masing-masing memiliki sifat, metode, fungsi, tujuan dan nuansa penggunaan tersendiri dalam sistem. Salah satu jenisnya adalah daftar dinamis, yang sangat memudahkan banyak tugas yang diterapkan. Itu sebabnya pengembang harus mengetahui dan mampu menangani alat universal ini.

Fitur daftar dinamis dalam 1C

Tujuan dari tipe ini adalah untuk menampilkan informasi dari tabel database apa pun, apa pun tipenya. Mekanismenya dibuat berdasarkan SKD dan memiliki kemampuan serupa. Namun ini tidak berarti bahwa Anda harus menulis permintaan dalam bahasa 1C, meskipun peluang ini ada dan harus dimanfaatkan. Anda cukup menentukan tabel yang informasinya menarik bagi Anda dan 1C akan secara mandiri menghasilkan kueri sederhana.

Untuk melihat bagaimana daftar dinamis dibentuk dan data apa yang ditampilkan, Anda perlu membuka formulir terkelola yang lokasinya di konfigurator: dalam daftar detail, gunakan menu konteks untuk membuka propertinya dan perhatikan "Kustom Barang Permintaan”. Jika tidak ada kotak centang, maka parameter “Tabel utama” mencerminkan tabel database tempat data diambil. Jika tidak, daftar dinamis mencerminkan data kueri khusus, yang dapat dilihat dengan membuka pengaturan daftar.

Skema kueri khusus lebih umum digunakan karena memberikan peluang bagus untuk menggabungkan dan menampilkan berbagai macam data. Paling sering, mekanisme ini digunakan untuk mencerminkan saldo gudang, harga barang, kuitansi, pengeluaran atau pembelian. Anda harus menggunakannya dengan hati-hati, karena kinerja mungkin turun untuk kueri yang kompleks.

Properti lain yang berguna dari daftar dinamis terbuka ketika Anda mengklik tulisan "Pengaturan Daftar". Menu ini memungkinkan Anda membuat informasi lebih mudah diakses dan dipahami oleh pengguna akhir, bahkan saat menggunakan serangkaian bidang standar. Terlepas dari apakah permintaan tersebut sewenang-wenang atau tidak, Anda akan melihat tab “Pengaturan”, tempat Anda dapat menentukan:

  • Pemilihan daftar dinamis;
  • Grup;
  • Penyortiran;
  • Dekorasi.

Penggunaan parameter membuat daftar dinamis bersifat universal dan cukup fleksibel. Anda juga bisa menautkannya ke detail pada formulir terkelola, dan data akan berubah bergantung pada parameter yang dipilih oleh pengguna. Penggunaan mekanisme ini dapat dipahami dan diapresiasi dengan mempertimbangkan contoh-contoh permasalahan kehidupan nyata.

Sebagai contoh, perhatikan tugas mencerminkan sisa-sisa nomenklatur pada formulir terkendali. Dalam praktik nyata, perintah seperti itu cukup sering terjadi dalam berbagai konfigurasi, dan daftar dinamis sangat ideal sebagai alat. Untuk tugas ini kita harus menggunakan kueri khusus, parameter daftar dinamis, dan pengaturannya.

Untuk lebih jelasnya, mari buat pemrosesan eksternal terpisah dan tempatkan daftar dinamis di dalamnya. Untuk mengimplementasikan rencana kami, tabel dengan nomenklatur tidak akan cukup, jadi kami perlu mengizinkan kueri yang sewenang-wenang. Di dalamnya kami akan menjelaskan koneksi kiri direktori dengan daftar item dan daftar saldo dan mengatur direktori sebagai tabel utama. Skema ini akan memungkinkan pengguna, bekerja dengan daftar dinamis, untuk menambah atau mengubah item.



SELECT NomenclatureList.Name SEBAGAI Nama, GoodsInWarehousesRemainings.Gudang AS Warehouse, GoodsInWarehousesRemainings.QuantityRemaining AS QuantityRemainings DARI Direktori.Nomenclature AS NomenclatureList LEFT CONNECTION RegisterAccumulations.GoodsInWarehouses.Remainings(&CurrentDate,) SEBAGAI GoodsOn WarehousesRemaining Software NomenclatureList .Link = ProdukDi GudangSisa.Nomenklatur DI MANA

Karena permintaan kita menggunakan parameter “CurrentDate”, kita perlu menetapkan nilainya sebelum menggunakan pemrosesan. Untuk melakukan ini, dalam modul formulir dalam prosedur "Ketika CreatedOnServer", dengan menggunakan perintah standar, tetapkan fungsi "CurrentSessionDate". Kita juga perlu menampilkan daftar dinamis pada formulir kontrol dan mengubah urutan bidang agar lebih jelas. Seret atribut “Nomenklatur Tersisa” ke dalam elemen formulir (bagian kiri atas) dan gunakan panah biru untuk mengubah urutan bidang dalam tabel di formulir.

&Pada Prosedur Server Saat Dibuat di Server (Kegagalan, Pemrosesan Standar) Parameter Nomenklatur Tetap


Pada tahap ini, kita dapat membuka pemrosesan eksternal di 1C dan melihat bahwa daftar dinamis berfungsi. Kita dapat melihat saldo, membuat item dan grup, dan mencari. Seringkali pelanggan meminta untuk menambahkan kemampuan untuk memilih tanggal di mana mereka akan melihat saldo. Dalam kasus formulir dengan daftar dinamis, ini dicapai melalui bidang tambahan dan pengaturan parameter yang menggunakannya.

Tambahkan atribut "DateRemaining" dari tipe "Date" dan transfer ke elemen formulir. Di event lapangan, kami membuat acara "OnChange" dan menulis kode untuk menyetel parameter "Tanggal Saat Ini" yang digunakan dalam permintaan dinamis. Agar saat membuka form pengguna langsung mengetahui tanggal berapa ia melihat saldo, kami akan melakukan sedikit perubahan pada prosedur “Saat DibuatDiServer”.



&OnServerProcedureWhenCreatingOnServer(Kegagalan, Pemrosesan Standar)RemainingDate = CurrentSessionDate();

Item Remains.Parameters.SetParameterValue("Tanggal Saat Ini", Tanggal Tersisa); Akhir Prosedur &Pada Klien Prosedur Tanggal TersisaKetika Berubah(Elemen)Nomenklatur Tersisa.Parameters.SetParameterValue("CurrentDate",RemainingDate); Akhir Prosedur

Hasilnya, formulir Daftar Dinamis kami dapat mencerminkan saldo pada tanggal berapa pun.

  1. Kami hanya mempertimbangkan sebagian kecil dari kemampuan toolkit ini, namun ini sudah cukup untuk memahami kenyamanan jenis daftar dinamis ini. Mekanisme serupa digunakan untuk banyak tugas, namun paling sering ditemukan dalam konfigurasi umum dalam formulir terkelola:
  2. Pilihan;

Daftar.