Internet Windows Android
Kengaytirish

1s 8.2 qiymatlar jadvali qatorlarini aylantiring. Ob'ekt xususiyati va ob'ekt usulini hech qachon chalkashtirmaslik kerak

Qiymatlar jadvalini qidirishning ikkita maxsus usuli mavjud:

1. Toping

TVHorizon = Directories.Nomenclature.FindByName("TVHorizon");
FoundString = TZNomenclature.Find(TVHorizon);
//qidiruvni tezlashtirish uchun qaysi ustunlarda qidirish kerakligini ham belgilashimiz mumkin
FoundString = TZNomenclature.Find(TVHorizon, "Nomenklatura");

Bu usul topilgan birinchi qatorni kerakli qiymat bilan qaytaradi, agar topilmasa Aniqlanmagan. Shuning uchun, uni noyob qiymatlarni qidirish uchun ishlatish qulay, chunki aks holda, qiymat topilganda, keyingisini topish uchun uni jadvaldan olib tashlashingiz kerak bo'ladi.

Ushbu qiyinchilikka yo'l qo'ymaslik uchun sizga mos keladigan qatorlarni topishga imkon beradigan quyidagi usul mavjud:

2. FindStrings


Tanlov tuzilmasi.Insert("Nomenklatura", TVHorizon); // birinchi navbatda qaerga qarash kerakligini, keyin esa nimani izlash kerakligini ko'rsating.

Bu usul har doim massivni qaytaradi, lekin hech narsa topilmasa, u bo'sh bo'lishi mumkin. Va bu usul, avvalgisiga o'xshab, qiymatlarning o'zini emas, balki qiymatlar jadvalining satrlarini alohida massivda qaytaradi. Shuning uchun, massiv satridagi qiymatlarni o'zgartirish yoki oldingi usulda bo'lgani kabi, topilgan satr uchun siz qayta ishlangan qiymatlar jadvalidagi qiymatni o'zgartirasiz.

Ushbu usulning yana bir yaxshi tomoni shundaki, u bir vaqtning o'zida qiymatlar jadvalining bir nechta ustunlarini qidirishi mumkin:


SelectionStructure = Yangi tuzilma;
Tanlov tuzilmasi.Insert("Nomenklatura", TVHorizon);
Tanlov tuzilmasi.Insert("Miqdor", 10);
FoundArray of Rows = TZNomenclature.FindLines(SelectionStructure);

Ko'rib turganingizdek, yagona salbiy tomoni shundaki, siz "teng" dan boshqa taqqoslash turlaridan foydalana olmaysiz.

Barcha infostart o'quvchilariga salom. Ushbu maqola dasturiy ravishda boshqariladigan ilova shaklida o'zboshimchalik bilan qiymatlar jadvalini yaratish masalasiga bag'ishlanadi.

Vazifaning xususiyatlari.

Doimiy dasturda dasturlashtirgan har bir kishi ko'pincha shaklda o'zboshimchalik bilan qiymatlar jadvalini olish vazifasiga duch kelgan. Ixtiyoriy qiymatlar jadvali - bu ustunlar soni va turi oldindan ma'lum bo'lmagan jadval. Ya'ni, 3 ta ustun yoki 6 yoki 8 ta ustun bo'lishi mumkin. Oddiy dasturda hamma narsa oddiy: ishlov berish shakliga "Qiymatlar jadvali" elementini joylashtirishingiz va keyin yaratilgan qiymatlar jadvalini o'tkazishingiz mumkin. ushbu elementga dasturiy jihatdan. Keyin oddiy buyruq bilan:

Form Elements.TableField.CreateColumns();

shaklda qiymatlarning tayyor jadvalini oling. Bu oddiyroq bo'lishi mumkin edi.

Bularning barchasi oddiy dasturda edi. Boshqariladigan ilovada hamma narsa o'zgardi. O'zboshimchalik bilan jadval yaratish unchalik oson emas. Endi siz shakldagi qiymatlar jadvalini qat'iy ravishda parametrlashingiz yoki uni dasturiy ravishda yaratishingiz kerak (ta'riflang, bu aslida boshqariladigan dasturning mohiyatidir). Biz buni qilishga harakat qilamiz: boshqariladigan shaklda ixtiyoriy qiymatlar jadvalini dasturiy ravishda yarating.

Muammoning yechimi.

Biz qilishimiz kerak bo'lgan birinchi narsa - jadvalning shaklda qanday ko'rinishini aniqlash. Asosiysi, qayta ishlashda hech qanday shakl elementini yaratishingiz shart emas. Biz uni butun jadval kabi dasturiy tarzda yaratamiz. Ya'ni, jadval kimga kerak bo'lishiga qarab, shaklni ochish yoki tugmani ishlatish paytida tavsiflanadi va yaratiladi.

