03.04.2022
Rumah / Konsol permainan / Modul di perusahaan 1s. Modul umum. Tandai "Gabungan luar"

Modul di perusahaan 1s. Modul umum. Tandai "Gabungan luar"

Modul umum 1C- objek metadata konfigurasi 1C 8.3 dan 8.2, yang menyimpan kode program yang sering disebut dalam konfigurasi. Fungsi/prosedur dapat dipanggil dari mana saja dalam konfigurasi (jika diekspor).

Cara menggunakan modul bersama

Merupakan praktik yang baik untuk menempatkan prosedur atau fungsi dalam modul umum jika dipanggil di lebih dari satu tempat. Pertama, jika suatu prosedur dikoreksi, itu hanya perlu dikoreksi di satu tempat. Kedua, ia mencapai urutan yang lebih besar dalam kode.

Contoh tipikal dari modul umum adalah pemrosesan posting menurut beberapa register, mendapatkan jumlah selisih hari kerja, mengubah nilai tukar, menghitung ulang kuantitas/harga/jumlah di bagian tabel, dan fungsi lainnya.

Properti Modul Umum

Salah satu perbedaan utama antara modul bersama dan modul lain adalah Anda tidak dapat mendeklarasikan variabel bersama.

Dapatkan pelajaran video 267 1C gratis:

Mari kita lihat lebih dekat pada palet properti dari modul umum:

  • Global- jika flag disetel, fungsi dan prosedur dari modul ini akan tersedia dalam konteks global. Itu. mereka dapat dipanggil di mana saja dalam konfigurasi tanpa nama modul umum. Namun, kondisi ditambahkan - nama prosedur dan fungsi dalam modul umum ini harus unik dalam konteks global.
  • Server- Prosedur dan fungsi modul umum ini dapat dijalankan di server.
  • Gabung luar- kode program dari modul umum ini dapat dijalankan saat dihubungkan oleh sumber eksternal (misalnya, COM).
  • Klien (aplikasi terkelola)— Prosedur dan fungsi modul umum ini dapat digunakan di klien tebal dalam mode aplikasi terkelola.
  • Klien (aplikasi biasa)— kode program modul umum ini dapat digunakan di klien tebal dalam mode aplikasi normal.
  • Panggilan server- flag yang memungkinkan klien untuk menggunakan prosedur dan fungsi dari modul umum ini.
  • - jika disetel ke True, pemeriksaan hak akses akan dinonaktifkan dalam modul umum ini.
  • Penggunaan kembali— menentukan pengaturan untuk nilai yang dikembalikan, jika opsi diaktifkan, maka setelah eksekusi pertama, sistem akan mengingat nilai untuk parameter input ini dan akan mengembalikan nilai yang sudah jadi. Itu dapat mengambil nilai-nilai berikut: tidak digunakan- menutup, pada saat panggilan- selama prosedur tertentu, selama sesi- sampai pengguna menutup sesi (program).

