Opsi fungsional. Prinsip pengoperasian dan contoh penggunaan. Konstruksi sistem informasi terdistribusi, pencarian, tugas rutin, opsi fungsional Contoh opsi fungsional 1C


30.03.2017

Opsi fungsional 1C 8.3 (Mekanisme, penggunaan)

Untuk memulai penting Perhatikan bahwa mekanisme opsi fungsional BUKAN membatasi akses terhadap data, tetapi hanya mengontrol visibilitas (tampilan) data pada formulir. Untuk membatasi akses ke objek, platform menggunakan mekanisme peran.
Oleh karena itu, pertimbangan kami tentang mekanisme opsi fungsional akan dimulai dengan deskripsi tugas. Dalam konfigurasi mini kami ada satu direktori "Gudang". Anggaplah semua pengguna memiliki akses ke direktori ini.
Lagi! Mekanisme opsi fungsional mengontrol tampilan data pada formulir, dan tidak membatasi akses ke objek metadata (Direktori, dokumen, entri register...) Hal ini diperlukan untuk membuat pengaturan "Gunakan beberapa gudang" (Iya iya... Ini di UT 11.X, di situ juga buat organisasi). Jika kita menggunakan beberapa gudang, maka direktori gudang tersedia di antarmuka, jika tidak, maka ada perintah yang membuka satu gudang (kami berasumsi hanya ada satu dalam hal ini, dan tidak mempersulit tugas).

Objek Metadata Konfigurasi

Untuk mencapai tugas ini kita membutuhkan:
  • Dua opsi fungsional "Gunakan Banyak Gudang" dan "Jangan Gunakan Beberapa Gudang". Yang pertama bertanggung jawab atas ketersediaan direktori, dan yang kedua untuk ketersediaan perintah umum untuk memanggil algoritma “pembukaan” gudang
  • Konstanta dengan nama yang sama dengan tipe Boolean untuk menyimpan nilai opsi fungsional
  • Direktori "Gudang"
  • Perintah umum "OpenMainWarehouse". Jangan lupa untuk menentukan sekelompok perintah untuk itu, jika tidak, konfigurasi tidak akan diterapkan (akan terjadi kesalahan)
Dan kami akan menambahkan satu subsistem dimana kami akan memasukkan semua objek yang ada

Menyiapkan opsi fungsional

Opsi pertama adalah "Gunakan Banyak Gudang". Nilai disimpan dalam konstanta dengan nama yang sama, yang mencakup direktori "Gudang". Jadi, ketika nilai konstanta adalah "True" maka direktori tersedia di antarmuka, jika salah, direktori tidak akan ditampilkan di antarmuka (Isi subsistem, bentuk objek, dll.)




Fungsi kedua "Jangan Gunakan Banyak Gudang" diinstal ketika "Gunakan Beberapa Gudang" pertama TIDAK diinstal.
Itu. jika kita tidak menggunakan beberapa gudang (Gunakan Beberapa Gudang = FALSE dan buku referensi "Gudang" tidak tersedia), maka akan ditampilkan perintah "OpenMainWarehouse" yang ketersediaannya dikontrol oleh opsi "Jangan Gunakan Beberapa Gudang" (Jangan Gunakan Beberapa Gudang = BENAR)

Memeriksa perilaku sistem

Pilihan 1. UseMultipleWarehouses = Benar, Jangan GunakanMultipleWarehouses = Salah. Direktori "Gudang" tersedia di antarmuka


Pilihan 2. UseMultipleWarehouses = Salah, Don'tUseMultipleWarehouses = Benar. Direktori "Gudang" TIDAK tersedia di antarmuka; sebaliknya, perintah umum "OpenMainWarehouse" tersedia.

Dengan dirilisnya platform 1C:Enterprise 8.2, objek baru muncul di pohon konfigurasi - "Opsi fungsional". Ini secara aktif digunakan di semua konfigurasi standar berdasarkan formulir terkelola, dan berfungsi untuk menyederhanakan proses menampilkan detail dan objek individual di antarmuka. Misalnya, dalam konfigurasi Anda terdapat modul untuk bertukar dengan layanan web eksternal. Modul ini menggunakan sejumlah detail dalam dokumen, register, dan komponen individual dalam subsistem. Modul ini opsional dan tidak diperlukan untuk setiap perusahaan. Adalah logis bahwa karena tidak semua orang membutuhkan modul, maka tidak selalu perlu menampilkan semua elemen/bidang yang terkait dengannya.

Di versi platform yang lebih lama, pemecahan masalah seperti itu memerlukan penulisan kode tambahan, yang harus dipanggil di semua bagian yang bergantung. Misalnya, jika kita perlu menyembunyikan detail formulir tertentu (tergantung pada nilai pengaturan), maka kita perlu memanggil kode yang sesuai saat membuka formulir. Ini sangat tidak nyaman dan dalam banyak kasus para pengembang menyerah pada hal-hal seperti itu.

Ada baiknya jika Anda hanya perlu menyembunyikan kolom dalam bentuk dokumen, tetapi kita juga dapat memiliki formulir pendaftaran yang juga memungkinkan interaksi pengguna. Menulis fungsi kontrol tampilan universal cukup sulit dan memerlukan waktu tambahan, yang tidak pernah cukup.

