Rumah / OS seluler / Total untuk kolom tabel nilai 1s 8.3. Dan sekarang: pengulangan materi

Total untuk kolom tabel nilai 1s 8.3. Dan sekarang: pengulangan materi

Mungkin, tidak ada satu pun objek kumpulan nilai universal yang tidak sepopuler pengembang 1s seperti tabel nilai (TK). Daftar nilai tidak dapat diperluas dengan atribut, pohon nilai nyaman secara visual, tetapi konstruksi pembacaan terprogram dari nilai barisnya sulit diterapkan.

Dan hanya tabel nilai:

  • Mampu mengisi secara langsung bagian tabular dari dokumen, direktori dan pemrosesan;
  • Apakah hasil dari mengeksekusi permintaan;
  • Mudah dibaca dan dibentuk secara visual;
  • dan banyak banyak lainnya.

Pada artikel ini, kami mencoba memberikan gambaran umum tentang objek yang kompleks dan serbaguna seperti tabel nilai.

Apa itu tabel nilai?

Semua pengembang pemula dengan jelas mengetahui bahwa tabel nilai memiliki:

  1. Kolom yang menggambarkan struktur tabel;
  2. Baris yang mengisi tabel dengan informasi.

Namun, kita sangat sering melupakan satu properti penting dari sebuah tabel - indeksnya, yaitu, menggunakannya memungkinkan kita untuk sangat mempercepat proses pencarian dalam tabel, pembentukan pilihan di dalamnya dan secara serius meningkatkan kinerja.

Tapi hal pertama yang pertama.

Gambar 1 menunjukkan seperti apa tabel nilai, dicetak dengan prosedur paling sederhana, yang menunjukkan struktur dan isinya.

Seperti yang dapat dilihat dari contoh, ada 5 kolom dalam tabel, tidak termasuk nomor baris secara berurutan.

Dalam kebanyakan kasus, tidak perlu menentukan tipe data kolom dan lebarnya, cukup dengan menentukan nama kolom, tetapi dalam beberapa kasus ini tidak cukup (misalnya, saat mengunggah tabel ke file .dbf).

Jika di masa depan direncanakan untuk menggunakan tabel nilai sebagai sumber data untuk kueri, perlu untuk menentukan tipe data (Gbr. 2).

Sebuah baris ditambahkan menggunakan metode Add(), dengan penetapan nama baris baru.

Indeks tabel nilai

Pencarian di tabel nilai dilakukan dengan dua metode:

  • Temukan (mengembalikan elemen pertama yang ditemukan sesuai dengan parameter tertentu, jika tidak, nilainya tidak ditentukan);
  • FindRows (mengembalikan larik baris tabel yang memenuhi kondisi tertentu).

Pencarian di tabel besar sangat "menggantung" sistem dan bisa lama. Dalam kasus inilah indeks harus digunakan.

Dalam kasus pertama, pencarian dilakukan pada satu nilai dan satu kolom, dan kolom inilah yang harus diteruskan ke indeks (Gbr. 3)

Indeks yang dipisahkan dengan koma menunjukkan bahwa tabel dapat dicari dengan metode FindString, yang akan melewati struktur tertentu sebagai parameter.

Dalam kasus yang ditunjukkan dalam contoh, baris kedua menunjukkan pencarian simultan untuk baris yang berisi nilai spesifik Nomenklatur dan karakteristiknya, dan baris ketiga menunjukkan bahwa dokumen "Perintah Produksi" dapat ditambahkan ke parameter pencarian.

Saat bekerja dengan berbagai objek metadata konfigurasi, serta laporan dan pemrosesan, situasi sering muncul ketika perlu untuk melakukan tindakan tertentu dengan bagian tabularnya. Bekerja langsung dengan elemen formulir atau bagian tabel dokumen tidak selalu nyaman.

Di sini tabel nilai datang untuk menyelamatkan lagi. Di TOR, menggunakan metode Unload() dari bagian tabular, Anda dapat:

  1. Ulangi sepenuhnya struktur tabel dokumen, pertahankan semua informasi yang mungkin;
  2. Tentukan hanya kolom dan baris yang diperlukan untuk pekerjaan lebih lanjut, dan tampilkan.