Shaklda jadval yaratish qiymatlar jadvalini atribut sifatida tavsiflash orqali amalga oshiriladi:
SelectionTypeArray = Yangi massiv; SelectionType massivi.Add(Type("Qiymatlar jadvali")); ChoiceTypeDescription = New TypeDescription(ChoiceTypeArray); Tafsilotlar massivi = Yangi massiv; Atributlar massivi.Qo'shish(Yangi shakl atributlari("Jadval jadvali", SelectionType tavsifi, "", "TZN")); Endi biz ma'lumotlarni o'z ichiga olgan dasturiy qiymatlar jadvalini yaratishimiz kerak. Agar qiymatlar jadvali so'rovdan olingan bo'lsa, unda hamma narsa ko'proq yoki kamroq tartibda bo'ladi. Agar jadval qo'lda yaratilgan bo'lsa, unda raqamlar yoki sanalar bo'lgan ustunlarning ma'nosi "Turlar tavsifi" orqali yaratilishi mumkin. Gap shundaki, qiymatlar jadvalidagi ustunlar qandaydir turga ega bo'lishi kerak. Agar, masalan, foydalanuvchi ushbu ustunlardagi ma'lumotlarni interaktiv tarzda to'ldirishi kutilsa, unda siz qiymatlar jadvalining ustunini shunchaki nom bilan qo'sha olmaysiz, uning turi bo'lishi kerak. Yodda tuting - bu juda muhim, chunki ... Ushbu turlarni formadagi jadvalga o'tkazamiz.
Biz bir nechta ustunlarni o'z ichiga olgan jadval yaratamiz:
CD = NewDateQualifiers(DateParts.Time); ArrayKD = Yangi massiv; ArrayCD.Add(Type("Sana")); DescriptionTypesTime = Yangi TavsifTypes(ArrayCD,CD); TZ = Yangi qiymatlar jadvali;
TK.Columns.Add("Bilan", DescriptionTypesTime);
TK.Columns.Add("Oldin", DescriptionTypesTime);
TK.Columns.Add("Ism");
TK.Columns.Add("Eslatma"); // To'liq ism va Eslatma - qatorlar Keyinchalik, biz TK dastur jadvalimizni kerakli ma'lumotlar bilan to'ldiramiz. Biz kerakli qiymatlarni o'z ichiga olgan va yaratilgan shakl atributiga o'tkazishga tayyor TK jadvalini olamiz. TK dan har bir ustun uchun. Ustunlar aylanishi

Atributlar massivi.Qo'shish(Yangi shakl atributlari(Column.Name, Column.ValueType,"ScheduleTable"));
EndCycle;
ChangeDetails(ArrayDetails);
SelectionFieldsTable = Elements.Add("TZN", Type("FormTable"));
SelectionFieldsTable.DataPath = "Jadval jadvali";
SelectionFieldTable.Display = TableDisplay.List;

Bu oddiy kombinatsiya va bizning stolimiz tayyor.

TK dan har bir ustun uchun. Ustunlar aylanishi

NewElement = Elements.Add(Column.Name, Type("FormField"), SelectionFieldTable);
NewElement.View = FormFieldView.InputField;
NewElement.DataPath = "Jadval jadvali." + Ustun nomi;
NewElement.Width = 10;
EndCycle;

Shartli dizayn, agar kerak bo'lsa, biz uni qo'lda ham yozamiz, buyruqlar menyusi - qo'lda. Jadval ishlovchilari ham qo'lda yoziladi. Masalan, “Tanlash” jadvaliga hodisa ishlov beruvchisini qo‘shish uchun:

SelectionFields.SetAction jadvali("Tanlash", "TZNSSelect");

Ushbu hodisani qayta ishlash uchun protsedura shaklida alohida protsedura belgilanadi:

&OnClient
TKNSelection protsedurasi (TK, SelectedRow, Field, StandardProcessing)
// ishlov beruvchi EndProcedure buyruqlari

Esda tutingki, jadval ishlov beruvchilari mijozga yonadi va shuning uchun kompilyator ko'rsatgich buyrug'iga ega bo'lishi kerak

&OnClient

Xo'sh, men qo'shmoqchi bo'lgan oxirgi narsa shundaki, barcha amallardan so'ng, tayyor jadvalni forma atributiga o'tkazishni unutmang:

ValueVFormAttributes(ToR, "ScheduleTable");

Natijada bizda shunday bo'ladi:


Va bu erda "Tanlash" hodisasini boshqarish:



Keyingi so'z.

Umid qilamanki, maqola dasturli shaklda jadvallar yaratishni boshlagan 1C dasturchilariga yordam beradi.

Siz dasturiy ravishda qiymatlar jadvalini yaratadigan va uni boshqariladigan shaklda o'z jadvallaringizni yaratishga yordam beradigan sharhlar bilan ko'rsatadigan ishlov berishni yuklab olishingiz mumkin.