Opsi fungsional dirancang untuk mengatasi hal ini dan banyak kesulitan lain yang terkait dengan menampilkan elemen antarmuka/komposisi objek yang tersedia di antarmuka pengguna. Dalam catatan ini, saya tidak akan mempertimbangkan contoh penggunaan opsi fungsional untuk tujuan utama, tetapi saya akan memperhatikan penggunaannya dengan cara yang tidak standar. Ini mungkin familier bagi banyak pengembang tingkat lanjut, tetapi saya menemukan metode ini sepenuhnya secara tidak sengaja. Lebih tepatnya, terinspirasi oleh praktik pemrograman di JavaScript.

Kasus No. 1: opsi fungsional sebagai pembungkus objek lain

Fitur non-standar pertama dari opsi fungsional adalah kemampuan untuk membuat pembungkus. Mari kita lihat contoh paling sederhana - konstanta. Misalnya, Anda menambahkan konstanta baru ke konfigurasi dengan sejumlah besar peran pengguna. Agar pengguna dapat mengakses nilai konstanta, Anda perlu mengatur hak baca ke peran yang sesuai. Jika haknya tidak ditetapkan, maka pengguna tidak akan bisa mendapatkan nilainya. Jika ada banyak peran dan peran tersebut tidak diwarisi dari peran dasar, maka Anda harus meluangkan waktu untuk mencentang kotak yang sesuai.

Opsi fungsi dapat menyelesaikan masalah ini dengan lebih elegan. Idenya adalah ini: buat sebuah konstanta (misalnya, ). Kami tidak memberikan hak padanya. Buat opsi fungsional dengan nama yang sama dan tunjukkan di properti "Penyimpanan" menunjukkan suatu konstanta "Kemungkinan Penghematan Data". Kami juga memasang benderanya "Perlakuan istimewa setelah diterima".

Itu saja, sekarang di mana pun dalam kode di mana Anda perlu merujuk ke konstanta, kami menulis seperti ini:

Karena kita telah menyetel opsi ke mode istimewa, kita tidak perlu menentukan hak tambahan apa pun untuk konstanta. Tentu saja, tidak perlu menerapkan teknik ini dalam semua situasi yang mungkin dan tidak terbayangkan. Ingat, alokasi hak yang tepat adalah kunci menuju ketenangan pikiran. Gunakan trik ini hanya dalam kasus yang benar-benar diperlukan.

Kasus No.2. Tingkat abstraksi tambahan

Saya tidak tahu harus menyebut metode ini dengan lebih tepat, tetapi menurut saya kedengarannya persis seperti itu. Mari kita lihat contoh sebelumnya. Kami masih memiliki “Kemampuan menyimpan data” yang sama. Kami bekerja dengannya menggunakan opsi fungsional dengan nama yang sama dengan pembungkus.

Sekarang bayangkan kita ingin menghilangkan konstanta dan beralih menggunakan direktori. Skenario umum untuk memecahkan masalah seperti itu (jika kita hanya menggunakan sebuah konstanta) adalah dengan menjalankan alat pencarian global untuk mendeteksi akses ke konstanta tersebut. Izinkan saya mengingatkan Anda bahwa jika kita tidak menggunakan opsi fungsional sebagai pembungkus, maka kita harus memperlakukan konstanta seperti ini:

Konstanta.Kemampuan untuk MenyimpanData.Dapatkan();

Kami menemukan semua panggilan dan menggantinya dengan jalur ke objek penyimpanan baru. Setuju, ini cukup merepotkan. Jika kita menggunakan kasus sebelumnya (menggunakan opsi fungsional sebagai pembungkus), maka untuk “memindahkan” kita hanya perlu masuk ke properti opsi fungsional dan mengubah propertinya. "Penyimpanan". Misalnya, tunjukkan di sana "Direktori" atau "Daftar informasi". Tidak diperlukan game dengan pencarian global. Kode untuk mengakses nilai konstanta melalui opsi fungsional akan tetap sama:

GetFunctionalOption("Kemampuan Menyimpan Data");

Cetak (Ctrl+P)

1. Tujuan dari opsi fungsional

Opsi fungsional memungkinkan pengembang untuk menggambarkan kemampuan solusi aplikasi, yang dapat dengan cepat diaktifkan atau dinonaktifkan pada tahap implementasi dan/atau selama pengoperasian sistem. Misalnya, kemampuan untuk bekerja dengan properti produk tambahan dapat dipisahkan menjadi opsi fungsional terpisah. Kemudian, jika Anda menonaktifkan fitur ini, semua kemampuan terkait (dengan properti produk tambahan) akan “menghilang” di antarmuka solusi aplikasi.
Sistem dapat secara otomatis memperhitungkan status pengaturan yang dibuat - menyembunyikan fitur yang dinonaktifkan, membuat antarmuka aplikasi lebih jelas dan mudah dipahami oleh pengguna.
Selama pengembangan, situasi muncul ketika nilai opsi fungsional harus bergantung pada parameter tertentu, misalnya, tidak semua organisasi memelihara akuntansi mata uang. Untuk mengimplementasikan ketergantungan seperti itu, gunakan Parameter Opsi Fungsional - objek yang membuat parameter opsi fungsional.