Tindakan sebaliknya (mengisi bagian tabular) dilakukan oleh metode Load(), satu-satunya parameter yang merupakan nama tabel output.

Perlu dicatat bahwa perbandingan kolom bagian tabular dan TK terjadi berdasarkan nama.

Anda dapat sepenuhnya menyalin satu TK ke yang lain, serta menentukan baris dan kolom mana yang akan ditransfer menggunakan metode Salin ().

Gbr.4

Dalam hal ini, kolom tabel akan disimpan, dan informasi serta baris dari duplikat akan dihapus.

Tabel nilai dan kueri

Seperti disebutkan di atas, hasil kueri diturunkan dalam spesifikasi teknis, tetapi cukup sering pengembang memiliki pertanyaan: bagaimana memproses tabel nilai dengan kueri, apakah mungkin, dan kode apa yang membantu melakukan ini.

Teknologi kueri dalam 1C tidak melibatkan penggunaan TK sebagai sumber data, tetapi batasan ini dapat dengan mudah dielakkan menggunakan . Kode pada Gambar 5 menunjukkan bagaimana hal ini dilakukan.

Gbr.5

Dengan mengganti "*" dengan nama kolom (string bertipe TK.Nomenklatur), Anda dapat mengurangi jumlah informasi yang diunggah.

Kesalahan saat menjalankan permintaan (Gbr. 5) "Jenis tidak dapat diproses dalam permintaan", menunjukkan bahwa pengembang lupa mengeksekusi bagian dari kode pada Gambar 2 dan tidak mengetik kolom.

Tabel nilai dan siklus

Saat mengulangi baris tabel nilai menggunakan metode yang berisi penghitung (Gbr. 6), penting untuk diingat bahwa nilai awal indeks baris adalah 0, dan nilai akhir dari iterator harus 1 kurang dari jumlah baris dalam tabel. Jika tidak, ada kemungkinan 100% kesalahan "Nilai indeks di luar jangkauan".

Gbr.6

Secara umum, lebih baik untuk menghitung garis TK melalui konstruksi "Untuk setiap ... dari", mendefinisikan nama iterator.

Berikut adalah sedikit fakta untuk memulai - contoh sederhana bekerja dengan tabel nilai:

1. Buat tabel nilai

ValueTable = Tabel Nilai Baru;


2. Buat kolom dari tabel nilai:

ValueTable.Columns.Add("Nama");
ValueTable.Columns.Add("Nama Belakang");


3. Tambahkan baris baru menggunakan nama kolom:


NewString.Name = "Vasily";
NewRow.LastName = "Anak Anjing";


4. Cara mencari nilai pada tabel nilai:
Penting untuk menemukan baris tabel yang berisi nilai yang diinginkan.

FoundString = ValueTable.Find(LookupValue);


5. Temukan kemunculan pertama di kolom tertentu dari tabel nilai

FoundString = ValueTable.Find(LookupValue, "Pemasok, Pembeli");


6. Jika Anda perlu menemukan semua kejadian dalam tabel nilai:
Kami menggunakan struktur pencarian.

SearchStructure = Struktur("Karyawan", LookupValue);
ArrayFoundStrings = ValueTable.FindStrings(SearchStructure);


Mari kita buat struktur pencarian, setiap elemen yang akan berisi nama kolom sebagai kunci dan nilai yang dicari di kolom ini sebagai nilai. Kami meneruskan Struktur Pencarian sebagai parameter ke metode FindStrings(). Hasilnya, kami mendapatkan baris tabel.
Jika kita menambahkan pencarian nilai yang diinginkan ke struktur pencarian, misalnya juga di kolom Responsible, maka sebagai hasil penerapan metode FindRows(), kita akan mendapatkan semua baris di mana baik Employee dan Responsible sama dengan yang diinginkan. nilai.

7. Cara mengulang tabel nilai dalam urutan acak

Untuk Setiap CurrentRow Dari ValueTable Loop
Laporan(CurrentLine.Name);
Siklus Akhir;

Lakukan hal yang sama menggunakan indeks:

