Bahasa Ekspresi Sistem Komposisi Data (1Cv8). Fungsi bahasa ekspresi sistem komposisi data 1s SKD menghitung bidang fungsi

Hitung Ekspresi adalah fungsi ACS yang agak sulit untuk dipahami, dan contoh penerapannya dalam informasi referensi cukup langka. Artikel ini membahas contoh-contoh yang pasti berguna bagi setiap pengembang:

  1. total kumulatif dalam pengelompokan;
  2. total kumulatif dalam tab silang;
  3. mendapatkan nilai sebelumnya;
  4. Keluaran PM dalam satu baris.

1. Memperoleh indikator secara akrual

Mari kita ambil jumlah barang sebagai total kumulatif pada tingkat pengelompokan. Untuk melakukan ini, buat bidang terhitung (lihat Gambar 1).
Pada tab "Sumber Daya", atur fungsi untuk bidang kalkulasi:
HitungEkspresi("Jumlah(Perputaran Kuantitas)", "Pertama", "Saat Ini")
yang akan menjumlahkan jumlah produk dari catatan pertama hingga catatan saat ini (lihat Gambar 2).

Jika jumlah total kumulatif suatu item perlu diperoleh pada tingkat catatan terperinci, maka kami mengatur fungsi HitungEkspresi untuk bidang terhitung pada tab “Bidang terhitung” (lihat Gambar 3).
Bergantung pada tingkat perolehan total kumulatif, kami membuat pengelompokan (lihat Gambar 4): pada tingkat sumber daya - pengelompokan berdasarkan barang, pada tingkat kendali jarak jauh - pengelompokan catatan terperinci.
Gambar 4. Pengelompokan laporan dengan total kumulatif

2. Mendapatkan nilai indikator dari baris sebelumnya

Mari kita dapatkan nilai tukar untuk tanggal tersebut dan tanggal sebelumnya. Untuk melakukannya, buat bidang terhitung dan tulis ekspresi berikut di bidang ekspresi (lihat Gambar 5):
HitungEkspresi("Nilai", "Sebelumnya", "Sebelumnya")
yang akan mengambil nilai nilai tukar sebelumnya untuk baris saat ini, parameter terakhir dari fungsi membatasi penerimaan data.
Karena kami bekerja pada tingkat catatan terperinci, kami segera membuka tab "Pengaturan" dan membuat pengelompokan - catatan terperinci.

3. Memperoleh indikator sebagai total kumulatif dalam tab silang

Mari kita dapatkan jumlah barang berdasarkan akrual berdasarkan periode. Untuk melakukan ini, buat bidang terhitung (lihat Gambar 1). Pada tab “Sumber Daya”, kami menentukan ekspresi berikut untuk bidang terhitung (lihat Gambar 6):
HitungEkspresi("Jumlah(PerputaranKuantitas)", "Periode", "Pertama", "Saat Ini")
yang pada tingkat pengelompokan akan menghitung jumlah barang pada interval dari baris pertama hingga baris saat ini dalam konteks periode untuk setiap item.
Pada tab “Pengaturan”, buat tabel dengan pengelompokan berdasarkan item dalam satu baris dan pengelompokan berdasarkan titik dalam kolom (lihat Gambar 7).

4. Mengeluarkan data tabular dalam satu baris

Metode untuk menampilkan data tabular dalam satu baris, termasuk metode menggunakan fungsi HitungEkspresi, dibahas dalam artikel

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

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

Kumpulan data dalam 1C SKD

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

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

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

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

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

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

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

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

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

&Pada Klien

Prosedur Cetak()

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

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

Akhir Prosedur

&Di server

Fungsi CetakDiServer()

DocumentObject = FormAttributeValue("Objek");

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

DataSet = Struktur baru;

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

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

OurLayout = DocumentObject.GetLayout("SKD");

Pengaturan = Tata Letak Kami.Pengaturan Default;

//buat tata letak tata letak data dengan pengaturan kami

LayoutLinker = newDataLayoutLayoutLinker;

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

//melakukan komposisi data dengan kumpulan data kami

DataCompositionProcessor = newDataCompositionProcessor;

DataCompositionProcessor.Inisialisasi(LayoutLayout, DataSet);

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

ReportDocument = Dokumen Tabular Baru;

OutputProcessor = OutputProcessorDataCompositionResultInTabularDocument Baru;

OutputProcessor.SetDocument(ReportDocument);

OutputProcessor.Output(DataCompositionProcessor);

Laporan Dokumen Pengembalian;

Fungsi Akhir

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

TENTANG penyatuan

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

Kami memiliki tabel:

Setelah komunikasi kami akan menerima:

Dan jika digabungkan:

Sekarang mari kita lihat pengisian kolom dalam kumpulan data (kita akan melewatkan beberapa, karena terkait dengan tab lain; kita akan kembali ke kolom tersebut di artikel mendatang):

- bidang, tunjukkan nama umum atribut;

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

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

- batasan lapangan, tunjukkan ketersediaan persyaratan ini;

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

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

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

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

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

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

Koneksi kumpulan data di 1C SKD

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

Penggunaan skema komposisi data (DCS) yang tepat memungkinkan Anda untuk:

  • secara signifikan mengurangi waktu yang dibutuhkan untuk mengembangkan laporan;
  • menghilangkan kebutuhan untuk membuat penangan formulir terkelola;
  • dapatkan hasil yang indah dengan kemungkinan penyesuaian tambahan oleh pengguna.

Namun tidak semua pengembang memanfaatkan kemampuan skema ini secara maksimal, karena tidak semua pengaturannya jelas dan intuitif. Secara khusus, banyak orang yang mengetahui bahwa di 1C SKD terdapat kolom kalkulasi, namun mereka tidak sepenuhnya memahami ruang lingkup penggunaannya dan metode pengerjaannya.

Apa itu bidang terhitung

Dalam kebanyakan kasus, sumber data dalam diagram tata letak adalah kueri. Pada prinsipnya, di dalam query itu sendiri, Anda sudah dapat menggunakan berbagai rumus, konstruksi, dan ekspresi. Sebuah pertanyaan wajar muncul: mengapa kita memerlukan fungsi duplikat?