Pul va tovarlar hisobini yuritish uchun biznesda turli jadvallardan keng foydalaniladi. Deyarli har bir hujjat jadvaldir.

Bir jadvalda ombordan jo'natilishi kerak bo'lgan tovarlar ro'yxati keltirilgan. Boshqa jadvalda ushbu tovarlar uchun to'lov majburiyatlari ko'rsatilgan.

Shuning uchun, 1C da jadvallar bilan ishlash muhim o'rinni egallaydi.

1C dagi jadvallar "jadval qismlari" deb ham ataladi. Kataloglar, hujjatlar va boshqalar ularga ega.

So'rov bajarilganda, ikki xil usulda kirish mumkin bo'lgan jadvalni qaytaradi.

Birinchisi - tezroq - tanlash, undan qatorlarni olish faqat tartibda mumkin. Ikkinchisi, so'rov natijasini qiymatlar jadvaliga yuklash va keyin unga tasodifiy kirish.

//1-variant - so'rov natijalariga ketma-ket kirish

//jadvalni oling
Select = Query.Run().Select();
// so'rov natijasining barcha qatorlarini tartibda o'tkazamiz
While Select.Next() tsikli
Hisobot (Selection.Name);
EndCycle;

//2-variant – qiymatlar jadvaliga yuklash
So'rov = Yangi so'rov("Katalog.Nomenklaturadan nom tanlang");
//jadvalni oling
Jadval = Query.Run().Unload().
// bundan keyin biz barcha satrlarni takrorlashimiz mumkin
Jadval aylanishidan har bir qator uchun
Hisobot (String.Name);
EndCycle;
//yoki satrlarga o'zboshimchalik bilan kirish
Qator = Table.Find("Shovel", "Ism");

Muhim xususiyat shundaki, so'rov natijalaridan olingan jadvalda barcha ustunlar qat'iy ravishda yoziladi. Bu shuni anglatadiki, Nomenklatura katalogidan Nom maydonini so'rash orqali siz ruxsat etilgan uzunligi N belgidan ortiq bo'lmagan String tipidagi ustunni olasiz.

Shakldagi jadval (qalin mijoz)

Foydalanuvchi formaga joylashtirilganda jadval bilan ishlaydi.

Biz darsda va darsda shakllar bilan ishlashning asosiy tamoyillarini muhokama qildik

Shunday qilib, jadvalni shaklga joylashtiramiz. Buning uchun jadvalni Boshqaruv panelidan sudrab olib borishingiz mumkin. Xuddi shunday, menyudan Form/Insert Control ni tanlashingiz mumkin.

Ma'lumotlar konfiguratsiyada saqlanishi mumkin - keyin siz shaklini tahrirlayotgan konfiguratsiya ob'ektining mavjud (ilgari qo'shilgan) jadval qismini tanlashingiz kerak.

Data xususiyatidagi "..." tugmasini bosing. Jadval qismlari ro'yxatini ko'rish uchun Ob'ekt bo'limini kengaytirish kerak.

Jadval qismini tanlaganingizda, 1C o'zi shakldagi jadvalga ustunlar qo'shadi. Bunday jadvalga foydalanuvchi tomonidan kiritilgan qatorlar ma'lumotnoma/hujjat bilan birga avtomatik ravishda saqlanadi.

Xuddi shu Data xususiyatida siz ixtiyoriy nom kiritishingiz va Qiymatlar jadvali turini tanlashingiz mumkin.

Bu o'zboshimchalik bilan qiymatlar jadvali tanlanganligini anglatadi. U avtomatik ravishda ustunlar qo'shilmaydi va avtomatik ravishda saqlanmaydi, lekin siz u bilan xohlagan narsani qilishingiz mumkin.

Jadvalni sichqonchaning o'ng tugmasi bilan bosish orqali siz ustun qo'shishingiz mumkin. Ustunning xususiyatlarida siz uning nomini (1C kodida mos yozuvlar uchun), shakldagi ustun sarlavhasini, jadval qismining atributi bilan bog'lanishni belgilashingiz mumkin (ikkinchisi - agar ixtiyoriy jadval tanlanmagan bo'lsa, lekin jadval qismi).

Shakldagi jadval xususiyatlarida foydalanuvchi qatorlarni qo'shish/o'chirish mumkinligini belgilashingiz mumkin. Kengaytirilgan shakl - "Faqat ko'rish" katagiga belgi qo'yish. Ushbu xususiyatlar ma'lumotlarni ko'rsatish uchun mo'ljallangan jadvallarni tartibga solish uchun foydalanish uchun qulay, lekin tahrirlash uchun emas.

Jadvalni boshqarish uchun formada buyruqlar panelini ko'rsatish kerak. Shakl/Insert Control/Buyruqlar paneli menyu bandini tanlang.

Paneldagi tugmalar avtomatik ravishda paydo bo'lishi uchun buyruq satrining xususiyatlarida Avtomatik to'ldirish katagiga belgi qo'ying.