SeniorIndex = ValueTable.Count() - 1;
Untuk MF = 0 menurut Siklus Indeks Senior
Laporan(Tabel Nilai[Jumlah].Nama);
Siklus Akhir;


8. Menghapus Baris Tabel Nilai yang Ada

ValueTable.Delete(HapusRow);

berdasarkan indeks

ValueTable.Delete(0);


9. Menghapus kolom tabel nilai yang ada

ValueTable.Columns.Delete(RemoveColumn);


berdasarkan indeks

ValueTable.Columns.Delete(0);

Harus diperhitungkan bahwa menghapus baris (atau kolom) "dari tengah" dari tabel nilai akan menyebabkan penurunan salah satu indeks dari baris yang "setelah" dihapus

10. Bagaimana cara mengisi tabel nilai jika nama kolom terdapat dalam variabel?

Baris Baru = ValueTable.Add();
Baris Baru[NamaKolom] = Nilai;


11. Bagaimana cara mengisi seluruh kolom tabel nilai dengan nilai yang diinginkan?
Kolom Bendera FiscalAccounting pada tabel nilai Tabel Nilai harus diisi dengan nilai False

ValueTable.FillValue(Salah, "Bendera Akuntansi Fiskal");


Kami menggunakan metode FillValues() untuk tabel nilai. Parameter pertama adalah nilai yang harus diisi. Parameter kedua adalah nama kolom yang diisi.

12. Bagaimana cara mengisi tabel nilai "TableRecipient" dengan data tabel nilai "SourceTable"?

Jika Tabel Penerima belum ada pada saat operasi, atau Anda tidak perlu menyimpan kolom sebelumnya, Anda dapat membuatnya sebagai salinan lengkap awal

TableReceiver = TableOriginal.Copy();


Opsi dua: tabel TableReceiver ada, dan sangat disayangkan kehilangan kolom dan batasannya pada tipe data kolom. Tetapi Anda perlu mengisi data untuk kolom yang namanya cocok dengan nama tabel sumber.

Transfer data sebagian untuk kolom dengan nama yang cocok:

Untuk Setiap Baris SourceTable Dari SourceTable Loop
FillPropertyValues(NewString, SourceTableString);
Siklus Akhir


Untuk setiap baris tabel sumber, baris baru ditambahkan ke tabel tujuan dan nilainya diisi di kolom tabel baru yang namanya cocok dengan nama kolom di tabel sumber

Jika tabel tidak memiliki kolom dengan nama yang sama, tabel tujuan akan berakhir dengan baris dengan nilai null sebanyak baris dalam tabel sumber.
Jika untuk beberapa kolom dengan nama yang sama tipe nilai data dari tabel sumber tidak termasuk dalam array tipe kolom yang diizinkan dari tabel tujuan, kami akan mendapatkan nilai kosong di bidang tersebut.
Mari kita pertimbangkan kasus ketiga. Dalam hal kolom dengan nama yang sama, kolom tabel tujuan harus disesuaikan sepenuhnya dengan kolom tabel sumber.

Salinan data lengkap untuk kolom dengan nama yang cocok

SimilarColumns = Array Baru();

Untuk Setiap Kolom Dari SourceTable.Columns Loop
MatchingColumn = TableReceiver.Columns.Find(Column.Name);

Jika Kolom Cocok<>Tidak terdefinisi Kemudian

// Dapatkan properti kolom.
Nama = Kolom.Nama;
ValueType = Kolom.ValueType;
Judul = Kolom.Judul;
Lebar = Kolom.Lebar;

// Ganti kolom di tabel tujuan.
Indeks = TableReceiver.Columns.Index(CoincidentColumn);

TableReceiver.Columns.Delete(Indeks);
TableReceiver.Columns.Insert(Index, Name, ValueType, Title, Width);

// Tambahkan nama berikutnya dari kolom yang cocok ke array.
Same-nameColumns.Add(Column.Name);

Berakhir jika;

Siklus Akhir;

// Loop melalui baris tabel sumber.
Untuk setiap Baris SourceTable Dari SourceTable Loop

