Menghubungkan kumpulan data dalam sistem penyimpanan. Konstruktor diagram tata letak data - tab yang menghubungkan kumpulan data 1s SKD menghubungkan kondisi kumpulan data


41
Saya baru-baru ini membuat laporan dengan jumlah kolom yang tidak terbatas. Saya tidak ingin mengutak-atik kodenya, jadi saya memutuskan untuk melakukannya pada sistem kontrol akses. Tidak ada masalah dengan ini, perlu untuk meregangkan hasilnya ke tata letak yang berubah-ubah (header Anda sendiri +... 27
Meskipun siswa CDS menemui hal ini pada hari pertama atau kedua, seharusnya hal ini ada di bagian FAQ. Contoh sederhana dalam mengeluarkan laporan tata letak secara terprogram, menggunakan pengaturan default. //Dapatkan diagram dari... 18
Saat membuat laporan pada sistem kontrol akses, secara default semua pengelompokan diperluas, tetapi terkadang laporan dengan pengelompokan yang diciutkan perlu ditampilkan segera setelah pembuatan! Kode dalam modul laporan ini memungkinkan Anda untuk menciutkan... 9
Yang diperlukan saat mengembangkan laporan adalah untuk pengguna dengan hak terbatas, laporan dibuat sepenuhnya tanpa memeriksa hak! Terutama jika RLS dikonfigurasi. Ada beberapa cara untuk melakukan ini: 1. Instal...

Dalam hal ini, kotak centang Wajib menentukan apakah bidang yang digunakan di sumber (diatur ke FALSE) atau di tujuan (diatur ke TRUE) diaktifkan dan, berdasarkan ini, menambahkan hubungan ke tata letak.

Untuk setiap kumpulan data, Anda dapat menyiapkan pemeriksaan hierarki:

Opsi ini digunakan jika kondisi pemilihan suatu bidang perlu diproses dengan cara yang tidak standar. Bidang dapat ditentukan dengan kumpulan data dari mana data diperoleh untuk memeriksa apakah suatu tautan termasuk dalam hierarki nilai tertentu.

Soal 11.33 ujian 1C: Platform Profesional. Apakah penggunaan beberapa kumpulan data dapat diterima?

  1. Hanya saat menggunakan kumpulan data - objek
  2. Hanya saat menggunakan kumpulan data - kueri

Jawaban yang benar adalah yang pertama, bagaimanapun juga dapat diterima.


Soal 11.10 ujian 1C: Platform Professional. Saat mendefinisikan hubungan antara dua kumpulan data dalam diagram komposisi data

  1. Opsi koneksi (kiri, penuh) dipilih oleh pengembang
  2. Gabungan kiri dari set pertama ke set kedua selalu digunakan
  3. Gabungan kiri dari himpunan kedua ke himpunan pertama selalu digunakan
  4. Gabungan kiri dari himpunan pertama ke himpunan kedua digunakan, dalam beberapa kasus gabungan dalam dibuat

Jawaban yang benar adalah yang keempat. Kumpulan data hanya dihubungkan dengan gabungan kiri atau dalam.

Soal 11.13 ujian 1C: Platform Profesional. Dalam kasus apa perlu untuk mengonfigurasi pemeriksaan hierarki pada tab "Kumpulan Data" di jendela perancang diagram tata letak

  1. Jika Anda perlu melarang penerimaan total menurut hierarki Anda sendiri yang berbeda dari standar
  2. Jika Anda perlu mengizinkan total diperoleh sesuai dengan hierarki Anda sendiri, berbeda dari yang standar
  3. Jika Anda perlu melarang pemasangan pilihan untuk masuk ke grup hierarki Anda sendiri, berbeda dari yang standar
  4. Jika Anda perlu mengizinkan pilihan untuk dimasukkan dalam grup hierarki Anda sendiri, berbeda dari grup standar

Jawaban yang benar adalah nomor empat, penjelasannya ada di postingan.

Soal 11.16 ujian 1C: Platform Profesional. Jenis gabungan apa antara dua kumpulan data yang dapat diimplementasikan dalam sistem komposisi?

  1. Semua seperti dalam bahasa query: "Semua ke Semua", "Kiri", "Kanan", "Batin" dan "Penuh"
  2. Hanya "Semua ke Semua", "Kiri", "Kanan" dan "Batin"
  3. Hanya "Kiri" dan "Batin"
  4. Hanya "Semua ke Semua", "Kiri", dan "Batin"
  5. "Kiri", "Kanan", "Batin" dan "Penuh" saja

Jawaban yang benar adalah yang keempat, sesuai dengan hasil tesnya. Faktanya, yang ketiga benar.

Soal 11.17 ujian 1C: Platform Profesional. Saat menyiapkan hubungan antara dua kumpulan data, tanda "Hubungan yang Diperlukan" dipilih. Dalam hal apa tindakan pengguna akan menyebabkan kegagalan koneksi?

  1. Koneksi data dari kedua set akan diterapkan terlepas dari pengaturan apa yang telah dibuat pengguna
  2. Daftar bidang yang dipilih hanya menampilkan bidang di kumpulan kiri
  3. Dalam daftar bidang yang dipilih, hanya bidang di kumpulan kanan yang ditentukan
  4. Dalam daftar bidang yang dipilih, hanya bidang himpunan kiri yang ditunjukkan, bidang himpunan kanan dipilih
  5. Dalam daftar bidang yang dipilih, hanya bidang himpunan kanan yang ditunjukkan, bidang himpunan kiri dipilih

Jawaban yang benar adalah yang kedua, jika hanya ada satu himpunan (dan sumbernya), maka tidak ada yang bisa dihubungkan.

Soal 11.39 ujian 1C: Platform Profesional. Bagaimana data eksternal ditransfer ke suatu kumpulan - objek dalam sistem komposisi data?

  1. Melalui bahasa bawaan melalui pemroses komposisi data
  2. Menggunakan bahasa bawaan melalui pembuat tata letak
  3. Melalui bahasa bawaan melalui prosesor keluaran sistem komposisi data

Jawaban yang benar adalah yang pertama, melalui prosesor.

Sistem komposisi data dapat menggunakan beberapa kumpulan data. Dan cukup logis bahwa kumpulan data ini entah bagaimana harus terhubung satu sama lain. Dengan analogi dengan bahasa kueri 1C, kumpulan data dapat berupa atau. Pada artikel ini kita akan membicarakannya koneksi kumpulan data dalam sistem kontrol akses.

Pada pandangan pertama, mungkin tidak jelas mengapa Anda perlu membuat beberapa kumpulan data dan kemudian menggabungkannya, jika Anda bisa menggabungkan tabel dalam satu kumpulan data. Setidaknya ada satu alasan untuk ini - dalam hal penggunaan kumpulan data eksternal. Seperti yang Anda ketahui, saat kita menulis kueri untuk kumpulan data ACS, kita tidak bisa meneruskannya, misalnya, . Meskipun untuk permintaan normal hal ini dilakukan cukup sederhana. Dalam hal menggunakan sistem kontrol akses, kita terpaksa mentransfer tabel nilai ke dalamnya sebagai . Oleh karena itu perlunya menghubungkan kumpulan data. Izinkan saya segera mencatat bahwa kumpulan data hanya dapat dihubungkan menggunakan KONEKSI KIRI. Oleh karena itu, tidak seperti di sini, Anda tidak akan melihat kotak centang yang bertanggung jawab atas jenis koneksi tabel.

Sekarang mari kita bayangkan sebuah situasi, dengan menggunakan contoh yang dapat kita pertimbangkan untuk menghubungkan kumpulan data dalam sistem kontrol akses. Misalkan kita mempunyai direktori Barang-barang, yang dapat kami terima dari pemasok berbeda, dan kami ingin membuat laporan dengan harga barang menurut pemasok untuk memilih pemasok dengan harga paling menguntungkan. Dan kami akan mengambil harga yang terkini saat ini, misalnya melalui web service dari website supplier.

Oleh karena itu, untuk barang kami akan memiliki kumpulan data yang diperoleh dengan menggunakan permintaan, dan untuk harga kami akan memiliki kumpulan data yang diperoleh dari sumber eksternal.


Sekarang mari kita pergi ke bookmark Hubungan kumpulan data dan lakukan pengaturan seperti yang ditunjukkan pada gambar.

Di penanda Pengaturan Pertama, mari kita buat keluaran dasar dari catatan rinci


Biarkan itu ada di direktori kami Barang-barang berisi entri berikut

Kami menjalankan laporan dan melihat gambar berikut:

Artinya, kita melihat bahwa kumpulan data saling berhubungan menurut semua aturan KONEKSI KIRI

Di penanda Hubungan kumpulan data Dimungkinkan untuk menentukan beberapa parameter tambahan di bidang yang sesuai. Tapi mereka jarang digunakan. Rincian lebih lanjut dapat ditemukan di dokumentasi teknis dan pada disk ITS.

Terkadang, untuk mendapatkan hasil tata letak tertentu, perlu dibuat tautan antar kumpulan data dalam sistem kontrol akses. Kami akan mencoba membicarakan kapan hal ini diperlukan dan bagaimana melakukannya di artikel kami.

Skema tata letak data yang diterapkan di 1C mendukung tiga jenis sumber data (Gbr. 1)

Sumber data

Sumber data yang paling jelas dan sering digunakan oleh pengembang adalah Query.

Perancang kueri yang diterapkan dalam 1C versi 8 sangat nyaman, dan, dalam banyak kasus, Anda dapat menghubungkan beberapa tabel bersama-sama dan membuat pengelompokan dan pilihan yang diperlukan langsung di dalamnya.

Dalam kasus yang kompleks, ketika diperlukan atau lebih tepat untuk menggunakan eksekusi beberapa kode (misalnya, memuat data dari file pihak ketiga) atau ketika tidak mungkin menggunakan kueri, sumber data "Objek" akan digunakan. Penyelamatan. Kode sewenang-wenang yang dieksekusi dalam modul harus memiliki struktur tertentu pada output yang dapat diakses oleh sistem kontrol akses.

Sumber data ketiga adalah “Union”. Padahal, sumber ini dapat dianggap sebagai salah satu jenis komunikasi. Ini menggabungkan (mengurangi beberapa tabel menjadi satu), bukan pencocokan, tetapi kebetulan bidang tertentu. Artinya, jika dua tabel yang digabungkan masing-masing memiliki 3 dan 4 baris, maka sumber data yang dihasilkan akan memiliki 7 baris.

Rumusan masalah

Sebagai tempat pengujian, kami akan memilih basis UPP, versi 1.3.92.3, yang beroperasi dalam mode aplikasi normal.

Kami diberi tugas berikut: hanya dengan menggunakan sistem kontrol akses, buat laporan yang akan menampilkan tabel barang yang dibeli dari dokumen, dengan harga diambil dari file yang dikirim oleh rekanan.

Jadi kita harus:

  1. Ambil bagian tabel dari dokumen tanda terima;
  2. Unggah file ke sumber data “Objek”;
  3. Tautkan kedua sumber ini dengan parameter tertentu (dalam kasus kami ini adalah kode);
  4. Tampilkan tabel yang dihasilkan.

Proses eksekusi

Mari kita lakukan semua langkah yang tercantum:

  • Kami membuat kueri untuk bagian tabel dari dokumen tanda terima (Gbr. 2)

Gambar.2

  • Buat objek kumpulan data (Gbr. 3);

Gambar.3

Di sini penting untuk memperhatikan “Nama objek yang berisi data”; kita harus menentukan nama ini dalam kode modul laporan.

  • Kami pergi ke modul laporan dan membuat prosedur “Saat Menulis Hasil” di sana (Gbr. 4);


Gambar.4

Kami tidak akan menjelaskan prosedur untuk memperoleh data dari file eksternal; kami akan memperhatikan bagian kode yang harus ada dalam tata letak agar kami dapat memperoleh data untuk “Kumpulan Data 2” (Gbr. 5).

Gambar.5

Penting! Saat membuat "Objek" dalam kode prosedur selama penautan, nilai parameter StandardProcessing harus False.

Buka tab “Tautan Kumpulan Data”.

Menghubungkan set

Buka tab diagram yang sesuai (Gbr. 6).

Kita melihat bagian tabel yang sangat mirip dengan bagian tabel yang ada di perancang kueri, dengan beberapa pengecualian. Untuk kumpulan sumber komunikasi dan kumpulan tujuan komunikasi, Anda tidak dapat mencentang kotak “Semua”, tetapi beberapa kolom tambahan telah ditambahkan.

Dalam hubungan himpunan data, Anda hanya dapat membuat hubungan yang serupa dengan gabungan luar kiri konstruktor kueri.

Sebelum membuat koneksi, mari tentukan tujuan kolom:

  1. Sumber tautan adalah kumpulan data pertama yang darinya semua nilai yang tersedia akan diambil;
  2. Penerima komunikasi – sekumpulan data dari mana nilai yang sesuai dengan kondisi kita akan dipilih;
  3. Ekspresi sumber – bidang atau ekspresi kumpulan data pertama yang akan dijadikan perbandingan;
  4. Ekspresi tujuan adalah bidang atau ekspresi dari himpunan dependen;
  5. Parameter – jika Anda menentukan nama parameter di bidang ini, maka komunikasi dengan perangkat penerima hanya akan dilakukan sesuai dengan nilai yang ditentukan dalam parameter;
  6. Daftar parameter – menentukan kemungkinan menggunakan daftar nilai sebagai parameter;
  7. Kondisi koneksi – dengan menentukan ekspresi di sini menggunakan kolom sumber, Anda dapat membuat kondisi, yang pemenuhannya akan berfungsi sebagai sinyal untuk membuat koneksi;
  8. Nilai awal – menunjukkan nilai awal koneksi;
  9. Hubungan Wajib - Menentukan apakah bidang yang digunakan di sumber (diatur ke FALSE) atau tujuan (diatur ke TRUE) diaktifkan dan berdasarkan ini menambahkan hubungan ke tata letak.

Dengan demikian:

  • Sumber komunikasi adalah hasil permintaan kami;
  • Objek tersebut akan bertindak sebagai penerima;
  • Ekspresi sumbernya adalah “NomenclatureCode”;
  • Ekspresi penerima “Nomenklatur”;
  • Komunikasi bersifat wajib (Gbr. 7).

Seandainya kita menunjukkan nama nomenklatur apa pun, atau jenis reproduksinya, atau hal lain sebagai syarat penghubung, kita dapat memperoleh sampel yang lebih akurat untuk tugas kita. Hasil tindakan kita dapat dilihat pada Gambar 8

Gambar.8

Tidak ada kecocokan untuk dua baris terbawah laporan dalam file harga.

Diagram tata letak data (1C SKD)- perancang yang nyaman untuk membuat laporan kompleks dalam 1C:Produk perangkat lunak perusahaan yang berkontribusi pada pengembangan dan pelacakan otomatisasi produksi, memungkinkannya dibuat sefleksibel dan seindah mungkin dalam waktu minimum. Keuntungan tambahan dari Skema Komposisi Data (1C SKD) adalah pembuatan formulir laporan terkontrol secara otomatis, dan dengan pengembangan lebih lanjut dari bidang ini, ini merupakan faktor penting ketika memilih metode untuk mengembangkan laporan. Namun karena kompleksitas struktur Skema Komposisi Data (1C SKD) dan banyaknya pengaturan, sering kali memerlukan waktu pengembangan laporan yang lebih lama dibandingkan melalui “perancang formulir keluaran”. Oleh karena itu, seorang programmer 1C perlu memahami seluruh seluk-beluk Skema Komposisi Data (1C DCS) agar lebih mempercepat waktu pengembangan pembuatan laporan.

Mari kita lihat tiga tab pertama Skema Komposisi Data (1C SKD) - kumpulan data, koneksi kumpulan data, dan bidang terhitung.

Kumpulan data dalam 1C SKD

Kumpulan data mencakup kemampuan untuk membuat tiga objek - kueri, objek, dan gabungan, mari kita lihat lebih dekat masing-masing objek:

Ini adalah kueri reguler yang dihasilkan menggunakan tombol Pembuat Kueri. Jika tanda IsiOtomatis disetel, semua detail yang dipilih akan secara otomatis dimasukkan ke dalam bidang kumpulan data. Dimungkinkan juga untuk menyesuaikan pengisian kolom dalam permintaan pada tab Komposisi Data, di mana terdapat tiga tab:

Tabel, disini dipilih tabel yang akan ikut serta dalam pembuatan laporan, biasanya yang dipilih adalah data default, karena pada tab Tabel dan Bidang kita telah memilih dokumen, direktori, register yang kita perlukan...

Bidang, di sini kita memilih objek yang harus disertakan dalam laporan, bendera anak menunjukkan apakah akan ada elemen anak yang dapat diakses untuk objek tersebut atau tidak, logis bahwa untuk string, numerik, dan data serupa tidak dapat disetel bendera menjadi Benar.

Syaratnya, disini kita memilih objek-objek yang dapat digunakan dalam kondisi di sistem kontrol akses.

Beberapa pekerjaan dilakukan dalam skema komposisi data, dan beberapa lainnya dilakukan secara terprogram; mari kita lihat contoh sederhana:

Pertama kita akan membuat diagram layout untuk tata letak data dokumen dan menyebutnya SKD (misal: 1C SKD), di dalamnya kita membuat objek kumpulan data, lalu kita mengisi kolomnya, misalnya kita punya dokumen dengan bagian tabel barang dengan rincian - nomenklatur, jumlah dan harga.

Mari tambahkan tiga kolom dan isi setiap kolom dengan nama detailnya, kolom sisanya akan terisi secara otomatis:

Mari buat tombol pada formulir dokumen dan jelaskan mekanisme operasi dalam formulir terkontrol:

&Pada Klien

Prosedur Cetak()

Laporan Kami = PrintOnServer(); //memanggil fungsi di server

Laporan Kami.Tampilkan(); //menampilkan laporan yang dihasilkan

Prosedur Akhir

&Di server

Fungsi CetakDiServer()

DocumentObject = FormAttributeValue("Objek");

//kita menempatkan bagian tabel Produk dalam struktur dengan nama ProdukSKD dengan cara yang sama seperti yang kita tunjukkan di SKD itu sendiri nama objek yang berisi data

DataSet = Struktur baru;

DataSet.Insert("ProdukSKD", DocumentObject.Produk);

//kami mendapatkan tata letak kami dan menetapkan pengaturan default sehingga semua pengaturan keluaran laporan diambil dari tata letak kami

Tata Letak Kami = DocumentObject.GetLayout(“SKD”);

Pengaturan = Tata Letak Kami.Pengaturan Default;

//buat tata letak tata letak data dengan pengaturan kami

LayoutLinker = newDataLayoutLayoutLinker;

LayoutLayout = LayoutComposer.Execute(Layout Kami, Pengaturan);

//melakukan komposisi data dengan kumpulan data kami

DataCompositionProcessor = newDataCompositionProcessor;

DataCompositionProcessor.Inisialisasi(LayoutLayout, DataSet);

//Kami membuat dokumen spreadsheet dan menampilkan laporan kami di dalamnya

ReportDocument = Dokumen Tabular Baru;

OutputProcessor = OutputProcessorDataCompositionResultInTabularDocument Baru;

OutputProcessor.SetDocument(ReportDocument);

OutputProcessor.Output(DataCompositionProcessor);

Laporan Dokumen Pengembalian;

Fungsi Akhir

Jika mau, Anda bisa mendapatkan area dengan tata letak lain dan juga menampilkannya dalam laporan ini, misalnya, kami memiliki tata letak standar untuk menghasilkan perintah pembayaran dan tajuk dibuat dengan sangat baik di dalamnya, agar tidak melakukan pekerjaan yang tidak perlu, pertama-tama kita akan mendapatkan tata letaknya, menampilkan headernya, kemudian kita akan membuat dan menampilkan laporan kita tentang sistem kontrol akses.

TENTANG penyatuan

Kita dapat menempatkan kueri dan objek kita di dalamnya, tetapi tidak seperti koneksi, itu hanya menambahkan tabel satu sama lain, yaitu, jika kita menghubungkan dua tabel yang identik, kita akan mendapatkan satu, dan ketika digabungkan, itu akan berlipat ganda, mari kita lihat pada contoh sederhana:

Kami memiliki tabel:

Setelah komunikasi kami akan menerima:

Dan jika digabungkan:

Sekarang mari kita pertimbangkan untuk mengisi kolom dalam kumpulan data (kami akan melewatkan beberapa, karena kolom tersebut terhubung ke tab lain; kami akan kembali ke kolom tersebut di artikel mendatang):

- bidang, tunjukkan nama umum atribut;

­­- jalur, tunjukkan nama detail yang akan kami gunakan untuk merujuknya dalam sistem kontrol akses, misalnya, di Bidang terhitung;

- judul, sebutkan nama atribut yang akan ditampilkan dalam laporan;

- batasan lapangan, tunjukkan ketersediaan persyaratan ini;

- pembatasan detail, kami menunjukkan ketersediaan elemen anak, penting jika ketersediaan detail ditunjukkan, maka bidang itu sendiri akan tersedia, mungkin mekanisme ini akan diubah di rilis mendatang;

- ekspresi yang digunakan untuk menghitung representasi bidang, akan lebih mudah digunakan ketika kita perlu mengubah sedikit keluaran detailnya, misalnya, kita perlu setelah nama tata nama ditampilkan saham, dimana letaknya, lalu isikan sebagai berikut: Barang + “Ada di Gudang” + Gudang. Saya ulangi bahwa akses ke detailnya dilakukan melalui nama yang tertera di kolom jalur;

- pemesanan ekspresi, mekanisme yang mudah untuk mengatur pengurutan laporan, di mana kondisinya dapat diatur secara manual, mirip dengan poin sebelumnya, tetapi seperti yang ditunjukkan oleh praktik, mekanisme ini sering kali tidak berfungsi seperti yang kita inginkan, dan saya menyarankan Anda untuk menggunakan penyortiran standar;

- tipe nilai, menunjukkan jenis nilai atribut; ini harus diisi jika Anda menggunakan kolom berikut;

- nilai yang tersedia, hanya berfungsi saat penuh tipe nilai, buka formulir dan di kolom Arti kami menunjukkan elemen yang perlu diubah, sesuai dengan jenisnya, dapat berupa objek atau numerik yang telah ditentukan sebelumnya, misalnya detail memiliki nilai sederhana, di presentasi Kami menunjukkan apa yang perlu kami ubah, contoh tipe Boolean:

- dekorasi– pengaturan format bidang standar, mirip dengan pengaturan dalam formulir terkelola, memungkinkan Anda menyesuaikan keluaran detail tertentu dengan lebih akurat dan indah.

Koneksi kumpulan data di 1C SKD

Di sini hanya dipasang saja kiri bergabung, dengan prinsip yang mirip dengan koneksi dalam permintaan, di sumber komunikasi tentukan tabel utama untuk koneksi, in penerima tambahan. DI DALAM sumber ekspresi Dan penerima ekspresi Kami menunjukkan rincian komunikasi yang akan dilakukan. Kita akan melihat kolom yang tersisa secara lebih rinci ketika kita melihat tab. Pilihan. Jika tidak ada koneksi tambahan dengan parameter, maka disarankan untuk melakukan koneksi dalam permintaan, ini akan mempercepat laporan.