Uy / Windows umumiy ko'rinishi / 1c boshqariladigan shakl qiymatlari jadvali qo'shish ustuni. Hech qachon ob'ekt xususiyatini ob'ekt usuli bilan aralashtirib yubormaslik muhimdir.

1c boshqariladigan shakl qiymatlari jadvali qo'shish ustuni. Hech qachon ob'ekt xususiyatini ob'ekt usuli bilan aralashtirib yubormaslik muhimdir.

Boshlash uchun kichik bir fakt - oddiy misollar qiymatlar jadvali bilan ishlash:

1. Qiymatlar jadvalini tuzing

ValueTable = Yangi qiymatlar jadvali;


2. Qiymatlar jadvalining ustunlarini yarating:

ValueTable.Columns.Add("Ism");
ValueTable.Columns.Add("Familiya");


3. Ustun nomlaridan foydalanib yangi qatorlar qo‘shing:


NewString.Name = "Vasiliy";
NewRow.LastName = "Qovoq";


4. Qiymatlar jadvalidagi qiymatni qanday izlash mumkin:
Istalgan qiymatni o'z ichiga olgan jadval qatorini topish kerak.

FoundString = ValueTable.Find(LookupValue);


5. Qiymatlar jadvalining ma'lum ustunlaridagi birinchi hodisani toping

FoundString = ValueTable.Find(LookupValue, "Yetkazib beruvchi, xaridor");


6. Agar qiymatlar jadvalidagi barcha hodisalarni topishingiz kerak bo'lsa:
Biz qidiruv tuzilmasidan foydalanamiz.

SearchStructure = Struktura ("Xodim", LookupValue);
ArrayFoundStrings = ValueTable.FindStrings(SearchStructure);


Qidiruv strukturasini yarataylik, uning har bir elementi kalit sifatida ustun nomini va qiymat sifatida ushbu ustundagi qidirilgan qiymatni o'z ichiga oladi. FindStrings() usuliga parametr sifatida Qidiruv tuzilmasini o'tkazamiz. Natijada, biz jadvalning qatorlarini olamiz.
Agar biz qidiruv tuzilmasiga kerakli qiymatni qidirishni qo'shsak, masalan, Mas'ul ustunida, FindRows() usulini qo'llash natijasida biz Xodim va Mas'ul kerakli qiymatga teng bo'lgan barcha qatorlarni olamiz. qiymat.

7. Qanday qilib qiymatlar jadvalini tasodifiy tartibda aylantirish mumkin

ValueTable tsiklidan har bir CurrentRow uchun
Hisobot (CurrentLine.Name);
EndCycle;

Indekslar yordamida xuddi shunday qiling:

SeniorIndex = ValueTable.Count() - 1;
SeniorIndex Cycle bo'yicha MF = 0 uchun
Hisobot(Qiymatlar jadvali[hisoblash].Nom);
EndCycle;


8. Mavjud qiymatlar jadvali qatorini o'chirish

ValueTable.Delete(RemoveRow);

indeks bo'yicha

ValueTable.Delete(0);


9. Qiymatlar jadvalining mavjud ustunini o'chirish

ValueTable.Columns.Delete(RemoveColumn);


indeks bo'yicha

ValueTable.Columns.Delete(0);

Shuni hisobga olish kerakki, qiymatlar jadvalining "o'rtasidan" qatorini (yoki ustunini) o'chirish o'chirilgandan "keyin" bo'lgan qatorlar indekslaridan biriga kamayishiga olib keladi.

10. Ustun nomlari o'zgaruvchilar tarkibida bo'lsa, qiymatlar jadvali qanday to'ldiriladi?

NewRow = ValueTable.Add();
NewRow[ColumnName] = Qiymat;


11. Qiymatlar jadvalining butun ustunini kerakli qiymat bilan qanday to'ldirish mumkin?
Qiymatlar jadvalining qiymatlar jadvalidagi FiscalAccounting Flag ustuni False qiymati bilan to'ldirilishi kerak

ValueTable.FillValue(False, "Fiskal Buxgalteriya bayrog'i");