Shakldagi jadval (nozik/boshqariladigan mijoz)

Boshqariladigan shaklda bu harakatlar biroz boshqacha ko'rinadi. Agar siz formaga jadval qismini joylashtirishingiz kerak bo'lsa, Ob'ekt bo'limini kengaytiring va jadval qismlaridan birini chapga torting. Va tamom!

Agar siz qiymatlar jadvalini joylashtirishingiz kerak bo'lsa, yangi shakl atributini qo'shing va uning xususiyatlarida qiymatlar jadvalining turini belgilang.

Ustunlar qo'shish uchun ushbu forma atributiga sichqonchaning o'ng tugmasi menyusidan foydalaning, Atribut ustunini qo'shish-ni tanlang.

Keyin stolni chapga ham torting.

Jadvalda buyruq satri bo'lishi uchun jadval xususiyatlarida Foydalanish - Buyruqlar satri pozitsiyasi bo'limida qiymatlarni tanlang.

Excelga jadval yuklash

Shaklda joylashgan har qanday 1C jadvali chop etilishi yoki Excelga yuklanishi mumkin.

Buning uchun jadvaldagi bo'sh joyni sichqonchaning o'ng tugmasi bilan bosing va "Ro'yxat" ni tanlang.

Boshqariladigan (nozik) mijozda shunga o'xshash harakatlar menyu elementi yordamida amalga oshirilishi mumkin Barcha harakatlar/Ro'yxatni ko'rsatish.

2011 yil 21 sentyabrda chop etilgan

Qiymatlar jadvali 1C - 3-qism. Metadata. Qiymatlar jadvali ustunlari bo'ylab aylanish

Ushbu maqolada men sizga "noma'lum" strukturaning qiymatlari jadvali bilan qanday ishlashni, qiymatlar jadvalining ustunlari bo'ylab qanday takrorlashni, ustun nomlaridan foydalanmasdan ustunlar va satrlardan ma'lumotlarni qanday chiqarishni aytib beraman. (Ushbu maqola 1C noldan boshlab maqolalar turkumiga kiradi; 1C ni noldan dasturlash; 1C qiymatlari jadvali)

Materialni tushuntirish va bizning kod misollarimizni "jonli" ishlatish uchun bizga bir nechta kerak 1C qiymatlarining test jadvali. Bizning ba'zi misollarimiz qiymatlar jadvalidan ma'lumotlarni chiqaradi, shuning uchun biz uchta ustunli "Familiya", "Ism", "O'rta ism" jadvalini tuzamiz va unga oz miqdordagi ma'lumotlarni kiritamiz - 3 tagacha. qatorlar :)

Shunday qilib, keling, 1C qiymatlarining test jadvalini yaratamiz va uni to'ldiramiz:

MyTZ = Yangi qiymatlar jadvali; // "MyTZ" MyTZ.Columns.Add("Familiya") o'zgaruvchisida saqlangan yangi qiymatlar jadvalini yarating; // "Familiya" ustunini yarating MyTZ.Columns.Add("Ism"); // "Ism" ustunini yarating MyTZ.Columns.Add("Otasining ismi"); // "O'rta nom" ustunini yarating // qiymatlar jadvalimizga birinchi qatorni qo'shing NewLine = MyTZ.Add(); NewString.LastName = "Chapaev"; NewLine.Name = "Vasiliy"; NewString.Middle nomi = "Ivanovich"; // ikkinchi qatorni qo'shing NewLine = MyTZ.Add(); NewString.LastName = "Dzerjinskiy"; NewRow.Name = "Feliks"; NewString.Middle nomi = "Edmundovich"; // uchinchi qatorni qo'shing NewLine = MyTZ.Add(); NewLine.LastName = "Kotovskiy"; NewLine.Name = "Gregori"; NewString.Middle nomi = "Ivanovich";

Test jadvalimiz uchta ustundan iborat: Ism, Familiya, Otaning ismi; va fuqarolar urushi qahramonlari ismlari bilan to'ldirilgan uchta qatorga ega.

Birinchi kod namunasi to'plam sifatida 1C qiymatlar jadvalining ustunlarini sanab o'tadi.

// MyTZ.Columns Cycle Report From Har bir ustun uchun TK ning barcha ustunlari nomlarini ko'rsatish ("Ustun nomi: " + Ustun.Nomi); EndCycle;

Bizning tsiklimiz 1C xabar oynasida barcha ustun nomlarini ko'rsatadi:

Ustun nomi: Familiya Ustun nomi: Ism Ustun nomi: Otasining ismi