// Tambahkan baris baru ke tabel tujuan.
NewString = TabelReceiver.Add();

// Isi nilai dalam sel yang cocok.
Untuk setiap NameColumns Of Same NameColumns Loop
NewString[NamaKolom] = SourceTableString[NamaKolom];

Siklus Akhir;

Siklus Akhir;


Kita harus mengganti kolom di tabel tujuan dengan yang baru, yang propertinya akan sepenuhnya cocok dengan kolom tabel sumber.
Oleh karena itu, jika kolom dengan nama yang sama ditemukan di tabel penerima, kami mengumpulkan semua properti untuk kolom baru dalam variabel. Selanjutnya, hapus yang lama dan buat kolom baru. Kemudian kita mengulang baris-baris tabel sumber.
Dalam loop, kita menambahkan baris baru ke tabel penerima dan membuka loop melalui nama kolom dalam larik kolom yang cocok.
Di dalam loop bersarang ini, kami mengisi sel tabel penerima dengan data sel tabel sumber.

13. Bagaimana cara menambahkan kolom ke tabel nilai "Tabel Nilai" dengan batasan jenis?

Saat menambahkan kolom, Anda cukup menentukan namanya, dan tidak menyentuh parameter kedua dari metode Add(). Dalam hal ini, tipe data kolom adalah arbitrer.

Menambahkan kolom tanpa menentukan tipe data

// Tambahkan kolom tanpa batasan tipe.
ValueTable.Columns.Add("Objek");


Anda dapat mengisi nilai parameter kedua. Perlu untuk memberikan deskripsi jenis yang diizinkan untuk kolom di sana. Deskripsi itu sendiri dapat diperoleh dengan menggunakan konstruktor, meneruskan nama tipe string sebagai parameter ke yang terakhir (jika ada banyak tipe, dipisahkan dengan koma) atau larik tipe yang valid.

Menambahkan kolom yang menentukan tipe data

// Batasan pada tipe data kolom:
// Hanya elemen dari direktori "Kontraktor".
ValueTable.Columns.Add("Account", New TypeDescription("ReferenceReference.Accounts"));


Jika ada string di antara jenis yang diizinkan untuk mengisi data kolom, Anda dapat membatasi kedalaman bitnya (panjang), tentukan penggunaan variabel atau panjang tetap. Semua ini disediakan dengan membuat objek menggunakan konstruktor StringQualifiers. Selanjutnya, objek ini akan digunakan sebagai salah satu parameter konstruktor TypeDescription.

Menggunakan kualifikasi untuk menentukan tipe data kolom tabel nilai

// Mempersiapkan dan menetapkan batasan untuk data tipe String.
String Qualifiers = New String Qualifiers(20, ValidLength.Variable);
AllowedTypes = NewTypeDescription("String",StringQualifiers);
ValueTable.Columns.Add("NoteStringShort", ValidTypes);


Anda dapat melakukan hal yang sama untuk kualifikasi nomor dan tanggal.
Harap dicatat: deskripsi tipe dapat dibangun oleh konstruktor baik "dari awal", dan Anda dapat menggunakan deskripsi tipe yang ada sebagai dasar

Menggunakan Deklarasi Tipe yang Ada untuk Menentukan Tipe Data dari Kolom Tabel Nilai

// Ekstensi dari deskripsi tipe yang digunakan sebelumnya.
Number Qualifiers = New Number Qualifiers(10, 2, ValidSign.Non-negative);
DateQualifiers = DateQualifiers Baru(DateParts.Date);
ExtendedValidTypes = NewTypeDescription(ValidTypes, "Nomor, Tanggal",NumberQualifiers,DateQualifiers);

ValueTable.Columns.Add("Catatan", ExtendedAllowedTypes);

Untuk memperhitungkan uang dan barang, tabel yang berbeda banyak digunakan dalam bisnis. Hampir setiap dokumen adalah tabel.

Satu tabel mencantumkan barang yang akan dikirim dari gudang. Di meja lain - kewajiban untuk membayar barang-barang ini.

Oleh karena itu, dalam 1C, bekerja dengan tabel menempati tempat yang menonjol.