Qiymatlar jadvali uchun FillValues() usulidan foydalanamiz. Birinchi parametr to'ldiriladigan qiymatdir. Ikkinchi parametr - to'ldirilgan ustunning nomi.

12. "TableRecipient" qiymatlar jadvalini "SourceTable" qiymatlar jadvali ma'lumotlari bilan qanday to'ldirish kerak?

Agar operatsiya vaqtida Qabul qiluvchilar jadvali hali mavjud bo'lmasa yoki uning oldingi ustunlarini saqlashingiz shart bo'lmasa, uni quyidagicha yaratishingiz mumkin. to'liq nusxasi original

TableReceiver = TableOriginal.Copy();


Ikkinchi variant: TableReceiver jadvali mavjud va uning ustunlari va ustun ma'lumotlar turlari bo'yicha cheklovlarni yo'qotish juda achinarli. Lekin nomlari manba jadvalining nomlariga mos keladigan ustunlar uchun ma'lumotlarni to'ldirishingiz kerak.

Nomlari mos bo'lgan ustunlar uchun qisman ma'lumotlarni uzatish:

SourceTable tsiklidan olingan manba jadvalining har bir qatori uchun
FillPropertyValues(NewString, SourceTableString);
EndCycle


Manba jadvalining har bir satri uchun maqsadli jadvalga yangi qator qo'shiladi va qiymatlar yangi jadvalning nomlari manba jadvalidagi ustunlar nomlariga mos keladigan ustunlariga to'ldiriladi.

Agar jadvallarda bir xil nomdagi ustunlar bo'lmasa, maqsad jadval manba jadvalidagi qatorlar soni bo'yicha null qiymatga ega bo'lgan qatorlar bilan tugaydi.
Agar bir xil nomdagi ba'zi ustunlar uchun manba jadvalidagi ma'lumotlar qiymati turi belgilangan jadval ustunining ruxsat etilgan turlari qatoriga kirmasa, biz bunday maydonlarda bo'sh qiymatlarni olamiz.
Uchinchi ishni ko'rib chiqaylik. Xuddi shu nomdagi ustunlar bo'lsa, maqsad jadval ustuni manba jadvalining ustuniga to'liq mos kelishi kerak.

Mos keladigan nomlarga ega ustunlar uchun to'liq ma'lumotlar nusxasi

SimilarColumns = New Array();

SourceTable.Columns Loop dan har bir ustun uchun
MatchingColumn = TableReceiver.Columns.Find(Column.Name);

Agar MatchedColumn<>Keyin aniqlanmagan

// Ustun xususiyatlarini olish.
Ism = Column.Name;
ValueType = Column.ValueType;
Sarlavha = Ustun. Sarlavha;
Width = Column.Width;

// Belgilangan jadvaldagi ustunlarni almashtiring.
Index = TableReceiver.Columns.Index(CoincidentColumn);

TableReceiver.Columns.Delete(Index);
TableReceiver.Columns.Insert(Indeks, Ism, Qiymat turi, Sarlavha, Kenglik);

// Massivga mos keladigan ustunlarning keyingi nomini qo'shing.
Same-nameColumns.Add(Column.Name);

EndIf;

EndCycle;

// Manba jadvalining qatorlari bo'ylab aylanish.
SourceTable tsiklidan manba jadvalining har bir qatori uchun

// Belgilangan jadvalga yangi qator qo'shing.
NewString = TableReceiver.Add();

// Mos keladigan hujayralardagi qiymatlarni to'ldiring.
Har bir nom uchun bir xil nomdagi ustunlar
NewString[ColumnName] = SourceTableString[ColumnName];

EndCycle;

EndCycle;


