IX. Substitusi harga otomatis dalam dokumen saat memilih item. Substitusi harga otomatis ke dalam dokumen saat memilih item Cara mengatur organisasi utama untuk substitusi dalam dokumen

Tugas kita adalah sebagai berikut. Kami sekarang menyimpan harga suatu barang dalam daftar informasi terpisah. Saat kami membuat atau mengubah dokumen Penyediaan Layanan dan menambahkan item apa pun ke bagian tabel, kami ingin harga item tersebut saat ini, yang diperoleh dari daftar informasi dan sesuai dengan tanggal dokumen, segera dimasukkan ke dalam dokumen.

Untuk melakukan ini kita perlu melakukan dua hal.

Pertama, tulis fungsi tertentu yang akan mengembalikan harga barang saat ini, lalu panggil fungsi ini pada saat barang ditambahkan ke dokumen, dan substitusikan harga barang yang akan dikembalikan fungsi tersebut ke dalam dokumen.

Karena kemungkinan besar kita akan membutuhkan "layanan" seperti itu tidak hanya di dokumen ini, tetapi juga di dokumen lain yang berisi nomenklatur di bagian tabel, kita akan menempatkan fungsi tersebut di tempat yang "dapat diakses publik" - di modul umum.

Dalam mode Konfigurator

Fungsi mengembalikan harga suatu barang

Pertama, kita akan membuat fungsi RetailPrice(), yang akan mengembalikan harga eceran item saat ini, dan menempatkannya di modul konfigurasi umum.

Mari kita buka konfigurator, di cabang Modul Umum Umum, tambahkan objek konfigurasi baru Modul dan beri nama WorkWithDirectories.

Kita melihat bahwa modul ini memiliki kotak centang Server yang dipilih secara default. Artinya, instance modul ini hanya akan dikompilasi di sisi server.

Mari kita centang kotak Call server sehingga prosedur ekspor dan fungsi modul ini dapat dipanggil dari klien (Gbr. 9.9).

Mari kita tempatkan teks berikut di dalamnya (Listing 9.1).

Mari kita jelaskan fungsi ini.

Untuk mendapatkan harga eceran, kami akan meneruskan dua parameter ke fungsi:

CurrentDate adalah parameter tipe Tanggal yang menentukan titik pada sumbu waktu di mana kita tertarik pada nilai harga eceran.

Di badan fungsi, pertama-tama kita membuat objek pembantu Seleksi.

Ini adalah struktur yang berisi seleksi berdasarkan dimensi register. Dengan bantuannya, kami menentukan bahwa kami akan tertarik pada entri register yang dimensi register Nomenklaturnya sama dengan referensi ke elemen direktori yang diteruskan ke fungsi.

Nama kunci struktur ("Nomenklatur") harus sesuai dengan nama dimensi register yang ditentukan dalam konfigurator, dan nilai elemen struktur (Elemen Nomenklatur) menentukan nilai yang dipilih untuk dimensi ini.

Di baris kedua, kita menghubungi pengelola register informasi Harga (Information Registers.Prices) dan menjalankan metode GetLast(), yang mengembalikan kepada kita nilai sumber daya dari catatan register terbaru yang sesuai dengan tanggal yang diteruskan ke fungsi ( CurrentDate) dan nilai dimensi register (Seleksi).

Metode GetLast mengembalikan struktur yang berisi nilai sumber daya, yang disimpan dalam variabel ResourceValues. Secara umum, sebuah register dapat memiliki banyak sumber daya. Hanya ada satu sumber daya di register kami, namun struktur yang berisi satu elemen akan tetap dikembalikan.

Oleh karena itu, di baris berikutnya kita mendapatkan harga eceran yang kita cari hanya dengan menentukan nama sumber daya register yang kita perlukan melalui titik (ResourceValues.Price) dan mengembalikannya saat fungsi dijalankan.

Sekarang fungsi ini perlu dipanggil pada titik tertentu dalam eksekusi dokumen.

Memanggil fungsi saat memilih item dan mengisi harga di dokumen