Tabel di 1C juga disebut "bagian meja". Buku referensi, dokumen dan lain-lain memilikinya.

Kueri mengembalikan tabel sebagai hasil eksekusinya, yang dapat diakses dengan dua cara berbeda.

Yang pertama - lebih cepat - seleksi, mendapatkan baris dari itu hanya mungkin secara berurutan. Yang kedua adalah membongkar hasil kueri ke dalam tabel nilai dan kemudian mengaksesnya secara acak.

//Opsi 1 - akses berurutan ke hasil kueri

// ambil meja
Pilihan = Query.Execute().Select();
// melewati semua baris hasil kueri secara berurutan
While Selection.Next() Loop
Laporan (Pilihan.Nama);
Siklus Akhir;

//Opsi 2 - mengunggah ke tabel nilai
Query = New Query("PILIH Nama DARI Direktori.Nomenklatur");
// ambil meja
Tabel = Query.Execute().Upload().
// maka kita juga bisa melewati semua baris
Untuk setiap Baris dari Tabel Loop
Laporan(String.Nama);
Siklus Akhir;
//atau mengakses string secara sewenang-wenang
String = Tabel.Find("Sekop", "Nama");

Fitur penting adalah bahwa dalam tabel, yang diperoleh dari hasil kueri, semua kolom akan diketik dengan kuat. Ini berarti bahwa dengan meminta bidang Nama dari pencarian Nomenklatur, Anda akan menerima kolom tipe String dengan panjang yang diizinkan tidak lebih dari N karakter.

Tabel pada formulir (klien tebal)

Pengguna bekerja dengan tabel ketika ditempatkan pada formulir.

Kami membahas prinsip-prinsip dasar bekerja dengan formulir dalam pelajaran dan dalam pelajaran tentang

Jadi, mari kita letakkan tabel di atas formulir. Untuk melakukan ini, Anda dapat menyeret tabel dari panel kontrol. Demikian pula, Anda dapat memilih kontrol Formulir/Sisipkan dari menu.

Data dapat disimpan dalam konfigurasi - maka Anda perlu memilih bagian tabular yang ada (sebelumnya ditambahkan) dari objek konfigurasi yang bentuknya sedang Anda edit.

Klik tombol "..." di properti Data. Untuk melihat daftar bagian tabular, Anda perlu memperluas cabang Object.

Saat memilih bagian tabular, 1C sendiri akan menambahkan kolom ke tabel pada formulir. String yang dimasukkan oleh pengguna ke dalam tabel tersebut akan secara otomatis disimpan bersama dengan direktori/dokumen.

Di properti Data yang sama, Anda bisa memasukkan nama arbitrer dan memilih tipe ValueTable.

Ini berarti bahwa tabel nilai arbitrer telah dipilih. Itu tidak akan secara otomatis menambahkan kolom, itu tidak akan disimpan secara otomatis, tetapi Anda dapat melakukan apa pun yang Anda inginkan dengannya.

Dengan mengklik kanan pada tabel Anda dapat menambahkan kolom. Di properti kolom, Anda dapat menentukan namanya (untuk referensi dalam kode 1C), judul kolom pada formulir, koneksi dengan atribut bagian tabular (yang terakhir - jika bukan tabel arbitrer, tetapi bagian tabular adalah terpilih).

Di properti tabel pada formulir, Anda bisa menentukan apakah pengguna bisa menambah/menghapus baris. Formulir yang lebih maju adalah kotak centang Hanya Lihat. Properti ini berguna untuk mengatur tabel yang dimaksudkan untuk menampilkan informasi, tetapi tidak untuk mengedit.

Untuk mengelola tabel, Anda perlu menampilkan panel perintah pada formulir. Pilih item menu Form/Insert Control/Command Panel.

Di properti bilah perintah, pilih kotak centang Pelengkapan otomatis sehingga tombol pada bilah alat muncul secara otomatis.

Tabel pada formulir (klien kurus/terkelola)

Pada formulir terkelola, tindakan ini terlihat sedikit berbeda. Jika Anda perlu menempatkan bagian tabular pada formulir, perluas cabang Object dan seret salah satu bagian tabular ke kiri. Dan itu saja!

