Rumah / Internet / 1s 8 kreasi dari daftar dinamis. Pengaturan daftar dinamis

1s 8 kreasi dari daftar dinamis. Pengaturan daftar dinamis

Akhirnya, impian "tujuh pemain" menjadi kenyataan. Seberapa sering pengguna program 7.7 diminta untuk membuat pilihan item yang normal. Sehingga Anda dapat melihat saldo, harga, dan filter yang ditetapkan. Saya harus memikirkan berbagai trik, hingga menulis komponen eksternal. Di 1C 8.2, daftar dinamis muncul. Saya mengusulkan untuk mempertimbangkan apa itu dan apa yang dapat mereka berikan kepada kita di 1C 8.3.

Mari kita ambil sebagai dasar beberapa konfigurasi tes 1C: "Akuntansi perusahaan 3.0". Kami tidak akan membuat pilihan sekarang, cukup tambahkan formulir pilihan lain di buku referensi "Nomenklatur" dan buat sementara menjadi yang utama:

Saat dibuat, sistem akan secara default menambahkan bidang tabel dengan jenis "Daftar dinamis" ke formulir.

Mari kita pergi ke propertinya dan melihat apa yang ada di sana.

Pertama-tama, kami tertarik pada kotak centang "Permintaan sewenang-wenang". Dia akan mengungkapkan kepada kita semua keuntungannya daftar dinamis. Kami akan memiliki kesempatan untuk menulis kueri kami sendiri, dan dengan parameter. Centang kotak dan klik tautan "Buka":

Sebuah jendela akan terbuka dengan kode siap pakai untuk . Sejauh ini, semua bidang direktori "Nomenklatur" hanya terdaftar di sana.

Dapatkan pelajaran video 267 1C gratis:

Seperti yang Anda lihat, ada tombol panggil "" dan kotak centang yang memungkinkan Anda mengubah konten daftar secara dinamis. Artinya, ketika pengguna lain mengubah sesuatu di direktori, itu juga akan berubah di daftar kami. Selain itu, ada tab Pengaturan, tetapi kami akan menyentuhnya nanti.

Permintaan khusus dalam daftar dinamis

Pertama, mari buat kueri yang kita butuhkan dengan saldo dan harga. Kurang lebih seperti ini:

tab pengaturan

Dan sekarang yang paling enak! Buka tab "Pengaturan". Dan kami segera melihat bahwa pada tab pertama kami dapat membuat pilihan untuk bidang apa pun dalam permintaan:

Menyetel parameter kueri secara terprogram dalam daftar dinamis 1C 8.3

Jangan lupa bahwa kami memiliki dua parameter dalam permintaan: "Periode" dan "Jenis harga". Kami harus meneruskannya ke permintaan, jika tidak, akan ada kesalahan.

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

&OnServerProcedure OnCreateOnServer(Failure, StandardProcessing) Daftar. Pilihan. SetParameterValue("Periode", Parameter. Tanggal) ; Daftar. Pilihan. SetParameterValue("PriceType", Parameters.PriceType) ; AkhirProsedur

Selain tipe data primitif yang dapat ditemukan dalam bahasa pemrograman apa pun, ada tipe unik di 1C. Masing-masing memiliki properti, metode, fungsi, tujuan, dan nuansa penggunaan sendiri dalam sistem. Salah satu jenis ini adalah daftar dinamis, yang sangat menyederhanakan banyak tugas yang diterapkan. Itulah mengapa pengembang harus mengetahui dan mampu menangani alat serbaguna ini.

Fitur daftar dinamis di 1C

Tujuan dari tipe ini adalah untuk menampilkan informasi dari tabel database apapun, apapun tipenya. Mekanisme tersebut dibuat berdasarkan SKD dan memiliki kemampuan yang serupa. Tetapi ini tidak berarti bahwa Anda pasti harus menulis kueri dalam bahasa 1C, meskipun kemungkinan ini ada dan Anda perlu menggunakannya. Anda cukup menentukan tabel, informasi yang Anda minati, dan 1C akan secara mandiri menghasilkan kueri sederhana.

Untuk melihat bagaimana daftar dinamis terbentuk dan data apa yang ditampilkan, Anda perlu membuka formulir terkelola, di mana letaknya, di konfigurator: dalam daftar detail melalui menu konteks buka propertinya dan perhatikan item "Permintaan Sewenang-wenang". Jika tidak ada kotak centang, maka parameter "Tabel utama" mencerminkan tabel database tempat data diambil. Jika tidak, daftar dinamis mencerminkan data kueri kustom, yang dapat dilihat dengan membuka penyiapan daftar.

Skema kueri arbitrer jauh lebih umum digunakan, karena memberikan peluang besar untuk menggabungkan dan menampilkan berbagai macam data. Paling sering, mekanisme ini digunakan untuk mencerminkan saldo stok, harga barang, pendapatan, pengeluaran, atau pembelian. Anda harus menggunakannya dengan hati-hati, karena kinerjanya mungkin turun dengan kueri yang rumit.