Jika Anda mulai belajar pemrograman 1C, kami merekomendasikan kursus gratis kami (jangan lupa

1.1. Modul umum dibuat untuk mengimplementasikan prosedur dan fungsi yang digabungkan menurut beberapa kriteria. Sebagai aturan, prosedur dan fungsi dari satu subsistem konfigurasi (penjualan, pembelian) atau prosedur dan fungsi fungsi serupa (bekerja dengan string, tujuan umum) ditempatkan dalam satu modul umum.

1.2. Saat mengembangkan modul bersama, Anda harus memilih salah satu dari empat konteks eksekusi kode:

Jenis modul umum Contoh penamaan Panggilan server Server Gabung luar Pelanggan
(aplikasi biasa)
Pelanggan
(aplikasi terkelola)
1. ServerTujuan Umum (atau Server Tujuan Umum)
2. Server untuk menelepon dari klienServer Panggilan Tujuan Umum
3. KlienKlien Tujuan Umum (atau Tujuan Umum Global)
4. Server klienServer Klien Tujuan Umum

2.1. Modul Umum Server dimaksudkan untuk meng-host prosedur dan fungsi server yang tidak tersedia untuk digunakan dari kode klien. Mereka menerapkan semua logika bisnis server internal aplikasi.
Agar konfigurasi berfungsi dengan benar dalam koneksi eksternal, mode aplikasi terkelola dan reguler, prosedur dan fungsi server harus ditempatkan dalam modul umum dengan karakteristik berikut:

  • Server(kotak centang Panggilan server menjatuhkan),
  • Klien (aplikasi biasa),
  • Gabung luar.

Dalam hal ini, dijamin bahwa prosedur dan fungsi server dapat dipanggil dengan parameter tipe yang dapat diubah (misalnya, DirektoriObjek, Objek Dokumen dll.). Sebagai aturan, ini adalah:

  • penangan untuk berlangganan acara dokumen, direktori, dll., yang mengambil nilai (objek) yang dapat diubah sebagai parameter.
  • prosedur dan fungsi server, tempat objek dilewatkan sebagai parameter dari modul direktori, dokumen, dll., serta dari modul dengan langganan acara.

Modul umum server diberi nama sesuai dengan aturan umum untuk penamaan objek metadata.
Sebagai contoh: Bekerja dengan File, Tujuan umum

Dalam beberapa kasus, postfix dapat ditambahkan untuk mencegah konflik nama dengan properti konteks global. "Pelayan".
Sebagai contoh: Server Tugas Terjadwal, Server Pertukaran Data.

2.2. Modul umum server yang akan dipanggil dari klien berisi prosedur dan fungsi server yang tersedia untuk digunakan dari kode klien. Mereka membuat API klien dari server aplikasi.
Prosedur dan fungsi tersebut ditempatkan dalam modul umum dengan atribut:

  • Server(kotak centang Panggilan server mengatur)

Modul umum server yang akan dipanggil dari klien diberi nama sesuai dengan aturan umum untuk penamaan objek metadata dan harus diberi nama dengan postfix "Panggilan Server".
Sebagai contoh: Bekerja Dengan FileMemanggil Server

Perhatikan bahwa prosedur dan fungsi ekspor dalam modul umum tersebut tidak boleh berisi parameter tipe yang dapat diubah ( DirektoriObjek, Objek Dokumen dll.), karena transfer mereka dari (atau ke) kode klien tidak mungkin.

Lihat juga:Batasan pengaturan flag "Server call" untuk modul umum

2.3. Modul Bersama Klien berisi logika bisnis klien (fungsi yang ditentukan hanya untuk klien) dan memiliki karakteristik sebagai berikut:

  • Klien (aplikasi terkelola)
  • Klien (aplikasi biasa)

Pengecualian adalah ketika prosedur dan fungsi klien seharusnya hanya tersedia dalam mode aplikasi terkelola (hanya dalam mode aplikasi normal atau hanya dalam mode keluar). Dalam kasus seperti itu, kombinasi lain dari dua fitur ini dapat diterima.

Modul umum klien diberi nama dengan postfix "Pelanggan".
Sebagai contoh: Klien File Kerja, Pelanggan Tujuan Umum

Lihat juga: meminimalkan kode sisi klien

2.4. Dalam beberapa kasus, dimungkinkan untuk membuat modul umum klien-server dengan prosedur dan fungsi, yang isinya sama di server dan klien. Prosedur dan fungsi tersebut ditempatkan dalam modul umum dengan fitur:

  • Klien (aplikasi terkelola)
  • Server(kotak centang Panggilan server mengatur ulang)
  • Klien (aplikasi biasa)
  • Gabung luar

Modul umum semacam ini diberi nama dengan postfix "Server klien".
Sebagai contoh: Klien File Kerja, Server Klien Tujuan Umum

Secara umum, tidak disarankan untuk mendefinisikan modul umum untuk server dan klien (aplikasi terkelola) secara bersamaan. Fungsionalitas yang ditentukan untuk klien dan server direkomendasikan untuk diterapkan dalam modul umum yang berbeda - lihat hal. 2.1 dan 2.3. Pemisahan eksplisit logika bisnis klien dan server ditentukan oleh pertimbangan untuk meningkatkan modularitas solusi yang diterapkan, menyederhanakan kontrol pengembang atas interaksi klien-server dan mengurangi risiko kesalahan karena perbedaan mendasar dalam persyaratan untuk mengembangkan klien dan server. kode (kebutuhan untuk meminimalkan kode yang dieksekusi pada klien , ketersediaan objek dan jenis platform yang berbeda, dll.). Pada saat yang sama, seseorang harus mengingat peningkatan yang tak terhindarkan dalam jumlah modul umum dalam konfigurasi.

Kasus khusus dari modul klien-server campuran adalah modul bentuk dan perintah, yang secara khusus dirancang untuk mengimplementasikan logika bisnis server dan klien dalam satu modul.

3.1. Nama-nama modul umum direkomendasikan untuk dibangun sesuai dengan aturan umum untuk penamaan objek metadata. Nama modul umum harus sesuai dengan nama subsistem atau mekanisme terpisah yang prosedur dan fungsinya diimplementasikan. Disarankan untuk menghindari kata-kata umum seperti "Prosedur", "Fungsi", "Penangan", "Modul", "Fungsionalitas", dll. dalam nama modul umum. dan menerapkannya hanya dalam kasus luar biasa, ketika mereka lebih sepenuhnya mengungkapkan tujuan modul.

Untuk membedakan antara modul umum dari satu subsistem yang dibuat untuk mengimplementasikan prosedur dan fungsi yang dilakukan dalam konteks yang berbeda, disarankan untuk memberi mereka postfix yang dijelaskan sebelumnya dalam paragraf. 2.1-2.4.

Dalam versi baru konfigurasi sistem 1C:Enterprise, banyak fungsi dan prosedur telah dipindahkan dari modul objek (dokumen, direktori, dll.) ke modul manajer. Mari kita lihat perbedaan antara kedua modul ini.

Menurut teori pemrograman berorientasi objek, metode objek dibagi menjadi dua kelompok: statis dan sederhana. Metode sederhana hanya memiliki akses ke instance kelas tertentu. Metode statis tidak memiliki akses ke data objek, tetapi beroperasi pada kelas secara keseluruhan.

Jika kita menerjemahkan semua ini ke dalam istilah 1C: Sistem perusahaan, maka modul objek berisi metode sederhana. Untuk menggunakannya, Anda harus terlebih dahulu mendapatkan objek tertentu: elemen direktori, dokumen, dll. Modul Manajer berisi metode statis. Untuk menggunakannya, tidak perlu secara terpisah mendapatkan setiap objek tertentu, ini memungkinkan Anda untuk bekerja dengan seluruh koleksi sekaligus.

modul objek mungkin memiliki prosedur dan fungsi yang dapat digunakan secara eksternal. Untuk melakukan ini, prosedur atau fungsi seperti itu dilambangkan dengan kata Ekspor.

Fungsi Fungsi Baru() Ekspor

Untuk menggunakan fungsi seperti itu dari modul objek, Anda harus terlebih dahulu, memiliki referensi ke objek yang diperlukan, mendapatkannya menggunakan fungsi DapatkanObjek().



Per = Objek. Fungsi Baru() ;

Demikian pula, Anda dapat membuat variabel baru yang dapat digunakan dari berbagai objek konfigurasi.

Ekspor Variabel Baru

DirectoryItem = Direktori. Tata nama. TemukanByCode("000000001" );
Objek = Elemen Direktori. GetObjek() ;
Sebuah Objek. Variabel Baru= );