Jika Anda perlu menempatkan tabel nilai, tambahkan atribut formulir baru dan tentukan tipe di propertinya - tabel nilai.

Untuk menambahkan kolom, gunakan menu tombol kanan mouse pada atribut formulir ini, item Tambahkan kolom atribut.

Kemudian seret juga tabel ke kiri.

Agar tabel memiliki bilah perintah, di properti tabel, pilih nilai di bagian Penggunaan - Posisi bilah perintah.

Mengekspor tabel ke Excel

Tabel 1C apa pun yang terletak di formulir dapat dicetak atau diunggah ke Excel.

Untuk melakukan ini, klik kanan pada ruang kosong di tabel dan pilih Tampilkan Daftar.

Di klien terkelola (tipis), tindakan serupa dapat dilakukan menggunakan item menu Semua tindakan/Daftar tampilan.

(Artikel ini mengacu pada rangkaian artikel 1C dari awal; memprogram 1c dari awal; tabel nilai 1c)

Dalam artikel sebelumnya, saya berbicara tentang membuat tabel nilai 1s dan cara mengakses data yang dikandungnya.

Mari kita perluas pengetahuan ini, untuk pekerjaan yang lebih nyaman dengan tabel nilai. Mari kita mulai dengan beberapa properti berguna dari tabel nilai.

1. Iterasi pada baris tabel nilai menggunakan indeks baris (nomor baris)

metode TabelNilai.Kuantitas()- mengembalikan jumlah baris dalam tabel nilai.

Saya mengingatkan Anda bahwa jika metodenya TabelNilai.Kuantitas() menunjukkan bahwa ada 5 baris dalam tabel, maka indeks (angka) dari baris tersebut adalah: 0, 1, 2, 3, 4.

Misalkan kita memiliki tabel nilai 1C dengan kolom "Nama Belakang Klien"

Jika kita ingin mengulangi semua baris tabel nilai menggunakan indeks baris, kita harus menggunakan header loop, seperti pada contoh berikut. Di dalamnya, kami menampilkan isi kolom "Nama Belakang Pelanggan" untuk setiap baris, yaitu, kami mencetak seluruh kolom dengan nama belakang pelanggan.
Jadi:

Untuk RowNumber = 0 Oleh OurTable.Quantity() - 1 Loop // baris diulang di sini CurrentLastName = OurTable[RowNumber].ClientLastName; // "ClientLastName" adalah nama kolom yang berisi nama keluarga klien Laporan(CurrentLastName); Siklus Akhir;

Harap dicatat bahwa kami meningkatkan penghitung loop ke nilai yang sama dengan jumlah baris tabel dikurangi satu: Tabel Kami.Kuantitas() - 1

Mari kita cari tahu apa arti kode tersebut: Tabel Kami[Nomor Baris]. Ini adalah banding ke baris tertentu dari tabel nilai berdasarkan indeksnya (angka).

Dalam contoh berikut, saya akan menunjukkan caranya Tabel Kami[Nomor Baris] mengembalikan kita sebuah objek yang memiliki tipe "StringValueTable".
Dalam variabel tambahan, saya memasukkan hasil mengakses baris dengan nomor: TableString = OurTable[RowNumber]

Selanjutnya, setelah menerima objek - satu baris tabel nilai dalam bentuk variabel BarisTabel, kita dapat bekerja secara terpisah dengan objek string ini. Contoh di bawah ini melakukan hal yang sama seperti contoh di atas, hanya variabel "ekstra" yang digunakan dalam contoh yang lebih rendah BarisTabel

Untuk RowNumber = 0 Oleh OurTable.Quantity() - 1 Loop // baris diulang di siniTableRow = OurTable[RowNumber].Nama Belakang Pelanggan; // dapatkan baris tabel nilai saat ini dengan indeksnya (angka) CurrentLastName = TableString.ClientLastName; // "ClientLastName" adalah nama kolom yang berisi nama keluarga klien Laporan(CurrentLastName); Siklus Akhir;