Belgilangan jadvaldagi ustunni yangisi bilan almashtirishimiz kerak, uning xususiyatlari manba jadvalining ustuniga to'liq mos keladi.
Shuning uchun, agar qabul qiluvchilar jadvalida bir xil nomdagi ustun topilsa, biz yangi ustun uchun barcha xususiyatlarni o'zgaruvchilarda to'playmiz. Keyin eskisini o'chiring va yangi ustun yarating. Keyin biz manba jadvalining qatorlari bo'ylab aylanamiz.
Loopda biz qabul qiluvchilar jadvaliga yangi qator qo'shamiz va mos ustunlar qatoridagi ustunlar nomlari orqali tsiklni ochamiz.
Ushbu ichki o'rnatilgan halqa ichida biz qabul qiluvchi jadvalning katakchalarini manba jadvalining katak ma'lumotlari bilan to'ldiramiz.

13. "Qiymatlar jadvali" qiymatlar jadvaliga tur cheklovlari bilan ustunlar qanday qo'shiladi?

Ustun qo'shganda siz shunchaki uning nomini belgilashingiz mumkin va Add() usulining ikkinchi parametriga tegmang. Bunday holda, ustunning ma'lumotlar turi ixtiyoriydir.

Ma'lumotlar turini ko'rsatmasdan ustun qo'shish

// Hech qanday turdagi cheklovlarsiz ustun qo'shing.
ValueTable.Columns.Add("Ob'ekt");


Ikkinchi parametrning qiymatini to'ldirishingiz mumkin. U erda ustun uchun ruxsat etilgan turning tavsifini o'tkazish kerak. Ta'rifning o'zi konstruktor yordamida, satr turi nomini ikkinchisiga parametr sifatida (agar turlar ko'p bo'lsa, vergul bilan ajratilgan) yoki tegishli turlar qatoriga o'tkazish orqali olinishi mumkin.

Ma'lumotlar turini ko'rsatadigan ustun qo'shish

// Ustun ma'lumotlar turlari bo'yicha cheklovlar:
// Faqat "Pudratchilar" katalogining elementlari.
ValueTable.Columns.Add("Hisob", New TypeDescription("ReferenceReference.Accounts"));


Agar ustun ma'lumotlarini to'ldirishga ruxsat berilgan turlar orasida satr mavjud bo'lsa, siz uning bit chuqurligini (uzunligini) cheklashingiz, o'zgaruvchan yoki belgilangan uzunlikdan foydalanishni belgilashingiz mumkin. Bularning barchasi StringQualifiers konstruktori yordamida ob'ekt yaratish orqali ta'minlanadi. Bundan tashqari, ushbu ob'ekt TypeDescription konstruktorining parametrlaridan biri sifatida ishlatiladi.

Qiymatlar jadvali ustunining ma'lumotlar turini belgilash uchun kvalifikatorlardan foydalanish

// String tipidagi ma'lumotlar uchun chegaralarni tayyorlang va o'rnating.
String Qualifiers = New String Qualifiers (20, ValidLength.Variable);
AllowedTypes = NewTypeDescription("String",StringQualifiers);
ValueTable.Columns.Add("NoteStringShort", ValidTypes);


Raqam va sana kvalifikatsiyalari uchun ham xuddi shunday qilishingiz mumkin.
E'tibor bering: tur tavsifi konstruktor tomonidan ham "noldan" tuzilishi mumkin va siz asos sifatida mavjud tur tavsifidan foydalanishingiz mumkin.

Qiymatlar jadvali ustunining ma'lumotlar turini belgilash uchun mavjud turdagi deklaratsiyalardan foydalanish

// Oldindan foydalanilgan turlarning tavsifini kengaytirish.
Raqam kvalifikatorlari = Yangi raqam kvalifikatsiyalari (10, 2, ValidSign.Non-negative);
DateQualifiers = New DateQualifiers(DateParts.Date);
ExtendedValidTypes = NewTypeDescription (ValidTypes, "Raqam, Sana", Raqamni Qualifiers, Sana Qualifiers);

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

Pul va tovarlarni hisobga olish uchun biznesda turli jadvallar keng qo'llaniladi. Deyarli har bir hujjat jadvaldir.

Bitta jadvalda ombordan jo'natilishi kerak bo'lgan tovarlar ro'yxati keltirilgan. Boshqa jadvalda - bu tovarlarni to'lash majburiyati.

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

1C dagi jadvallar "stol qismlari" deb ham ataladi. Ma'lumotnomalar, hujjatlar va boshqalarda ular mavjud.