Properti lain yang berguna dari daftar dinamis dibuka dengan mengklik tulisan "Pengaturan daftar". Menu ini memungkinkan, bahkan saat menggunakan kumpulan bidang standar, untuk membuat informasi lebih mudah diakses dan dipahami oleh pengguna akhir. Baik itu permintaan arbitrer atau bukan, Anda akan melihat tab "Setelan" tempat Anda dapat menentukan:

  • Pemilihan daftar dinamis;
  • pengelompokan;
  • penyortiran;
  • Dekorasi.

Penggunaan parameter membuat daftar dinamis fleksibel dan cukup fleksibel. Anda juga dapat mengikatnya ke alat peraga pada formulir terkelola, dan data akan berubah tergantung pada opsi yang dipilih oleh pengguna. Penggunaan mekanisme ini dapat dipahami dan diapresiasi dengan melihat contoh masalah dunia nyata.

Sebagai contoh, pertimbangkan masalah pencerminan sisa-sisa nomenklatur pada formulir yang dikelola. Dalam praktik nyata, perintah seperti itu cukup umum di berbagai konfigurasi, dan daftar dinamis sangat ideal sebagai alat. Untuk tugas ini, kita harus menggunakan kueri arbitrer, parameter daftar dinamis, dan pengaturannya.

Untuk kejelasan yang lebih besar, kami akan membuat yang terpisah pemrosesan eksternal dan menempatkan daftar dinamis di atasnya. Untuk mengimplementasikan rencana kami, akan ada beberapa tabel dengan nomenklatur, jadi kami perlu mengizinkan permintaan sewenang-wenang. Di dalamnya, kami akan menggambarkan hubungan kiri buku referensi dengan daftar nomenklatur dan daftar residu dan mengatur buku referensi sebagai tabel utama. Skema seperti itu akan memungkinkan pengguna, saat bekerja dengan daftar dinamis, untuk menambah atau mengubah nomenklatur.



Pilih nomenklatur. Nama. Nama sebagai nama, barang dan costlar penjualan. Sklad sebagai gudang, barang dan costlar penjualan. Busana sebagai nomor instalasi dari direktori. Nomenklatur sebagai nomenklatur sambungan kiri register. Kontinuitas. Instalasi (& berjalan,) sebagai barang dan konsumsi.

Karena parameter CurrentDate digunakan dalam permintaan kami, kami perlu menetapkan nilainya sebelum menggunakan pemrosesan. Untuk melakukan ini, dalam modul formulir dalam prosedur "On CreationOnServer" dengan perintah standar, tetapkan fungsi "CurrentSessionDate" dengan perintah standar. Kita juga perlu menampilkan daftar dinamis pada formulir kontrol dan mengubah urutan bidang untuk kejelasan. Seret alat peraga "Nomenklatur Tersisa" ke dalam elemen formulir (kiri atas) dan gunakan panah biru untuk mengubah urutan bidang dalam tabel di formulir.

&Di Server Prosedur Pada PembuatanPada Server(Kegagalan, Pemrosesan Standar) Nomenklatur Tetap.Parameters.SetParameterValue("CurrentDate",CurrentSessionDate()) EndProcedure


Sudah pada tahap ini, kami dapat membuka pemrosesan eksternal kami di 1C dan melihat bahwa daftar dinamis berfungsi. Kita bisa melihat saldo, membuat nomenklatur 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 disediakan oleh bidang tambahan dan parameter pengaturan yang menggunakannya.

Kami menambahkan atribut "Tetap Tanggal" dari jenis "Tanggal" dan mentransfernya ke elemen formulir. Di acara lapangan, kami membuat acara "OnChange" dan menulis kode untuk mengatur parameter "Tanggal Saat Ini" yang digunakan dalam kueri dinamis. Agar saat membuka formulir, pengguna langsung mengerti pada tanggal berapa dia melihat saldo, kami akan membuat sedikit perubahan pada prosedur OnCreateOnServer.



&OnServerProcedureOnCreateOnServer(Kegagalan, StandardProcessing)RemainsDate = CurrentSessionDate(); Item Remains.Parameters.SetParameterValue("CurrentDate", RemainsDate); Akhir Prosedur &Pada Prosedur Klien RemainsDateOnChange(Element) Item Remains.Parameters.SetParameterValue("CurrentDate",RemainsDate); AkhirProsedur

Akibatnya, formulir Daftar Dinamis kami dapat menampilkan saldo untuk tanggal apa pun.

Kami hanya membahas sebagian kecil dari kemampuan toolkit ini, tetapi ini sudah cukup untuk memahami kenyamanan jenis daftar dinamis ini. Mekanisme serupa digunakan untuk banyak tugas, tetapi paling sering ditemukan dalam konfigurasi tipikal di formulir yang dikelola:

  1. pilihan;
  2. Daftar.