Dengan demikian dimungkinkan untuk melengkapi prosedur standar, fungsi dan properti (variabel) objek. Variabel semacam itu bersifat dinamis, tidak disimpan di basis info dan hanya ada saat bekerja dengan objek yang diterima.

Modul Manajer memiliki semua fitur yang sama, satu-satunya perbedaan adalah Anda tidak perlu mendapatkan objek tertentu untuk menggunakannya, modul manajer memungkinkan Anda untuk bekerja dengan seluruh koleksi objek dari jenis tertentu.

Prosedur NewProcedure() Ekspor

DirectoryItem = Direktori. Tata nama. Prosedur Baru() ;

Atau untuk variabel:

Ekspor Variabel Baru

DirectoryItem = Direktori. Tata nama. variabel baru;

Mari kita perhatikan perbedaan penggunaan modul objek dan modul pengelola pada contoh tata cara pembuatan dokumen bentuk cetak.

Saat menggunakan modul objek, kodenya akan terlihat seperti ini:

Fungsi Ekspor PrintDocument (Link)
//Fungsi ini harus diberikan tautan ke dokumen tertentu
Kembalikan TabDoc;
Fungsi Akhir

Pada formulir dokumen, Anda perlu membuat prosedur yang akan meneruskan tautan ke dokumen ke fungsi cetak.

&PadaKlien
Prosedur Cetak(Perintah)
TabDoc = PrintOnServer() ;
TabDok. Menunjukkan() ;
AkhirProsedur
&Di server
Fungsi PrintOnServer()
Doc = FormAttributeToValue("Objek" );
Kembali Dok. PrintDocument(Objek. Tautan) ;
Fungsi Akhir

Kerugian dari metode ini adalah hanya memungkinkan Anda untuk mencetak satu objek. Jika Anda perlu mencetak beberapa dokumen sekaligus, maka Anda harus mendapatkannya masing-masing, dan kemudian memanggil fungsi dari modul objek. Ini membutuhkan sumber daya sistem yang signifikan, karena ketika suatu objek diterima, objek itu sepenuhnya cocok dengan RAM.

Dari sudut pandang kinerja, lebih baik menggunakan modul manajer bila memungkinkan. Dalam contoh kita, solusi untuk masalah akan terlihat seperti ini.
Fungsi PrintOnServer()
Kembalikan Dokumen. Dokumen kami. PrintDocument(ArrayReferensi);
Fungsi Akhir

Dalam kasus penggunaan modul manajer, prosedur cetak dapat dipanggil baik dari formulir dokumen maupun dari formulir daftar, meneruskan tautan ke beberapa dokumen dalam larik. Dalam hal ini, sistem tidak perlu menerima setiap dokumen dari larik, yang secara signifikan menghemat sumber daya sistem.

Jadi kapan Anda harus menggunakan modul objek dan kapan Anda harus menggunakan modul manajer?

Semuanya tergantung pada tugas. Jika referensi ke suatu objek cukup untuk pelaksanaannya (misalnya, tugas cetak), maka lebih baik menggunakan modul manajer. Jika tugasnya adalah mengubah data, misalnya, mengisi dokumen, maka Anda perlu mendapatkannya dan menggunakan modul objek.

Modul program berisi kode yang dapat dieksekusi dalam bahasa 1C, yang diperlukan untuk merespons tindakan sistem atau pengguna dengan cara tertentu ketika alat pengembangan visual tidak cukup. Juga dalam modul program kami dapat menjelaskan metode kami sendiri (prosedur dan fungsi).

Biasanya, modul perangkat lunak terdiri dari tiga bagian:

  • area deklarasi variabel;
  • area deskripsi prosedur dan fungsi;
  • teks utama program.

Contoh struktur modul program:

//********************* WILAYAH DEKLARASI VARIABEL *************************

Ekspor Nama Keluarga Rem; / /ini adalah variabel global
Nama Variabel, Patronimik; //ini adalah variabel modul
Ganti Nama; //ini juga merupakan variabel modul dan dapat diakses

//dari setiap prosedur dan fungsi modul kita