So'rov bajarilishi natijasida jadvalni qaytaradi, unga ikki xil usulda kirish mumkin.

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

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

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

//2-variant - qiymatlar jadvaliga yuklash
So'rov = Yangi so'rov ("Katalog.Nomenklaturadan nom tanlang");
// jadvalni oling
Jadval = Query.Execute().Upload().
// keyin barcha qatorlarni chetlab o'tishimiz mumkin
Jadval tsiklidan har bir qator uchun
Hisobot (String.Name);
EndCycle;
//yoki satrlarga o'zboshimchalik bilan kirish
String = Table.Find("Shovel", "Ism");

Muhim xususiyat shundaki, so'rov natijasida olingan jadvalda barcha ustunlar kuchli tarzda teriladi. Bu shuni anglatadiki, Nomenklatura qidiruvidan Ism maydonini so'rash orqali siz ruxsat etilgan uzunligi N belgidan ortiq bo'lmagan String tipidagi ustunni olasiz.

Shakldagi jadval (qalin mijoz)

Foydalanuvchi jadvalga joylashtirilganda u bilan ishlaydi.

Biz darsda va darsda shakllar bilan ishlashning asosiy tamoyillarini muhokama qildik

Shunday qilib, jadvalni shaklga joylashtiramiz. Buning uchun siz boshqaruv panelidan jadvalni sudrab olishingiz mumkin. Xuddi shunday, menyudan Form/Vstavka boshqaruvini 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 tanlashda 1C o'zi shakldagi jadvalga ustunlar qo'shadi. Bunday jadvalga foydalanuvchi tomonidan kiritilgan satrlar katalog/hujjat bilan birga avtomatik tarzda saqlanadi.

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

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