Ko'ramiz, ustunlar bo'ylab takrorlash uchun qatorni takrorlash sikliga o'xshash maxsus yig'ish iteratsiya sikli qo'llaniladi (oldingi maqolada). MyTZ. Ustunlar- bu 1C qiymatlar jadvalining ustunlari to'plami "MyTZ". To'plamda turdagi ob'ektlar mavjud "Qiymatlar jadvali ustuni" Ushbu turdagi har bir ob'ekt qiymatlar jadvalining ustuni bo'lib, xususiyatlar va usullarni o'z ichiga oladi. Ushbu xususiyatlar va usullarga kirish orqali biz bitta ustun haqida kerakli ma'lumotlarni olamiz yoki u bilan boshqa harakatlarni bajaramiz.

Masalan, mulkka kirish "Ism" (Ustun nomi) joriy ustun nomini olamiz.

Serialning sarlavhasiga e’tiboringizni qaratmoqchiman: “Hamma uchun Ustun MyTZ.Column Cycle'dan" nomi bilan o'zgaruvchi "ustun" biz tomonidan ixtiro qilingan. Xuddi shu nomdan foydalanish shart emas. Siz ushbu o'zgaruvchini o'zingiz yoqtirgan har qanday narsani chaqirishingiz mumkin, masalan "Mening joriy ustunim" Keyin yuqoridagi misol quyidagicha ko'rinadi:

// MyTK.Columns sikl hisobotidan MyCurrent Column-dan TK ning barcha ustunlari nomini ko'rsatish("Ustun nomi: " + MyCurrentColumn.Name); EndCycle;

1C ijro quyi tizimi ushbu turdagi tsiklga duch kelganda, tsiklning har bir o'tishi bilan u ko'rsatilgan nomga ega o'zgaruvchiga bizning kollektsiyamizdan bitta elementni belgilaydi, bu holda - bitta to'plam elementi qiymatlar jadvali ustunlari MyTZ. Ustunlar Va keyin biz joriy ustunni o'z ichiga olgan o'zgaruvchiga kiramiz va xususiyatdan foydalanamiz "Ism".

Ustun nomi yonida ustunlar to'plamidagi har bir ustunning sonini ko'rsatishni taklif qilaman:

// MyTZ.Columns Cycle ColumnNumber dan Har bir ustun uchun qiymatlar jadvalining barcha ustunlari soni va nomlarini ko'rsatish ColumnNumber = MyTZ.Columns.Index(Column); // ustun raqamini oling ColumnName = Column.Name; // ustun nomini oling Report("Ustun raqami:" + Ustun raqami + " Ustun nomi: " + Ustun nomi); EndCycle;

1C xabar oynasida quyidagi matn ko'rsatiladi:

Ustun raqami: 0 Ustun nomi: Familiya Ustun raqami: 1 Ustun nomi: Familiyasi Ustun raqami: 2 Ustun nomi: Otasining ismi

Shuni esda tutingki, 1C qiymatlar jadvalidagi ustunlar qiymatlar jadvalidagi qatorlar kabi noldan boshlab raqamlangan.

1C qiymatlar jadvalidagi ustunlar soni

Qiymatlar jadvalidagi ustunlar sonini bilish uchun biz ustunlar to'plamida "Count()" usulidan foydalanamiz.

Ustunlar soni = MyTZ.Columns.Quantity(); Hisobot (ustunlar soni);

Ekranda "3" raqami ko'rsatiladi. Darhaqiqat, bizning jadvalimiz uchta ustunga ega: "Familiya", "Ism", "Otasining ismi"

Ustun ob'ektini uning raqami (indeks) bo'yicha olish va ustun indeksidan foydalanib ustunlarni sanash

Ustun indekslari (raqamlari) yordamida qiymatlar jadvalining barcha ustunlari bo'ylab qidirish tsiklini tuzamiz. Esda tutingki, ustun raqamlash noldan boshlanadi. Shuning uchun biz "Sch" sikl hisoblagichini noldan ustunlar soni minus bittaga teng raqamga oshirishimiz kerak.

Hisob uchun = 0 By MyTZ.Columns.Quantity() - 1 Cycle CurrentColumn = MyTZ.Columns[Act]; Hisobot (joriy ustun.Name); EndCycle;

Ekranda biz quyidagilarni olamiz

Familiyasi ismi otasini ismi

Menimcha, bu misol aniq edi. Biz usulga murojaat qildik Miqdor() ustunlar to'plamlari" MyTZ.Columns.Quantity()", ustunlar sonini oldi va hisoblagich bilan tsiklni boshladi nol oldin ustunlar soni minus bitta. Loop ichida biz har bir ustunni ustunlar to'plamidan olamiz va joriy ustun ob'ektini o'zgaruvchiga belgilaymiz Joriy ustun Keyingi, o'zgaruvchi Joriy ustun biz mulkka kiramiz Ism va ushbu xususiyatning qiymatini ekranda ko'rsating: Hisobot (joriy ustun.Name);

Ob'ektning xossasi va ob'ekt usulini hech qachon chalkashtirmaslik muhimdir.