//*************** PROSEDUR DAN FUNGSI DESKRIPSI AREA ****************

Prosedur Prosedur1 ()
Variabel Jumlah ; / /Total adalah variabel lokal (variabel prosedur)

Total = Nama belakang + "" + Nama depan + " "+ Patronimik;

AkhirProsedur

Fungsi Fungsi1 ()

//pernyataan fungsi

Return(Nama belakang + " " + Nama depan );

Fungsi Akhir

//*************************** TEKS UTAMA PROGRAM ******************** *

Nama keluarga = "Ivanov";
Nama = "Ivan";
Nama tengah = "Ivanovich";

//******************************************************************************

Dalam modul program tertentu, salah satu area mungkin hilang.
Lingkup deklarasi variabel ditempatkan dari awal teks modul ke pernyataan pertama Prosedur atau pernyataan Fungsi atau pernyataan yang dapat dieksekusi. Bagian ini hanya dapat berisi pernyataan deklarasi variabel.

Deskripsi area prosedur dan fungsi ditempatkan dari pernyataan pertama Prosedur atau pernyataan Fungsi ke pernyataan yang dapat dieksekusi di luar tubuh prosedur atau deklarasi fungsi.

Area teks program utama ditempatkan dari pernyataan yang dapat dieksekusi pertama di luar tubuh prosedur atau fungsi hingga akhir modul. Bagian ini hanya dapat berisi pernyataan yang dapat dieksekusi. Area teks utama program dijalankan pada saat inisialisasi modul. Biasanya, di bagian program utama, masuk akal untuk menempatkan pernyataan untuk menginisialisasi variabel dengan beberapa nilai spesifik yang harus ditetapkan sebelum panggilan pertama ke prosedur atau fungsi modul.

Modul program terletak di tempat-tempat dalam konfigurasi yang mungkin memerlukan deskripsi algoritma operasi tertentu. Algoritma ini harus dirancang sebagai prosedur atau fungsi yang akan dipanggil oleh sistem itu sendiri dalam situasi yang telah ditentukan (misalnya, saat membuka formulir referensi, saat mengklik tombol di kotak dialog, saat mengubah objek, dll.).

Setiap modul program yang terpisah dirasakan oleh sistem secara keseluruhan, sehingga semua prosedur dan fungsi modul program dijalankan dalam satu konteks.

Konteks eksekusi modul dibagi menjadi konteks klien dan server. Selain itu, beberapa modul perangkat lunak dapat dikompilasi baik di sisi klien maupun di sisi server.

Modul aplikasi (terkelola atau reguler)

Modul aplikasi menjelaskan prosedur (penangan) peristiwa yang diinisialisasi pada awal dan akhir sistem. Misalnya, ketika Anda memulai aplikasi, Anda dapat memperbarui beberapa data konfigurasi, dan ketika Anda keluar, Anda dapat menanyakan apakah Anda harus keluar dari program sama sekali. Selain itu, modul ini memotong kejadian dari peralatan eksternal, seperti peralatan perdagangan atau fiskal. Perlu dicatat bahwa modul aplikasi dijalankan hanya dalam kasus peluncuran aplikasi secara interaktif, yaitu ketika jendela program diluncurkan. Ini tidak terjadi jika aplikasi diluncurkan dalam mode koneksi com.
Ada dua modul aplikasi yang berbeda di platform 1C 8. Ini adalah modul Aplikasi Umum dan modul Aplikasi Terkelola. Mereka dipicu ketika klien yang berbeda dimulai. Misalnya, modul Aplikasi Terkelola dipicu saat klien web diluncurkan, klien kurus dan klien tebal dalam mode aplikasi terkelola. Dan modul aplikasi reguler dipicu ketika klien tebal diluncurkan dalam mode aplikasi normal. Pengaturan mode peluncuran aplikasi diatur di properti konfigurasi "Mode peluncuran utama".

Modul aplikasi dapat berisi semua 3 bagian - deklarasi variabel, deskripsi prosedur dan fungsi, serta teks utama program. Modul aplikasi dikompilasi di sisi klien, yang sangat membatasi kami untuk menggunakan banyak jenis data. Anda dapat memperluas konteks modul aplikasi dengan metode modul bersama yang memiliki set properti Server Panggilan. Semua variabel dan metode modul program aplikasi yang ditandai sebagai ekspor akan tersedia di modul konfigurasi sisi klien mana pun. Namun, meskipun menggoda, Anda tidak boleh menempatkan banyak prosedur dan fungsi di sini. Semakin banyak kode yang ada dalam modul yang diberikan, semakin lama waktu kompilasi, dan, akibatnya, waktu startup aplikasi.

Seperti disebutkan di atas, modul aplikasi menangani kejadian awal dan akhir aplikasi. Untuk menangani setiap kejadian ini dalam modul aplikasi, ada beberapa penangan Before ... dan When ... Perbedaan di antara keduanya adalah sebagai berikut: ketika kode di handler Before ... dieksekusi, tindakan memiliki belum terjadi dan kami dapat menolak untuk melaksanakannya. Inilah gunanya opsi Penolakan. Di penangan Aktif, tindakan telah terjadi, dan kami tidak dapat menolak untuk meluncurkan aplikasi atau keluar darinya.