Jadvalni o'ng tugmasini bosish orqali siz ustun qo'shishingiz mumkin. Ustunning xususiyatlarida siz uning nomini (1C kodidagi ma'lumot uchun), shakldagi ustun sarlavhasini, jadval qismining atributi bilan bog'lanishini (ikkinchisi - agar ixtiyoriy jadval bo'lmasa, lekin jadval shaklida) belgilashingiz mumkin. qismi tanlangan).

Shakldagi jadval xususiyatlarida foydalanuvchi qatorlarni qo'shish/o'chirish mumkinligini belgilashingiz mumkin. Kengaytirilgan shakl faqat ViewOnly belgilash katagidir. Ushbu xususiyatlar ma'lumotlarni ko'rsatish uchun mo'ljallangan jadvallarni tashkil qilish uchun foydalidir, lekin tahrirlash uchun emas.

Jadvalni boshqarish uchun formadagi buyruqlar panelini ko'rsatish kerak. Shakl/Qo'shish Boshqarish/Buyruqlar paneli menyu bandini tanlang.

Buyruqlar panelining xususiyatlarida asboblar panelidagi tugmalar avtomatik ravishda paydo bo'lishi uchun Avtomatik to'ldirish katagiga belgi qo'ying.

Shakldagi jadval (nozik/boshqariladigan mijoz)

Boshqariladigan shaklda bu harakatlar biroz boshqacha ko'rinadi. Shaklga jadvalli bo'limni joylashtirish kerak bo'lsa, Ob'ekt bo'limini kengaytiring va jadval bo'limlaridan birini chapga torting. Va tamom!

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

Ustunlar qo'shish uchun ushbu forma atributida sichqonchaning o'ng tugmasi menyusidan foydalaning, Atribut qo'shish ustuni bandi.

Keyin stolni chapga ham torting.

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

Jadvalni Excelga eksport qilish

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

Buni amalga oshirish uchun jadvaldagi bo'sh joyni sichqonchaning o'ng tugmasi bilan bosing va Ro'yxatni ko'rsatish-ni tanlang.

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

1C 8.3 platformasidagi qiymatlar jadvali (8.2) ishlab chiquvchi o'z algoritmlarini amalga oshirish uchun dasturiy ta'minotni ishlab chiqishda foydalanishi mumkin bo'lgan universal qiymatlar to'plamidir. Aslida, 1C qiymatlar jadvali ustunlar va ustunlarga ega bo'lgan dinamik qiymatlar to'plamidir.

1C dagi boshqa universal qadriyatlar to'plamlari haqidagi maqolalar

1C da dasturlashni "1C da 11 bosqichda dastur" kitobimdan o'rganing.

  1. Kitob tushunarli va sodda tilda yozilgan - yangi boshlanuvchilar uchun.
  2. 1C arxitekturasini tushunishni o'rganing;
  3. Siz 1C tilida kod yozishni boshlaysiz;
  4. Dasturlashning asosiy usullarini egallash;
  5. Olingan bilimlarni topshiriqlar kitobi yordamida mustahkamlash;

Ajam ishlab chiquvchilar va tajribali dasturchilar uchun boshqariladigan 1C ilovasini ishlab chiqish bo'yicha ajoyib qo'llanma.

  1. Juda tushunarli va tushunarli til
  2. Kitob yuboriladi elektron pochta PDF formatida. Har qanday qurilmada ochilishi mumkin!
  3. Boshqariladigan 1C ilovasining mafkurasini tushuning
  4. Boshqariladigan ilovani ishlab chiqishni o'rganing;
  5. Dizayn qilishni o'rganing boshqariladigan shakllar 1C;
  6. Siz boshqariladigan shakllarning asosiy va kerakli elementlari bilan ishlash imkoniyatiga ega bo'lasiz
  7. Boshqariladigan dastur ostida dasturlash aniq bo'ladi

15% chegirma uchun promo-kod - 48PVXHeYu


Agar ushbu dars sizga biron bir muammoni hal qilishga yordam bergan bo'lsa, uni yoqtirgan yoki foydali bo'lgan bo'lsa, unda siz mening loyihamni istalgan miqdorni o'tkazish orqali qo'llab-quvvatlashingiz mumkin:

qo'lda to'lash mumkin:

Yandex.Money — 410012882996301
Web Money - R955262494655

Mening guruhlarimga qo'shiling.

2011 yil 21 sentyabrda e'lon qilingan

Qiymatlar jadvali 1C - 3-qism. metadata. Qiymatlar jadvalining ustunlari bo'ylab takrorlash

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, 1c ni noldan dasturlash; 1c qiymatlari jadvali) qator maqolalariga ishora qiladi.

Materialni tushuntirish va "jonli" dastur kodiga oid misollarimizni ishga tushirish uchun bizga ba'zilari kerak bo'ladi 1C qiymatlarining test jadvali. Bizning misollarimizning bir qismi qiymatlar jadvalidan ma'lumotlarni ajratib oladi, shuning uchun biz uchta ustunli "Familiya", "Ism", "Otasining ismi" jadvalini tuzamiz va unga oz miqdordagi ma'lumotlarni kiritamiz - 3 qatorga qadar. :)

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

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

Test jadvalimiz uchta ustundan iborat: Ism, Familiya, Otaning ismi; va fuqarolar urushi qahramonlari ismlari bilan tugallangan uchta satrga ega.

Birinchi kod namunasi to'plam sifatida 1C qiymatlar jadvalining ustunlari bo'ylab takrorlanadi.

// TK ning barcha ustunlari nomlarini ko'rsatish Mening TK.Ustunlarimdan Har bir ustun uchun TK ning barcha ustunlari nomini ko'rsatish. EndCycle;

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

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

Ko'ramizki, ustunlar bo'ylab takrorlash uchun qatorni takrorlash sikliga o'xshash maxsus yig'ish halqasi qo'llaniladi (oxirgi maqolada). MyTM.Ustunlar- bu 1C qiymatlari jadvalining ustunlari to'plami "MoyaTZ". To'plamda turdagi ob'ektlar mavjud "ColumnValueTable" Ushbu turdagi har bir ob'ekt qiymatlar jadvalining ustuni bo'lib, xususiyatlar va usullarni o'z ichiga oladi. Ushbu xususiyatlar va usullarga murojaat qilib, biz bitta ustun haqida kerakli ma'lumotlarni olamiz yoki u bilan boshqa harakatlarni bajaramiz.

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