2. Apa pengaruh opsi fungsional?

2.1. informasi Umum

Opsi fungsional mungkin berdampak:
● Ke antarmuka pengguna - bila Anda menonaktifkan opsi fungsional apa pun, sistem akan menyembunyikan semua elemen yang terkait dengannya di antarmuka pengguna. Elemen antarmuka berikut terpengaruh:
● antarmuka perintah global;
● rincian formulir (termasuk kolom rincian formulir tipe Tabel Nilai atau Pohon Nilai);
● perintah formulir;
● laporan diimplementasikan menggunakan sistem komposisi data.
PERHATIAN! Jika aplikasi klien bekerja dengan versi file infobase melalui server web, maka mengubah opsi fungsional akan menyebabkan perubahan pada antarmuka pengguna hanya setelah memulai ulang server web (memulai ulang aplikasi klien tidak akan mengubah antarmuka pengguna).
● Untuk algoritme yang ditulis dalam bahasa bawaan – dimungkinkan untuk memperoleh nilai opsi fungsional dari bahasa bawaan dan menggunakannya dalam berbagai kondisi, misalnya, untuk mengurangi jumlah penghitungan.
PERHATIAN! Opsi fungsional dan parameternya tidak mempengaruhi komposisi database. Semua tabel dan bidang ada dalam database terlepas dari status opsi fungsionalnya.

2.2. Antarmuka perintah global

Efek opsi fungsional pada antarmuka perintah global adalah sistem menyembunyikan perintah semua objek yang terkait dengan opsi yang dinonaktifkan. Misalnya, jika nilai opsi fungsional Pembelian sama dengan False, maka perintah untuk membuka bagian Pembelian, membuat dokumen Penerimaan Barang, membuka daftar Penerimaan Barang, dll akan disembunyikan.
Pada gilirannya, opsi Pembelian dapat memperhitungkan nilai parameter opsi fungsional, misalnya Organisasi. Dengan mengubah nilai parameter ini menggunakan metode bahasa bawaan, Anda dapat mengubah status opsi fungsional, dan akibatnya, visibilitas elemen antarmuka.
Anda juga harus mempertimbangkan fitur pembentukan antarmuka perintah berikut:
● Perintah akan dikecualikan dari antarmuka perintah jika atribut yang merupakan parameter perintah dinonaktifkan oleh opsi fungsional.
● Perintah akan dikecualikan dari antarmuka perintah jika jenis parameter perintah dinonaktifkan oleh opsi fungsional. Jika tipe parameter perintah adalah gabungan, perintah menjadi tidak tersedia ketika semua tipe parameter dinonaktifkan.

2.3. Membentuk

Dalam formulir, opsi fungsional bisa memengaruhi detail formulir dan perintah dan (sebagai hasilnya) mengubah visibilitas elemen formulir yang terkait dengannya (bidang dan kolom untuk detail formulir, tombol untuk perintah formulir). Saat mengembangkan formulir, fitur perilaku sistem berikut harus diperhitungkan:
<Вид>Sebuah Objek ( Objek Direktori t, DocumentObject, dll.) akan dinonaktifkan jika objek konfigurasi terkait dinonaktifkan oleh opsi fungsional. Hanya opsi fungsional yang tidak memiliki parameter yang dianalisis.
● Atribut dasar tipe formulir terkelola Daftar Dinamis akan dinonaktifkan jika opsi fungsional menonaktifkan objek konfigurasi yang ditentukan sebagai tabel utama daftar dinamis. Hanya opsi fungsional yang tidak memiliki parameter yang dianalisis.
● Atribut formulir dari tipe referensi dinonaktifkan jika objek konfigurasi yang membentuk tipe ini dinonaktifkan oleh opsi fungsional. Atribut formulir tipe komposit dinonaktifkan jika opsi fungsional menonaktifkan semua tipe konstituen.
● Atribut formulir tipe dinonaktifkan<Вид>Sebuah objek (termasuk atribut formulir utama), jika objek konfigurasi yang membentuk tipe ini dinonaktifkan oleh opsi fungsional. Hanya opsi fungsional yang tidak memiliki parameter yang dianalisis.
● Tabel formulir akan dinonaktifkan jika menampilkan data atribut formulir yang dinonaktifkan oleh opsi fungsional.
● Tidak ada tipe dalam dialog pemilihan tipe (misalnya, untuk kolom input yang terkait dengan atribut tipe kompleks) jika objek konfigurasi yang membentuk tipe ini dinonaktifkan oleh opsi fungsional. Informasi tentang tipe yang dinonaktifkan oleh opsi fungsional di-cache di sisi klien dan dihapus setelah 20 menit atau selama pemanggilan metode Perbarui Antarmuka().
PERHATIAN! Berbeda dengan antarmuka perintah, nilai parameter opsi fungsional ditetapkan hanya untuk contoh formulir tertentu.

2.4. Sistem komposisi data