Modul koneksi eksternal

  • dapat berisi semua 3 area
  • terletak di bagian root dari konfigurasi

Tujuan dari modul ini mirip dengan tujuan dari modul aplikasi. Ini menangani acara awal dan akhir aplikasi. Modul koneksi eksternal dipicu saat aplikasi diluncurkan dalam mode koneksi bersama. Proses outer join itu sendiri bukanlah proses yang interaktif. Dalam mode ini, program bekerja dengan basis informasi dan jendela aplikasi tidak terbuka, yang memberlakukan batasan tertentu pada penggunaan metode yang dimaksudkan untuk pekerjaan interaktif. Dalam mode ini, Anda tidak dapat menggunakan panggilan ke formulir dialog, peringatan dan pesan ke pengguna, dll. Mereka tidak akan lari.

Seperti dalam modul aplikasi, ketiga area tersedia di sini: deklarasi variabel, deskripsi prosedur dan fungsi, serta teks utama program. Perbedaan utama dari modul aplikasi adalah bahwa dalam mode koneksi bersama, semua pekerjaan dengan basis informasi terjadi di sisi server, sehingga modul koneksi eksternal dikompilasi di sisi server. Dengan demikian, variabel ekspor dan metode modul klien umum tidak tersedia di dalamnya.

modul sesi

  • dilakukan di sisi server
  • terletak di bagian root dari konfigurasi

Ini adalah modul yang sangat khusus yang dirancang hanya untuk menginisialisasi parameter sesi. Mengapa Anda perlu membuat modul sendiri untuk ini? Penggunaannya adalah karena fakta bahwa aplikasi itu sendiri dapat diluncurkan dalam berbagai mode (yang mengarah pada eksekusi modul aplikasi terkelola, atau aplikasi biasa, atau modul koneksi eksternal), dan parameter sesi harus diinisialisasi terlepas dari mode peluncuran. Agar tidak menulis kode program yang sama di ketiga modul ini, kami membutuhkan modul tambahan, yang dijalankan terlepas dari mode startup aplikasi.

Ada satu peristiwa "SetSessionParameters" dalam modul sesi, yang diaktifkan paling awal, bahkan sebelum peristiwa PreSystemBegin modul aplikasi. Itu tidak memiliki bagian deklarasi variabel dan bagian program utama. Dan juga tidak mungkin untuk mendeklarasikan metode ekspor. Modul dikompilasi di sisi server.

Modul umum

  • mungkin berisi area untuk menggambarkan prosedur dan fungsi
  • dieksekusi di sisi server atau klien (tergantung pada pengaturan modul)
  • terletak di cabang pohon objek konfigurasi "Umum" - "Modul umum"

Modul umum dimaksudkan untuk menggambarkan beberapa algoritma umum yang akan dipanggil dari modul konfigurasi lain. Modul umum tidak berisi area deklarasi variabel dan isi program. Anda dapat mendeklarasikan metode ekspor di dalamnya, yang ketersediaannya akan ditentukan oleh pengaturan modul (di sisi mana itu dijalankan: di sisi server atau klien). Karena fakta bahwa bagian deklarasi variabel tidak tersedia, tidak mungkin untuk mendefinisikan variabel global dalam modul bersama. Anda dapat menggunakan modul aplikasi untuk ini.

Perilaku modul bersama tergantung pada set parameter (global atau tidak, berbagai flag kompilasi, apakah panggilan server tersedia, dll.). Berikut adalah beberapa tip untuk menyiapkan modul bersama:

Ini adalah praktik yang baik untuk tidak menggunakan bendera "Global" di mana-mana. Ini akan mengurangi waktu startup aplikasi, serta meningkatkan keterbacaan kode (tentu saja, jika modul umum memiliki nama yang benar-benar bermakna);
- Tidak disarankan untuk menggunakan lebih dari satu flag kompilasi. Tidak banyak metode yang perlu dilakukan dalam konteks yang berbeda, dan jika metode tersebut tetap diperlukan, maka modul umum yang terpisah dapat dialokasikan untuk mereka;
- flag "Server call" masuk akal hanya jika modul dikompilasi "Di server". Oleh karena itu, semua flag kompilasi lainnya harus dihapus untuk menghindari berbagai masalah;
- jika dalam metode modul ada pemrosesan massal data, membaca dan menulis ke database, maka untuk meningkatkan kecepatan kerja, lebih baik untuk menonaktifkan kontrol akses dengan mengatur flag "Hak Istimewa". Mode ini hanya tersedia untuk modul bersama yang dikompilasi di server.

Modul formulir

  • dapat berisi semua 3 area
  • dilakukan di sisi server dan klien

Modul formulir dirancang untuk menangani tindakan pengguna dengan formulir ini (menangani acara klik tombol, mengubah atribut formulir, dll.). Ada juga peristiwa yang berhubungan langsung dengan bentuk itu sendiri (misalnya pembukaan atau penutupan). Modul formulir terkelola dan reguler berbeda terutama dalam modul formulir terkelola jelas dipisahkan oleh konteks. Setiap prosedur atau fungsi harus memiliki arahan kompilasi. Jika arahan kompilasi tidak ditentukan, maka prosedur atau fungsi ini dijalankan di sisi server. Dalam bentuk biasa, semua kode dieksekusi di sisi klien.