Men sizning e'tiboringizni tsiklning sarlavhasiga qaratmoqchiman: "Har bir uchun Ustun MyTR.Columns Loop dan" o'zgaruvchisi nomlandi "ustun" biz tomonidan ixtiro qilingan. Xuddi shu nomdan foydalanish shart emas. Siz ushbu o'zgaruvchini o'zingiz yoqtirgan narsani nomlashingiz mumkin, masalan "Mening joriy ustunim" Keyin yuqoridagi misol quyidagicha ko'rinadi:

// MyTK.Columns-dan MyCurrent Column-dan TK ning barcha ustunlari nomini chop eting ("Ustun nomi: " + MyCurrentColumn.Name); EndCycle;

1C ijro quyi tizimi bunday tsiklga duch kelganda, tsiklning har bir o'tishida u bizning kollektsiyamizdan bitta elementni belgilangan nomdagi o'zgaruvchiga belgilaydi. bu holat - to'plamning bir elementi qiymatlar jadvali ustunlari MyTM.Ustunlar Va keyin biz joriy ustunni o'z ichiga olgan o'zgaruvchiga murojaat qilamiz va xususiyatdan foydalanamiz "Ism".

Men ustunlar to'plamida ustun nomining yonidagi har bir ustunning raqamini ko'rsatishni taklif qilaman:

// MyTR.Columns LoopColumnNumber dan Har bir ustun uchun qiymatlar jadvalining barcha ustunlari soni va nomlarini ko'rsatish. // ustun raqamini oling ColumnName = Column.Name; // ustun nomini olish Hisobot("Ustun raqami:" + Ustun raqami + " Ustun nomi: " + Ustun nomi); EndCycle;

Matn 1C xabar oynasida ko'rsatiladi:

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

Keling, 1C qiymatlari jadvalidagi ustunlar qiymatlar jadvali qatorlari kabi noldan boshlab raqamlanganligiga e'tibor qarataylik.

Qiymatlar jadvalidagi ustunlar soni 1C

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

Ustunlar soni = MyTM.Columns.Number(); Hisobot (ustunlar soni);

Ekranda "3" raqami ko'rsatiladi. Darhaqiqat, bizning jadvalimizda uchta ustun mavjud: "Familiya", "Ism", "Otasining ismi"

Ustun ob'ektini raqami (indeks) bo'yicha olish va ustun indeksidan foydalanib, ustunlar bo'ylab takrorlash

Keling, ustun indekslari (raqamlari) yordamida qiymatlar jadvalining barcha ustunlari bo'ylab aylana qilaylik. Esda tutingki, ustun raqamlash noldan boshlanadi. Shuning uchun biz "Sh" tsiklining hisoblagichini noldan ustunlar soni minus bittaga teng raqamga oshirishimiz kerak.

SC uchun = 0 MyTM.Columns.Quantity() tomonidan - 1 Loop CurrentColumn = MyTM.Columns[SC]; Xabar berish (Current Column.Name); EndCycle;

Ekranda biz quyidagilarni olamiz

Familiyasi ismi otasini ismi

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

Hech qachon ob'ekt xususiyatini ob'ekt usuli bilan aralashtirib yubormaslik muhimdir.

Xususiyat statik qiymatning bir turi bo'lib, unga kirish, masalan, qavslarsiz yoziladi Current Column.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). Misol uchun: MyTM.Columns.Quantity()