Sistem komposisi data terutama digunakan untuk menghasilkan laporan. Opsi fungsional mempengaruhi komposisi data yang ditampilkan dalam laporan dan komposisi pengaturan laporan yang tersedia bagi pengguna. Misalnya, jika opsi fungsional Akuntansi mata uang dinonaktifkan, maka dalam laporan yang menampilkan daftar dokumen Penerimaan barang, tidak akan ada kolom Mata Uang dan Jumlah Mata Uang, dan dalam pengaturan tidak akan ada kemampuan untuk memilih, mengelompokkan, mengurutkan, dll. di kolom Mata Uang.

2.5. Karakteristik

Opsi fungsional mempengaruhi visibilitas bidang formulir yang menampilkan nilai karakteristik suatu objek. Untuk melakukan ini, Anda harus menyertakan dalam opsi fungsional atribut yang menyimpan nilai karakteristik.
Mari kita lihat sebuah contoh. Karakteristik digunakan untuk direktori Produk; tipe karakteristik disimpan dalam rencana tipe karakteristik Karakteristik, dan nilai-nilai sebagai sumber informasi register Nilai karakteristik. Sumber daya termasuk dalam opsi fungsional Akuntansi Karakteristik.

Beras. 1. Dampak opsi fungsional terhadap kinerja

Jika opsi fungsional dinonaktifkan Akuntansi Karakteristik Dalam formulir, visibilitas bidang (kolom Nilai dan bidang Nilai) yang menampilkan nilai karakteristik dinonaktifkan, seperti yang ditunjukkan pada Gambar 1.

3. Skema kerja umum

Mekanisme opsi fungsional mencakup dua jenis objek metadata: Opsi fungsional Dan .
Opsi fungsional adalah objek metadata yang dapat secara langsung mempengaruhi komposisi antarmuka aplikasi (jika opsi fungsional menyimpan nilainya dalam atribut Boolean). Dengan menggunakan objek jenis ini, Anda dapat menyembunyikan elemen yang terkait dengan fungsionalitas yang tidak tersedia. Misalnya, opsi Akuntansi mata uang dapat menyembunyikan direktori Mata Uang, bidang Mata Uang dari dokumen, dan kolom Jumlah mata uang dari laporan. Sumber nilai opsi fungsional adalah objek metadata yang dipilih sebagai properti Penyimpanan, misalnya ini
mungkin sebuah konstanta.
Jika nilai opsi fungsional disimpan dalam atribut direktori atau sumber daya register informasi, diperlukan informasi tambahan yang menunjukkan dengan tepat cara memilih nilai opsi. Untuk tujuan ini, objek metadata terpisah disediakan - Parameter Opsi Fungsional.
Kita dapat mengatakan bahwa parameter opsi fungsional adalah sumbu koordinat ruang nilai opsi fungsional. Selain itu, satu parameter opsi fungsional dapat menentukan nilai sumbu koordinat “nya” secara bersamaan untuk banyak opsi fungsional.


Beras. 2. Opsi fungsi yang dapat diparameterisasi

Mari kita perhatikan sebuah contoh: katakanlah total akuntansi bergantung pada gudang yang dimiliki oleh organisasi tertentu (lihat Gambar 98). Di kami basis informasi
Anda dapat menyimpan catatan atas nama organisasi yang berbeda dan di gudang yang berbeda.
Untuk menyimpan nilai opsi fungsional, kita akan membuat register informasi, dimana dimensi (sumbu koordinat) adalah:

● Organisasi (dari jenis yang sesuai);
● Gudang (dari tipe yang sesuai).

Sumber daya register informasi akan menjadi nilai dari total opsi fungsional akuntansi.
Maka struktur konfigurasi keseluruhan akan terlihat seperti ini:
● Daftar informasi SummovayaAccounting:
● Dimensi organisasi;
● dimensi Gudang;
● sumber daya SummovayaAccount, yang memiliki tipe Boolean.
● Parameter opsi fungsional Organisasi. Properti Penggunaan menunjukkan Organisasi dimensi register informasi SummativeAccounting.
● Parameter opsi fungsional Gudang. Properti Penggunaan menunjuk ke dimensi Gudang register informasi SumAccounting.
● Opsi fungsional SumAccounting. Properti Storage menunjuk ke sumber daya SummovayaAccounting untuk register informasi SummovayaAccounting.
Akibatnya, untuk menentukan kebutuhan untuk memelihara akuntansi total, kita perlu menunjukkan dalam setiap kasus nilai parameter opsi fungsional (Organisasi dan Gudang) dan mendapatkan nilai opsi fungsional.
Jadi, dalam contoh yang ditunjukkan pada Gambar 2, akuntansi total diperbolehkan untuk Organisasi 1 dan Gudang 1, tetapi akuntansi total dilarang untuk Organisasi 2 dan Gudang 1.

4. Interaksi dengan objek lain

Opsi fungsional dapat ditetapkan ke objek konfigurasi berikut:
● Subsistem,
● Perintah umum,
Bentuk umum,
● Konstanta,
Kriteria seleksi,
● Direktori,
● Dokumen,
● Majalah,
● Bagan akun,
● Rencana jenis karakteristik,
● Rencana jenis perhitungan,
● Proses bisnis,
● Tugas,
● Rencana pertukaran,
● Laporkan,
● Pemrosesan,
Daftar akumulasi,
● Daftar informasi,
● Daftar akuntansi,
● Daftar perhitungan,
● Tim,
● Detail objek metadata,
● Bagian tabel,
● Detail bagian tabel,
● Atribut akuntansi,
● Atribut akuntansi subconto,
● Mengatasi detail,
Daftarkan pengukuran,
● Daftarkan sumber daya.
Opsi fungsional juga dapat memengaruhi visibilitas elemen formulir.