Jika kita menulis kode seperti ini di dalam loop: Laporan (Baris Tabel)- kode ini TIDAK akan menampilkan data dari baris saat ini tabel nilai (misalnya, nama belakang klien, dll.).

Semuanya benar, karena variabel BarisTabel adalah objek dan akses ke data dilakukan melalui properti dan metode objek ini - dan jika Anda menulis Laporan (Baris Tabel), maka informasi tentang jenis variabel akan ditampilkan di layar BarisTabel: RowTableValues.

Misalnya, kode StringTable.LastNamePelanggan hanya berarti akses ke data yang disimpan di kolom "Nama Belakang Klien" di objek baris saat ini. Yang kami gunakan dalam contoh untuk menampilkan nama belakang semua pelanggan yang disimpan dalam tabel nilai. Melewati semua baris dan menampilkan nama yang sama ini secara bergantian.

2. Iterasi pada baris tabel nilai menggunakan loop melalui koleksi "Untuk Setiap ..."

Untuk mengulangi garis tabel nilai 1C kita dapat menggunakan versi lain dari loop. Ini adalah loop khusus untuk mengulangi elemen objek koleksi. Tabel nilai 1c disebut koleksi. PADA kasus ini- kumpulan string.

Dan koleksi apa pun di 1C dapat disortir menggunakan loop:

Untuk Setiap Loop ....... aksi di dalam Loop End Loop

Mari kita tampilkan semua nama belakang klien dari semua baris tabel dengan mengulangi kumpulan baris tabel nilai:

Untuk Setiap Baris Tabel Dari Laporan Loop Tabel Kami (Baris Tabel. Nama Belakang Pelanggan); Siklus Akhir

Saat mengulangi koleksi, kami tidak memerlukan penghitung untuk nomor baris (indeks). Bentuk khusus dari siklus membantu dilakukan tanpa penghitung. menjadi variabel arbitrer BarisTabel di setiap lintasan loop, objek baris dari tabel nilai secara otomatis ditetapkan.

Jadi di BarisTabel saat loop dijalankan, semua baris tabel nilai kami berada dalam satu baris. Dan kami hanya melakukan itu untuk setiap string yang diteruskan kepada kami, kami menampilkan isi kolom "Nama Belakang Klien" menggunakan konstruksi Beritahu (TableString.NamaPelanggan);

3. Dan sekarang: pengulangan materi.

Jadi, Tabel nilai 1C adalah kumpulan string. Seseorang mengumpulkan string, meletakkannya di tumpukan, dan hasilnya adalah kumpulan string seperti itu - yang mereka sebut - tabel nilai.

Hanya ini adalah kumpulan bukan hanya string teks biasa. Ini adalah kumpulan objek bertipe NilaiTabel Baris. Dan objek baris terpisah ini menyimpan data untuk setiap kolom di baris saat ini. Ini menyimpan nama belakang klien, tinggi klien, atau hal lain yang diperlukan.

Anda dapat mengakses baris tabel nilai berdasarkan indeksnya, yang dimulai dari nol. Dengan kode MyFourthRow = Tabel Saya- kita mendapatkan baris keempat dari tabel nilai, karena penomoran baris dimulai dari nol: 0, 1, 2, 3.

Jumlah baris yang kita tentukan dengan metode TabelSaya.Jumlah(). Kami tidak melupakan tanda kurung di akhir, karena kami memanggil metode tanpa parameter.

Ingatlah bahwa Anda dapat mengulangi semua baris tabel nilai menggunakan loop di mana kami mengulangi indeks baris (dari nol hingga (Jumlah baris dikurangi satu)), atau Anda dapat menggunakan loop iterasi koleksi .

Hal terakhir: Saat mengulangi koleksi, bagaimana cara mendapatkan nomor baris dari tabel nilai?
Anda bisa mendapatkan nomor baris saat ini dengan memanggil metode Index() untuk tabel nilai, yang kita lewati objek barisnya.

Contoh di bawah ini akan menampilkan nomor semua baris dalam tabel nilai 1C:

Untuk Setiap Baris Tabel Dari Laporan Perulangan Tabel Kami(OurTable.Index(TableRow)); Siklus Akhir