Jadi, tugas yang kita hadapi adalah sebagai berikut. Saat mengedit dokumen Penyediaan Layanan, kita perlu memastikan bahwa kolom Harga terisi secara otomatis setelah pengguna memilih layanan. Selain itu, harga layanan harus ditentukan berdasarkan tanggal pembuatan dokumen.


Mari temukan dokumen Penyediaan Layanan di konfigurator dan buka formulirnya Formulir Dokumen.

Klik dua kali pada elemen formulir Daftar ItemNomenklatur atau klik kanan untuk membuka palet propertinya (item menu konteks Properti). Menggulir ke akhir daftar, kita menemukan peristiwa OnChange, yang terjadi setelah nilai bidang diubah.

Klik tombol buka B dengan ikon kaca pembesar di kolom input.

Sistem akan membuat templat untuk prosedur penanganan acara ini di modul formulir kami dan membuka tab Modul Editor Formulir.

Mari tambahkan teks berikut ke dalamnya (Listing 9.2).

Mari mengomentari isi handlernya.

Baris pertama handler sudah familiar bagi Anda dari prosedur Daftar Barang Jumlah Perubahan dan Daftar Harga Barang Perubahan. Pertama, kita mendapatkan baris saat ini dari bagian tabel dokumen, karena kita akan membutuhkannya nanti, dan menyimpannya dalam variabel TabularPart Row.

Kemudian kita memanggil fungsi RetailPrice() dari modul umum Bekerja Dengan Direktori.

Sebagai parameter pertama, kita meneruskan ke fungsi ini tanggal dokumen yang kita perlukan untuk mendapatkan harganya. Kami mendapatkan tanggal dokumen dari atribut formulir utama - Object.Date.



Fungsi ini mengembalikan nilai harga terakhir, dan kami menetapkan nilai ini ke bidang Harga di baris saat ini pada bagian tabel dokumen (TabularPartRow.Price).

Perhatikan bahwa prosedur Item List NomenclatureOnChange() itu sendiri mulai berjalan di modul formulir di sisi klien, karena prosedur ini merupakan pengendali peristiwa interaktif formulir. Saat membuat templat untuk prosedur ini, platform secara otomatis menempatkan arahan kompilasi &OnClient sebelum deskripsi prosedur.

Kemudian fungsi RetailPrice() dipanggil. Karena fungsi ini tidak akan ditemukan di sisi klien, eksekusi akan ditransfer ke modul umum Bekerja dengan Direktori, yang berjalan di server. Setelah fungsinya selesai, kode program akan terus dijalankan di klien.

Mengapa “trik” seperti itu digunakan dalam kasus ini? Mengapa eksekusi kode perlu ditransfer ke server?

Faktanya adalah bahwa pekerjaan apa pun dengan database (membaca data, menulis) hanya mungkin dilakukan di server. Dalam hal ini, kami perlu membaca data terbaru dari register informasi untuk beberapa item.

Tindakan tersebut hanya dapat dilakukan di server, dan jika Anda melihat di asisten sintaksis untuk deskripsi metode GetLast() dari register informasi, Anda akan melihat bahwa metode ini hanya tersedia di server, di klien tebal dan dalam koneksi eksternal.

Klien tebal dan koneksi eksternal adalah aplikasi klien platform lama yang ada untuk kompatibilitas dengan solusi aplikasi lama.

Kami sedang mengembangkan solusi aplikasi yang benar-benar baru yang berfungsi di klien tipis atau klien web. Oleh karena itu, dalam kasus kami, untuk mendapatkan data apa pun dari database, kami perlu mentransfer kode eksekusi ke server, menerima data yang diperlukan di sana, dan mengembalikan data ini ke klien. Itulah yang kami lakukan.

Dalam 1C:Mode Perusahaan

Mari kita periksa cara kerja dokumen kita sekarang.

Mari luncurkan 1C:Enterprise dalam mode debug dan buka daftar informasi Harga.

Untuk transistor Philips, tambahkan harga baru dengan nomor berbeda (Gbr. 9.10).

Sekarang mari kita buka dokumen Penyediaan Layanan No. 1. Seperti yang Anda ingat, dengan dokumen ini kita baru saja “menghabiskan” salah satu transistor tersebut.

Biarkan tanggal dokumen tidak berubah dan ulangi pemilihan transistor di kolom Tata Nama pada bagian tabel dokumen. Harga transistor akan otomatis diatur ke 01/07/2009. Ini adalah nilai harga terkini pada tanggal dokumen (Gbr. 9.11).

Sekarang mari kita ubah tanggal dokumen menjadi 13/07/2009 dan ulangi pemilihan transistor lagi. Nilai harga baru akan ditetapkan, yang terbaru untuk tanggal ini (Gbr. 9.12).

Dengan demikian, harga layanan yang berlaku saat ini pada saat dokumen dibuat muncul di dokumen.


Pertanyaan keamanan

1. Apa tujuan dari objek konfigurasi Daftar Informasi?

2. Fitur apa saja yang dimiliki objek konfigurasi Daftar Informasi?

3. Apa perbedaan utama antara register informasi dan register akumulasi.

4. Bidang mana yang menentukan kunci keunikan register akumulasi.

5. Apa yang dimaksud dengan daftar informasi berkala dan apa yang dimaksud dengan daftar informasi independen.

6. Cara membuat daftar informasi berkala.

7. Apa dimensi utama dari sebuah register.

8. Cara mendapatkan nilai sumber daya dari entri registri terbaru menggunakan bahasa bawaan.

Sangat sering, saat bekerja di program 1C, Anda perlu memasukkan beberapa dokumen dengan cepat atau menambahkan objek baru ke direktori (jenis item, organisasi, gudang, mesin kasir, dll.). Pada saat yang sama, tidak semua orang memiliki pemahaman tentang cara mengotomatiskan pemasukan nilai-nilai dasar, sehingga ketika membuatnya, nilai-nilai yang diperlukan segera diganti ke dalam kolom. Saya akan memberi tahu Anda cara melakukannya di artikel ini.
Program 1C memiliki mekanisme yang memungkinkan Anda dengan cepat mengisi nilai detail dalam dokumen dan buku referensi. Berdasarkan tindakannya, mereka dapat dibagi menjadi beberapa jenis berikut:

  • Substitusi nilai tunggal
  • Mengganti nilai dengan pilihan
  • Mengisi rincian statistik
  • Penggantian rincian yang dimasukkan sebelumnya
  • Mengganti nilai menggunakan pola
  • Memasukkan dokumen baru dengan menyalin

Substitusi nilai tunggal yang menjadi hak pengguna.

Katakanlah organisasi Anda memiliki tiga gudang, mereka dimasukkan ke dalam database. Pada saat yang sama, pengelola hanya diperbolehkan menjual barang dari satu barang. Saat membuat dokumen baru, gudang ini akan dimasukkan secara otomatis. Ini berfungsi berdasarkan izin yang ditetapkan pengguna. Artinya, dengan mematikan hak atas objek yang tidak digunakan pengguna, Anda dapat mengotomatiskan entri data.

Mengganti nilai berdasarkan pilihan yang ditentukan dalam formulir daftar.

Jika daftar diatur untuk dipilih berdasarkan beberapa detail (mesin kasir, rekening bank, gudang), maka detail ini akan otomatis terisi di dokumen baru. Misalnya, Anda mengatur pilihan berdasarkan mesin kasir dalam bentuk daftar dokumen mesin kasir. Saat Anda menerbitkan dokumen pembayaran baru, informasi tentang mesin kasir yang dipilih akan secara otomatis diambil dari daftar. Dan karena suatu organisasi ditentukan untuk mesin kasir, informasi tentang organisasi tersebut akan terisi secara otomatis. Anda dapat menggunakan pilihan di daftar dokumen mana pun.

Mengisi rincian statistik.

Program 1C menyimpan statistik entri nilai dasar untuk setiap pengguna. Jika Anda memasukkan organisasi, divisi, gudang, transaksi bisnis, dll yang sama dua kali saat membuat dokumen baru, program akan menganalisis nilai terakhir yang dimasukkan. Dengan demikian, algoritma pengisian statistik secara otomatis “menyesuaikan” dengan masing-masing pengguna.
Jika pengguna melanggar rantai ini di dokumen baru, program akan memahami hal ini dan akan mulai mengganti nilai baru setelah beberapa saat, tetapi di dokumen pertama, nilai tersebut tidak akan diganti.
Mengisi rincian yang dimasukkan sebelumnya ketika memilih nilai rincian lain dimungkinkan jika Anda memilih, misalnya, perjanjian perdagangan atau kontrak di mana semua bidang utama diisi (gudang, jadwal pembayaran, harga, dll.). Apabila suatu perjanjian atau kontrak ditentukan dalam suatu dokumen, rinciannya akan diisi sesuai dengan aturan berikut:

semua data yang ditentukan dalam perjanjian atau kontrak akan diisi;

jika ada nilai (misalnya pembagian) yang tidak ditentukan dalam perjanjian atau kontrak, maka nilai ini akan diisi sesuai statistik. Jika pada saat memasukkan dokumen baru nilainya diisi sesuai dengan statistik, maka akan diisi ulang jika ditentukan dalam perjanjian atau kontrak.

Pergantian nilai menggunakan template.

Harap dicatat, ketika jenis item baru dibuat, Anda dapat menentukan nilai default yang akan diganti menjadi objek baru. Saat mendaftarkan item baru untuk jenis item ini, nilai-nilai ini akan dimasukkan secara otomatis. Contoh lainnya adalah substitusi otomatis informasi tentang suatu departemen ke dalam dokumen jika pengguna yang membuat dokumen tersebut memiliki informasi tentang departemen yang ditentukan dalam kartu pengguna.

Memasukkan dokumen baru dengan menyalin.

Semuanya sederhana di sini. Jika pengguna sudah memasukkan dokumen serupa, maka dapat disalin dan kemudian data yang diubah dapat diperbaiki. Periksa semua detailnya, berikan perhatian khusus pada detail seperti tanggal.

Berikut lima cara utama untuk mempermudah memasukkan dokumen dan buku referensi serupa. Pastikan untuk menggunakannya dalam pekerjaan sehari-hari Anda

Bagaimana cara cepat memasukkan nilai detail di 1C?

Pertanyaan: Mengganti kode pada kolom 1c


Halo, tolong beri tahu saya di bidang mana saya harus memasukkan prosedur yang menghitung jumlah hari antara tanggal, saya menemukan prosedur itu sendiri, tetapi jawaban untuk pertanyaan ini adalah tidak

Ada bidang - tanggal check-in, tanggal check-out, dan bidang kuantitas, di mana perbedaan antara dua nilai pertama harus berada
Di acara manakah Anda harus menambahkan prosedurnya?

Menjawab: Dalam acara "OnChange" di bidang Tanggal Keberangkatan:

Pertanyaan: Substitusi data otomatis tidak berfungsi

Menjawab:

Terima kasih semuanya atas tanggapan Anda:
1) 1C:Enterprise 8.3 (8.3.4.437), Akuntansi untuk Ukraina: versi 2.0.4.3.
2) Khususnya untuk nsk1C: “Anda selalu memiliki kebiasaan mencari di tempat yang tidak perlu, dalam pertanyaan saya tidak ada satu kata pun tentang tarif dasar PPN - ini, pertama, kedua, baca dengan cermat dekrit yang melarang produk 1C di Ukraina, dan lalu tuliskan pendapatmu.."

Terima kasih atas jawaban Anda, tetapi saya ingin tahu lebih tepatnya di bagian mana kode ini disetel.

Pertanyaan: Bidang masukan dan Enter di akhir


Formulir terkelola, bekerja di klien web.
Situasi: memprogram pemindai ke F7 + barcode + enter. Saya mencoba banyak opsi, tetapi kodenya tidak dapat dibaca melalui "ShowValueInput". Saya mengabaikan opsi ini.
2. Membuat Formulir dengan kolom input. Menggunakan F7, formulir terbuka, kode muncul di kolom input, enter, lalu tekan juga (centang di kolom dokumen teks). Saya mencoba menangkap acara Akhir Input Teks, tetapi tidak berhasil karena... ini berfungsi saat Anda menekan enter secara fisik pada keyboard. Acara AutoFit bukanlah pilihan terbaik bagi saya, karena... Kode batang dapat dimasukkan secara manual dan kemudian saya harus menggunakan semacam tongkat untuk melewati jeda kecil antar klik.
Tolong beri tahu saya, apakah ada opsi yang lebih mudah?

Menjawab:() formulir dibuka, kode dikirimkan - acara tidak diproses

Pertanyaan: Laporan ACS dan bidang tabel


Saya membuat laporan menggunakan ACS. Bagaimana cara menampilkan hasilnya di bidang tabel? Bukan dalam bidang dalam dokumen spreadsheet, namun dalam bidang tabel.

Menjawab: Bidang dalam dokumen spreadsheet adalah elemen formulir (data ditampilkan di dalamnya) yang termasuk dalam atribut (bentuk) Dokumen Spreadsheet.
Anda menulis nilai ke dalam dokumen spreadsheet, dan Bidang Dokumen Spreadsheet menampilkan nilai ini untuk Anda.
Bagaimana saya bisa menulis nilainya di sana?

Pertanyaan: Fokus pada lapangan bekerja dengan aneh


Konfigurasi yang ditulis sendiri pada 1C (8.3.8.2088), formulir terkelola, antarmuka taksi.

Saya lampirkan acara OnChange ke Field dengan kode berikut:

1C
1 2 3 4 Pemrosesan Standar = Salah;

SelectionData = Daftar Nilai Baru;

Data Seleksi. Tambahkan(Objek.Nomor) ;

Saya meletakkan kode di akhir input teks

Semuanya berfungsi, tapi entah kenapa bengkok.

Elemen tersebut menerima fokus, tetapi entah bagaimana hanya setengahnya, seperti yang dapat dilihat pada gambar:

Menjawab: Itu terjadi setelah kode:

Artinya, bingkai kuning dan desain bidangnya sudah hilang. Berhasil, tapi tidak cantik, menarik perhatian.


Nah, singkatnya ketika angkanya berubah maka akan muncul form tulisan dimana orang tersebut mengisi alasan perubahannya, jika orang tersebut menutup form tersebut maka nilai yang lama dikembalikan dan fokus tetap pada kolom tersebut. Apakah ada ide lain tentang cara terbaik untuk melakukan ini?
Pertanyaan: Bidang tabel formulir

Selamat siang.

Ada formulir pemilihan item standar (ut11), yang tidak menampilkan nama, hanya nomor artikel!

Saya mencoba mengembalikan pengaturan formulir standar - tidak berhasil, bidang/kolom tidak ditampilkan.
Konfigurasi:

Ladang sedang ramai. Daftar disetel ke "Gunakan Selalu".

Bahkan men-debug OnFormCreate() serta OnOpen() menunjukkan hal itu

Elements.ListAdvancedSearchNomenclature.SubordinateElements
tersedia, semuanya dalam mode visibilitas dan aksesibilitas, tidak ada opsi fungsional!

Menjawab:

Saya mencoba menambahkan bidang saya sendiri dengan jalur yang sama ke data - bidang tersebut juga tidak muncul!
Satu jam telah berlalu, namun lapangan belum juga muncul. Tolong bantu

lalu oh! Saya baru saja berhasil menyeret bidang nama ke grup lain dan tidak terlihat,


dan pada tombol pertama Itu belum dipulihkan, saya yakin itu akan membantu Anda.

Menjawab: Pertanyaan: Bagaimana cara menampilkan kode daripada nama saat memilih elemen direktori? ada tabnya. bagiannya, ini berisi bidang dengan tipe tautan direktori. Bagaimana cara menampilkan kode atribut daripada nama saat memilih elemen di bidang ini? (formulir terkelola)

Tklwegsd ,))) Ya, inilah pertanyaannya

Pesan dari

polax


Tidak bisakah Anda menambahkan bidang Kode saja ke tabel?

Pertanyaan: Bidang seleksi seleksi di laporan SKD

1C
1 2 3 4 5 6 7 8 9 10 11 Prosedur UsersOnChange(Element) Parameter Ekspor = ComposerSettings. Pengaturan. Parameter Data. Temukan ParameterValue(NewDataCompositionParameter("Pengguna") ) ; Parameter. Nilai = Pengguna; Parameter. Penggunaan = Benar; Elemen Pilihan = Pengaturan Komposer. Pengaturan. Pilihan. Elemen. Tambahkan(Jenis("Elemen Pemilihan Komposisi Data"

Menjawab: ) ) ; Elemen Seleksi. ComparisonView = DataCompositionComparisonView. Setara; Elemen Seleksi. Nilai Kiri = BidangKomposisiDataBaru(

"Bertanggung jawab atas Permintaan Responsif"
) ) ;) ;