Faktanya adalah bahwa sistem kontrol akses lebih dari sekedar menampilkan hasil query, dan ini terlihat jelas dari bentuk pembuatan diagram (Gbr. 1).

Bidang terhitung memungkinkan Anda melakukan tindakan tertentu dengan kumpulan data yang dihasilkan:

  • Keluarkan array data yang diterima berdasarkan permintaan ke dalam sel tertentu, gabungkan beberapa baris menjadi satu;
  • Akses fungsi ekspor modul umum;
  • Jalankan berbagai ekspresi yang tersedia untuk bahasa tata letak dan gunakan fungsi EvaluateExpression khusus.

Mari kita lihat daftar ini.

Array nilai dalam satu sel

Mari kita simulasikan situasi di mana perlu untuk menerima semua nomor dokumen tanda terima untuk rekanan di sel terpisah:


Jadi, kami telah membuat bidang perhitungan tambahan dalam skema kami;


Seperti yang Anda lihat dari contoh di atas, tidak ada kesulitan dalam menambahkan dan memproses kolom kalkulasi. Kami menggunakan dua fungsi: Array() dan ConnectRows().

Beberapa kata tentang yang terakhir. Selain parameter pertama yang menunjukkan pengidentifikasi array, nilai atau nilai, dua lagi dapat diatur di dalamnya:

  1. Pemisah Elemen – menunjukkan karakter mana yang akan memisahkan satu elemen array atau satu baris tabel nilai dari yang lain (dalam kasus kami, kami menghilangkan parameter ini dan jeda baris ditetapkan secara default);
  2. Pemisah Kolom – karakter yang digunakan untuk memisahkan kolom tabel nilai (titik koma digunakan secara default).

Mengakses fungsi ekspor modul umum

Fungsi modul umum dapat bertindak sebagai sumber data untuk mengisi kolom terhitung.

Beberapa poin penting:

  • Fungsi tersebut harus dapat diekspor;
  • Jika suatu fungsi terletak di modul umum dengan kumpulan atribut "Global", maka fungsi tersebut dipanggil langsung berdasarkan namanya, jika tidak, fungsi tersebut harus dipanggil sesuai dengan skema "Nama modul bersama". "Nama fungsi yang akan dipanggil."

Sebagai contoh penggunaan, kami akan mengambil permintaan dokumen penerimaan yang sama dan menampilkannya di kolom terpisah. Kami tidak akan menjelaskan permintaan itu sendiri; mari langsung beralih ke kolom kalkulasi:


Jadi, kita melihat bahwa hampir semua pemroses data dapat diinisialisasi dari sistem kontrol akses, yang secara signifikan memperluas kemungkinan penggunaan skema tersebut.

Ekspresi bahasa tata letak

Seringkali dalam pekerjaan seorang pengembang muncul situasi ketika perlu untuk menampilkan hasil pembagian di bidang ACS:

  1. Hitung harga rata-rata barang tersebut;
  2. Segala jenis minat;
  3. Perhitungan pendapatan rata-rata, dll.

Untuk menghindari masalah, dalam kasus ini disarankan untuk memasukkan tes pembagian dengan 0 ke dalam bidang kalkulasi.

Hal ini dapat dilakukan dengan menggunakan konstruksi “Pilihan Kapan….Lalu… Jika Tidak… Akhir”.

Pada akhirnya, beberapa kata tentang fungsi baru HitungEkspresi(). Dengan bantuannya, khususnya, Anda dapat menghitung penyimpangan biaya antara baris saat ini dan sebelumnya, saldo kumulatif, dll.

Katakanlah Anda bisa mendapatkan Jumlah Dokumen dari baris permintaan kami sebelumnya dengan menentukan nilai Hitung Ekspresi ("Jumlah Dokumen", "Jumlah Sebelumnya") di bidang "Ekspresi".

1. Hitung (Eval)- dimaksudkan untuk mengevaluasi ekspresi dalam konteks pengelompokan tertentu. Fungsi ini digunakan untuk kompatibilitas dengan versi platform sebelumnya. Disarankan untuk menggunakan fungsi HitungEkspresi sebagai gantinya.

Sintaksis:
Hitung (Ekspresi, Pengelompokan, Tipe Perhitungan)

Pilihan :

  • Ekspresi(Garis). Berisi ekspresi terhitung;
  • Pengelompokan(Garis). Berisi nama pengelompokan dalam konteks ekspresi yang akan dievaluasi. Jika string kosong digunakan sebagai nama pengelompokan, penghitungan akan dilakukan dalam konteks pengelompokan saat ini. Jika string GrandTotal digunakan sebagai nama grup, penghitungan akan dilakukan dalam konteks total keseluruhan. Jika tidak, penghitungan akan dilakukan dalam konteks grup induk dengan nama yang sama.
    Misalnya:
    Jumlah(Sales.SumTurnover) / Hitung("Jumlah(Sales.SumTurnover)", "Total").
    Dalam contoh ini, hasilnya adalah rasio jumlah bidang "Sales.AmountTurnover" pada rekaman pengelompokan dengan jumlah bidang yang sama di seluruh tata letak.
  • Jenis perhitungan(Garis). Jika parameter ini disetel ke "TotalTotal", ekspresi akan dihitung untuk semua rekaman pengelompokan. Jika nilai parameternya adalah "Pengelompokan", nilai akan dihitung untuk rekaman grup pengelompokan saat ini.
2. Evaluasi Ekspresi (EvalExpression) - dimaksudkan untuk mengevaluasi ekspresi dalam konteks pengelompokan tertentu. Fungsi ini memperhitungkan pemilihan pengelompokan, tetapi tidak memperhitungkan pemilihan hierarki. Fungsi ini tidak dapat diterapkan pada pengelompokan dalam pemilihan grup pengelompokan tersebut.

Sintaksis:
HitungEkspresi(Ekspresi, Pengelompokan, CalculationType, Mulai, Akhir, Sortir, HierarchicalSort, ProcessingIdenticalOrderValues)

