1s 8.3 სტრუქტურა მნიშვნელობების ცხრილამდე

ფულისა და საქონლის აღრიცხვის მიზნით, ბიზნესში ფართოდ გამოიყენება სხვადასხვა ცხრილები. თითქმის ყველა დოკუმენტი არის ცხრილი.

ერთ ცხრილში მოცემულია საწყობიდან გასატანი საქონელი. სხვა ცხრილი აჩვენებს ამ საქონლის გადახდის ვალდებულებებს.

ამიტომ, 1C-ში მაგიდებთან მუშაობა თვალსაჩინო ადგილს იკავებს.

ცხრილებს 1C-ში ასევე უწოდებენ "ტაბულურ ნაწილებს". მათ აქვთ დირექტორიები, დოკუმენტები და სხვა.

შეკითხვა, როდესაც შესრულდება, აბრუნებს ცხრილს, რომლის წვდომა შესაძლებელია ორი განსხვავებული გზით.

პირველი - უფრო სწრაფი - შერჩევა, მისგან რიგების მოპოვება შესაძლებელია მხოლოდ თანმიმდევრობით. მეორე არის შეკითხვის შედეგის ატვირთვა მნიშვნელობების ცხრილში და შემდეგ მასზე შემთხვევითი წვდომა.

//ვარიანტი 1 – თანმიმდევრული წვდომა შეკითხვის შედეგებზე

//მიიღე მაგიდა
Select = Query.Run().Select();
// შეკითხვის შედეგის ყველა სტრიქონს თანმიმდევრობით გავდივართ
ხოლო Select.Next() ციკლი
ანგარიში (არჩევა.სახელი);
საბოლოო ციკლი;

//ვარიანტი 2 – ატვირთვა მნიშვნელობათა ცხრილში
მოთხოვნა = ახალი მოთხოვნა ("SELECT Name FROM Directory.Nomenclature");
//მიიღე მაგიდა
ცხრილი = Query.Run().Unload().
//შემდეგ ჩვენ ასევე შეგვიძლია გადავკვეთოთ ყველა ხაზი
ცხრილის ციკლიდან თითოეული რიგისთვის
ანგარიში (სტრიქონი.სახელი);
საბოლოო ციკლი;
//ან თვითნებურად წვდომა სტრიქონებს
Row = Table.Find("შოველ", "სახელი");

მნიშვნელოვანი მახასიათებელია ის, რომ ცხრილში, რომელიც მიიღება შეკითხვის შედეგიდან, ყველა სვეტი მკაცრად იქნება აკრეფილი. ეს ნიშნავს, რომ სახელის ველის მოთხოვნით Nomenclature დირექტორიადან, თქვენ მიიღებთ String ტიპის სვეტს, რომლის დასაშვები სიგრძე არ აღემატება N სიმბოლოს.

ცხრილი ფორმაზე (სქელი კლიენტი)

მომხმარებელი მუშაობს ცხრილთან, როდესაც ის განთავსდება ფორმაზე.

ფორმებთან მუშაობის ძირითადი პრინციპები განვიხილეთ გაკვეთილზე და გაკვეთილზე

მაშ ასე, დავდოთ ცხრილი ფორმაზე. ამისათვის შეგიძლიათ გადაიტანეთ ცხრილი Controls პანელიდან. ანალოგიურად, მენიუდან შეგიძლიათ აირჩიოთ Form/Insert Control.

მონაცემების შენახვა შესაძლებელია კონფიგურაციაში - შემდეგ თქვენ უნდა აირჩიოთ კონფიგურაციის ობიექტის არსებული (ადრე დამატებული) ტაბულური ნაწილი, რომლის ფორმასაც არედაქტირებთ.

დააჭირეთ ღილაკს "..." მონაცემთა თვისებაში. იმისათვის, რომ ნახოთ ცხრილის ნაწილების სია, თქვენ უნდა გააფართოვოთ Object ფილიალი.

როდესაც აირჩევთ ცხრილის ნაწილს, 1C თავად დაამატებს სვეტებს ფორმაში არსებულ ცხრილში. მომხმარებლის მიერ ასეთ ცხრილში შეყვანილი რიგები ავტომატურად შეინახება საცნობარო წიგნთან/დოკუმენტთან ერთად.

იმავე მონაცემთა თვისებაში შეგიძლიათ შეიყვანოთ თვითნებური სახელი და აირჩიოთ Value Table ტიპის.

ეს ნიშნავს, რომ არჩეულია მნიშვნელობების თვითნებური ცხრილი. ის ავტომატურად არ დაამატებს სვეტებს და არც ავტომატურად შეინახება, მაგრამ თქვენ შეგიძლიათ გააკეთოთ ის, რაც გსურთ.

ცხრილზე მაუსის მარჯვენა ღილაკით შეგიძლიათ დაამატოთ სვეტი. სვეტის თვისებებში შეგიძლიათ მიუთითოთ მისი სახელი (1C კოდში მითითებისთვის), ფორმის სვეტის სათაური, ტაბულური ნაწილის ატრიბუტთან კავშირი (ეს უკანასკნელი - თუ არ არის შერჩეული თვითნებური ცხრილი, მაგრამ ცხრილის ნაწილი).

ფორმის ცხრილის თვისებებში შეგიძლიათ მიუთითოთ შეუძლია თუ არა მომხმარებელს რიგების დამატება/წაშლა. უფრო მოწინავე ფორმაა მხოლოდ ხედის ჩამრთველი. ეს თვისებები მოსახერხებელია ცხრილების ორგანიზებისთვის, რომლებიც განკუთვნილია ინფორმაციის ჩვენებისთვის, მაგრამ არა რედაქტირებისთვის.

ცხრილის სამართავად, თქვენ უნდა აჩვენოთ ბრძანების პანელი ფორმაზე. აირჩიეთ მენიუს პუნქტი Form/Insert Control/Command Bar.

ბრძანების ზოლის თვისებებში აირჩიეთ ავტომატური შევსების ველი, რათა პანელზე ღილაკები ავტომატურად გამოჩნდეს.

ცხრილი ფორმის შესახებ (თხელი/მართული კლიენტი)

მართულ ფორმაზე, ეს მოქმედებები ცოტა განსხვავებულად გამოიყურება. თუ ფორმაზე ცხრილის ნაწილის განთავსება გჭირდებათ, გააფართოვეთ Object ფილიალი და გადაიტანეთ ერთ-ერთი ცხრილის ნაწილი მარცხნივ. Სულ ეს არის!

თუ თქვენ გჭირდებათ მნიშვნელობების ცხრილის განთავსება, დაამატეთ ახალი ფორმის ატრიბუტი და მის თვისებებში მიუთითეთ ტიპი - მნიშვნელობების ცხრილი.

სვეტების დასამატებლად გამოიყენეთ მარჯვენა ღილაკით მენიუ ამ ფორმის ატრიბუტზე, აირჩიეთ ატრიბუტის სვეტის დამატება.

შემდეგ ასევე გადაიტანეთ ცხრილი მარცხნივ.

იმისათვის, რომ ცხრილს ჰქონდეს ბრძანების ზოლი, ცხრილის თვისებებში აირჩიეთ მნიშვნელობები Usage – Command bar position განყოფილებაში.

ცხრილის ატვირთვა Excel-ში

ფორმაზე განთავსებული ნებისმიერი 1C ცხრილი შეიძლება დაიბეჭდოს ან აიტვირთოს Excel-ში.

ამისათვის დააწკაპუნეთ ცხრილის ცარიელ სივრცეზე მარჯვენა ღილაკით და აირჩიეთ სია.

მართულ (თხელ) კლიენტში, მსგავსი ქმედებები შეიძლება შესრულდეს მენიუს პუნქტის ყველა მოქმედების/საჩვენებელი სიის გამოყენებით.

მივესალმები ინფოსტარტის ყველა მკითხველს. ეს სტატია დაეთმობა მართული აპლიკაციის ფორმაზე მნიშვნელობების თვითნებური ცხრილის შექმნის საკითხს პროგრამულად.

დავალების მახასიათებლები.

ყველას, ვინც დაპროგრამებულია რეგულარულ აპლიკაციაში, ხშირად აწყდება დავალების მიღება ფორმაზე მნიშვნელობების თვითნებური ცხრილის მისაღებად. მნიშვნელობების თვითნებური ცხრილი არის ცხრილი, რომლის სვეტების რაოდენობა და ტიპი წინასწარ არ არის ცნობილი. ანუ, შეიძლება იყოს 3 სვეტი, შესაძლოა 6, ან შესაძლოა 8. ჩვეულებრივ აპლიკაციაში ყველაფერი მარტივია: შეგიძლიათ დამუშავების ფორმაზე მოათავსოთ ელემენტი „ფასეულობების ცხრილი“ და შემდეგ გადაიტანოთ შექმნილი მნიშვნელობების ცხრილი ​ამ ელემენტს პროგრამულად. შემდეგ მარტივი ბრძანებით:

Form Elements.TableField.CreateColumns();

მიიღეთ მზა ღირებულებების ცხრილი ფორმაზე. როგორც ჩანს, ეს შეიძლება უფრო მარტივი იყოს.

ეს ყველაფერი იყო ჩვეულებრივ აპლიკაციაში. მართულ აპლიკაციაში ყველაფერი შეიცვალა. თვითნებური ცხრილის შექმნა არც ისე ადვილია. ახლა თქვენ უნდა დააკონფიგურიროთ მნიშვნელობების ცხრილი ფორმაზე, ან შექმნათ იგი პროგრამულად (აღწერეთ, ეს, ფაქტობრივად, არის თავად მართული აპლიკაციის არსი). ეს არის ის, რის გაკეთებასაც შევეცდებით: პროგრამულად შევქმნათ მნიშვნელობების თვითნებური ცხრილი კონტროლირებად ფორმაზე.

პრობლემის გადაწყვეტა.

პირველი რაც უნდა გავაკეთოთ არის იმის დადგენა, თუ როგორ გამოჩნდება ცხრილი ფორმაზე. მთავარი ის არის, რომ თქვენ არ გჭირდებათ რაიმე ფორმის ელემენტის შექმნა დამუშავებისას. ჩვენ შევქმნით მას პროგრამულად, ისევე როგორც მთელი ცხრილი. ანუ ცხრილი აღწერილი იქნება და შეიქმნება ფორმის გახსნის ან ღილაკის გამოყენებით - იმისდა მიხედვით, თუ ვის სჭირდება.

ფორმაზე ცხრილის შექმნა ხდება მნიშვნელობის ცხრილის, როგორც ატრიბუტის აღწერით:
SelectionTypeArray = ახალი მასივი; SelectionType.Add(Type("Value Table")) მასივი; ChoiceTypeDescription = New TypeDescription(ChoiceTypeArray); დეტალების მასივი = ახალი მასივი; Array of Attributes.Add(New Form Attributes("Schedule Table", Description of SelectionType, "", "TZN")); ახლა ჩვენ უნდა შევქმნათ პროგრამის მნიშვნელობის ცხრილი, რომელიც შეიცავს მონაცემებს. თუ მნიშვნელობების ცხრილი მიიღება მოთხოვნიდან, მაშინ ყველაფერი მეტ-ნაკლებად წესრიგშია. თუ ცხრილი შექმნილია ხელით, მაშინ სვეტების მნიშვნელობა, რომელიც შეიცავს ციფრებს ან თარიღებს, შეიძლება შეიქმნას "ტიპების აღწერილობის" საშუალებით. საქმე იმაშია, რომ მნიშვნელობების ცხრილის სვეტებს უნდა ჰქონდეს გარკვეული ტიპი. თუ, მაგალითად, მოსალოდნელია, რომ მომხმარებელი შეავსებს მონაცემებს ამ სვეტებში, მაშინ თქვენ არ შეგიძლიათ დაამატოთ მნიშვნელობების ცხრილის სვეტი, მას უნდა ჰქონდეს ტიპი. გაითვალისწინეთ - ეს ძალიან მნიშვნელოვანია, რადგან... ამ ტიპებს გადავიტანთ ფორმაში არსებულ ცხრილში.
ჩვენ ვქმნით ცხრილს, რომელიც შეიცავს რამდენიმე სვეტს:
CD = NewDateQualifiers (DateParts.Time); ArrayKD = ახალი მასივი; ArrayCD.Add(Type("თარიღი")); DescriptionTypesTime = New DescriptionTypes(ArrayCD,CD); TZ = New ValueTable;
TK.Columns.Add("With", DescriptionTypesTime);
TK.Columns.Add("Before", DescriptionTypesTime);
TK.Columns.Add("სახელი");
TK.Columns.Add("შენიშვნა"); ჩვენ ვიღებთ TK ცხრილს, რომელიც შეიცავს აუცილებელ მნიშვნელობებს და მზად არის გადასატანად შექმნილ ფორმის ატრიბუტში. თითოეული სვეტისთვის TK სვეტების ციკლისთვის

Array of Attributes.Add(New Form Attributes(Column.Name, Column.ValueType,"ScheduleTable"));
საბოლოო ციკლი;
ChangeDetails (ArrayDetails);
SelectionFieldsTable = Elements.Add("TZN", Type("FormTable"));
SelectionFieldsTable.DataPath = "ScheduleTable";
SelectionFieldTable.Display = TableDisplay.List;

ეს არის მარტივი კომბინაცია და ჩვენი მაგიდა მზად არის.

თითოეული სვეტისთვის TK სვეტების ციკლისთვის

NewElement = Elements.Add(Column.Name, Type("FormField"), SelectionFieldTable);
NewElement.View = FormFieldView.InputField;
NewElement.DataPath = "ScheduleTable." + სვეტი.სახელი;
NewElement.Width = 10;
საბოლოო ციკლი;

პირობითი დიზაინი, თუ გვჭირდება, ხელითაც ვწერთ, ბრძანების მენიუ - ხელით. მაგიდის დამჭერები ასევე იწერება ხელით. მაგალითად, „Selection“ ცხრილისთვის მოვლენის დამმუშავებლის დასამატებლად:

Table of SelectionFields.SetAction("Selection","TZNSelection");

ამ მოვლენის დასამუშავებლად დადგენილია ცალკე პროცედურა პროცედურის სახით:

&OnClient
პროცედურა TKNSelection (TK, Selected Row, Field, StandardProcessing)
//მმუშავებლის ბრძანებები EndProcedure

გაითვალისწინეთ, რომ ცხრილის დამმუშავებლები ამუშავებენ კლიენტს და, შესაბამისად, უნდა ჰქონდეთ შემდგენლის მაჩვენებლის ბრძანება

&OnClient

ბოლო, რისი დამატებაც მინდოდა არის ის, რომ ყველა ამ ნაბიჯის შემდეგ, დარწმუნდით, რომ დაიმახსოვრეთ მზა ცხრილის გადაცემა ფორმის ატრიბუტზე:

ValueВFormAttributes(ToR, "ScheduleTable");

ეს არის ის, რაც ჩვენ გვაქვს შედეგად:


და აქ არის "Selection" მოვლენის მართვა:



შემდგომი სიტყვა.

იმედი მაქვს, სტატია დაეხმარება იმ 1C პროგრამისტებს, რომლებიც იწყებენ ცხრილების შექმნას ფორმაზე პროგრამულად.

შეგიძლიათ ჩამოტვირთოთ დამუშავება, რომელიც პროგრამულად ქმნის მნიშვნელობების ცხრილს და აჩვენებს მას მართვად ფორმაზე კომენტარებით, რაც დაგეხმარებათ შექმნათ თქვენი საკუთარი ცხრილები.

დამწყებთათვის აქ არის პატარა ფაქტი - მნიშვნელობების ცხრილთან მუშაობის მარტივი მაგალითები:

1. შექმენით მნიშვნელობების ცხრილი

ValueTable = New ValueTable;


2. შექმენით სვეტები მნიშვნელობების ცხრილისთვის:

ValueTable.Columns.Add("სახელი");
Value Table.Columns.Add("გვარი");


3. დაამატეთ ახალი რიგები სვეტების სახელების გამოყენებით:


NewLine.Name = "ვასილი";
NewLine.LastName = "Pupkin";


4. როგორ მოვძებნოთ მნიშვნელობა მნიშვნელობის ცხრილში:
აუცილებელია ცხრილის მწკრივის პოვნა, რომელიც შეიცავს სასურველ მნიშვნელობას.

FoundRow = ValueTable.Find(SearchValue);


5. იპოვეთ პირველი შემთხვევა მნიშვნელობების ცხრილის გარკვეულ სვეტებში

FoundRow = ValueTable.Find(SearchValue, "მიმწოდებელი, მყიდველი");


6. თუ თქვენ უნდა იპოვოთ ყველა მოვლენა მნიშვნელობების ცხრილში:
ჩვენ ვიყენებთ საძიებო სტრუქტურას.

SearchStructure = Structure("Employee", SearchValue);
FoundRows-ის მასივი = ValueTable.FindRows(SearchStructure);


შევქმნათ საძიებო სტრუქტურა, რომლის თითოეული ელემენტი შეიცავს სვეტის სახელს გასაღების სახით და ამ სვეტში სასურველ მნიშვნელობას მნიშვნელობად. Search Structure-ს პარამეტრად გადავცემთ FindLines() მეთოდს. შედეგად, ჩვენ ვიღებთ ცხრილის რიგებს.
თუ საძიებო სტრუქტურას დაამატებთ სასურველი მნიშვნელობის ძიებას, მაგალითად, ასევე Responsible სვეტში, მაშინ FindLines() მეთოდის გამოყენების შედეგად მივიღებთ ყველა მწკრივს, სადაც თანამშრომელიც და პასუხისმგებელიც ტოლია. მოძიებული მნიშვნელობა.

7. როგორ გავიმეოროთ მნიშვნელობების ცხრილის მეშვეობით შემთხვევითი თანმიმდევრობით

თითოეული მიმდინარე მწკრივისთვის მნიშვნელობების ცხრილის მარყუჟიდან
ანგარიში (CurrentRow.Name);
საბოლოო ციკლი;

იგივეა ინდექსების გამოყენებით:

SeniorIndex = ValueTable.Quantity() - 1;
ანგარიშისთვის = 0 SeniorIndex ციკლისთვის
ანგარიში (ValueTable[Account].Name);
საბოლოო ციკლი;


8. არსებული მნიშვნელობების ცხრილის მწკრივის წაშლა

ValueTable.Delete(წელი წაშლილი);

ინდექსით

ValueTable.Delete(0);


9. მნიშვნელობის ცხრილის არსებული სვეტის წაშლა

ValueTable.Columns.Delete(ColumnToDelete);


ინდექსით

ValueTable.Columns.Delete(0);

გასათვალისწინებელია, რომ მნიშვნელობების ცხრილის „შუადან“ მწკრივის (ან სვეტის) წაშლა გამოიწვევს წაშლის „შემდეგ“ მდებარე მწკრივების ერთი ინდექსის შემცირებას.

10. როგორ შეავსოთ მნიშვნელობების ცხრილი, თუ სვეტების სახელები შეიცავს ცვლადებს?

NewRow = ValueTable.Add();
NewRow[ColumnName] = მნიშვნელობა;


11. როგორ შევავსოთ მნიშვნელობების ცხრილის მთელი სვეტი სასურველი მნიშვნელობით?
ფისკალური აღრიცხვის დროშის სვეტი ფასეულობების ცხრილის მნიშვნელობების ცხრილში უნდა იყოს შევსებული მნიშვნელობით False.

ღირებულებების ცხრილის შევსება (მცდარი, "ფისკალური აღრიცხვის დროშა");


ჩვენ ვიყენებთ FillValues() მეთოდს მნიშვნელობების ცხრილისთვის. პირველი პარამეტრი არის შევსებული მნიშვნელობა. მეორე პარამეტრი არის შევსებული სვეტის სახელი.

12. როგორ შევავსოთ მნიშვნელობების ცხრილი „მიმღების ცხრილი“ მნიშვნელობების ცხრილიდან „SourceTable“ მონაცემებით?

თუ მიმღების ცხრილი ჯერ არ არსებობს ოპერაციის დროს ან მისი წინა სვეტების შენახვა არ არის საჭირო, შეგიძლიათ შექმნათ იგი ორიგინალის სრული ასლის სახით.

მიმღების ცხრილი = Source table.Copy();


ვარიანტი მეორე: ReceiverTable ცხრილი არსებობს და სამწუხაროა, რომ დავკარგოთ მისი სვეტები და შეზღუდვები სვეტების მონაცემთა ტიპებზე. მაგრამ თქვენ უნდა შეავსოთ მონაცემები იმ სვეტებისთვის, რომელთა სახელები ემთხვევა წყაროს ცხრილის სახელებს.

მონაცემთა ნაწილობრივი გადაცემა სვეტებისთვის შესაბამისი სახელებით:

SourceTable-ის თითოეული რიგისთვის SourceTable ციკლიდან
FillPropertyValues ​​(NewRow, SourceTableRow);
ციკლის დასასრული


წყაროს ცხრილის თითოეული სტრიქონისთვის ახალი მწკრივი ემატება მიმღებ ცხრილს და მნიშვნელობები ივსება ახალი ცხრილის იმ სვეტებში, რომელთა სახელები ემთხვევა წყაროს ცხრილის სვეტების სახელებს.

თუ ცხრილებს არ აქვთ იგივე სახელების სვეტები, დანიშნულების ცხრილი შეიცავს იმდენ მწკრივს ნულოვანი მნიშვნელობებით, რამდენიც იყო წყაროს ცხრილში.
თუ ამავე სახელწოდების ზოგიერთი სვეტისთვის მონაცემთა მნიშვნელობის ტიპი წყაროს ცხრილიდან არ მოხვდება დანიშნულების ცხრილის დაშვებული სვეტების ტიპების მასივში, ასეთ ველებში მივიღებთ ცარიელ მნიშვნელობებს.
განვიხილოთ მესამე შემთხვევა. ამავე სახელწოდების სვეტების შემთხვევაში, დანიშნულების ცხრილის სვეტი სრულ შესაბამისობაში უნდა იყოს წყაროს ცხრილის სვეტთან.

მონაცემთა სრული კოპირება სვეტებისთვის შესაბამისი სახელებით

იგივე სვეტები = ახალი მასივი();

თითოეული სვეტისთვის SourceTable.Columns Cycle
MatchingColumn = TableReceiver.Columns.Find(Column.Name);

თუ შესატყვისი სვეტი<>განუსაზღვრელი მაშინ

// მიიღეთ სვეტის თვისებები.
სახელი = სვეტი.სახელი;
ValueType = Column.ValueType;
Header = Column.Header;
Width = Column.Width;

// სვეტების ჩანაცვლება დანიშნულების ცხრილში.
Index = TableReceiver.Columns.Index(MatchingColumn);

TableReceiver.Columns.Delete(Index);
ReceiverTable.Columns.Insert(Index, Name, ValueType, Header, Width);

// დაამატეთ შესაბამისი სვეტების შემდეგი სახელი მასივში.
Same Columns.Add(Column.Name);

დაასრულე თუ;

საბოლოო ციკლი;

// ციკლი წყაროს ცხრილის რიგებში.
SourceTable-ის თითოეული რიგისთვის SourceTable ციკლიდან

// დაამატეთ ახალი მწკრივი დანიშნულების ცხრილში.
NewRow = TableReceiver.Add();

// შეავსეთ მნიშვნელობები შესაბამის უჯრებში.
თითოეული სახელის სვეტისთვის ამავე სახელწოდების ციკლის სვეტებიდან
NewRow[ColumnName] = SourceTableRow[ColumnName];

საბოლოო ციკლი;

საბოლოო ციკლი;


დანიშნულების ცხრილის სვეტი უნდა შევცვალოთ ახლით, რომლის თვისებები სრულად ემთხვევა საწყისი ცხრილის სვეტს.
ამიტომ, თუ იმავე სახელწოდების სვეტი გვხვდება მიმღების ცხრილში, ჩვენ ვაგროვებთ ახალი სვეტის ყველა თვისებას ცვლადებში. შემდეგი, წაშალეთ ძველი და შექმენით ახალი სვეტი. შემდეგ ჩვენ ვატარებთ წყაროს ცხრილის რიგებს.
ციკლში, ჩვენ ვამატებთ ახალ მწკრივს მიმღებ ცხრილს და ვხსნით ციკლს სვეტების სახელებზე შესაბამისი სვეტების მასივში.
ამ ჩადგმული მარყუჟის შიგნით, ჩვენ ვავსებთ დანიშნულების ცხრილის უჯრედებს წყაროს ცხრილის უჯრედის მონაცემებით.

13. როგორ დავამატოთ სვეტები "ValueTable" მნიშვნელობების ცხრილში ტიპის შეზღუდვებით?

სვეტის დამატებისას შეგიძლიათ უბრალოდ მიუთითოთ მისი სახელი და დატოვოთ Add() მეთოდის მეორე პარამეტრი ხელშეუხებლად. ამ შემთხვევაში, სვეტის მონაცემთა ტიპი თვითნებურია.

სვეტის დამატება მონაცემთა ტიპის მითითების გარეშე

// დაამატეთ სვეტი ტიპის შეზღუდვის გარეშე.
ValueTable.Columns.Add("ობიექტი");


შეგიძლიათ შეავსოთ მეორე პარამეტრის მნიშვნელობა. აქ თქვენ უნდა გაიაროთ სვეტისთვის დაშვებული ტიპის აღწერა. თავად აღწერილობის მიღება შესაძლებელია კონსტრუქტორის გამოყენებით, სტრიქონის ტიპის (თუ არსებობს მრავალი ტიპი, გამოყოფილია მძიმეებით) ან მოქმედი ტიპების მასივის პარამეტრად გადაცემით.

სვეტის დამატება, რომელიც მიუთითებს მონაცემთა ტიპზე

// შეზღუდვები სვეტების მონაცემთა ტიპებზე:
// მხოლოდ "კონტრაქტორების" დირექტორიას ელემენტები.
ღირებულებების ცხრილი.Columns.Add("ანგარიში", ტიპების ახალი აღწერა("DirectoryLink.Accounts"));


თუ სვეტის მონაცემების შევსებისთვის დაშვებულ ტიპებს შორის არის სტრიქონი, შეგიძლიათ შეზღუდოთ მისი ბიტის სიღრმე (სიგრძე), მიუთითოთ ცვლადი ან ფიქსირებული სიგრძის გამოყენება. ეს ყველაფერი მიიღწევა ობიექტის შექმნით String Qualifiers კონსტრუქტორის გამოყენებით. შემდეგი, ეს ობიექტი გამოყენებული იქნება TypeDescription კონსტრუქტორის ერთ-ერთ პარამეტრად.

კვალიფიკატორების გამოყენება მნიშვნელობების ცხრილის სვეტის მონაცემთა ტიპის დასადგენად

// მოამზადეთ და დააწესეთ შეზღუდვები String ტიპის მონაცემებისთვის.
სიმებიანი კვალიფიკატორები = ახალი სიმებიანი კვალიფიკატორები (20, AllowedLength.Variable);
ValidTypes = NewTypeDescription("String", StringQualifiers);
ValueTable.Columns.Add("NoteStringShort", ValidTypes);


მსგავსი ქმედებები შეიძლება შესრულდეს რიცხვისა და თარიღის კვალიფიკატორებთან მიმართებაში.
გთხოვთ გაითვალისწინოთ: ტიპის აღწერილობები შეიძლება ააშენოს კონსტრუქტორმა ან „ნულიდან“ ან არსებული ტიპის აღწერა შეიძლება გამოყენებულ იქნას საფუძვლად.

არსებული ტიპის დეკლარაციების გამოყენება მნიშვნელობების ცხრილის სვეტის მონაცემთა ტიპის დასაზუსტებლად

// ადრე გამოყენებული ტიპის აღწერის გაფართოება.
QualifiersNumbers = New QualifiersNumbers(10, 2, ValidSign.Non-negative);
DateQualifiers = New DateQualifiers(DateParts.Date);
Extended ValidTypes = New TypeDescription(ValidTypes, "Number, Date", Number Qualifiers, Date Qualifiers);

ValueTable.Columns.Add("Note", ExtendedAcceptableTypes);

მნიშვნელობების ცხრილის საძიებლად ორი სპეციალური მეთოდი არსებობს:

1. იპოვეთ

TVHorizon = Directories.Nomenclature.FindByName("TVHorizon");
FoundString = TZNomenclature.Find(TVHorizon);
//ჩვენ ასევე შეგვიძლია განვსაზღვროთ რომელ სვეტებში მოვიძიოთ ძიების დასაჩქარებლად
FoundString = TZNomenclature.Find(TVHorizon, "Nomenclature");

ეს მეთოდი აბრუნებს პირველ რიგს, რომელიც ნაპოვნია სასურველი მნიშვნელობით, ან Undefined-ს, თუ ის ვერ პოულობს მას. ამიტომ მოსახერხებელია მისი გამოყენება უნიკალური მნიშვნელობების მოსაძებნად, რადგან წინააღმდეგ შემთხვევაში, როდესაც იპოვით მნიშვნელობას, მოგიწევთ მისი ამოღება ცხრილიდან, რათა იპოვოთ შემდეგი.

ამ უსიამოვნების თავიდან ასაცილებლად, არსებობს შემდეგი მეთოდი, რომელიც საშუალებას გაძლევთ იპოვოთ შესატყვისი სტრიქონების მასივი:

2. FindStrings


Selection Structure.Insert("Nomenclature", TVHorizon); // ჯერ მიუთითეთ სვეტი სად უნდა ვეძებოთ და შემდეგ რა უნდა ვეძებოთ.

ეს მეთოდი ყოველთვის აბრუნებს მასივს, მაგრამ ის შეიძლება ცარიელი იყოს, თუ ვერაფერი მოიძებნა. და ეს მეთოდი, ისევე როგორც წინა, აბრუნებს მნიშვნელობების ცხრილის რიგებს თავად და არა მნიშვნელობებს ცალკე მასივში. მაშასადამე, მასივის სტრიქონში მნიშვნელობების შეცვლით ან, როგორც წინა მეთოდით, ნაპოვნი სტრიქონისთვის, თქვენ შეცვლით მნიშვნელობას მნიშვნელობების დამუშავებულ ცხრილში.

ამ მეთოდის კიდევ ერთი კარგი რამ არის ის, რომ მას შეუძლია მოძებნოს მნიშვნელობების ცხრილის რამდენიმე სვეტი ერთდროულად:


SelectionStructure = ახალი სტრუქტურა;
Selection Structure.Insert("Nomenclature", TVHorizon);
Selection Structure.Insert("Quantity", 10);
მწკრივების FoundArray = TZNomenclature.FindLines(SelectionStructure);

ერთადერთი უარყოფითი, როგორც ხედავთ, არის ის, რომ თქვენ არ შეგიძლიათ გამოიყენოთ სხვა სახის შედარება, გარდა „ტოლებისა“.