Qavslar yozishni unutib qo'ygan usulga murojaat qilsak, 1C tarjimoni bizga xato xabari beradi va kodni bajarish uchun ishlatmaydi. Tarjimon biz usulga emas, balki xususiyatga kirayotganimizni taxmin qiladi - chunki qavslar yo'q. Va bu nomga ega xususiyatlarni topa olmaydi (chunki bu nomga ega bo'lgan usul mavjud) - bu xato xabarida aytiladi.

Agar usul chaqiruvida qavslarni noto'g'ri qo'yishni unutsam, tarjimon shunday yozadi MyTM.Columns.Quantity("Quantity()" dan keyin qavssiz):

Ob'ekt maydoni topilmadi (hisoblash)

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 turli tushunchalarni anglatishi mumkin.

Ustun raqamlari yordamida 1C qiymat jadvalidan ma'lumotlarni olish

Men sizga yangi boshlanuvchilar uchun 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 = MyTR; // birinchi qatorni olish (noldan raqamlash) ColumnFirstValue = RowFirst; // birinchi ustunning qiymatini olish (ustun raqamlash ham noldan iborat) Report(FirstColumnValue); // 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) Operator ichida biz "0" argumentini o'tkazdik. Bu qiymatlar jadvalining birinchi qatori indeksidir. Birinchi qator = MyTR;

Bundan tashqari, biz [...] operatori yordamida string ob'ektiga murojaat qilish huquqiga egamiz. Ushbu bayonot ichida biz qiymatlar jadvalining ustun raqamini o'tkazdik, bu holda ham "0". Shunday qilib, biz "0" raqami bilan ustunning qiymatini oldik joriy chiziq jadvallar "0" bilan raqamlangan. Biz ushbu qiymatni ekranda ko'rsatdik va u "Chapaev" qatorini ifodalaydi.

Keling, misolimizni biroz murakkablashtiraylik:

Birinchi qator = MyTR; // birinchi qatorni olish (noldan boshlab raqamlangan) Hisobot(Birinchi qator); // jadvalning birinchi qatoridagi birinchi ustunning qiymatini ko'rsatish Report(FirstRow); // jadvalning birinchi qatorida 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 qilishimiz uchun o'zgartiraman "Birinchi qator"

Xabar berish (MyTM); // jadvalning birinchi qatoridagi birinchi ustunning qiymatini ko'rsatish Report(MyTR); // Report(MyTR) jadvalining birinchi qatoridagi ikkinchi ustun qiymatini ko'rsatish; // jadvalning birinchi qatoridagi uchinchi ustunning qiymatini ko'rsatish

Ekran bir xil bo'ladi.

Chapaev Vasiliy Ivanovich

Yuqoridagi misolda biz qiymatlar jadvalining ma'lum bir satri va ustunidagi qiymatga kirish uchun quyidagi shaklda ikkita operatorning ketma-ket chaqiruvidan foydalanishimiz mumkinligini ko'rdik: Qiymatlar jadvali[IndexRows][IndexColumns]

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

RowCount uchun = 0 MyTM.Quantity() boʻyicha - 1 sikl // qatorlar boʻylab aylanish ColumnCount uchun = 0 MyTM.Columns.Quantity() boʻyicha - 1 sikl // ustunlar boʻylab ichki oʻtkazgich // yacheyka qiymatini oling (joriy qatordan) va joriy ustunlar) CellValue = MyTR[RowCount][ColumnCount]; // satr raqami, ustun raqami va katak qiymatini ko'rsatish Hisobot("Line #" + RowCount + "ustun #" + ColumnCount + " = " + CellValue); EndCycle; EndCycle;

Ekranda quyidagilar ko'rsatiladi:

№0 qator №0 ustun = Chapaev qatori #0 ustun #1 = Vasiliy qator #0 ustun #2 = Ivanovich qator #1 ustun #0 = Dzerjinskiy qatori #1 ustun #1 = Feliks qator #1 ustun #2 = Edmundovich qator # 2-ustun No 0 = Kotovskiy 2-qator ustun № 1 = Grigoriy qatori № 2 ustun № 2 = Ivanovich

Biri ikkinchisiga joylashtirilgan ikkita halqa yordamida biz 1C qiymatlar jadvalining barcha qatorlaridan barcha ustunlarning qiymatlarini ko'rsatdik. Bunday holda, biz ustunlar nomlarini ishlatmadik, balki ustunlar va qatorlarni indekslari bo'yicha ko'rsatdik. Yaxshiroq tushunish uchun misol ichidagi izohlarga e'tibor bering.

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

RowCount uchun = 0 MyTR.Quantity() bo'yicha - 1 sikl // qatorlar bo'ylab aylanish Hisobot(" ======= Qator # " + RowCount + " ======="); Hisobot berish (" "); // satr tasmasi (bo'sh qatorni kiritish) ColumnCount uchun = 0 MyTR.Columns.Quantity() bo'yicha - 1 sikl // ustunlar bo'ylab ichki tsikl // hujayra qiymatini olish (joriy satr va joriy ustundan) CellValue = MyTR[RowCount ][ ColumnCount]; // ustun nomini olish ColumnName = MyTR.Columns[ColumnCount].Name; // ustun nomi va katak qiymatini ko'rsatish Hisobot (ColumnName + ": " + CellValue); EndCycle; Hisobot berish (" "); // yangi qator (bo'sh qatorni kiritish) EndCycle;

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

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

Ha, deyarli unutdim. Bir qatorda ikkita [...][...] operatoridan foydalanilganda, ustun indeksi o‘rniga ushbu ustun nomini o‘tkazishimiz mumkin: Qiymatlar jadvali[RowIndex][ColumnName]

RowCount uchun = 0 MyTR.Quantity() bo'yicha - 1 sikl // qatorlar bo'ylab aylanish Hisobot(" ======= Qator # " + RowCount + " ======="); Hisobot berish (" "); // satr tasmasi (bo'sh qatorni kiritish) For ColumnCount = 0 MyTR.Columns.Quantity() bo'yicha - 1 tsikl // ustunlar bo'ylab o'rnatilgan tsikl ColumnName = MyTR.Columns[ColumnCount].Name; // ustun nomini olishCellValue = MyTR[RowCount][ColumnName]; //

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

Va endi, ushbu maqoladagi oxirgi.

Qatorlar va ustunlar to'plamini takrorlash uchun tsikllardan foydalangan holda 1C qiymatlari jadvalining barcha ma'lumotlarini to'g'ri qabul qilish

Har bir CurrentRow From MyTR Loop uchun // satrlar toʻplami boʻylab aylanish Hisobot(" ======= Line # " + MyTR.Index(CurrentRow) + " ======="); Hisobot berish (" "); MyTR.Columns Loop-dan har bir CurrentColumn uchun // ustunlar to'plami orqali takrorlanadigan ichki tsikl ColumnName = CurrentColumn.Name; // ustun nomini olishCellValue = CurrentRow[ColumnName]; // yacheyka qiymatini ustun bo'yicha olish NAME Hisobot (ColumnName + ": " + CellValue); // ustun nomi va katak qiymatini ko'rsatish EndCycle; Hisobot berish (" "); EndCycle;

Misolda ikkita halqa ishlatilgan. Ustun yig'ish sikli qator halqasi ichiga joylashtirilgan. Agar siz yuqoridagi misollar bilan shug'ullangan bo'lsangiz va oldingi maqolalarni o'qigan bo'lsangiz, unda bu misol qanday ishlashini tushunishda qiyinchilik tug'dirmaydi.

Nihoyat, oxirgi misolimizdagi kod satrlarini oraliq oʻzgaruvchilardan foydalanishni yoʻq qilish orqali imkon qadar qisqa tutaman. Biz real dunyo ilovalarida 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 kamida minimal sharhlangan bo'lishi kerak, shunda bir muncha vaqt o'tgach, dastur matnlarini tushunish osonroq bo'ladi.

Har bir CurrentRow From MyTR Loop uchun // qatorlar boʻylab aylanish Report(" ======= Line # " + MyTR.Index(CurrentRow) + " =======" + Symbols.PS); MyTr.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-HAFTALIK KURS

"Yangi boshlanuvchilar uchun 1C da DASTURLASH"

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

Ishtirok etish uchun kompyuter va internet bo'lishi kifoya.

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 (marja: 0 auto; en: 260px;).sp-form .sp -form-control (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-forma .sp-tugmasi (chegara-radius: 4px; -moz-border-radius: 4px; -webkit-border-radius: 4px; fon rangi: #f4394c; rang: #ffffff; kenglik: 100%; shrift-weig ht: 700; shrift uslubi: normal font-family: 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;)