5. Penciptaan

5.1. Membuat Opsi Fungsi

Untuk membuat opsi fungsional, Anda perlu membuat objek konfigurasi Opsi Fungsional. Hal ini dapat dilakukan dalam mode Configurator dengan cara biasa, yaitu pada jendela konfigurasi, pilih Umum, lalu Opsi fungsional dan tambahkan objek baru.

Beras. 3. Penciptaan opsi fungsional

Ini akan membuat objek konfigurasi Opsi Fungsional yang dapat digunakan untuk menetapkan opsi fungsional ke objek metadata lainnya.


Beras. 4. Menyimpan nilai opsi fungsional

Selain namanya, objek memiliki properti wajib – Penyimpanan. Di editor, Anda dapat memilih salah satu objek yang akan menjadi sumber nilai opsi. Daftar objek yang tersedia meliputi:
● konstanta,
● detail direktori,
● sumber daya register informasi.
Tidak ada batasan pada tipe sumber nilai opsi, tetapi hanya opsi fungsional yang menyimpan nilainya dalam atribut tipe Boolean yang cocok untuk mengelola antarmuka. Nilai opsi fungsional dengan tipe lain hanya tersedia untuk penguraian dalam bahasa bawaan.
Mode Istimewa pada properti pengambilan mengontrol bagaimana nilai opsi fungsional diambil (dan di-cache).


Beras. 5. Mode istimewa saat menerima nilai opsi fungsional

Jika properti ini disetel, nilai opsi fungsional diperoleh dalam mode istimewa. Nilai yang dihasilkan di-cache untuk semua sesi yang terkait dengan basis info ini.
Jika properti Mode Istimewa dihapus saat pengambilan, maka pengambilan nilai opsi fungsional dilakukan dalam mode normal.
Caching dilakukan untuk sesi saat ini. Baik nilai (jika memungkinkan untuk memperolehnya) maupun tanda ketidakmungkinan memperoleh nilai (jika tidak mungkin memperoleh nilai) disimpan dalam cache.
Cache disetel ulang ketika nilai parameter sesi diubah.
NASIHAT. Disarankan untuk mengatur properti Mode Istimewa pada Penerimaan untuk semua kasus di mana nilai opsi fungsional tidak berisi informasi sensitif.

5.2. Membuat Parameter Opsi Fungsional

Untuk membuat parameter opsi fungsional, Anda perlu membuat objek konfigurasi Parameter Opsi Fungsional. Hal ini dapat dilakukan pada mode Configurator dengan cara biasa yaitu pada jendela konfigurasi pilih General lalu Parameter Opsi Fungsional dan menambahkan objek baru.

Selain namanya, parameter tersebut memiliki properti Penggunaan yang diperlukan. Ini menentukan sekumpulan objek yang nilainya akan menentukan bagaimana nilai opsi fungsional harus dipilih. Daftar objek yang tersedia mencakup direktori dan dimensi register informasi. Untuk setiap parameter opsi fungsional dalam daftar ini, Anda dapat memilih satu direktori (dari seluruh daftar direktori) dan satu dimensi dari setiap register informasi.
PERHATIAN! Anda tidak dapat menggunakan objek metadata yang sama dalam beberapa parameter opsi fungsi.

6. Penggunaan

6.1 Menetapkan metadata ke objek

Objek metadata (misalnya, direktori) dapat ditetapkan ke satu atau beberapa opsi fungsional. Untuk melakukannya, gunakan properti Opsi fungsional, yang berisi tautan ke opsi fungsional yang dibuat dalam konfigurasi.

Beras. 6. Menetapkan opsi fungsional pada suatu objek

Daftar opsi yang tersedia hanya terbatas pada opsi yang objek dengan tipe nilai Boolean ditetapkan di properti Penyimpanan.
PERHATIAN! Jika suatu objek tidak diberi opsi fungsional apa pun, maka objek tersebut dianggap selalu terlihat. DI DALAM jika tidak suatu objek dianggap terlihat jika setidaknya salah satu opsi fungsional yang ditetapkan padanya diaktifkan (yaitu, opsi fungsional digabungkan “ATAU”).

6.2. Tugas untuk membentuk detail dan perintah

Objek yang termasuk dalam formulir (Rincian dan Perintah) juga dapat digunakan dalam mekanisme opsi fungsional.


Beras. 7. Menetapkan opsi fungsional ke suatu perintah

Hal ini dapat dilakukan di editor formulir dengan mengatur properti Opsi fungsional untuk objek yang diperlukan.
Keadaan opsi fungsional akan mempengaruhi tampilan objek formulir dengan cara yang sama seperti halnya dengan objek metadata.
Misalnya, jika perintah dinonaktifkan menggunakan opsi fungsi, semua tombol terkait akan dihapus.
Jika tidak ada opsi fungsional yang ditetapkan ke atribut atau perintah formulir, maka atribut atau perintah formulir selalu dianggap terlihat. Jika tidak, atribut formulir atau perintah dianggap terlihat jika setidaknya salah satu opsi fungsional yang ditetapkan padanya diaktifkan.