Untuk mendapatkan daftar dinamis dan permintaannya dalam formulir terkelola biasa, pengembang perlu membuka formulir yang diperlukan di konfigurator. Di bagian atribut, temukan atribut dengan tipe data "Daftar Dinamis" (paling sering dipilih dalam huruf tebal). Propertinya berisi teks permintaan, pilihan, dan pengaturan lainnya.

rumah Catatan dari Looking Glass

21/04/2014 Mendapatkan data daftar dinamis

Diimplementasikan dalam versi 8.3.6.1977.

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

Anda mungkin memerlukan data daftar dinamis untuk mencetaknya dalam bentuk "spesifik" non-standar. Atau untuk melakukan tindakan tertentu dengan mereka. Misalnya, kirim surat ke semua rekanan yang telah Anda pilih dalam daftar sesuai dengan beberapa kriteria.

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

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

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

Anda bisa melakukannya sebelumnya. Tapi itu tidak selalu mudah. Lagi pula, selain teks kueri asli, yang dengannya daftar dinamis berfungsi, Anda perlu mengetahui semua pilihan, pengurutan, dan parameter lain yang diatur pengguna secara interaktif dalam tabel yang menampilkan data.

Sekarang tugas ini mudah diselesaikan. Tabel daftar dinamis memiliki dua metode baru:

  • GetExecutableDataCompositionSchema();
  • GetExecutableDataCompositionSettings().

Dengan demikian, Anda mendapatkan skema komposisi data itu sendiri, dan, yang paling penting, semua pengaturannya, berkat pengguna yang melihat daftar persis seperti apa adanya. Yang harus Anda lakukan adalah menyusun tata letak secara terprogram dan mengeluarkannya ke kumpulan nilai (untuk pemrosesan terprogram) atau dokumen spreadsheet (untuk tampilan):

Hasilnya, Anda akan mendapatkan struktur (atau laporan) yang berisi kolom dan baris yang ditampilkan dalam tabel daftar dinamis.

Poin penting adalah bahwa tata letak dan pengaturan yang Anda dapatkan dari tabel daftar dinamis memperhitungkan, 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 daftar, dan bukan hanya yang terlihat oleh pengguna.

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

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

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

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


Sebagai tabel utama, kami akan memilih "Direktori. Nomenklatur", ini akan memungkinkan kami untuk bekerja dengan daftar dinamis, seperti dengan daftar nomenklatur - tambahkan, ubah, tandai untuk menghapus elemen direktori. Demikian pula, pengaturan tabel utama tidak peluang terjangkau pembacaan data dinamis - ini berarti bahwa sampel akan dibuat dalam porsi, sesuai kebutuhan.
Selanjutnya, kita perlu membuat elemen formulir untuk daftar kita:

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


Untuk menghilangkannya, Anda harus mengatur nilai parameter "Periode". Untuk melakukannya, Anda dapat menggunakan metode "SetParameterValue" dari kumpulan "Parameter" dari daftar dinamis. Metode ini mengambil dua parameter:
. "Parameter" - Jenis: String; Parameter Komposisi Data. Nama parameter atau parameter komposisi data yang nilainya akan ditetapkan;
. "Nilai" - Jenis: Sewenang-wenang. Nilai yang akan ditetapkan.
Dapat dipanggil di handler "OnCreateOnServer" dalam bentuk:

Apakah Anda memiliki pertanyaan, apakah Anda memerlukan bantuan konsultan?


Mari beri pengguna kemampuan untuk mengubah periode penerimaan saldo. Untuk melakukan ini, mari tambahkan atribut dan elemen formulir "Tanggal" yang terkait dengannya:


Di pengendali "OnChange" dari elemen formulir "Tanggal", panggil metode "SetParameterValue", dengan meneruskan nilai atribut terkait sebagai nilai. Demikian pula, kami akan mengubah prosedur "On CreationAtServer" dari formulir. Karena metode ini tersedia di klien, tidak perlu memanggil server:


Sekarang, ketika tanggal berubah, saldo akan diperbarui secara otomatis:




Misalkan pengguna ingin melihat saldo saat ini atau penerimaan yang diproyeksikan. Mari kita pertimbangkan salah satu opsi implementasi. Mari tambahkan atribut formulir Boolean dan tombol radio terkait:


Saat mengubah nilai sakelar, kami akan mengubah teks permintaan. Untuk melakukan ini, kita akan menggunakan event handler "OnChange" dari elemen form "DisplayQuantityToReceipt". Kita perlu mengubah properti "QueryText" dari daftar dinamis tergantung pada nilai atribut. Karena properti ini tidak tersedia di klien, panggilan ke prosedur server diperlukan:


Hasil dari perubahan yang dilakukan: