Internet Windows Android
Kengaytiring

1c qiymatlarni jadvaliga qanday ustun qo'shish. Qanday usullar mavjud va bir vaqtning o'zida bir nechta qiymatlarni qanday qidirish kerak

Infostartning barcha o'quvchilariga salomlar. Ushbu maqola dasturiy jihatdan boshqariladigan dastur shaklida o'zboshimchalik bilan qiymatlar jadvalini yaratish masalasiga bag'ishlanadi.

Vazifaning xususiyatlari.

Oddiy dasturda dasturlashtirgan har bir kishi, ko'pincha formada o'zboshimchalik bilan qiymatlar jadvalini olish vazifasini bajaradi. Ixtiyoriy qiymatlar jadvali jadval sifatida tushuniladi, uning soni va turi ustunlari oldindan ma'lum emas. Ya'ni, 3 ta ustun bo'lishi mumkin, ehtimol 6 yoki 8 bo'lishi mumkin. Oddiy dasturda hamma narsa oddiy: siz "Qadriyatlar jadvali" elementini ishlov berish shakliga qo'yishingiz va keyin yaratilgan qiymatlar jadvalini shu joyga o'tkazishingiz mumkin dasturiy jihatdan element. Keyin oddiy buyruq:

ElementsForm.TableField.CreateColumns ();

shaklda tayyor qiymatlar jadvalini oling. Bu osonroq bo'lishi mumkin edi.

Bularning barchasi odatiy dasturda edi. Boshqariladigan dasturda hamma narsa o'zgardi. Ixtiyoriy jadval yaratish unchalik oson emas. Endi siz formadagi qiymatlar jadvalini qat'iy ravishda parametrlashingiz yoki uni dasturiy asosda yaratishingiz kerak (ta'riflang, yaxshi, aslida bu boshqariladigan dasturning mohiyati). Biz buni qilishga harakat qilamiz: boshqariladigan shaklda dasturiy ravishda o'zboshimchalik bilan qiymatlar jadvalini yaratish.

Muammoning echimi.

Bizga kerak bo'lgan birinchi narsa jadvalning formada qanday paydo bo'lishini aniqlashdir. Asosiysi, ishlov berishda biron bir ariza elementini yaratish shart emas. Biz uni butun jadval singari dasturiy jihatdan yaratamiz. Ya'ni, jadval shaklni ochish yoki tugmachani bosish paytida tasvirlanadi va tuziladi - bu har kimga kerak.

Formada jadval yaratish atribut sifatida qiymatlar jadvalini tavsiflash orqali sodir bo'ladi:
ChoiceType Array = Yangi Array; Array ofChoiceType.Add (Type ("ValuesTable")); ChoiceTypeDescription = NewTypeDescription (ArrayChoiceType); ArrayAttributes = Yangi qator; Array of Attributes.Add (Yangi shakl atributi ("Jadval jadvali", DescriptionTypeChoice, "", "TZN")); Endi ma'lumotlarni o'z ichiga olgan qiymatlarning dasturiy jadvalini yaratishimiz kerak. Agar qiymatlar jadvali so'rovdan olingan bo'lsa, unda hamma narsa tartibda ko'proq yoki ozroq bo'ladi. Agar jadval qo'lda tuzilgan bo'lsa, unda raqamlar yoki sanalarni o'z ichiga olgan ustunlar qiymati "Turlarning tavsifi" orqali yaratilishi mumkin. Xulosa shuki, qiymatlar jadvalidagi ustunlar biron bir turdagi bo'lishi kerak. Agar, masalan, foydalanuvchi ushbu ustunlardagi ma'lumotlarni interaktiv ravishda to'ldiradi deb taxmin qilinadigan bo'lsa, unda siz shunchaki ism bilan qiymatlar jadvalining ustunini qo'sha olmaysiz, uning turi bo'lishi kerak. Shuni yodda tutingki, bu juda muhim. biz ushbu turlarni formadagi jadvalga o'tkazamiz.
Bir nechta ustunlarni o'z ichiga olgan jadval yaratamiz:
CD = Yangi sana saralashlari (Sana qismlari. Vaqt); ArrayKD = Yangi qator; ArrayCD.Add (turi ("Sana")); TypeDescriptionTime = Yangi TypeDescription (ArrayKD, KD); TK = Yangi qiymatlar jadvali;
TK.Kolonki.Add ("S", DescriptionTypesTime);
TZ.Kolonki.Add ("Oldin", DescriptionTypesTime);
TK.Kolonki.Add ("to'liq ism");
TK.Kolonki.Add ("Izoh"); // To'liq ism va Izoh - satrlar Keyin TK dastur jadvalimizni kerakli ma'lumotlar bilan to'ldiramiz. Kerakli qiymatlarni o'z ichiga olgan va yaratilgan shakl atributiga o'tkazishga tayyor bo'lgan TOR jadvalini olamiz. TK dan har bir ustun uchun. Ustunli ilmoq

ArrayAttributes.Add (yangi shakl atributi (Column.Name, Column.ValueType, "ScheduleTable"));
Tsikl tugashi;
ModifyAttributes (ArrayAttributes);
ChoiceFieldsTable = Elements.Add ("TZN", Type ("FormTable"));
ChoiceFieldsTable.PathKData = "ScheduleTable";
ChoiceFieldsTable.Display = DisplayTable.List;

Mana shunday oddiy kombinatsiya va bizning stolimiz tayyor.

TK dan har bir ustun uchun. Ustunli ilmoq

NewElement = Elements.Add (Column.Name, Type ("FormField"), ChoiceFieldsTable);
NewElement.View = FormFieldType.InputField;
NewItem.PathData = "Jadval jadvali." + Ustun. Ism;
NewElement.Width = 10;
Tsikl tugashi;

Shartli dizayn, agar kerak bo'lsa, biz qo'lda yozamiz, buyruq menyusi - qo'lda. Stol ishlovchilari ham qo'lda yozilgan. Masalan, Select jadvali uchun voqea ishlovchilarini qo'shish uchun:

ChoiceFieldsTable.SetAction ("Tanlov", "TZNSelection");

Ushbu hodisani boshqarish uchun protsedura shaklida alohida protsedura yoziladi:

& OnClient
TZNSelection protsedurasi (TK, SelectedString, Field, StandardProcessing)
// ishlov beruvchining buyruqlari EndProcedure

Jadval ishlovchilari mijozga o'q uzishini va shuning uchun buyruq kompilyatori ko'rsatgichiga ega bo'lishini unutmang

& OnClient

Va men qo'shmoqchi bo'lgan oxirgi narsa shuki, bu barcha harakatlardan so'ng biz tugagan jadvalni form atributiga o'tkazishni unutmaymiz:

ValueVRequisitForm (TK, "Jadval jadvali");

Natijada bizda shunday bo'ldi:


Mana "Tanlash" tadbirini qayta ishlash:



Keyingi so'z.

Umid qilamanki, ushbu maqola formada jadvallar yaratishni boshlaydigan 1C dasturchilariga yordam beradi.

Siz jadvallarni yaratishda yordam beradigan sharhlar bilan boshqariladigan shaklga qiymatlar va natijalar jadvalini dasturiy ravishda yaratadigan ishlov berishni yuklab olishingiz mumkin.

Boshlanish uchun kichik bir haqiqat - qadriyatlar jadvali bilan ishlashning oddiy misollari:

1. Qiymatlar jadvalini yarating

ValuesTable = Yangi qiymatlar jadvali;


2. Qadriyatlar jadvalining ustunlarini yarating:

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


3. Ustun nomlari yordamida yangi qatorlar qo'shing:


NewStroka.Name = "Vasiliy";
NewStroka.Surname = "Pupkin";


4. Qadriyatlar jadvalidagi qiymatni qanday izlash kerak:
Kerakli qiymatni o'z ichiga olgan jadval qatorini topish kerak.

FoundString = ValueTable.Find (LookupValue);


5. Qadriyatlar jadvalining aniq ustunlaridagi birinchi hodisani toping

FoundString = TableValues.Find (SearchValue, "Ta'minlovchi, xaridor");


6. Agar siz barcha hodisalarni qiymatlar jadvalida topishni istasangiz:
Biz qidiruv tuzilmasidan foydalanamiz.

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


Qidiruv strukturasini yarataylik, uning har bir elementi kalit sifatida ustun nomini va ushbu ustunda kerakli qiymatni qiymat sifatida o'z ichiga oladi. Biz SearchStruct-ni parametr sifatida FindStrings () uslubiga o'tkazamiz. Natijada jadvalning qatorlarini olamiz.
Agar biz qidiruv tuzilmasiga kerakli qiymat bo'yicha qidiruvni qo'shsak, masalan, Mas'ul ustunda, u holda FindStrings () usulidan foydalanish natijasida biz Xodimning ham, Mas'ulning ham kerakli darajasiga teng bo'lgan barcha qatorlarni olamiz. qiymat.

7. Qanday qilib qiymatlar jadvali tasodifiy tartibda takrorlanadi

Qiymat jadvalining ko'chadan har bir joriy yo'nalishi uchun
Hisobot (CurrentString.Name);
Tsikl tugashi;

Indekslardan foydalangan holda bir xil narsa:

MajorIndex = ValueTable.Quantity () - 1;
MF = 0 dan yuqori indeks tsikli uchun
Hisobot (TableValues ​​[Count] .Name);
Tsikl tugashi;


8. Qadriyatlar jadvalining mavjud qatorini o'chirish

ValuesTable.Delete (DeletedString);

indeks bo'yicha

ValuesTable.Remove (0);


9. Qadriyatlar jadvalining mavjud ustunini o'chirish

Qiymatlar jadvali.Columns.Delete (DeletedColumn);


indeks bo'yicha

ValuesTable.Columns.Remove (0);

Shuni esda tutish kerakki, qiymatlar jadvalining "o'rtasidan" qatorni (yoki ustunni) o'chirish o'chirilgan "keyin" bo'lgan qatorlar indekslarida bittaga kamayishiga olib keladi.

10. Agar ustunlar nomlari o'zgaruvchilar tarkibida bo'lsa, qiymatlar jadvalini qanday to'ldirish kerak?

NewRow = ValuesTable.Add ();
NewString [ColumnName] = Qiymat;


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

ValuesTable.FillValues ​​(False, "FiscalAcounting Flag");


FillValues ​​() usulini qiymatlar jadvaliga qo'llang. Birinchi parametr - to'ldiriladigan qiymat. Ikkinchi parametr - to'ldiriladigan ustun nomi.

12. "ResipientTable" qiymatlar jadvalini "SourceTable" qiymatlar jadvali ma'lumotlari bilan qanday to'ldirish mumkin?

Agar Qabul qiluvchilar jadvali operatsiya vaqtida hali mavjud bo'lmasa yoki uning oldingi ustunlarini saqlash kerak bo'lmasa, uni asl nusxaning to'liq nusxasi sifatida yaratishingiz mumkin.

ReceiverTable = SourceTable.Copy ();


Ikkinchi variant: TableRecipient jadvali mavjud va ustunlar va ustunlarning ma'lumotlar turlariga cheklovlarni yo'qotish juda achinarli. Ammo nomlari manba jadvali nomlariga mos keladigan ustunlar uchun ma'lumotlarni to'ldirishingiz kerak.

Mos keladigan nomlarga ega ustunlar uchun qisman ma'lumotlarni uzatish:

SourceTable Loop-dan har bir SourceTable qatori uchun
FillPropertyValues ​​(NewRow, SourceTableRow);
Tsikl tugashi


Manba jadvalining har bir satri uchun qabul qiluvchi jadvalga yangi qator qo'shiladi va qiymatlari yangi jadvalning ustunlariga to'ldiriladi, ularning nomlari asl jadvaldagi ustunlar nomlariga to'g'ri keladi.

Agar jadvallarda bir xil nomdagi ustunlar mavjud bo'lmasa, natijada jadval manba jadvalidagi qatorlar qatorida bo'sh qiymatlarga ega bo'lgan qatorlarni o'z ichiga oladi.
Agar bir xil nomdagi ba'zi ustunlar uchun manba jadvalidagi ma'lumotlar qiymati turi qabul qiluvchi jadvalning ruxsat etilgan ustun turlari qatoriga tushmasa, biz bunday maydonlarda bo'sh qiymatlarni olamiz.
Keling, uchinchi ishni ko'rib chiqaylik. Xuddi shu nomdagi ustunlar bo'lsa, qabul qiluvchi jadval ustuni manba jadvalining ustuniga to'liq mos kelishi kerak.

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

Nomli ustunlar = Yangi qator ();

Manba jadvalidagi har bir ustun uchun ustunlar
MatchingColumn = TableRecipient.Columns.Find (Column.Name);

Agar MatchingColumn bo'lsa<>Keyin aniqlanmagan

// Ustunning xususiyatlarini oling.
Ism = Ustun.Nom;
ValueType = Column.ValueType;
Sarlavha = Ustun.
Kenglik = ustun. Kenglik;

// Qabul qilish jadvalidagi ustunlarni almashtiring.
Index = TableReceiver.Columns.Index (MatchingColumn);

TableReceiver.Columns.Remove (indeks);
TableReceiver.Columns.Insert (Index, Name, ValueType, Header, Width);

// Massivga mos keladigan ustunlarning keyingi nomini qo'shing.
Xuddi shu nomdagi ustunlar.Add (Column.Name);

EndIf;

Tsikl tugashi;

// Manba jadvalining satrlarini ko'rib chiqing.
SourceTable Loop-dan har bir SourceTable qatori uchun

// Qabul qiluvchilar jadvaliga yangi qator qo'shing.
NewRow = TableRecipient.Add ();

// Tegishli katakchalarga qiymatlarni to'ldiring.
Xuddi shu nom ustunlar ko'chadan har bir nom ustuni uchun
NewRow [ColumnName] = SourceTableRow [ColumnName];

Tsikl tugashi;

Tsikl tugashi;


Qabul qilish jadvalidagi ustunni yangisi bilan almashtirishimiz kerak, uning xususiyatlari manba jadvalining ustuniga to'liq mos keladi.
Shuning uchun, agar qabul qiluvchilar jadvalida xuddi shu nomdagi ustun topilsa, biz yangi ustun uchun barcha xususiyatlarni o'zgaruvchida to'playmiz. Keyin eskisini o'chiring va yangi ustun yarating. Keyin manba jadvalining satrlarini ko'rib chiqamiz.
Ko'chadan qabul qiluvchi jadvalga yangi qator qo'shing va mos keladigan ustunlar qatoridagi ustunlar nomlari ustida takrorlash uchun tsiklni oching.
Ushbu joylashtirilgan tsiklning ichida biz qabul qiluvchi jadval katakchalarini manba jadvalining katakchasi ma'lumotlari bilan to'ldiramiz.

13. "ValuesTable" qiymatlar jadvaliga cheklovlar bilan ustunlar qanday qo'shiladi?

Ustunni qo'shganda siz shunchaki uning nomini ko'rsatishingiz va Add () usulining ikkinchi parametrini qoldirishingiz mumkin. Bunday holda, ustunning ma'lumotlar turi o'zboshimchalik bilan amalga oshiriladi.

Ma'lumot turini ko'rsatmasdan ustun qo'shish

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


Ikkinchi parametr qiymatini to'ldirishingiz mumkin. U erda ustun uchun ruxsat berilgan turdagi tavsif berilishi kerak. Tavsifni o'zi konstruktor yordamida, ikkinchisiga parametr sifatida satr turi nomini (agar ko'p turlari bo'lsa, keyin vergul bilan ajratilgan) yoki qabul qilinadigan turlarning qatorini o'tkazib olish mumkin.

Ma'lumot turini ko'rsatuvchi ustun qo'shish

// Ma'lumotlar ustunlaridagi cheklovlar:
// Faqat "Pudratchilar" izlash elementlari.
TableValues.Columns.Add ("Qarshi tomon", turlarning yangi tavsifi ("DirectoryLink.Contractors"));


Agar ustunlar ma'lumotlarini to'ldirish uchun ruxsat berilgan turlar qatori bo'lsa, uning bit chuqurligini (uzunligini) cheklashingiz mumkin, o'zgaruvchidan yoki belgilangan uzunlikdan foydalanishni belgilang. Bularning barchasi String Qualifiers konstruktori yordamida ob'ekt yaratish orqali amalga oshiriladi. Bundan tashqari, ushbu ob'ekt TypeDescription konstruktorining parametrlaridan biri sifatida foydalaniladi.

Qadriyatlar jadvalining ma'lumotlar turini saralash uchun kvalifikatorlardan foydalanish

// String turidagi ma'lumotlarga cheklovlar tayyorlang va o'rnating.
String Qualifiers = NewString Qualifiers (20, ValidLength.Variable);
AllowedTypes = NewTypeDescription ("String", StringQifiers);
ValuesTable.Columns.Add ("NoteStringShort", AllowedTypes);


Sana va sana saralashlari uchun ham xuddi shunday qilishingiz mumkin.
Iltimos, e'tibor bering: tip tavsifi konstruktor tomonidan ham "noldan" qurilishi mumkin va siz mavjud turdagi tavsifdan asos sifatida foydalanishingiz mumkin.

Qadriyatlar jadvali ustunining ma'lumotlar turini aniqlash uchun mavjud tavsiflardan foydalanish

// Avval ishlatilgan turdagi tavsifning kengaytmasi.
QualifiersNumber = Yangi QualifiersNumber (10, 2, ValidSign.Non-salbiy);
Sana saralashlari = Yangi sana saralashlari (DateParts.Date);
ExtendedAllowedTypes = NewTypeDescription (AllowedTypes, "Raqam, Sana", Raqamni saralash, Sana bo'yicha malakalar);

ValuesTable.Columns.Add ("Izoh", ExtendedAllowedTypes);

Qiymat jadvali - bu jadval ko'rinishida ma'lumotlarni saqlash uchun ma'lum bir umumiy ob'ekt. Jadvallar va dastur ob'ektlari o'rtasidagi asosiy farq shundaki, ular ma'lumotlar bazasining fizikaviy jadvallari bilan bog'liq emas. Qadriyatlar jadvali faqat RAMda mavjud bo'lib, u bir tomondan noyob imkoniyatlarni beradi, ikkinchidan esa ma'lum cheklovlarni keltirib chiqaradi. Shu bilan birga, jadval bilan ta'sir o'tkazish qobiliyati ma'lumotlar bazasida mavjud bo'lgan ob'ektlar bilan o'zaro ta'sir qilish bilan taqqoslanadi.

Tarixiy jihatdan, 1C-dagi qiymatlar jadvali mavjud jadvallarning virtual analogi bo'lgan ikki tomonlama maqsadga ega, ammo shu bilan birga u boshqaruv elementidir. Boshqariladigan dasturga o'tish bilan ushbu funktsional imkoniyatlarning aksariyati eskirgan, ammo u endi foydalanuvchi interfeysi elementi ham bo'lishi mumkin, ammo bir qator muhim cheklovlar mavjud.

Ob'ekt sifatida qadriyatlar jadvalining tuzilishi

Qiymatlar jadvalining xususiyatlari oldindan belgilangan ikkita to'plamning kombinatsiyalari bilan aniqlanadi: uning ustunlari va satrlari.

Qadriyatlar jadvali Ustunlar

Qadriyatlar jadvalining ustuni uning aniqlovchi xususiyati hisoblanadi. Bu uning tuzilishini belgilaydigan jadvaldagi ustunlar to'plamidir. Ustunlar foydalanuvchi interfeysi bilan tanish bo'lgan fizik jadvallar maydonlariga yoki jadval bo'limi yoki hujjatlar jurnalining ustunlariga mos keladi. Ustun ichki nomga, qiymat turiga va jadvalga ta'sir o'tkazishda ko'rsatiladigan sarlavhaga ega bo'lishi mumkin.

Ustunlar ob'ektlar to'plami bo'lgani uchun siz ustunlarni qo'shishingiz, olib tashlashingiz va tahrirlashingiz mumkin.

Jadval qatori

Dasturlash interfeysi nuqtai nazaridan satrlar qiymatlar jadvaliga kiritilgan alohida to'plamdir. Ular fizik jadvallar yozuvlariga o'xshash, ya'ni foydalanuvchi uchun tanish bo'lgan jadval bo'limi yoki hujjatlar jurnalining qatorlari. Alohida olingan har bir qator nomlari jadval ustunlari nomlariga mos keladigan nomlangan xususiyatlar to'plamiga ega bo'lgan ob'ektdir.

Shunday qilib, mag'lubiyat bilan ta'sir o'tkazish boshqa narsalar bilan o'zaro aloqalarga juda o'xshaydi. Siz uning xususiyatlarini o'qishingiz va yozishingiz, shu jumladan oldindan belgilangan "FillPropertyValues ​​()" funktsiyasidan foydalanishingiz mumkin. Qatorlar qiymatlar jadvalining asosiy to'plami bo'lganligi sababli, jadvaldagi barcha qatorlarni o'chirish uchun "Clear ()" usuli qo'llaniladi.

Qadriyatlar jadvalini yarating

Qadriyatlar jadvalidan foydalanishga tayyor bo'lishning ko'plab usullari mavjud. Keling, ularning ayrimlarini ko'rib chiqaylik. Har bir misol sharhlar bilan kodlar ro'yxati sifatida taqdim etiladi.

Dizayner tomonidan jadval yaratish

Ishlab chiquvchiga kerak bo'lgan bunday jadvalni yaratishga imkon beradigan asosiy usul, afsuski, eng ko'p vaqtni talab qiladi, chunki u barcha kerakli jadval xususiyatlarini qo'lda ko'rsatishni talab qiladi.

DemoTable = NewValuesTable; // Avvalo biz TORni ishga tushiramiz // Keyin yangi ustunlar uchun kerakli parametrlarni aniqlaymiz va ularni to'plamga qo'shamiz // "Nomenklatura" ustunini yarating Name = "Nomenklatura"; ValueType = Turlarning yangi tavsifi ("ReferenceLink.Nomenclature"); Sarlavha = "Nomenklatura (mahsulot)"; DemoTable.Columns.Add (ism, ValueType, sarlavha); // "Miqdor" ustunini yarating Name = "Miqdor"; ValueType = NewTypeDescription ("Raqam"); DemoTable.Columns.Add (ism, ValueType); // Ushbu manipulyatsiyalar natijasida biz bo'sh ustunlarni yozdik ustunlar bilan yaratdik // Agar siz ibtidoiy turlarni aniqroq yozishni ishlatishingiz kerak bo'lsa, unda "TypeDescription" konstruktorining kengaytirilgan sintaksisidan foydalanishingiz kerak.

Nusxalash orqali jadval yaratish

Agar sizda mos tuzilish va / yoki kompozitsiyaga ega bo'lgan ma'lumotnoma mavjud bo'lsa, siz qiymatlar jadvalini nusxalashingiz yoki yuklab olishingiz mumkin. Agar mos yozuvlar boshqa jadval bo'lsa, unda "Malumot jadvallarini nusxalash" usulini qo'llash kerak. Agar siz jadvalli bo'lim yoki ro'yxatga olish yozuvlari to'plami bilan ishlayotgan bo'lsangiz, "Qadriyatlar jadvalini tushirish" usulidan foydalanishingiz kerak. Agar sizga faqat struktura kerak bo'lsa, unda "CopyColumns" usulidan foydalanishingiz mumkin.

// Texnik standartdan barcha satrlarni nusxalash, lekin faqat ikkita ko'rsatilgan ustunlarni saqlash bilan variant. Standartning ustunlari = "Nomenklatura, miqdor"; DemoTable = TableDefault.Copy (, ColumnDefault); // TZ-ma'lumotnomadan oldindan tanlangan qatorlarni nusxalash bilan variant, ko'rsatilgan ikkita ustunni saqlab ReferenceStrings = SelectInArrayWe needStringsFromTableTableTable (); ColumnsStandard = "Nomenklatura, miqdor"; DemoTable = TableDefault.Copy (RowsDefault, ColumnDefault); // "Nomenklatura" bitta ustunini saqlagan holda, belgilangan filtr bo'yicha TZ-standartidan qatorlarni nusxalash bilan variant // Barcha satrlar Miqdor ustunidagi qiymat 0 bo'lgan joyda tanlanadi, natijada faqat Nomenklatura ustuni kiritiladi. ., 0); ColumnsStandard = "Nomenklatura"; DemoTable = TableDefault.Copy (RowsDefault, ColumnDefault); // Jadvalni to'liq nusxalash bilan variant va keyinchalik qator satrini nolga teng bo'lgan bitta qatorni o'chirib tashlash va butun sonni "Miqdor" ustunini o'chirish Satrlarni tanlash = Yangi tuzilma ("Miqdor", 0); ColumnsStandard = "Nomenklatura"; DemoTable = TableDefault.Copy (RowsDefault, ColumnDefault); TableRow = DemoTable.Find (0, "Miqdor"); DemoTable.Delete (TableRow); DemoTable.Columns.Remove ("Miqdor"); // Shunga o'xshash variantlar va ularning modifikatsiyalari jadval bo'limlari va registr yozuvlarini ro'yxatga olish uchun qo'llanilishi mumkin

So'rov bilan jadval yaratish

Agar ma'lumotlar bazasida sizga kerakli jadval uchun shablon mavjud bo'lsa, unda siz so'rov yordamida tezda kerakli tuzilishga ega jadval yaratishingiz mumkin.

// Yig'ish registri tuzilishi asosida bo'sh jadval yaratishga misol // Bu bilan to'ldirilgan jadvalni olish mumkinligini taxmin qilish oson Query = New Query ("SELECT the FIRST 0 * From Accumulation Regist.Products inStore "); QueryResult = Query.Run (); DemoTable = QueryResult.Upload (); // Aniq ko'rsatilgan turlar va maydonlarning nomlari uchun bo'sh jadval yaratish misoli Query = New Query; Query.Text = "SELECT FIRST 0 | Value (Directory.Nomenclature.EmptyLink) AS Nomenclature, | EXPRESS (0 AS NUMBER (15, 3)) AS AS"; QueryResult = Query.Run (); DemoTable = QueryResult.Upload (); // MUHIM! So'rov natijasida olingan ustun qiymatlari turlari har doim Null turini o'z ichiga olganligini unutmang // Shunday qilib, so'rov tomonidan yaratilgan texnik topshiriq har doim kompozit ustun turlariga ega

Xulosa

Ushbu kichik maqolada biz qadriyatlar jadvalini yaratishning asosiy xususiyatlari va eng yaxshi amaliyotlarini ko'rib chiqdik, bu sizni boshlash va tushunish uchun etarli. Qiymat jadvali ob'ektining o'zi shunchalik ko'p qirrali bo'lib, uning imkoniyatlarini batafsil tavsiflash texnikasi va usullari bo'yicha alohida maqola yozishni talab qiladi.

Pul va tovarlarni hisobga olish uchun biznesda turli jadvallardan keng foydalaniladi. Deyarli har bir hujjat jadvaldir.

Bir jadvalda ombordan jo'natiladigan narsalar ro'yxati keltirilgan. Boshqa jadvalda ushbu tovarlarni to'lash majburiyatlari mavjud.

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

1C da jadvallar "jadval bo'limlari" deb ham ataladi. Ma'lumotnomalar, hujjatlar va boshqalarda mavjud.

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

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

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

// jadvalni oling
Selection = Query.Run (). Tanlang ();
// tartibda, biz so'rov natijasining barcha qatorlarini ko'rib chiqamiz
Fetch.Next () Loop paytida
Hisobot (namuna. Nomi);
Tsikl tugashi;

// Variant 2 - qiymatlar jadvaliga tushirish
So'rov = Yangi so'rov ("Katalogdan nomni tanlang. Nomenklatura");
// jadvalni oling
Jadval = Query.Run (). Bo'shatish ().
// shunda biz ham barcha satrlardan o'tishimiz mumkin
Stol ko'chadan har bir qator uchun
Hisobot (String.Name);
Tsikl tugashi;
// yoki o'zboshimchalik bilan satrlarga kirish
String = Jadval. Toping ("Kurak", "Ism");

Muhim xususiyati shundaki, so'rov natijalaridan olingan jadvalda barcha ustunlar kuchli teriladi. Bu shuni anglatadiki, "Nomenklatura" ma'lumotnomasidan "Ism" maydonini so'rab, siz "String" tipidagi ustunni ruxsat etilgan uzunligi N belgidan ko'p bo'lmagan holda olasiz.

Formadagi jadval (semiz mijoz)

Foydalanuvchi jadvalga joylashtirilganda jadval bilan ishlaydi.

Biz darsda va darsda formalar bilan ishlashning asosiy tamoyillarini muhokama qildik

Shunday qilib, jadvalni forma ustiga joylashtiramiz. Buning uchun jadvalni boshqaruv panelidan sudrab chiqishingiz mumkin. Xuddi shunday, menyuda Form / Insert Control ni tanlashingiz mumkin.

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

Ma'lumotlar xususiyatidagi "..." tugmasini bosing. Jadval bo'limlari ro'yxatini ko'rish uchun Ob'ekt filialini kengaytirish kerak.

Jadval qismini tanlashda 1C ning o'zi formadagi jadvalga ustunlar qo'shadi. Bunday jadvalga foydalanuvchi tomonidan kiritilgan satrlar mos yozuvlar / hujjat bilan birga avtomatik ravishda saqlanadi.

Xuddi shu Data xossasida siz o'zboshimchalik bilan nom kiritishingiz va ValuesTable turini tanlashingiz mumkin.

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

Jadvalni o'ng tugmasini bosib siz ustun qo'shishingiz mumkin. Ustunning xususiyatlarida siz uning nomini (1C kodidagi ma'lumot uchun), ustun ustuni sarlavhasini, jadval bo'limining atributiga havolani (ikkinchisi - agar o'zboshimchalik bilan jadval bo'lmasa, lekin jadval qismi) ko'rsatishingiz mumkin. tanlangan).

Formadagi jadvalning xususiyatlarida foydalanuvchi qatorlarni qo'shishi / olib tashlashi mumkinligini belgilashingiz mumkin. Keyinchalik takomillashtirilgan shakl - Faqat ko'rish katagiga belgi qo'ying. Ushbu xususiyatlar ma'lumotlarni namoyish qilish uchun jadvallarni tashkil qilish uchun foydalidir, ammo tahrir qilmaydi.

Jadvalni boshqarish uchun formada buyruqlar satrini ko'rsatish kerak. Forma / Qo'shish Boshqarish / Buyruqlar paneli menyu bandini tanlang.

Buyruqlar satrining xususiyatlaridan paneldagi tugmalar avtomatik ravishda paydo bo'lishi uchun Avtomatik to'ldirish katagiga belgi qo'ying.

Formadagi jadval (yupqa / boshqariladigan mijoz)

Boshqariladigan shaklda bu harakatlar biroz boshqacha ko'rinadi. Agar shaklga jadval qismini qo'yish kerak bo'lsa, Ob'ekt filialini oching va jadval qismlaridan birini chapga torting. Va tamom!

Agar siz qiymatlar jadvalini joylashtirishingiz kerak bo'lsa, shaklning yangi atributini qo'shing va uning xususiyatlarida qiymatlar jadvalini ko'rsating.

Ustunlarni qo'shish uchun ushbu forma atributidagi sichqonchaning o'ng tugmachasini bosish menyusidan foydalaning, atribut qo'shish ustun elementi.

Keyin jadvalni chapga torting.

Jadvalni buyruqlar satriga ega qilish uchun jadval xususiyatlarida Usage - Buyruqlar satri holati bo'limidagi qiymatlarni tanlang.

Jadvalni Excelga eksport qiling

Formada joylashgan har qanday 1C jadvalini chop etish yoki Excelga yuklab olish mumkin.

Buning uchun jadvaldagi bo'sh joyni o'ng tugmasini bosing va Ro'yxat-ni tanlang.

Boshqariladigan (ingichka) mijozda shunga o'xshash amallarni "All Action / Display" ro'yxati menyusi punkti yordamida bajarish mumkin.

1C qiymatlarini jadvaldan qidiring

Qanday usullar mavjud va bir vaqtning o'zida bir nechta qiymatlarni qanday qidirish kerak.

Jadvalda qiymatlarni qidirishning ikkita maxsus usuli mavjud:

1. Toping

Horizon TV = Ma'lumotnomalar.Nomenklatura.FindByName ("Horizon TV");
FoundString = TKNomenclature.Find (TV Horizon);
// qidiruvni tezlashtirish uchun qaysi ustunlarni qidirishni ham belgilashimiz mumkin
FoundString = TKNomenclature.Find (TV Horizon, "Nomenklatura");

Ushbu usul birinchi topilgan satrni kerakli qiymatga qaytaradi yoki agar bo'lmasa, Undefined-ga qaytaradi. Shuning uchun, uni noyob qadriyatlarni topish uchun ishlatish qulay, chunki aks holda, qiymatni topgach, keyingisini topish uchun uni jadvaldan olib tashlashingiz kerak.

Bunday azoblanmaslik uchun sizga mos keladigan qatorlarni topishga imkon beruvchi quyidagi usul mavjud:

2. FindStrings


StructureSelection.Insert ("Nomenklatura", TV Horizon); // avval ustunni qaerdan qidirish kerakligini, keyin esa nimani izlash kerakligini ko'rsating.

Ushbu usul har doim qatorni qaytaradi, ammo hech narsa topilmasa bo'sh bo'lishi mumkin. Va bu usul, avvalgisiga o'xshab, qiymatlar jadvalining qatorlarini o'zlari emas, balki alohida qatorda qaytaradi. Shuning uchun, qator satridagi qiymatlarni o'zgartirib yoki topilgan qator uchun avvalgi usulda bo'lgani kabi, 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:


Tanlov doirasi = yangi tuzilish;
StructureSelection.Insert ("Nomenklatura", TV Horizon);
Tanlash tarkibi. Qo'shish ("Miqdor", 10);
FoundArrayStrings = TZNomenclature.FindStrings (SelectionStructure);

Birgina kamchilik, siz ko'rib turganingizdek, siz "teng" dan boshqa taqqoslash turlaridan foydalana olmaysiz.