Pilihan :

  • Ekspresi(Garis). Berisi ekspresi terhitung;
  • Pengelompokan(Garis). Berisi nama pengelompokan dalam konteks ekspresi yang akan dievaluasi. Jika string kosong digunakan sebagai nama pengelompokan, penghitungan akan dilakukan dalam konteks pengelompokan saat ini. Jika string GrandTotal digunakan sebagai nama grup, penghitungan akan dilakukan dalam konteks total keseluruhan. Jika tidak, penghitungan akan dilakukan dalam konteks pengelompokan induk dengan nama tersebut;
  • Jenis perhitungan(Garis). Jika parameter ini disetel ke "TotalTotal", ekspresi akan dihitung untuk semua rekaman pengelompokan. Jika nilai parameternya adalah "Pengelompokan", nilai akan dihitung untuk rekaman grup pengelompokan saat ini. Jika parameter disetel ke "Pengelompokan Non-Sumber Daya", maka saat menghitung fungsi untuk rekaman grup berdasarkan sumber daya, ekspresi akan dievaluasi untuk rekaman grup pertama dari pengelompokan asli. Saat mengevaluasi fungsi HitungEkspresi dengan nilai "GroupingNonResource" untuk rekaman grup yang tidak dikelompokkan berdasarkan sumber daya, fungsi tersebut dievaluasi dengan cara yang sama seperti jika dievaluasi dengan nilai parameter "Pengelompokan". Pembuat tata letak komposisi data, saat membuat tata letak komposisi data saat mengeluarkan bidang - sumber daya yang digunakan untuk mengelompokkan, ke tata letak, mengeluarkan ekspresi yang dihitung menggunakan fungsi HitungEkspresi dengan parameter "GroupingNon-Resource" yang ditentukan ke tata letak. Untuk sumber daya lain yang dikelompokkan berdasarkan sumber daya, ekspresi sumber daya normal dikembalikan. Jika parameter disetel ke "Hierarki", maka ekspresi harus dievaluasi untuk catatan hierarki induk, jika ada, dan untuk seluruh pengelompokan, jika tidak ada catatan hierarki induk. Pembuat tata letak, saat membuat ekspresi untuk % di bidang Grup Hierarki, menghasilkan ekspresi yang berisi hubungan ekspresi sumber daya dengan fungsi HitungEkspresi untuk ekspresi sumber daya yang sedang dihitung untuk pengelompokan saat ini dengan tipe perhitungan Hierarki.
  • Awal. Menunjukkan dari rekaman mana fragmen harus dimulai, di mana fungsi ekspresi agregat harus dihitung, dan dari rekaman mana untuk memperoleh nilai bidang di luar fungsi agregat. Sebuah string yang berisi salah satu dari:
    • "Pertama" Penting untuk mendapatkan catatan pengelompokan pertama. Setelah kata dalam tanda kurung, Anda dapat menentukan ekspresi, yang hasilnya akan digunakan sebagai offset dari awal pengelompokan. Nilai yang dihasilkan harus berupa bilangan bulat yang lebih besar dari nol. Misalnya, Pertama(3) – menerima rekaman ketiga dari awal pengelompokan. Jika record pertama berada di luar pengelompokan, maka dianggap tidak ada record. Misal ada 3 record, dan ingin mendapatkan First(4), maka dianggap tidak ada record.
    • "Terakhir" Anda perlu mendapatkan catatan pengelompokan terakhir. Setelah kata dalam tanda kurung, Anda dapat menentukan ekspresi, yang hasilnya akan digunakan sebagai offset dari akhir pengelompokan. Nilai yang dihasilkan harus berupa bilangan bulat yang lebih besar dari nol. Misalnya, Terakhir(3) – menerima rekor ketiga dari akhir grup. Jika record terakhir berada di luar pengelompokan, maka dianggap tidak ada record. Misal ada 3 record, dan ingin mendapatkan Last(4), maka dianggap tidak ada record.
    • "Sebelumnya" Anda perlu mendapatkan catatan pengelompokan sebelumnya. Setelah kata dalam tanda kurung, Anda dapat menentukan ekspresi, yang hasilnya akan digunakan sebagai offset dari rekaman pengelompokan saat ini. Misalnya, Sebelumnya(2) – mendapatkan yang sebelumnya dari rekaman sebelumnya. Jika record sebelumnya berada di luar pengelompokan (misalnya, record pengelompokan kedua memerlukan perolehan Sebelumnya(3)), maka record pengelompokan pertama akan diperoleh. Saat menerima rekor sebelumnya untuk total pengelompokan, rekor pertama diperoleh.
    • "Berikutnya" Anda perlu mendapatkan catatan pengelompokan berikutnya. Setelah kata dalam tanda kurung, Anda dapat menentukan ekspresi, yang hasilnya akan digunakan sebagai offset dari entri pengelompokan saat ini. Misalnya, Berikutnya(2) – mendapatkan rekaman berikutnya dari rekaman berikutnya. Jika record berikutnya melampaui pengelompokan, maka dianggap tidak ada record. Misal ada 3 entri dan entri ketiga mendapat Next, maka dianggap tidak ada entri. Ketika record berikutnya diterima untuk total pengelompokan, dianggap tidak ada record.
    • "Saat ini". Anda perlu mendapatkan catatan saat ini. Saat mengambil total pengelompokan, catatan pertama diperoleh.
    • "Nilai Batas". Kebutuhan untuk mendapatkan catatan dengan nilai yang ditentukan. Setelah kata LimitingValue dalam tanda kurung, Anda perlu menunjukkan ekspresi dengan nilai yang ingin Anda mulai fragmennya, bidang pengurutan pertama. Catatan pertama yang nilai bidang pengurutannya lebih besar atau sama dengan nilai yang ditentukan akan dikembalikan sebagai catatan. Misalnya, jika bidang Periode digunakan sebagai bidang pengurutan, dan memiliki nilai 01/01/2010, 01/02/2010, 01/03/2010, dan Anda ingin mendapatkan LimitingValue(DateTime(2010 , 1, 15)), maka akan diperoleh record dengan tanggal 02/01.2010.
  • Akhir. Menunjukkan ke rekaman mana fragmen harus dilanjutkan, ke mana ekspresi agregat harus dihitung. Sebuah string yang berisi salah satu dari:
    • "Pertama"
    • "Terakhir"
    • "Sebelumnya"
    • "Berikutnya"
    • "Saat ini".
    • "Nilai Batas".
  • Penyortiran. Sebuah string yang mencantumkan ekspresi, dipisahkan dengan koma, ke arah mana urutannya harus diurutkan. Jika tidak ditentukan, maka pengurutan dilakukan dengan cara yang sama seperti pengelompokan yang ekspresinya dievaluasi. Setelah setiap ekspresi, Anda dapat menentukan kata kunci Ascending, untuk mengurutkan dalam urutan menaik, Descending, untuk mengurutkan dalam urutan menurun, Auto-Ordering, untuk mengurutkan bidang referensi berdasarkan bidang yang ingin Anda gunakan untuk mengurutkan objek yang direferensikan. Kata Auto Order dapat digunakan dengan kata Ascending dan kata Descending.
  • Penyortiran Hierarki. Mirip dengan penyortiran. Digunakan untuk mengatur catatan hierarki. Jika tidak ditentukan, kompositor tata letak akan menghasilkan pengurutan sesuai dengan pengurutan yang ditentukan dalam parameter Sortir.
  • Memproses Nilai Pesanan yang Sama. Sebuah string yang berisi salah satu dari:
    • "Bersama" berarti rangkaian record yang diurutkan digunakan untuk menentukan record sebelumnya dan berikutnya;
    • "Secara terpisah" berarti bahwa catatan sebelumnya dan berikutnya ditentukan berdasarkan nilai ekspresi pemesanan;
    Misalnya, jika urutan yang dihasilkan diurutkan berdasarkan tanggal:
    1. 01 Januari 2001 Ivanov M.10
    2. 02 Januari 2001 Petrov S.20
    3. 02 Januari 2001 Sidorov R.30
    4. 03 Januari 2001 Petrov S.40
    Saat menggunakan pemrosesan nilai identik dengan urutan "Separately", yang sebelumnya untuk record 3 akan menjadi record 2, dan saat menggunakan "Bersama" - record 1. Dan fragmen untuk record saat ini untuk record 2 untuk "Separately" akan menjadi catatan 2, dan untuk "Bersama" - catatan 2 dan 3. Jadi, total catatan saat ini untuk "Terpisah" akan menjadi 20, dan untuk "Bersama" - 50. Ketika "Bersama" ditentukan di Mulai dan Parameter akhir, Anda tidak dapat menentukan offset untuk posisi "Pertama", "Terakhir", "Sebelumnya", "Berikutnya". Nilai defaultnya adalah "Terpisah".
Contoh:
Memperoleh rasio jumlah bidang "Sales.AmountTurnover" dari catatan pengelompokan dengan jumlah bidang yang sama di seluruh tata letak:
Jumlah(Sales.SumTurnover) / HitungEkspresi("Jumlah(Sales.SumTurnover)", "Total").

Contoh ini menghitung nilai hierarki saat ini:
Pilihan
Ketika Level() > 0
Kemudian EvaluateExpression("Referensi", "Hierarki")
Kalau tidak, nihil
Akhir

Catatan:
Fungsi ini memperhitungkan pemilihan pengelompokan, tetapi tidak memperhitungkan pemilihan hierarki. Fungsi ini tidak dapat diterapkan pada pengelompokan dalam pemilihan grup pengelompokan tersebut. Misalnya, dalam memilih pengelompokan Nomenklatur, Anda tidak dapat menggunakan ekspresi HitungEkspresi("Sum(SumTurnover)", "TotalTotal") > 1000 . Namun ungkapan seperti itu dapat digunakan dalam seleksi hierarki. Jika record akhir mendahului record awal, maka dianggap tidak ada record untuk menghitung data detail dan menghitung fungsi agregat. Saat menghitung ekspresi interval untuk total keseluruhan (parameter Pengelompokan diatur ke "Total Kotor"), diasumsikan bahwa tidak ada catatan untuk menghitung data terperinci dan menghitung fungsi agregat. Saat membuat ekspresi untuk fungsi HitungEkspresi, kompositor tata letak, jika ekspresi pengurutan berisi bidang yang tidak dapat digunakan dalam pengelompokan, akan mengganti fungsi HitungEkspresi dengan NULL.

3. Evaluasi Ekspresi Dengan Group Array (EvalExpression With Group Array) - fungsi mengembalikan array, yang setiap elemennya berisi hasil penghitungan ekspresi untuk pengelompokan berdasarkan bidang yang ditentukan.

Sintaksis:
HitungEkspresiDenganGroupArray (Ekspresi, GroupFieldExpressions, SelectRecords, SelectGroups)

Pilihan :

  • Ekspresi(String) - ekspresi yang akan dievaluasi. Misalnya, "Jumlah(Jumlah Perputaran)";
  • Grup Ekspresi Bidang
  • Pemilihan Catatan
  • Pemilihan Pengelompokan- seleksi diterapkan pada catatan grup. Misalnya: "Jumlah(JumlahPerputaran) > &Parameter1".
Contoh:
Maksimum(CalculateExpressionWithGroupArray("Jumlah(JumlahPerputaran)", "Counterparty"));


Pembuat tata letak, saat membuat ekspresi untuk tampilan bidang khusus yang ekspresinya hanya berisi fungsi HitungArrayWithGroup, menghasilkan ekspresi tampilan sehingga data yang ditampilkan oleh tampilan dan data diurutkan.
Misalnya, untuk bidang khusus dengan ekspresi:
HitungEkspresiDenganGroupArray("Jumlah(JumlahPerputaran)", "Counterparty")
Pembuat tata letak akan menghasilkan ekspresi berikut untuk keluaran:
ConnectRows(Array(Order(CalculateExpressionWithGroupingValueTable("Lihat(Jumlah(DataSet.AmountTurnover)), Jumlah(DataSet.AmountTurnover)", "DataSet.Account"), "2")))

4. Hitung Ekspresi Dengan GroupValueTable (EvalExpressionWithGroupValueTable) - fungsi mengembalikan tabel nilai, yang setiap elemennya berisi hasil penghitungan ekspresi untuk dikelompokkan berdasarkan bidang yang ditentukan.

Sintaksis:
HitungExpressionWithGroupValueTable (Ekspresi, GroupField Expressions, Pilihan Rekaman, Pilihan Grup)

Pilihan :

  • Ekspresi(String) - ekspresi yang akan dievaluasi. Sebuah baris dapat berisi beberapa ekspresi yang dipisahkan dengan koma. Setelah setiap ekspresi mungkin ada kata kunci opsional AS dan nama kolom tabel nilai. Misalnya: “Counterparty, Jumlah (Jumlah Perputaran) Sebagai Volume Penjualan.”
  • Grup Ekspresi Bidang- ekspresi bidang pengelompokan, dipisahkan dengan koma. Misalnya, "Rekanan, Pihak";
  • Pemilihan Catatan- ekspresi yang diterapkan pada catatan detail. Misalnya, "Bendera Penghapusan = Salah". Jika parameter ini menggunakan fungsi agregat, kesalahan akan terjadi saat menyusun data;
  • Pemilihan Pengelompokan- seleksi diterapkan pada catatan grup. Misalnya: "Jumlah(JumlahPerputaran) > &Parameter1".
Contoh:
Hitung Ekspresi Dengan Tabel Pengelompokan Nilai (“Akun SEBAGAI Counterparty, Jumlah (Jumlah Perputaran) SEBAGAI Volume Penjualan”, “Akun”)

Hasil dari fungsi ini adalah tabel nilai dengan kolom Counterparty dan Volume Penjualan, yang berisi rekanan dengan volume penjualannya.
Kompositor tata letak, saat membuat tata letak, mengubah parameter fungsi menjadi bidang tata letak komposisi data. Misalnya, bidang Akun akan dikonversi menjadi DataSet.Akun.
Misalnya, bidang khusus dengan ekspresi:
HitungEkspresiDenganGroupValueTable("Akun, Jumlah(JumlahPerputaran)", "Akun")
Pembuat tata letak akan menghasilkan ekspresi berikut untuk keluaran:
ConnectRows(GetPart(Order(CalculateExpressionWithGroupingValueTable("DataSet.Account, DataSet.AccountRepresentation, Sum(DataSet.AmountTurnover), View(DataSet.AmountTurnover), DataSet.OrderingField", "DataSet.Account"), "5, 1, 3" ), "2, 4"))

5. Tingkat - fungsi ini dirancang untuk mendapatkan level perekaman saat ini.

Sintaksis:
Tingkat()

Contoh:
Tingkat()

6. Nomor Urut - dapatkan nomor seri selanjutnya.

Sintaksis:
NomorBerdasarkanPesanan()

Contoh:
NomorBerdasarkanPesanan()

7. Nomor Urutan Dalam Pengelompokan - mengembalikan nomor urut berikutnya dalam pengelompokan saat ini.

Contoh:
NomorBerdasarkanPesananDalamGrup()

8. Formatnya - dapatkan string yang diformat dari nilai yang diteruskan.

Sintaksis:
Format(Nilai, FormatString)

Pilihan :

  • Arti- ekspresi yang perlu diformat;
  • FormatString- format string diatur sesuai dengan string format 1C:Enterprise.
Contoh:
Format(Faktur.Jumlah Dokumen, "NPV=2")

9. Periode Awal

Sintaksis:
Periode Mulai (Tanggal, Tipe Periode)

Pilihan :

  • tanggal(Tanggal). Tanggal yang ditentukan;
  • Tipe Periode
Contoh:
Periode Mulai(DateTime(2002, 10, 12, 10, 15, 34), "Bulan")
Hasil: 01.10.2002 0:00:00

10. Akhir Periode - fungsi ini dirancang untuk memilih tanggal tertentu dari tanggal tertentu.

Sintaksis:
Periode Akhir (Tanggal, Tipe Periode)

Pilihan :

  • tanggal(Tanggal). Tanggal yang ditentukan;
  • Tipe Periode(Garis). Berisi salah satu nilai berikut: Menit; Jam; Hari; Seminggu; Bulan; Seperempat; Tahun; Dasawarsa; Setengah tahun.
Contoh:
Periode Akhir(DateTime(2002, 10, 12, 10, 15, 34), "Minggu")
Hasil: 13/10/2002 23:59:59

11. TambahkanKDate (TanggalTambah) - fungsi ini dirancang untuk menambahkan nilai tertentu pada tanggal.

Sintaksis:
AddToDate(Ekspresi, InkrementType, Besaran)

Pilihan :

  • Ekspresi(Tanggal). Tanggal asli;
  • Jenis Pembesaran(Garis). Berisi salah satu nilai berikut: Menit; Jam; Hari; Seminggu; Bulan; Seperempat; Tahun; Dasawarsa; Setengah tahun.
  • Besarnya(Nomor). Berapa banyak tanggal yang perlu ditambah, bagian pecahannya diabaikan.
Contoh:
AddToDate(DateTime(2002, 10, 12, 10, 15, 34), "Bulan", 1)
Hasil: 12/11/2002 10:15:34

12. Perbedaan Tanggal - Fungsi ini dirancang untuk mendapatkan perbedaan antara dua tanggal.

Sintaksis:
PerbedaanTanggal(Ekspresi1, Ekspresi2, Tipe Perbedaan)

Pilihan :

  • Ekspresi1(Tanggal). Tanggal pengurangan;
  • Ekspresi2(Tanggal). Tanggal asli;
  • Perbedaan Jenis(Garis). Berisi salah satu nilai: Kedua; Menit; Jam; Hari; Bulan; Seperempat; Tahun.
Contoh:
PERBEDAAN TANGGAL(DATETIME(2002, 10, 12, 10, 15, 34),
DATETIME(2002, 10, 14, 9, 18, 06), "HARI")
Hasil: 2

13. Substring - fungsi ini dirancang untuk mengekstrak substring dari string.

Sintaksis:
Substring (String, Posisi, Panjang)