6.3. Gunakan dalam mekanisme pembatasan akses data

Di bawah mekanisme pembatasan akses data Opsi fungsional dapat digunakan dengan cara yang sama seperti Opsi Sesi. Hanya diperbolehkan menggunakan opsi yang tidak bergantung pada parameter, yaitu opsi yang terikat pada konstanta.
PERHATIAN! Sistem mengontrol keunikan nama antara parameter sesi dan opsi fungsional.

6.4. Menentukan nilai opsi fungsional

Nilai opsi fungsional ditentukan oleh objek yang ditentukan di properti Penyimpanan. Dalam kasus konstanta, nilainya digunakan. Untuk opsi yang terkait dengan atribut direktori atau sumber daya register informasi, nilai disimpan dalam objek ini. Untuk menemukan objek tertentu yang menyimpan nilai opsi fungsional, diperlukan informasi tambahan - sekumpulan nilai untuk parameter opsi fungsional.
Jika opsi disimpan dalam atribut direktori, parameter tersebut harus berisi tautan ke elemen direktori tertentu. Jika opsi disimpan dalam sumber daya register detail, nilai semua dimensi register harus ditentukan. Selain itu, setiap pengukuran harus memiliki parameternya sendiri-sendiri.
Jika tidak semua parameter ditentukan untuk opsi fungsional tipe Boolean, maka OR menambahkan semua nilai dengan parameter yang tidak ditentukan. Misalnya, jika opsi fungsional disimpan dalam register informasi dengan dimensi Organisasi dan Gudang dan hanya dimensi Organisasi yang ditentukan, maka nilai opsi fungsional akan sama dengan True jika setidaknya salah satu gudang terdaftar di Gudang dimensi memiliki nilai opsi fungsional sama dengan True.
Untuk opsi fungsi yang bertipe selain Boolean, situasi dengan parameter yang ditentukan tidak lengkap mengakibatkan pengecualian dilempar.
Metode bahasa bawaan memungkinkan Anda mendapatkan nilai suatu opsi, baik bergantung pada parameter yang diteruskan maupun untuk parameter yang ditetapkan
untuk antarmuka perintah atau bentuk tertentu. Jika perubahan nilai objek yang ditentukan dalam properti Opsi fungsional penyimpanan dilakukan dalam suatu transaksi, nilai sebenarnya dari opsi fungsional akan diubah hanya setelah transaksi selesai. Saat transaksi terbuka, nilai opsi fungsional akan sama dengan nilai saat ini pada awal transaksi.
Jika opsi fungsional dikaitkan dengan sumber daya register informasi periodik, maka sistem akan menggunakan bagian dari sumber daya tersebut untuk mendapatkan nilai opsi. Jika Anda ingin mendapatkan nilai opsi untuk tanggal lain, Anda harus menentukan nilai untuk parameter opsi fungsional Periode (Periode), yang bertipe Tanggal, yang akan digunakan sebagai tanggal penerimaan potongan. Parameter ini tidak perlu dibuat di metadata. Ini disediakan secara otomatis oleh sistem.

Saat menggunakan opsi fungsional berparameter, pertimbangkan perilaku berikut:
● Dalam formulir daftar, kolom atribut yang terkait dengan opsi fungsional berparameter akan ditampilkan jika setidaknya satu nilai yang diaktifkan dari opsi fungsional ini disimpan di basis info.
● Jika saat membuka formulir, detail yang terkait dengan opsi fungsional dinonaktifkan secara default, maka Anda perlu
atur nilai parameter ini ke nilai yang tidak ada di basis info (untuk direktori - tautan kosong, untuk register informasi - nilai pengukuran yang tidak ada catatannya). Dalam hal ini, opsi fungsional akan memiliki nilai False.
● Jika referensi ke grup ditentukan sebagai parameter (jika tipe parameter opsi fungsional mengizinkan pembuatan grup), dan bukan referensi ke elemen, perilaku sistem akan menjadi sebagai berikut:
● jika atribut yang menyimpan nilai opsi fungsional digunakan untuk elemen dan grup, maka nilai opsi fungsional akan ditentukan oleh nilai atribut ini.
● jika atribut yang menyimpan nilai opsi fungsional tidak digunakan untuk grup, maka saat memperoleh nilai opsi fungsional menggunakan metode Dapatkan Opsi Fungsional(), () dan () akan mengembalikan NULL. Jika opsi fitur yang diparameterisasi dengan nilai ini berdampak pada antarmuka pengguna, sistem akan menganggapnya dinonaktifkan (opsi fitur akan memiliki nilai False).
● Untuk objek metadata pembentuk perintah, dimungkinkan untuk mengatur pengikatan ke opsi fungsional yang diparameterisasi. Di antarmuka perintah, perintah objek tersebut akan ditampilkan hanya jika ada setidaknya satu kombinasi parameter opsi fungsional yang nilai opsi fungsionalnya Benar. Namun, dengan menggunakan metode (), Anda dapat menetapkan nilai spesifik untuk parameter opsi fungsional, dan kemudian visibilitas
perintah akan ditentukan secara tepat oleh parameter yang ditentukan.
● Daftar dinamis secara otomatis menggunakan opsi fungsional yang digunakan oleh formulir. Jika detail yang digunakan dalam permintaan daftar dinamis dinonaktifkan untuk kombinasi parameter opsi fungsional tertentu, data untuk parameter tersebut tidak akan dipilih dan ditampilkan dalam daftar dinamis, dan atribut tersebut akan dihapus dari daftar detail yang tersedia di daftar dinamis. dialog pengaturan tampilan data
daftar dinamis (dalam mode 1C:Enterprise).