Xususiyat ma'lum bir statik qiymatdir va unga kirish, masalan, qavslarsiz yoziladi CurrentColumn.Name. Usul mohiyatan ob'ektning protsedurasi yoki funktsiyasi bo'lib, protsedura va funksiyalarga qo'ng'iroqlar har doim qavslar bilan yoziladi (hatto kirish parametrlari bo'lmasa ham). Masalan: MyTZ.Columns.Quantity()

Agar biz usulga kirsak va qavslarni yozishni unutsak, 1C tarjimoni bizga xato xabari beradi va kodni ishga tushirmaydi. Tarjimon biz usulga emas, balki xususiyatga kirayotganimizni ko'rib chiqadi - chunki qavslar yo'q. Lekin u bu nomga ega xususiyatlarni topa olmaydi (chunki faqat shu nomga ega usul mavjud) - bu xato xabarida ko'rsatiladi.

Agar usul chaqiruvida shunday noto'g'ri tarzda qavs qo'yishni unutsam, tarjimon shunday yozadi. MyTZ.Ustunlar.Miqdori("Quantity()" dan keyin qavssiz):

Ob'ekt maydoni topilmadi (Miqdor)

Bunday holda, "maydon" va "mulk" sinonimlar yoki 1C ishlab chiquvchilari terminologiyasidagi noaniqlik sifatida tushunilishi kerak. Ular ikkala so'zni bir xil tushunchaga murojaat qilish uchun ishlatadilar. Garchi boshqa dasturlash tillarida bu atamalar boshqacha ma'noni anglatishi mumkin.

Ustun raqamlari yordamida 1C qiymatlari jadvalidan ma'lumotlarni olish

Boshlash uchun men sizga jadvalimizning birinchi qatoridan ma'lumotlarni olishning oddiy misolini taklif qilaman. Iltimos, biz maqolaning boshidan oldindan to'ldirilgan jadvaldan foydalanayotganimizni unutmang. Jadvalda birinchi qator va kamida bitta ustun borligini aniq bilamiz. Agar biz ushbu misolni bo'sh jadvalga qo'llasak, xatolik yuzaga keladi. Shunday qilib:

Birinchi qator = MyTK; // birinchi qatorni olish (noldan boshlab raqamlangan) FirstColumnValue = FirstRow; // birinchi ustunning qiymatini olish (ustunlarni raqamlash ham noldan) Hisobot (Birinchi ustunning qiymati); // jadvalning birinchi qatoridagi birinchi ustunning qiymatini ko'rsatish

Ekranda quyidagilar ko'rsatiladi:

Chapaev

Biz birinchi navbatda [...] operatori yordamida qiymatlar jadvaliga kirish orqali qiymatlar jadvali qatori obyektini oldik. (agar buni qanday qilishni unutgan bo'lsangiz, oldingi maqolalarni ko'rishingiz mumkin) Biz "0" argumentini operator ichida o'tkazdik. Bu qiymatlar jadvalining birinchi qatori indeksidir. Birinchi qator = MyTK;

Bundan tashqari, biz [...] operatori yordamida string ob'ektiga kirish huquqiga egamiz. Ushbu operator ichida biz qiymatlar jadvalining ustun raqamini o'tkazdik, bu holda ham "0". Shunday qilib, biz "0" raqamlangan joriy jadval qatori uchun "0" sonli ustunning qiymatini oldik. Biz ushbu qiymatni ekranda ko'rsatdik va u "Chapaev" qatorini ifodalaydi.

Keling, misolimizni biroz murakkablashtiraylik:

Birinchi qator = MyTK; // birinchi qatorni olish (noldan raqamlangan) Hisobot(Birinchi qator); // jadvalning birinchi qatoridagi birinchi ustunning qiymatini ko'rsatish Report(FirstRow); // jadvalning birinchi qatoridagi ikkinchi ustunning qiymatini ko'rsatish Report(FirstRow); // jadvalning birinchi qatoridagi uchinchi ustunning qiymatini ko'rsatish

Endi biz qiymatlar jadvalining birinchi qatorining barcha uchta ustunidagi qiymatlarni ko'rsatdik:

Chapaev Vasiliy Ivanovich

Endi men ushbu misolni o'zgaruvchisiz ham qilishimiz uchun o'zgartiraman "Birinchi qator"

Hisobot (MyTZ); // jadvalning birinchi qatoridagi birinchi ustunning qiymatini ko'rsatish Report(MyTZ); // Report(MyTZ) jadvalining birinchi qatoridagi ikkinchi ustun qiymatini ko'rsatish; // jadvalning birinchi qatoridagi uchinchi ustunning qiymatini ko'rsatish

Ekranda ham xuddi shunday bo'ladi

Chapaev Vasiliy Ivanovich