Pilihan :

  • Garis(Garis). String dari mana substring diekstraksi;
  • Posisi(Nomor). Posisi karakter dari mana substring yang akan diekstraksi dari string dimulai;
  • Panjang(Nomor). Panjang substring yang dialokasikan.
Contoh:
SUBSTRING(Akun.Alamat, 1, 4)

14. Panjang Senar - Fungsi ini dirancang untuk menentukan panjang string.

Sintaksis:
Panjang String(String)

Parameter:

  • Garis(Garis). Sebuah string yang panjangnya ditentukan.
Contoh:
Jalur(Rekanan.Alamat)

15. Tahun- fungsi ini dirancang untuk mengekstrak tahun dari nilai tipe Tanggal.

Sintaksis:
Tahun (Tanggal)

Parameter:

  • tanggal(Tanggal). Tanggal dimana tahun ditentukan.
Contoh:
TAHUN(Beban.Tanggal)

16. Kuartal - fungsi ini dirancang untuk mengekstrak nomor kuartal dari nilai tipe Tanggal. Angka seperempat biasanya berkisar antara 1 hingga 4.

Sintaksis:
Kuartal (Tanggal)

Parameter:

  • tanggal(Tanggal). Tanggal penentuan kuartal
Contoh:
TRIWULAN(Beban.Tanggal)

17. Bulan - fungsi ini dirancang untuk mengekstrak nomor bulan dari nilai tipe Tanggal. Nomor bulan biasanya berkisar antara 1 hingga 12.

Sintaksis:
Bulan (Tanggal)

Parameter:

  • tanggal(Tanggal). Tanggal dimana bulan ditentukan.
Contoh:
BULAN(Beban.Tanggal)

18. Hari dalam Setahun (HariTahun) - fungsi ini dirancang untuk mendapatkan hari dalam setahun dari nilai tipe Tanggal. Hari dalam setahun biasanya berkisar antara 1 hingga 365 (366).

Sintaksis:
Hari dalam Setahun (Tanggal)

Parameter:

  • tanggal(Tanggal). Tanggal dimana hari dalam setahun ditentukan.
Contoh:
DAYYEAR(Rekening Pengeluaran.Tanggal)

19. Hari- fungsi ini dirancang untuk mendapatkan hari dalam sebulan dari nilai tipe Tanggal. Hari dalam sebulan biasanya berkisar antara 1 hingga 31.

Sintaksis:
Hari tanggal)

Parameter:

  • tanggal(Tanggal). Tanggal dimana hari dalam bulan ditentukan.
Contoh:
HARI(Beban.Tanggal)

20. Minggu - fungsi ini dirancang untuk mendapatkan nomor minggu dalam setahun dari nilai tipe Tanggal. Minggu dalam setahun diberi nomor mulai dari 1.

Sintaksis:
Minggu (Tanggal)

Parameter:

  • tanggal(Tanggal). Tanggal penentuan nomor minggu.
Contoh:
MINGGU(Beban.Tanggal)

21. Hari Kerja - fungsi ini dirancang untuk mendapatkan hari dalam seminggu dari nilai tipe Tanggal. Hari normal dalam seminggu berkisar antara 1 (Senin) hingga 7 (Minggu).

Sintaksis:
Hari dalam Seminggu (Tanggal)

Parameter:

  • tanggal(Tanggal). Tanggal dimana hari dalam seminggu ditentukan.
Contoh:
HARI DALAM MINGGU(Biaya.Tanggal)

22. Jam- fungsi ini dirancang untuk mendapatkan jam dari nilai tipe Tanggal. Jam dalam sehari berkisar antara 0 hingga 23.

Sintaksis:
Jam (Tanggal)

Parameter:

  • tanggal(Tanggal). Tanggal dimana jam dalam sehari ditentukan.
Contoh:
JAM(Beban.Tanggal)

23. Menit - fungsi ini dirancang untuk mendapatkan menit dari nilai tipe Tanggal. Menit dalam satu jam berkisar antara 0 hingga 59.

Sintaksis:
Menit (Tanggal)

Parameter:

  • tanggal(Tanggal). Tanggal dimana menit dalam satu jam ditentukan.
Contoh:
MENIT(Beban.Tanggal)

24. Kedua - fungsi ini dirancang untuk mendapatkan detik dalam satu menit dari nilai tipe Tanggal. Detik dalam satu menit berkisar antara 0 hingga 59.

Sintaksis:
Kedua (Tanggal)

Parameter:

  • tanggal(Tanggal). Tanggal dimana detik-detik dalam menit ditentukan.
Contoh:
KEDUA (Beban.Tanggal)

25. Pemeran - fungsi ini dirancang untuk mengekstrak tipe dari ekspresi yang mungkin berisi tipe gabungan. Jika ekspresi berisi tipe selain tipe yang diperlukan, NULL akan dikembalikan.

Sintaksis:
Ekspres (Ekspresi, Jenis Indikasi)

Pilihan :

  • Ekspresi- ekspresi yang akan dikonversi;
  • Jenis Indikasi(Garis). Berisi string tipe. Misalnya, "Nomor", "String", dll. Selain tipe primitif, baris ini mungkin berisi nama tabel. Dalam hal ini, upaya akan dilakukan untuk menyatakan referensi ke tabel yang ditentukan.
Contoh:
Ekspres(Data.Props1, "Nomor(10,3)")

26. IsNull (IsNull) - fungsi ini mengembalikan nilai parameter kedua jika nilai parameter pertama adalah NULL. Jika tidak, nilai parameter pertama akan dikembalikan.

Sintaksis:
IsNull(Ekspresi1, Ekspresi2)

Pilihan :

  • Ekspresi1- nilai yang akan diperiksa;
  • Ekspresi2- nilai kembalian jika Expression1 adalah NULL.
Contoh:
YesNULL(Jumlah(Penjualan.JumlahPerputaran), 0)

27.ACos- Menghitung arc cosinus dalam radian.

Sintaksis:
ACos (Ekspresi)

Parameter:

  • Ekspresi(Nomor). Nilai cosinus (dalam kisaran -1...1) yang digunakan untuk menentukan sudut.