7. Bekerja dengan opsi fungsional dalam bahasa bawaan

Metode Konteks Global DapatkanFunctionOption() Dan DapatkanInterfaceFungsionalOption() mengembalikan nilai fungsi
pilihan. Perbedaan di antara keduanya adalah metode pertama memungkinkan Anda menentukan sekumpulan parameter untuk opsi fungsional, dan metode kedua mengembalikan nilai opsi fungsional berdasarkan parameter yang ditentukan untuk antarmuka perintah. Formulir memiliki metodenya sendiri yang mengembalikan nilai opsi untuk parameter yang ditentukan dalam formulir - Dapatkan FunctionalOptionForm().
Untuk memperbarui antarmuka perintah global, Anda harus memanggil metode secara eksplisit Tetapkan Parameter Opsi Antarmuka Fungsional().
Antarmuka perintah akan diperbarui untuk mencerminkan status opsi fungsional yang baru.
CATATAN E. Jika nilai opsi fungsional berubah dalam database, maka pembaruan otomatis Tidak ada antarmuka perintah global atau formulir terbuka saat ini. Untuk melakukan ini, Anda harus menggunakan metode ini Perbarui Antarmuka() setelah menulis nilai opsi fungsional ke database.
Harap diingat bahwa mengatur parameter opsi fungsional (dan menjalankan metode Perbarui Antarmuka()) menyebabkan konsekuensi berikut:
● untuk setiap formulir, penutupan semua formulir tambahan dipanggil (dengan penangan terkait dipanggil);
● formulir yang menolak untuk ditutup tidak ditutup;
● komposisi elemen formulir utama diperbarui;
● jika pada saat memperbarui antarmuka bentuk aktif adalah yang utama, bentuk utama ditampilkan sesuai dengan komposisi unsur yang baru;
● jika pada saat memperbarui antarmuka formulir yang aktif adalah formulir tambahan, maka:
● perintah untuk membuka formulir tambahan akan dijalankan, jika tersedia setelah memperbarui antarmuka;
● jika tidak, komposisi elemen formulir utama diperbarui dan ditampilkan;
● jika pada saat memperbarui antarmuka formulir aktif adalah formulir tambahan yang dibuka menggunakan perintah yang tidak terkait dengan panel navigasi formulir, maka komposisi elemen formulir utama akan diperbarui dan akan ditampilkan sebagai ganti formulir ini .
Untuk memperbarui formulir tertentu, Anda harus membukanya kembali atau memanggil metodenya SetFormFungsionalOptionsParameters(),
dalam hal ini, urutan tindakan yang dijelaskan di atas hanya berfungsi untuk formulir dalam konteks yang disebut pengaturan parameter opsi fungsional formulir.
Tidak perlu menentukan semua parameter sekaligus; Anda dapat mengubah nilai parameter tertentu atau kumpulan parameter secara selektif. Tetapi penetapan nilai-nilai kelompok dengan satu panggilanlah yang lebih efektif.
Untuk mendapatkan nilai parameter, Anda harus memanggil fungsi yang sesuai ( DapatkanParametersFunctionalOptionsInterface() atau
DapatkanFormFungsionalOptionsParameters()), yang akan mengembalikan parameter yang disetel dalam bentuk struktur, dengan kuncinya adalah nama parameter.
Saat dibuka, formulir secara otomatis menggunakan parameter opsi fungsional yang ditetapkan untuk antarmuka perintah.

Opsi fungsional– ini adalah salah satu fitur baru dari platform 1C:Enterprise 8.2. Inti dari penggunaannya adalah memungkinkan Anda untuk menyesuaikan antarmuka pengguna sesuai dengan pengaturan opsi fungsional dan mengatur visibilitas detail dalam formulir. Selain itu, pengembang memiliki kemampuan untuk mengimplementasikan kode program, yang pelaksanaannya bergantung pada status opsi fungsional.

Mari buat opsi fungsional yang memungkinkan Anda mengaktifkan atau menonaktifkan penghitungan upah dalam konfigurasi. Dengan bantuannya, kita dapat dengan cepat menyembunyikan bagian-bagian antarmuka yang berhubungan dengan penyelesaian masalah perhitungan. Opsi fungsi itu sendiri tidak menyimpan nilai apa pun yang memungkinkannya diaktifkan atau dinonaktifkan. Biasanya, sebuah konstanta digunakan untuk menyimpan status opsi fungsional, meskipun konstanta juga dapat diikat ke objek lain, misalnya, ke atribut suatu objek.