Yuqoridagi misolda biz qiymatlar jadvalining ma'lum bir qatorida va ma'lum ustunida joylashgan qiymatga kirish uchun quyidagi shaklda ikkita operatorning ketma-ket chaqiruvidan foydalanishimiz mumkinligini ko'rdik: Qiymatlar jadvali[Qator indeksi][ustun indeksi]

Shunday qilib, biz tsikl yaratishga tayyormiz va satr va ustun indekslari yordamida barcha satrlar va barcha ustunlar ma'lumotlarini olishga tayyormiz:

RowCounter uchun = 0 By MyTZ.Quantity() - 1 sikl // satrlar bo'ylab aylanish ColumnCounter uchun = 0 MyTZ.Columns.Quantity() bo'yicha - 1 sikl // ustunlar bo'ylab o'rnatilgan tsikl // yacheyka qiymatini oling (joriy qatordan) va joriy ustunlar) CellValue = MyTK[RowCounter][ColumnCounter]; // satr raqami, ustun raqami va katak qiymatini ko'rsatish Hisobot("Qator No" + Qator soni + "ustun No" + Ustun soni + " = " + CellValue); EndCycle; EndCycle;

Ekranda quyidagilar ko'rsatiladi:

0-qator ustun № 0 = Chapaev № 0 satr ustuni № 1 = Vasiliy № 0 satr ustuni № 2 = Ivanovich № 1 qator ustuni № 0 = Dzerjinskiy № 1 qator № 1 ustun = Feliks 1-qator ustun № 2 = Edmundovich 2-qator ustun № 0 = Kotovskiy 2-qator ustun № 1 = Grigoriy qator № 2 ustun № 2 = Ivanovich

Bittasi ikkinchisi ichiga joylashtirilgan ikkita tsikldan foydalanib, biz 1C qiymatlar jadvalining barcha qatorlaridan barcha ustunlar qiymatlarini ko'rsatdik. Bunday holda, biz ustun nomlaridan foydalanmadik, lekin ustunlar va satrlarga indekslari bo'yicha murojaat qildik. Ko'proq tushunish uchun misol ichidagi izohlarga e'tibor bering.

Xulosa qilib aytganda, men misolimizni biroz o'zgartirishni taklif qilaman, shunda ustun raqamlari o'rniga ekranda ularning nomlari ko'rsatiladi. Bundan tashqari, men ekranda kontentni ko'rsatish uchun yanada qulayroq dizaynni yarataman.

LineCounter uchun = 0 By MyTZ.Quantity() - 1 Loop // qatorlar bo'ylab aylanish Hisobot(" ======= Line No. " + LineCounter + " ======="); Hisobot berish (" "); // satr tasmasi (bo'sh qatorni kiritish) For ColumnCounter = 0 By MyTZ.Columns.Quantity() - 1 sikl // ustunlar bo'ylab o'rnatilgan tsikl // hujayra qiymatini oling (joriy satr va joriy ustundan) CellValue = MyTZ [RowCounter][ ColumnCounter]; // ustun nomini oling ColumnName = MyTZ.Columns[ColumnCounter].Name; // ustun nomi va katak qiymatini ko'rsatish Hisobot(ColumnName + ": " + CellValue); EndCycle; Hisobot berish (" "); // satr tasmasi (bo'sh qatorni kiritish) EndCycle;

Endi bizning ekranimizda ma'lumotlar yanada ishonchli ko'rinishni boshladi:

0-qator ======= Familiya: Chapaev Ismi: Vasiliy Otasining ismi: Ivanovich ======= 1-qator ======= Familiyasi: Dzerjinskiy Ismi: Feliks Otasining ismi: Edmundovich ===== == 2-qator ======= Familiya: Kotovskiy Ismi: Grigoriy Otasining ismi: Ivanovich

Ha, deyarli unutdim. Bir qatorda ikkita [...][...] operatordan foydalanilganda, biz ustun indeksi o'rniga ushbu ustun nomini berishimiz mumkin: Qiymatlar jadvali[RowIndex][ColumnName]

LineCounter uchun = 0 By MyTZ.Quantity() - 1 Loop // qatorlar bo'ylab aylanish Hisobot(" ======= Line No. " + LineCounter + " ======="); Hisobot berish (" "); // satr tasmasi (bo'sh qator qo'yish) For ColumnCounter = 0 By MyTZ.Columns.Quantity() - 1 sikl // ustunlar bo'ylab o'rnatilgan tsikl ColumnName = MyTZ.Columns[ColumnCounter].Name; // ustun nomini olingCell Value = MyTZ[RowCounter][ColumnName]; //

O'q bilan belgilangan qatorga e'tibor bering ". Bu qatorda joriy ustun indeksi o'rniga biz joriy ustun nomini kvadrat qavs ichidagi argumentga o'tkazamiz [...] Natija bir xil bo'ladi.

Va endi, ushbu maqoladagi oxirgi narsa.