Struktur formulir terkelola berisi bagian deklarasi variabel, deskripsi prosedur dan fungsi, dan isi program (dieksekusi saat formulir diinisialisasi). Kami dapat mengakses acara formulir standar melalui daftar prosedur dan fungsi formulir yang diharapkan (Ctrl+Alt+P), atau melalui palet properti dari formulir itu sendiri.

Jika formulir memiliki atribut utama yang ditetapkan, maka properti dan metode dari objek aplikasi yang digunakan sebagai atribut utama tersedia dalam modul formulir.

modul objek

  • dapat berisi semua 3 area
  • dilakukan di sisi server

Modul ini tersedia untuk sebagian besar objek konfigurasi dan dimaksudkan, secara umum, untuk memproses peristiwa yang terkait langsung dengan objek. Misalnya, peristiwa merekam dan menghapus objek, memeriksa apakah detail objek terisi, memposting dokumen, dll.

Beberapa kejadian modul objek menduplikasi kejadian modul formulir. Misalnya, peristiwa yang berkaitan dengan catatan. Namun, harus dipahami bahwa peristiwa modul formulir hanya akan dieksekusi pada bentuk objek tertentu, yaitu ketika formulir tertentu dibuka. Dan event dari modul objek akan dipanggil dalam hal apapun, bahkan pada saat program bekerja dengan objek tersebut. Oleh karena itu, jika Anda memerlukan metode yang terkait dengan objek tanpa terikat pada bentuk objek tertentu, maka lebih baik menggunakan modul objek untuk ini.

Modul pengelola objek

  • dapat berisi semua 3 area
  • dilakukan di sisi server

Modul pengelola objek hanya muncul mulai dari versi 1C 8.2. Modul manajer ada untuk semua objek aplikasi dan dirancang untuk mengelola objek ini sebagai objek konfigurasi. Modul manager memungkinkan Anda untuk memperluas fungsionalitas suatu objek dengan memperkenalkan (menulis) prosedur dan fungsi yang tidak merujuk ke instance spesifik dari objek database, tetapi ke objek konfigurasi itu sendiri. Modul manajer objek memungkinkan Anda untuk menempatkan prosedur dan fungsi umum untuk objek tertentu dan mengaksesnya dari luar, misalnya, dari pemrosesan (tentu saja, jika prosedur atau fungsi ini dengan kata kunci Ekspor). Apa yang memberi kita hal baru? Secara umum, hanya mengatur prosedur berdasarkan objek dan menyimpannya di tempat terpisah - Modul Manajer Objek. Kami juga dapat menempatkan prosedur dan fungsi ini dalam modul umum, tetapi 1C menyarankan untuk menempatkan prosedur dan fungsi umum objek dalam Modul Manajer Objek. Contoh penggunaan prosedur dan fungsi Modul Manajer Objek: pengisian awal rincian individu dari direktori atau dokumen dalam kondisi tertentu, memeriksa pengisian rincian direktori atau dokumen dalam kondisi tertentu, dll.

Modul Perintah

  • mungkin berisi bagian yang menjelaskan prosedur dan fungsi
  • dieksekusi di sisi klien

Perintah adalah objek yang berada di bawah objek aplikasi atau konfigurasi secara keseluruhan. Setiap perintah memiliki modul perintah di mana Anda dapat menjelaskan prosedur CommandProcess() yang telah ditentukan sebelumnya untuk menjalankan perintah itu.

Apa itu modul dan untuk apa sebenarnya mereka? Modul berisi kode program. Selain itu, perlu dicatat bahwa, tidak seperti platform 7.7, di mana kode dapat ditempatkan baik di properti elemen formulir maupun di sel tabel tata letak, di platform 8.x, setiap baris kode harus ditempatkan dalam beberapa modul. Biasanya, sebuah modul terdiri dari tiga bagian - bagian untuk menggambarkan variabel, bagian untuk menjelaskan prosedur dan fungsi, dan bagian untuk program utama. Struktur ini khas untuk hampir semua modul platform, dengan beberapa pengecualian. Beberapa modul tidak memiliki bagian deklarasi variabel dan bagian program utama. Misalnya, Modul Sesi dan Modul Umum apa pun.

Konteks eksekusi modul umumnya dibagi menjadi konteks klien dan server. Selain itu, beberapa modul dapat dikompilasi baik di sisi klien maupun di sisi server. Dan beberapa adalah murni sisi server atau sisi klien. Jadi:

Modul aplikasi

Modul ini dirancang untuk menangkap momen peluncuran aplikasi (pemuatan konfigurasi) dan penyelesaiannya. Dan dalam acara yang sesuai, Anda dapat mengatur prosedur verifikasi. Misalnya, di awal aplikasi, perbarui data referensi konfigurasi apa pun, di akhir pekerjaan, tanyakan apakah layak untuk meninggalkannya sama sekali, mungkin hari kerja belum berakhir. Selain itu, ia memotong peristiwa dari peralatan eksternal, seperti peralatan perdagangan atau fiskal. Perlu dicatat bahwa modul aplikasi memotong peristiwa yang dijelaskan hanya dalam kasus peluncuran interaktif. Itu. ketika jendela program itu sendiri dibuat. Ini tidak terjadi jika aplikasi diluncurkan dalam mode koneksi bersama.

Ada dua modul aplikasi yang berbeda di platform 8.2. Ini adalah modul Aplikasi Umum dan modul Aplikasi Terkelola. Mereka dipicu ketika klien yang berbeda dimulai. Beginilah cara modul aplikasi terkelola diaktifkan ketika klien web, klien tipis, dan klien tebal diluncurkan dalam mode aplikasi terkelola. Dan modul aplikasi reguler dipicu ketika klien tebal diluncurkan dalam mode aplikasi normal.

Semua bagian dapat ditempatkan di modul aplikasi - deskripsi variabel, prosedur dan fungsi, serta deskripsi program utama. Modul aplikasi dikompilasi di sisi klien, jadi ini sangat membatasi kami dalam ketersediaan banyak jenis data. Anda dapat memperluas konteks modul aplikasi dengan metode modul bersama yang memiliki set properti Server Panggilan. Semua variabel dan metode yang ditandai sebagai ekspor akan tersedia di modul konfigurasi sisi klien mana pun. Namun, meski menggiurkan, jangan terlalu banyak menggunakan metode di sini. Semakin banyak kode yang dikandungnya, semakin lama waktu kompilasi, dan akibatnya, waktu startup aplikasi, yang sangat mengganggu pengguna.

Seperti disebutkan di atas, modul aplikasi menangani kejadian awal dan akhir aplikasi. Untuk menangani setiap kejadian ini dalam modul aplikasi, ada beberapa penangan Before ... dan When ... Perbedaan di antara keduanya adalah ketika kode di handler Before ... dijalankan, aksinya belum terjadi dan kita dapat menolak untuk melaksanakannya. Inilah gunanya opsi Penolakan. Di penangan Aktif, tindakan telah terjadi, dan kami tidak dapat menolak untuk meluncurkan aplikasi atau keluar darinya.

Modul koneksi eksternal

Tujuan dari modul ini mirip dengan tujuan dari modul aplikasi. Ini menangani titik awal dan akhir aplikasi. Modul koneksi eksternal dipicu saat aplikasi diluncurkan dalam mode koneksi bersama. Proses outer join itu sendiri bukanlah proses yang interaktif. Dalam mode ini, pekerjaan terprogram dengan basis info terjadi dan jendela aplikasi tidak terbuka, yang memberlakukan batasan tertentu pada penggunaan metode yang dimaksudkan untuk pekerjaan interaktif. Dalam mode ini, Anda tidak dapat menggunakan panggilan formulir dialog, pesan peringatan, dll. Mereka tidak akan bekerja.

Seperti pada modul aplikasi, bagian untuk mendeskripsikan variabel, metode, dan bagian untuk program utama tersedia di sini. Anda juga dapat mendeklarasikan variabel dan metode ekspor. Perbedaannya adalah bahwa dalam mode koneksi bersama, semua pekerjaan dengan basis info terjadi di sisi server, sehingga modul koneksi eksternal dikompilasi secara eksklusif di server. Dengan demikian, variabel ekspor dan metode modul klien umum tidak tersedia di dalamnya.

modul sesi

Ini adalah modul yang sangat khusus dan ditujukan hanya untuk inisialisasi parameter sesi. Mengapa Anda perlu membuat modul sendiri untuk ini? Hal ini disebabkan oleh fakta bahwa proses inisialisasi mungkin memerlukan eksekusi beberapa kode, dan selain itu, aplikasi dapat diluncurkan di bawah klien yang berbeda (yang mengarah ke eksekusi berbagai modul aplikasi atau modul koneksi eksternal), dan parameter sesi harus diinisialisasi dalam mode peluncuran apa pun. Oleh karena itu, modul tambahan diperlukan, yang dijalankan dalam mode peluncuran aplikasi apa pun.

Ada satu acara "SetSessionParameters" dalam modul sesi, yang diaktifkan paling awal, bahkan sebelum acara PreSystemBegin modul aplikasi. Itu tidak memiliki bagian deklarasi variabel dan bagian program utama. Dan juga tidak mungkin untuk mendeklarasikan metode ekspor. Modul dikompilasi di sisi server.

Hindari godaan bahwa modul ini dijalankan setiap kali aplikasi dimulai, dan tempatkan di dalamnya kode yang tidak terkait langsung dengan inisialisasi parameter sesi. Hal ini disebabkan oleh fakta bahwa handler SetSessionParameters dapat dipanggil berulang kali selama operasi sistem. Misalnya, ini terjadi ketika kami mengakses parameter yang tidak diinisialisasi. Dan meskipun dimungkinkan untuk menangkap momen peluncuran pertama acara ini (RequiredParameters memiliki tipe Undefined), namun, perlu dicatat bahwa modul ini dikompilasi dalam mode istimewa, mis. itu tidak mengontrol hak akses. Dan poin kedua, kita masih belum bisa seratus persen yakin bahwa sistem itu akan diluncurkan. Tiba-tiba, modul aplikasi akan gagal, dan kami mencoba melakukan beberapa tindakan dengan database.

Modul umum