Mari kita buat konstanta baru dan beri nama Akuntansi Gaji, jenis - Boolean. Mari kita sertakan konstanta dalam subsistem Administrasi dan menjadi bentuk konstan sehingga kita dapat mengeditnya. Selain itu, dalam bentuk konstanta, kita akan mengatur handler AfterWrite sebagai berikut:

&Pada Prosedur Klien AfterRecord(RecordParameters) UpdateInterface(); Akhir Prosedur

Arti menggunakan perintah PerbaruiAntarmuka() adalah memperbarui dan menggambar ulang antarmuka setelah perubahan konstanta yang terkait dengan opsi fungsional berlaku. Jika tidak, Anda harus memulai ulang konfigurasi agar perubahan dapat diterapkan.

Mari buat opsi fungsional baru dan beri nama Akuntansi Gaji, di penanda Dasar, dalam parameter Penyimpanan Mari kita tunjukkan konstanta yang baru saja dibuat, Gambar. 7.23. Mari sertakan opsi fungsional dalam subsistem Administrasi.


Beras. 7.23.

Sekarang mari kita pergi ke tab jendela pengaturan opsi fungsional Menggabungkan dan pilih semuanya (Gbr. 7.24) yang berhubungan dengan perhitungan penggajian. Jika ada objek, misalnya direktori, milik bagian konfigurasi yang berbeda, kami tidak akan menandainya, jika tidak, ketika opsi fungsional dinonaktifkan, objek tersebut akan “menghilang” dari antarmuka.


Beras. 7.24.

Pemilihan subsistem Persiapan penggajian V pada kasus ini tidak secara otomatis memilih semua objek yang termasuk dalam subsistem. Saat memilih, yang kami maksud hanyalah menyembunyikan atau menampilkan bagian antarmuka perintah Persiapan penggajian.

Dengan menjalankan sistem dalam mode pengguna, kita dapat mengaktifkan atau menonaktifkan visibilitas objek yang terkait dengan subsistem gaji konfigurasi kita, cukup dengan menyetel atau menghapus centang pada bendera konstanta Akuntansi Gaji.

Lebih sulit kasus penggunaan opsi fungsional terdiri dari pengaturan visibilitas elemen formulir individual jika nilai opsi fungsional disimpan dalam atribut suatu objek.

Mari kita lakukan perubahan pada konfigurasi, khususnya pada direktori Individu tambahkan atribut tipe logis Memiliki Pengalaman di Bidang Pelayanan Personalia dan letakkan pada bentuk elemen direktori.

Mekanisme opsi fungsional adalah salah satu alat pengembangan. Ini memungkinkan Anda untuk menentukan dalam konfigurasi fungsionalitas yang mungkin digunakan atau tidak digunakan selama implementasi, tergantung pada kebutuhan organisasi tertentu.

Pengoperasian mekanisme ini didasarkan pada dua objek konfigurasi:

  • Opsi fungsional
    Objek konfigurasi dan detailnya dapat dikaitkan dengan opsi fungsional yang ditambahkan ke solusi aplikasi. Misalnya dengan opsi fungsional Akuntansi gudang Anda dapat menghubungkan alat peraga Saham dokumen Tanda terima barang. Kemudian, jika Anda mengaktifkan opsi fungsional ini dalam mode 1C:Enterprise, bidangnya Saham akan ditampilkan di semua formulir dokumen. Jika Anda mematikannya - lapangan Saham tidak akan ditampilkan. Baca selengkapnya...
  • Parameter opsi fungsional
    Opsi fungsional dapat digunakan dengan parameter. Misalnya saja agar tampilan suatu form tertentu dapat bergantung pada nilai parameter yang dipilih pada form tersebut. Misalnya, berdasarkan parameter opsi fungsi Akuntansi mata uang Mungkin Organisasi. Kemudian, tergantung pada organisasi mana yang dipilih, bidangnya Mata uang penyelesaian bersama akan disembunyikan atau ditampilkan. Baca selengkapnya...
Pilihan Editor
- Ini adalah neoplasma bulat jinak yang merupakan hasil dari pertumbuhan selaput lendir yang melapisi rongga hidung. Oleh...

Pinggul mawar liar, perwakilan dari keluarga Rosaceae, merupakan gudang nutrisi berharga yang sangat diperlukan manusia...

Artikel ini diambil dari situs saya yang lain, yang berjudul “Kekuatan Penyembuhan Resin”. Saya tidak mengerti gunanya menulis tentang hal yang sama, jadi...

Milk thistle yang juga sering disebut tartar merupakan tanaman yang sangat populer. Rumput ini dengan bunga yang tidak ekspresif...
Terima kasih Situs ini menyediakan informasi referensi untuk tujuan informasi saja. Diagnosis dan pengobatan penyakit harus dilakukan berdasarkan...
Mendengkur merupakan suatu proses tertentu yang disertai dengan suara berderak mirip getaran. Gejala yang tidak menyenangkan menunjukkan...
Cara cepat mengencerkan darah di rumah Untuk mencegah stroke, aterosklerosis, dan serangan jantung, perlu dilakukan...
Darah adalah komponen terpenting dalam tubuh, karena fungsi utamanya adalah memastikan fungsi normal dan...
Keistimewaan unik dari milk thistle adalah fakta bahwa ia mengandung silymarin: kompleks alami yang kuat...