1C qiymatlar jadvalidan barcha ma'lumotlarni qatorlar va ustunlar to'plami orqali halqalar yordamida TO'G'ri olish

Har bir CurrentLine From MyTZ Loop uchun // satrlar toʻplami boʻylab aylanish Report(" ======= Line No. " + MyTZ.Index(CurrentLine) + " ======="); Hisobot berish (" "); MyTZ.Columns Loop-dan har bir CurrentColumn uchun // Ustunlar to'plami orqali takrorlanadigan ichki tsikl ColumnName = CurrentColumn.Name; // ustun nomini olingCellValue = CurrentRow[ColumnName]; // katak qiymatini olish BY ustuni NAME Hisobot (ColumnName + ": " + CellValue); // ustun nomi va yacheyka qiymatini ko'rsatish Tsikl oxiri; Hisobot berish (" "); EndCycle;

Misolda ikkita halqa ishlatilgan. Ustunlar to'plami bo'ylab aylanish uchun halqa qatorlar bo'ylab aylanish uchun halqa ichiga joylashtirilgan. Agar siz yuqoridagi misollar bilan ishlagan bo'lsangiz va oldingi maqolalarni o'qigan bo'lsangiz, bu misol qanday ishlashini tushunishda hech qanday qiyinchilikka duch kelmaysiz.

Nihoyat, oxirgi misolimizdagi kod satrlari sonini oraliq o'zgaruvchilardan foydalanishni yo'q qilish orqali imkon qadar kamaytiraman. Biz haqiqiy muammolarda qo'llaniladigan "sanoat kodi" namunasini olamiz.

Buni faqat nima qilayotganingizni yaxshi tushunganingizda qilish kerak. Agar kod juda murakkab bo'lsa, keyinchalik o'z kodingizni tushunishni osonlashtirish uchun oraliq o'zgaruvchilarni qoldirish maqbuldir. Bundan tashqari, har qanday kod hech bo'lmaganda minimal tarzda sharhlanishi kerak, shunda bir muncha vaqt o'tgach, dastur matnlarini tushunish osonroq bo'ladi.

Har bir CurrentLine From MyTZ Cycle // satrlar bo'yicha takrorlash Hisobot (" ======= Satr raqami. " + MyTZ.Index(CurrentLine) + " =======" + Symbols.PS); MyTZ.Columns Loop dan har bir joriy ustun uchun // ustunlar ustida takrorlash Hisobot (CurrentColumn.Name + ": " + CurrentRow[CurrentColumn.Name]); EndCycle; Hisobot berish (" "); EndCycle;

Ekrandagi chiqish o'zgarmadi, u avvalgi misoldagi kabi qoladi:

2 HAFTA KURS

"Yangi boshlanuvchilar uchun 1C da DASTURLASH"

Kurs elektron pochta orqali yuboriladi. Bosqichma-bosqich topshiriqlarni bajarib, dasturchi bo'ling.

Ishtirok etish uchun sizga faqat kompyuter va Internet kerak

Kursga bepul kirish:

Sp-force-hide (displey: yo'q;).sp-form (displey: blok; fon: #eff2f4; to'ldirish: 5px; kenglik: 270px; maksimal kenglik: 100%; chegara radiusi: 0px; -moz-chegara -radius: 0px; -webkit-border-radius: 0px; shrift-oila: Arial, "Helvetica Neue", sans-serif; fon-takrorlash: takrorlanmaslik; fon-pozitsiya: markaz; fon o'lchami: avtomatik;) .sp-forma kiritish (displey: inline-block; noaniqlik: 1; visibility: visible;).sp-form .sp-form-fields-wrapper (margin: 0 auto; en: 260px;).sp-form .sp -formani boshqarish (fon: #ffffff; hoshiya rangi: #cccccc; hoshiya uslubi: qattiq; hoshiya kengligi: 1px; shrift oʻlchami: 15px; toʻldirish-chap: 8.75px; toʻldirish-oʻng: 8.75px; chegara -radius: 4px; -moz-chegara-radius: 4px; -webkit-chegara-radius: 4px; balandlik: 35px; kengligi: 100%;).sp-form .sp-maydon yorlig'i (rang: #444444; shrift- o'lcham: 13px; shrift uslubi: normal; shrift-og'irligi: qalin;).sp-formasi .sp-tugmasi (chegara-radius: 4px; -moz-border-radius: 4px; -webkit-border-radius: 4px; fon rangi: #f4394c;rang: #ffffff; kengligi: 100%; shrift og'irligi: 700; shrift uslubi: normal; shrift oilasi: Arial, "Helvetica Neue", sans-serif; quti soyasi: yo'q; -moz-box-soya: yo'q; -webkit-box-soya: yo'q; fon: chiziqli-gradient (yuqoriga, #e30d22 , #f77380);).sp-formasi .sp-tugma-konteyner (matnni tekislash: markaz; kenglik: avtomatik;)