Elemen Seleksi. RightValue = Pengguna;


Akhir Prosedur

Detmont
, kodenya saya hapus, yang ada hanya sistem kontrol akses dan kolom pilihan di formulir - laporan kosong...

Menjawab: Ditambahkan setelah 1 jam 50 menit
, saya mencari tahu mengapa ada laporan kosong ketika memilih sistem kontrol akses, ada kondisi dalam permintaan sistem kontrol akses untuk pengguna - saya menghapusnya dan semuanya berfungsi. Terima kasih atas tipnya)
Pertanyaan: Apakah mungkin mengubah komposisi bidang dalam daftar dinamis tanpa kode?

Selamat siang semuanya. Saya memiliki formulir yang bersih, di dalamnya terdapat daftar dinamis dengan kueri khusus, di mana terdapat satu tabel (direktori, juga dikenal sebagai tabel DS utama), satu bidang Tautan dan karakteristik.


Bidang yang memiliki karakteristik dapat langsung digunakan dalam seleksi, penyortiran, desain dan dipilih untuk dikelompokkan. Semuanya berfungsi. Namun tidak mungkin untuk hanya memilihnya sebagai kolom tambahan (sehingga muncul di sebelah link di kolom terpisah). Jelas bahwa entah bagaimana ini semua dilakukan dengan bantuan kode, tetapi benarkah ini tidak dapat dilakukan tanpa kode?
Banyak elemen tata letak data khusus yang dapat ditempatkan pada formulir, tetapi tidak ada cara untuk menambahkan bidang saja? Atau apakah saya melakukan sesuatu yang salah?

Menjawab: Secara umum, tidak peduli bagaimana saya membalik kolom melalui penggabung data, saya tidak dapat menambahkannya (Tanpa kode). Kemungkinan besar, ini tidak mungkin, karena bukan atribut ds form yang bertanggung jawab atas kolom, tetapi elemen form, yang logis. Linker mengontrol data - elemen formulir - tampilan (termasuk Kolom).

Artinya, tanpa meningkatkan elemen bawahan Elemen Formulir secara terprogram, Anda tidak akan dapat mengubahnya.. Hal ini diperlukan ketika membuat atau mengubah dokumen Penyediaan Layanan dan ketika menambahkan berbagai layanan ke bagian tabel, harga saat ini yang diperoleh dari daftar informasi dan sesuai dengan tanggal dokumen segera dimasukkan.

Untuk melakukan ini, Anda perlu:

    tulis fungsi RetailPrice yang akan mengembalikan harga saat ini;

    memanggil fungsi tersebut ketika item baru ditambahkan ke dokumen.

Karena fungsi seperti itu mungkin diperlukan di masa mendatang, kami akan menuliskannya di tempat yang “dapat diakses publik” - di modul umum.

1. Buat sebuah fungsi Harga eceran di cabang Umum – Modul umum dengan nama Bekerja dengan Direktori. Tetapkan bendera Panggilan server(sehingga prosedur ekspor dan fungsi modul ini dapat dipanggil dari klien) (Gbr. 71a).

Beras. 71a. Properti Modul Umum

2. Tempatkan teks berikut dalam modul.

Fungsi Harga Eceran (Tanggal Saat Ini, Elemen Nomenklatur Layanan) Ekspor

//Membuat objek tambahan Seleksi

Pilihan = Struktur Baru("Nomenklatur Layanan",Elemen Nomenklatur Layanan);

//Dapatkan nilai sumber daya registri saat ini

ResourceValues=InformationRegisters.Prices.GetLast(Tanggal Saat Ini, Pilihan);

ReturnResourceValue.Harga;

Fungsi Akhir

Mari kita jelaskan fungsinya.

Untuk mendapatkan harga eceran, Anda perlu meneruskan dua parameter ke fungsi:

    Tanggal Saat Ini– parameter tipe Tanggal, menentukan titik pada sumbu waktu di mana kita tertarik pada nilai harga eceran.