Modul dimaksudkan untuk menggambarkan beberapa algoritma umum yang akan dipanggil dari modul konfigurasi lainnya. Modul umum tidak berisi bagian deklarasi variabel dan bagian program utama. Anda dapat mendeklarasikan metode ekspor di dalamnya, yang konteks aksesibilitasnya akan ditentukan oleh flag kompilasi. Karena fakta bahwa bagian deklarasi variabel tidak tersedia, tidak mungkin untuk mendefinisikan variabel global dalam modul bersama. Untuk melakukan ini, Anda perlu menggunakan fungsi modul umum dengan caching nilai balik atau modul aplikasi. Harus diingat bahwa meskipun properti penggunaan kembali modul bersama diatur ke "Selama sesi", maka dalam hal ini masa pakai nilai yang di-cache tidak melebihi 20 menit dari saat terakhir diakses .
Perilaku modul bersama tergantung pada set parameter (global atau tidak, berbagai flag kompilasi, apakah panggilan server tersedia, dll.). Dalam artikel ini, kami tidak akan mempertimbangkan semua jenis pengaturan, serta fitur perilaku dan perangkap yang muncul saat tanda properti ditetapkan secara tidak wajar. Ini adalah topik untuk artikel terpisah. Mari kita membahas beberapa poin yang harus diikuti saat menetapkan bendera:

  • Ini adalah aturan praktis yang baik untuk tidak menggunakan bendera "Global" di mana-mana. Ini akan mengurangi waktu startup aplikasi, serta meningkatkan keterbacaan kode (tentu saja, jika modul umum memiliki nama yang benar-benar bermakna).
  • Tidak disarankan untuk menggunakan lebih dari satu flag kompilasi. Tidak banyak metode yang perlu dilakukan dalam konteks yang berbeda, dan jika metode tersebut tetap diperlukan, maka modul umum yang terpisah dapat dialokasikan untuk mereka.
  • Bendera "Server Panggilan" hanya bermakna jika modul dikompilasi "Di server". Oleh karena itu, semua flag kompilasi lainnya harus dihapus untuk menghindari berbagai masalah.
  • Jika dalam metode modul ada pemrosesan data massal, membaca dan menulis ke database, maka untuk meningkatkan kecepatan kerja, lebih baik untuk menonaktifkan kontrol akses dengan mengatur flag "Privileged". Mode ini hanya tersedia untuk modul bersama yang dikompilasi di server.

Modul formulir

Ini dimaksudkan untuk memproses tindakan pengguna, mis. berbagai peristiwa yang terkait dengan entri data dan pemrosesan kebenaran entri mereka. Modul bentuk biasa dikompilasi sepenuhnya pada klien. Modul formulir terkelola, di sisi lain, jelas dibatasi oleh konteks eksekusi, sehingga semua variabel dan metode harus memiliki arahan kompilasi. Jika arahan tidak ditentukan secara eksplisit, maka variabel atau metode ini akan dikompilasi di sisi server. Dalam modul formulir, tersedia bagian untuk mendeskripsikan variabel dan metode, serta bagian untuk program utama.

modul objek

Modul ini khas untuk banyak objek konfigurasi dan dimaksudkan, secara umum, untuk memproses peristiwa objek. Misalnya, peristiwa menulis dan menghapus objek, peristiwa memposting dokumen, dll.

Beberapa kejadian modul objek menduplikasi kejadian modul formulir. Misalnya, peristiwa yang berkaitan dengan catatan. Namun perlu dipahami bahwa event dari modul form hanya akan dieksekusi pada objek form tertentu. Secara umum, mungkin ada beberapa bentuk ini. Dan event dari modul objek akan dipanggil dalam hal apapun, bahkan pada saat program bekerja dengan objek tersebut. Oleh karena itu, jika perlu untuk mengeksekusi beberapa kode dalam semua kasus, maka lebih baik menggunakan event modul objek untuk ini.

Modul objek dikompilasi secara eksklusif di server. Di dalamnya, Anda dapat menentukan variabel dan metode ekspor yang akan tersedia di modul konfigurasi lainnya. Dengan bantuan properti dan metode ini, kami dapat memperluas fungsionalitas objek secara signifikan.

Modul pengelola objek

Modul ini ada untuk banyak objek konfigurasi. Tujuan utama dari modul ini adalah untuk mendefinisikan kembali peristiwa pemilihan standar yang terjadi pada saat input per baris dan untuk memperluas fungsionalitas manajer. Modul dikompilasi di sisi server. Dimungkinkan untuk menentukan properti dan metode ekspor. Memanggil metode ekspor manajer tidak memerlukan pembuatan objek itu sendiri.

Untuk semua hal di atas, Anda dapat menambahkan gambar beberapa modul konfigurasi dan metode panggilan metode bersama dalam mode aplikasi terkelola. Panah menunjukkan arah di mana Anda dapat memanggil metode yang sesuai. Seperti yang dapat dilihat dari diagram, konteks server benar-benar tertutup. Tetapi dari konteks klien, dimungkinkan untuk mengakses metode server.

Simbol pada skema: O.M. Klien - Modul umum klien; O.M. Server - Modul umum server; M.F. Klien - Prosedur klien dari modul formulir; M.F. Server - Prosedur server dari modul formulir.