28.ASin- menghitung arcsinus dalam radian.

Sintaksis:
ASin (Ekspresi)

Parameter:

  • Ekspresi(Nomor). Nilai sinus (dalam kisaran -1...1) yang digunakan untuk menentukan sudut.
29.ATan- menghitung arctangen dalam radian.

Sintaksis:
ATan (Ekspresi)

Parameter:

  • Ekspresi(Nomor). Nilai tangen yang menentukan sudut.
30.Cos- menghitung kosinus.

Sintaksis:
Karena (Ekspresi)

Parameter:

  • Ekspresi
31. Eks- menaikkan angka e menjadi pangkat.

Sintaksis:
Exp(Ekspresi)

Parameter:

  • Ekspresi(Nomor). Arti dari gelar.
32.Catatan- menghitung logaritma natural.

Sintaksis:
Log (Ekspresi)

Parameter:

  • Ekspresi
33.Log10- menghitung logaritma X ke basis 10.

Sintaksis:
Log10(Ekspresi)

Parameter:

  • Ekspresi(Nomor). Angka aslinya lebih besar dari 0.
34. Kekuatan- eksponen.

Sintaksis:
Pow (Basis, Indikator)

Pilihan :

  • Basis(Nomor). Dasar pengoperasian eksponensial.
  • Indeks(Nomor). Eksponen.
35. Dosa- menghitung sinus.

Sintaksis:
Dosa (Ekspresi)

Parameter:

  • Ekspresi(Nomor). Ditentukan dalam radian.
36. Persegi- menghitung akar kuadrat.

Sintaksis:
Akar (Ekspresi)

Parameter:

  • Ekspresi(Nomor). Angka non-negatif.
37. Tan- menghitung garis singgung.

Sintaksis:
Tan (Ekspresi)

Parameter:

  • Ekspresi(Nomor). Nilai sinus yang digunakan untuk menentukan sudut.
38. Bulat- membulatkan angka asli ke kedalaman bit yang diperlukan. Mode pembulatan adalah standar (1,5 sebagai 2).

Sintaksis:
Env (Ekspresi, Kedalaman bit)

Pilihan :

  • Ekspresi(Nomor). Nomor asli;
  • Kedalaman sedikit(Nomor). Jumlah tempat desimal yang ingin dibulatkan.
39. Int- memotong bagian pecahan suatu bilangan.

Sintaksis:
Objek (Ekspresi)

Parameter:

  • Ekspresi(Nomor). Bilangan pecahan.
40. Fungsi modul umum

Ekspresi mesin komposisi data mungkin berisi panggilan ke fungsi modul konfigurasi umum global. Tidak diperlukan sintaks tambahan untuk memanggil fungsi tersebut.

Contoh:
Nama Singkatan(Dokumen.Link, Dokumen.Tanggal, Dokumen.Nomor)

Dalam contoh ini, fungsi "Nama Singkatan" akan dipanggil dari modul konfigurasi umum.
Perhatikan bahwa penggunaan fungsi modul umum hanya diperbolehkan jika parameter prosesor komposisi data yang sesuai ditentukan.
Selain itu, fungsi modul umum tidak dapat digunakan dalam ekspresi bidang khusus.

41. Kebencian - fungsi ini mengembalikan representasi string dari nilai yang diteruskan dari tipe non-primitif. Untuk nilai bertipe primitif, mengembalikan nilai itu sendiri.

<Пустое значение>".

Contoh:
Presentasi (Counterparty)

42. Tali - fungsi ini mengubah nilai yang diteruskan menjadi string.

Jika array atau tabel nilai digunakan sebagai parameter, fungsi mengembalikan string yang berisi representasi string dari semua elemen array, dipisahkan oleh karakter ";". Jika ada elemen yang memiliki representasi string kosong, maka string "<Пустое значение>".

Contoh:
Baris (Tanggal Penjualan)

43. Nilai Sudah Terisi

Untuk nilai NULL, Undefinisi selalu mengembalikan False.
Untuk nilai Boolean, selalu mengembalikan True.
Untuk tipe lainnya, mengembalikan True jika nilainya berbeda dari nilai default untuk tipe tertentu.

Contoh:
NilaiDiisi (Tanggal Pengiriman)

44. LevelDalam Grup - fungsi ini mendapatkan tingkat perekaman saat ini relatif terhadap pengelompokan.

Dapat digunakan untuk memperoleh tingkat bersarang suatu catatan dalam pengelompokan hierarki.

Contoh:
LevelDalamGrup()

45. Tipe Nilai

Sintaksis:
Tipe Nilai (Ekspresi)

Parameter:

  • Ekspresi(Garis). Tipe nilai string.
Mengembalikan nilai tipe Tipe yang berisi tipe nilai parameter fungsi.

Masuk ke situs sebagai pelajar

Masuk sebagai siswa untuk mengakses materi sekolah

Sistem komposisi data 1C 8.3 untuk pemula: menghitung hasil (sumber daya)

Tujuan dari pelajaran ini adalah:

  • Tulis laporan yang menampilkan daftar produk (Direktori Makanan), kandungan kalori dan rasanya.
  • Kelompokkan produk berdasarkan warna.
  • Pelajari tentang meringkas (sumber daya) dan kolom kalkulasi.

Buat laporan baru

Seperti pada pelajaran sebelumnya, kita membuka database” Toko makanan"di konfigurator dan buat laporan baru melalui menu" Mengajukan"->"Baru...":

Tipe dokumen - laporan eksternal:

Pada formulir penyiapan laporan, tulis nama " Pelajaran3" dan tekan tombol " Buka diagram komposisi data":

Biarkan nama skema default dan klik tombol " Siap":

Menambahkan permintaan melalui konstruktor

Di tab " Himpunan data" klik hijau tanda tambah dan pilih " Tambahkan Kumpulan Data - Kueri":

Daripada menulis teks permintaan secara manual, kami menjalankannya kembali konstruktor kueri:

Di "tab" Tabel"tarik meja" Makanan" dari kolom pertama ke kolom kedua:

Pilih dari tabel " Makanan"bidang yang akan kami minta. Untuk melakukan ini, seret dan lepas bidang tersebut" Nama", "Mencicipi", "Warna" Dan " Konten kalori" dari kolom kedua ke kolom ketiga:

Ternyata seperti ini:

Tekan tombolnya " OKE" - teks permintaan dibuat secara otomatis:

Membuat pengaturan presentasi laporan

Buka tab " Pengaturan" dan klik tongkat sihir, memanggil perancang pengaturan:

Pilih jenis laporan" Daftar..." dan tekan tombol " Lebih jauh":

Seret dari kolom kiri ke kanan bidang yang akan ditampilkan dalam daftar dan klik " Lebih jauh":

Tarik dari kolom kiri ke kolom kanan" Warna" - itu akan terjadi pengelompokan baris dalam laporan. Klik " OKE":

Dan inilah hasil karya desainernya. Hirarki laporan kami:

  • laporan secara keseluruhan
  • mengelompokkan "Warna"
  • entri terperinci - baris dengan nama makanan

Simpan laporan (tombol disket) Dan tanpa menutup Kami akan segera membuka konfigurator dalam mode pengguna. Ternyata seperti ini:

Mengubah urutan kolom

Tapi ayo ayo ubah urutannya kolom (panah atas dan bawah) sehingga tampak seperti gambar di bawah ini:

Mari simpan laporan dan buka lagi dalam mode pengguna:

Bagus, itu jauh lebih baik.

Mari kita simpulkan kandungan kalorinya

Alangkah baiknya jika merangkum kandungan kalori makanan berdasarkan kelompoknya. Untuk melihat jumlah kandungan kalori semua produk, katakanlah putih atau kuning. Atau cari tahu kandungan kalori total semua produk di database.

Untuk itu, ada mekanisme penghitungan sumber daya.

Buka tab " Sumber daya"dan seret bidangnya" Konten kalori“(kita rangkum) dari kolom kiri ke kanan.

Dalam hal ini, di lapangan, pilih ekspresi dari daftar drop-down " Jumlah (Kalori)", karena totalnya adalah jumlah semua elemen yang termasuk dalam total:

Kami menyimpan dan membuat laporan:

Kami sekarang memiliki hasil untuk masing-masing kelompok dan laporan secara keseluruhan.

Mari kita jumlahkan (rata-rata) dalam hal kalori

Sekarang mari kita tampilkan di kolom lain rata-rata kandungan kalori produk menurut kelompok dan dalam laporan secara keseluruhan.

Anda tidak dapat menyentuh kolom "Kalori" yang ada - totalnya sudah ditampilkan di dalamnya mari buat bidang lain, yang merupakan salinan persis dari kolom "Kalori".

Untuk membuat bidang “virtual” seperti itu, kita akan menggunakan mekanismenya bidang terhitung.

Buka tab " Bidang terhitung" dan tekan hijau tanda tambah:

Dalam kolom " Jalur data"kita tulis nama field baru ( mulus, tanpa spasi). Biarkan itu disebut " Kandungan Kalori Rata-Rata", dan di kolom" Ekspresi"kami menulis nama bidang yang ada, yang menjadi dasar penghitungan bidang baru. Kami menulis di sana" Konten kalori". Kolom" Menuju" akan terisi secara otomatis.

Kami telah menambahkan bidang baru (" Kandungan Kalori Rata-Rata"), tetapi itu tidak akan muncul dengan sendirinya dalam laporan - Anda perlu menelepon lagi perancang pengaturan("tongkat ajaib") atau tambahkan bidang ini secara manual.

Ayo lakukan Kedua jalan. Untuk melakukan ini, buka tab " Pengaturan", Pilih " Laporan"(lagipula kita ingin menambahkan field tersebut secara keseluruhan ke laporan), pilih tab di bagian bawah" Bidang yang dipilih"dan seret bidangnya" Kandungan Kalori Rata-Rata"dari kolom kiri ke kanan:

Ternyata seperti ini:

Kami menyimpan dan membuat laporan:

Bidang tersebut telah muncul dan kita melihat bahwa nilainya adalah nilai bidang "Kalori". Besar!

Untuk melakukan ini, kita akan kembali menggunakan mekanisme yang sudah kita kenal sumber daya(meringkas). Buka tab " Sumber daya"dan seret bidangnya" Kandungan Kalori Rata-Rata"dari kolom kiri ke kanan:

Apalagi di kolom " Ekspresi"memilih" Rata-rata(Kalori Rata-Rata)":

Kami menyimpan dan membuat laporan:

Kami melihat bahwa untuk kelompok, yaitu untuk setiap warna, dan untuk laporan secara keseluruhan, nilai rata-rata dihitung dengan benar. Tapi mereka hadir entri tambahan untuk produk individual (bukan grup) yang ingin saya hapus dari laporan.

Tahukah Anda mengapa mereka muncul (nilai bukan berdasarkan kelompok)? Karena ketika kami menambahkan bidang " Kandungan Kalori Rata-Rata"di pengaturan laporan, pada langkah kedua kita pilih seluruh laporan dan bidang baru ini berakhir di elemen " Terperinci catatan".

Mari kita perbaiki kesalahannya. Untuk melakukan ini, kembali ke tab " Pengaturan", Pilih " Entri terperinci" pertama dari atas (langkah 2) lalu " Entri terperinci"dari bawah (langkah 3), buka bookmark" Terpilih bidang" dan kita akan melihat di kolom kanannya elemen " Mobil".

Elemen " Mobil" - ini bukan satu bidang. Ini adalah beberapa bidang yang ada di sini secara otomatis berdasarkan pengaturan tingkat yang lebih tinggi.

Untuk melihat bidang-bidang ini, klik pada elemen " Mobil" Kanan tombol dan pilih " Memperluas":

Elemen " Mobil" diperluas ke bidang berikut:

Dan inilah bidang kita" Kandungan Kalori Rata-Rata"yang datang ke sini dari titik" Laporan" ketika kami menyeretnya ke sana. Hanya mari kita hapus centang kotak di sebelah bidang ini untuk menghapus hasilnya.

Publikasi tentang topik tersebut