Struktur ini berisi Pilihan menurut pengukuran register. Dengan bantuannya, dimensi yang diperlukan dari register Nomenklatur Layanan ditentukan, yang sama dengan referensi ke elemen direktori yang diteruskan ke fungsi.

Nama kunci struktur ("H Nomenklatur Layanan") harus sesuai dengan nama dimensi register yang ditentukan dalam konfigurator, dan nilai elemen struktur ( Unsur Nomenklatur Pelayanan) menentukan nilai yang dipilih untuk dimensi ini.

Baris kedua berisi panggilan ke manajer daftar informasi Harga ( Daftar Informasi) dan eksekusi metode Jalankan Terakhir(), yang mengembalikan nilai sumber daya entri register terbaru sesuai dengan tanggal yang diteruskan ke fungsi ( Tanggal Saat Ini) dan daftarkan nilai pengukuran Pilihan.

Metode Dapatkan Terbaru mengembalikan struktur yang berisi nilai sumber daya, yang disimpan dalam variabel Nilai Sumber Daya.

Pada baris berikutnya kita mendapatkan harga eceran yang diperlukan dengan menunjukkan nama sumber daya register yang diperlukan, dipisahkan oleh titik ( ValueResources.Harga) dan mengembalikannya saat fungsi dijalankan.

Itu. fungsi ini dapat dipanggil pada suatu saat.

Perlu dibuka Formulir Dokumen Pelaksanaan Pelayanan(itu dibuat sebelumnya). DI DALAM Modul formulir diperlukan tambahkan Prosedur Saat Mengubah.

Untuk melakukan ini, klik dua kali pada elemen formulir Daftar Item dan Layanan (Gbr. 71b).

Beras. 71b. Elemen dokumen Kinerja Layanan

Di jendela properti di acara tersebut Kapan Berubah buat event handler dengan teks berikut:

&Pada Klien

Daftar Prosedur Layanan Nomenklatur Saat Perubahan (Elemen)

//Dapatkan baris berikutnya dari bagian tabel

TabularPart Row = Elemen.Daftar Nomenklatur.Data Saat Ini;

//Tetapkan harga

TabularPart Row.Price = Bekerja dengan Directories.RetailPrice(Object.Date, TabularPartLine.Service);

Akhir Prosedur

Mari kita jelaskan fungsinya.

Baris pertama sudah diketahui: pertama kita mendapatkan baris saat ini dari bagian tabel dokumen, karena kita akan membutuhkannya di masa depan, dan menyimpannya dalam sebuah variabel BarisTabularBagian.

Lalu kita memanggil fungsinya Harga eceran() dari modul umum Bekerja dengan Direktori.

Parameter pertama pada fungsi ini adalah meneruskan tanggal dokumen yang Anda perlukan untuk mendapatkan harganya. Kami mendapatkan tanggal dokumen dari detail utama formulir - Objek.Tanggal.

Fungsi ini mengembalikan nilai harga terakhir, dan nilai ini ditetapkan ke bidang Harga di baris saat ini pada bagian tabel dokumen ( RowTabularPart.Harga).

Harap dicatat bahwa prosedurnya Daftar NomenclaturesServiceWhenChanged() mulai bekerja di modul formulir di sisi klien, karena Ini adalah event handler interaktif formulir. Saat membuat template untuk prosedur ini, platform akan secara otomatis menempatkan arahan kompilasi sebelum deskripsi prosedur &Pada Klien.

Lalu kita memanggil fungsinya Harga eceran(). Karena fungsi ini tidak akan ditemukan di sisi klien, maka eksekusi akan ditransfer ke modul umum Bekerja dengan Direktori, yang berjalan di server. Setelah fungsinya selesai, kode program akan terus dijalankan di klien.

Mari kita periksa langkah-langkah di atas dan luncurkan aplikasi dalam mode 1C:Enterprise. Mari bekerja dengan konfigurasi yang dikembangkan.

MEMASUKKAN DATA KE DB

1. Masukkan minimal 8 dokumen Penyediaan Layanan ke dalam aplikasi.