Kelanjutan materi akan ada di artikel berikut.....

Degtyarev Romawi.

Bagaimana cara belajar memprogram dalam 1C dari awal?

Bagaimana cara bekerja sebagai programmer 1C dan mendapatkan hingga 150.000 rubel sebulan?

DAFTAR GRATIS

KURSUS 2 MINGGU

"PROGRAM dalam 1C UNTUK PEMULA"

Kursus akan datang ke surel. Menjadi seorang programmer dengan menyelesaikan tugas langkah demi langkah.

Yang Anda butuhkan untuk berpartisipasi hanyalah komputer dan internet.

Akses gratis ke kursus:

sp-force-hide ( display: none;).sp-form ( display: block; background: #eff2f4; padding: 5px; lebar: 270px; max-width: 100%; border-radius: 0px; -moz-border -radius: 0px; -webkit-border-radius: 0px; font-family: Arial, "Helvetica Neue", sans-serif; background-repeat: no-repeat; background-position: center; background-size: auto;) .sp-form input ( display: inline-block; opacity: 1; visibility: visible;).sp-form .sp-form-fields-wrapper ( margin: 0 auto; width: 260px;).sp-form .sp -form-control ( background: #ffffff; border-color: #cccccc; border-style: solid; border-width: 1px; font-size: 15px; padding-left: 8.75px; padding-right: 8.75px; border -radius: 4px; -moz-border-radius: 4px; -webkit-border-radius: 4px; tinggi: 35px; lebar: 100%;).sp-form .sp-field label ( warna: #444444; font- ukuran: 13px; font-style: normal; font-weight: bold;).sp-form .sp-button ( border-radius: 4px; -moz-border-radius: 4px; -webkit-border-radius: 4px; background-color: #f4394c; warna: #ffffff; lebar: 100%; font-weig ht: 700; gaya font: normal font-family: Arial, "Helvetica Neue", sans-serif; bayangan kotak: tidak ada -moz-box-shadow: tidak ada; -webkit-box-shadow: tidak ada; background: linear-gradient(ke atas, #e30d22 , #f77380);).sp-form .sp-button-container ( text-align: center; width: auto;)

Tabel nilai dalam platform 1C 8.3 (8.2) adalah kumpulan nilai universal yang dapat digunakan pengembang dalam pengembangan perangkat lunak untuk mengimplementasikan algoritme mereka. Faktanya, tabel nilai 1C adalah kumpulan nilai dinamis yang memiliki kolom dan kolom.

Artikel tentang kumpulan nilai universal lainnya di 1C

Pelajari pemrograman dalam 1C di tempat dari buku saya "Program dalam 1C dalam 11 langkah"

  1. Buku ini ditulis dalam bahasa yang jelas dan sederhana - untuk pemula.
  2. Belajar memahami arsitektur 1C;
  3. Anda akan mulai menulis kode dalam bahasa 1C;
  4. Menguasai teknik dasar pemrograman;
  5. Konsolidasikan pengetahuan yang diperoleh dengan bantuan buku tugas;

Panduan yang sangat baik untuk mengembangkan aplikasi 1C terkelola, baik untuk pengembang pemula maupun pemrogram berpengalaman.

  1. Bahasa yang sangat mudah diakses dan dimengerti
  2. Buku dikirim melalui email dalam format PDF. Dapat dibuka di perangkat apa pun!
  3. Memahami ideologi aplikasi 1C terkelola
  4. Pelajari cara mengembangkan aplikasi terkelola;
  5. Belajar mendesain formulir yang dikelola 1C;
  6. Anda akan dapat bekerja dengan elemen dasar dan penting dari formulir terkelola
  7. Pemrograman di bawah aplikasi yang dikelola akan menjadi jelas

Kode promo untuk diskon 15% - 48PVXHeYu


Jika pelajaran ini membantu Anda memecahkan masalah, menyukainya atau berguna, maka Anda dapat mendukung proyek saya dengan mentransfer jumlah berapa pun:

dapat dibayar secara manual:

Yandex.Money — 410012882996301
Uang Web - R955262494655

Bergabunglah dengan grup saya.