Արժեքների դինամիկ աղյուսակ 1s. Ինչ մեթոդներ կան և ինչպես որոնել մի քանի արժեքներ միաժամանակ
Փողն ու ապրանքը հաշվի առնելու համար բիզնեսում լայնորեն կիրառվում են տարբեր աղյուսակներ։ Գրեթե յուրաքանչյուր փաստաթուղթ աղյուսակ է:
Մեկ աղյուսակում ներկայացված են պահեստից առաքվող ապրանքները: Մեկ այլ աղյուսակում `այս ապրանքների համար վճարելու պարտավորությունը:
Հետևաբար, 1C-ում աղյուսակների հետ աշխատանքը նշանավոր տեղ է զբաղեցնում:
1C-ի աղյուսակները կոչվում են նաև «սեղանի մասեր»: Դրանք ունեն տեղեկատու գրքեր, փաստաթղթեր և այլք:
Հարցումը իր կատարման արդյունքում վերադարձնում է աղյուսակ, որը կարելի է մուտք գործել երկու տարբեր եղանակներով։
Առաջինը` ավելի արագ, ընտրությունը, դրանից տողեր ստանալը հնարավոր է միայն կարգով: Երկրորդը հարցման արդյունքի բեռնաթափումն է արժեքների աղյուսակում և այնուհետև պատահական մուտք դեպի դրան:
//Ընտրանք 1 - հաջորդական մուտք դեպի հարցման արդյունքներ
// սեղան ստանալ
Ընտրություն = Query.Execute().Select();
// շրջանցել հարցման արդյունքի բոլոր տողերը հերթականությամբ
Մինչ Selection.Next() Loop
Հաշվետվություն (Ընտրություն. Անուն);
End Cycle;
//Ընտրանք 2 - վերբեռնում արժեքների աղյուսակում
Հարցում = Նոր հարցում ("SELECT Name FROM Directory.Nomenclature");
// սեղան ստանալ
Աղյուսակ = Query.Execute().Upload():
// ապա մենք կարող ենք նաև շրջանցել բոլոր տողերը
Սեղանի հանգույցից յուրաքանչյուր տողի համար
Հաշվետվություն (String.Name);
End Cycle;
//կամ կամայականորեն մուտք գործել տողեր
String = Table.Find("Shovel", "Name");
Կարևոր առանձնահատկությունն այն է, որ աղյուսակում, որը ստացվում է հարցման արդյունքում, բոլոր սյունակները խիստ մուտքագրված կլինեն: Սա նշանակում է, որ Անուն դաշտը Անվանակարգի որոնումից պահանջելով, դուք կստանաք String տեսակի սյունակ, որի թույլատրելի երկարությունը ոչ ավելի, քան N նիշ:
Աղյուսակ ձևի վրա (հաստ հաճախորդ)
Օգտագործողը աշխատում է սեղանի հետ, երբ այն տեղադրվում է ձևի վրա:
Մենք քննարկել ենք ձևերի հետ աշխատելու հիմնական սկզբունքները դասին և դասընթացին
Այսպիսով, եկեք սեղանը դնենք ձևաթղթի վրա: Դա անելու համար կարող եք աղյուսակը քաշել կառավարման վահանակից: Նմանապես, ընտրացանկից կարող եք ընտրել Form/Insert կառավարումը:
Տվյալները կարող են պահպանվել կոնֆիգուրացիայի մեջ, այնուհետև դուք պետք է ընտրեք կազմաձևման օբյեկտի գոյություն ունեցող (նախկինում ավելացված) աղյուսակային մասը, որի ձևը խմբագրում եք:
Սեղմեք «...» կոճակը Տվյալների հատկության մեջ: Ցուցակը տեսնելու համար աղյուսակային մասեր, անհրաժեշտ է բացել Object մասնաճյուղը։
Աղյուսակային մաս ընտրելիս 1C-ն ինքն է սյունակներ կավելացնի ձևի աղյուսակին: Նման աղյուսակում օգտագործողի կողմից մուտքագրված տողերը ավտոմատ կերպով կպահվեն գրացուցակի/փաստաթղթի հետ միասին:
Նույն Data հատկության մեջ կարող եք մուտքագրել կամայական անուն և ընտրել ValueTable տեսակը:
Սա նշանակում է, որ ընտրվել է արժեքների կամայական աղյուսակ: Այն ինքնաբերաբար սյունակներ չի ավելացնի, ինքնաբերաբար չի պահպանվի, բայց դուք կարող եք անել այն, ինչ ուզում եք դրա հետ:
Աղյուսակի վրա աջ սեղմելով կարող եք սյունակ ավելացնել: Սյունակի հատկություններում կարող եք նշել դրա անունը (1C կոդում տեղեկանքի համար), ձևի սյունակի վերնագիրը, աղյուսակային մասի հատկանիշի հետ կապը (վերջինս, եթե ոչ կամայական աղյուսակ է ընտրված, բայց աղյուսակային մաս):
Ձևի աղյուսակի հատկություններում կարող եք նշել, թե արդյոք օգտվողը կարող է տողեր ավելացնել/ջնջել: Ավելի առաջադեմ ձևը ViewOnly վանդակն է: Այս հատկությունները օգտակար են տեղեկատվության ցուցադրման համար նախատեսված աղյուսակների կազմակերպման համար, բայց ոչ խմբագրման համար:
Աղյուսակը կառավարելու համար անհրաժեշտ է ձևաթղթի վրա ցուցադրել հրամանի վահանակը: Ընտրեք ընտրացանկի տարրը Ձև / Տեղադրեք Կառավարման / Հրամանի վահանակ:
Հրամանների տողի հատկություններում ընտրեք «Ավտոլրացում» վանդակը, որպեսզի գործիքագոտու կոճակներն ինքնաբերաբար հայտնվեն:
Աղյուսակ ձևի վրա (բարակ/կառավարվող հաճախորդ)
Վրա կառավարվող ձև նշված գործողություններմի փոքր այլ տեսք նայեք: Եթե Ձեզ անհրաժեշտ է ձևաթղթի վրա տեղադրել աղյուսակային բաժին, ընդլայնեք Object ճյուղը և քաշեք աղյուսակային բաժիններից մեկը ձախ: Եվ վերջ։
Եթե Ձեզ անհրաժեշտ է արժեքների աղյուսակ տեղադրել, ավելացրեք նոր հենարաններձևը և դրա հատկություններում նշեք տեսակը՝ արժեքների աղյուսակ:
Սյունակներ ավելացնելու համար օգտագործեք մկնիկի աջ կոճակի ընտրացանկը այս ձևի հատկանիշի վրա, կետ Ավելացնել հատկանիշ սյունակ:
Այնուհետև քաշեք աղյուսակը դեպի ձախ:
Որպեսզի աղյուսակն ունենա հրամանի տող, աղյուսակի հատկություններում ընտրեք արժեքները Usage - Command bar position բաժնում:
Աղյուսակի արտահանում Excel
Ձևաթղթում տեղադրված ցանկացած 1C աղյուսակ կարող է տպվել կամ վերբեռնվել Excel-ում:
Դա անելու համար աջ սեղմեք աղյուսակի դատարկ տարածության վրա և ընտրեք Ցուցադրել ցուցակը:
Կառավարվող (բարակ) հաճախորդում նմանատիպ գործողություններկարող է իրականացվել՝ օգտագործելով ընտրացանկի տարրը Բոլոր գործողությունները/Ցուցադրման ցուցակը:
Ահա մի փոքր փաստ սկսելու համար. պարզ օրինակներաշխատել արժեքների աղյուսակի հետ.
1. Ստեղծեք արժեքների աղյուսակ
ValueTable = New ValueTable;
2. Ստեղծեք արժեքների աղյուսակի սյունակներ.
ValueTable.Columns.Add(«Անուն»);
ValueTable.Columns.Add («Ազգանուն»);
3. Ավելացրեք նոր տողեր՝ օգտագործելով սյունակների անունները.
NewString.Name = «Վասիլի»;
NewRow.LastName = "Pupkin";
4. Ինչպես որոնել արժեք արժեքների աղյուսակում.
Անհրաժեշտ է գտնել ցանկալի արժեքը պարունակող աղյուսակի տող:
FoundString = ValueTable.Find(LookupValue);
5. Գտեք արժեքների աղյուսակի որոշակի սյունակներում առաջին դեպքը
FoundString = ValueTable.Find(LookupValue, «Supplier, Buyer»);
6. Եթե Ձեզ անհրաժեշտ է գտնել բոլոր երևույթները արժեքների աղյուսակում.
Մենք օգտագործում ենք որոնման կառուցվածքը:
SearchStructure = Կառուցվածք ("Employee", LookupValue);
ArrayFoundStrings = ValueTable.FindStrings(SearchStructure);
Եկեք ստեղծենք որոնման կառուցվածք, որի յուրաքանչյուր տարրը որպես բանալի կպարունակի սյունակի անունը, իսկ այս սյունակում որոնված արժեքը որպես արժեք։ Մենք Search Structure-ը որպես պարամետր փոխանցում ենք FindStrings() մեթոդին։ Արդյունքում մենք ստանում ենք աղյուսակի տողերը:
Եթե որոնման կառուցվածքին ավելացնենք ցանկալի արժեքի որոնումը, օրինակ, նաև Responsible սյունակում, ապա FindRows() մեթոդի կիրառման արդյունքում կստանանք բոլոր տողերը, որտեղ և Employee-ը և Responsible-ը հավասար են ցանկալիին: արժեքը։
7. Ինչպես պտտել արժեքների աղյուսակը պատահական կարգով
Յուրաքանչյուր CurrentRow-ի համար ValueTable Loop-ից
Հաշվետվություն (CurrentLine.Name);
End Cycle;
Նույնը արեք՝ օգտագործելով ինդեքսները.
SeniorIndex = ValueTable.Count() - 1;
MF = 0-ի համար SeniorIndex ցիկլով
Հաշվետվություն(ValueTable[Count].Name);
End Cycle;
8. Ջնջել գոյություն ունեցող արժեքների աղյուսակի տողը
ValueTable.Delete(RemoveRow);
ըստ ցուցանիշի
ValueTable.Delete(0);
9. Արժեքների աղյուսակի գոյություն ունեցող սյունակի ջնջում
ValueTable.Columns.Delete(RemoveColumn);
ըստ ցուցանիշի
ValueTable.Columns.Delete(0);
Պետք է հաշվի առնել, որ արժեքների աղյուսակի «մեջտեղից» տող (կամ սյունակ) ջնջելը կհանգեցնի ջնջված «հետո» տողերի ինդեքսների նվազմանը:
10. Ինչպե՞ս լրացնել արժեքների աղյուսակը, եթե սյունակների անունները պարունակվում են փոփոխականներում:
NewRow = ValueTable.Add();
NewRow[ColumnName] = Արժեք;
11. Ինչպե՞ս լրացնել արժեքների աղյուսակի ամբողջ սյունակը ցանկալի արժեքով:
Արժեքների աղյուսակի արժեքային աղյուսակի FiscalAccounting Flag սյունակը պետք է լրացվի False արժեքով:
ValueTable.FillValue (False, «Fiscal Accounting Flag»);
Արժեքների աղյուսակի համար օգտագործում ենք FillValues() մեթոդը։ Առաջին պարամետրը լրացման արժեքն է: Երկրորդ պարամետրը լրացված սյունակի անունն է:
12. Ինչպե՞ս լրացնել «TableRecipient» արժեքների աղյուսակը «SourceTable» արժեքների աղյուսակի տվյալներով:
Եթե ստացողի աղյուսակը գործողության պահին դեռ գոյություն չունի, կամ ձեզ հարկավոր չէ պահպանել դրա նախորդ սյունակները, կարող եք այն ստեղծել որպես ամբողջական պատճենըսկզբնական
TableReceiver = TableOriginal.Copy();
Տարբերակ երկու. աղյուսակ TableReceiver-ը գոյություն ունի, և ցավալի է կորցնել դրա սյունակները և սյունակների տվյալների տեսակների սահմանափակումները: Բայց դուք պետք է լրացնեք այն սյունակների տվյալները, որոնց անունները համընկնում են սկզբնաղբյուր աղյուսակի անունների հետ:
Տվյալների մասնակի փոխանցում համապատասխան անուններով սյունակների համար.
SourceTable-ի յուրաքանչյուր տողի համար SourceTable Loop-ից
FillPropertyValues (NewString, SourceTableString);
End Cycle
Աղբյուրի աղյուսակի յուրաքանչյուր տողի համար նոր տող է ավելացվում նպատակակետ աղյուսակում և այդ սյունակների արժեքները լրացվում են նոր սեղան, որոնց անունները համընկնում են սկզբնաղբյուր աղյուսակի սյունակների անունների հետ
Եթե աղյուսակները չունեն նույն անունով սյունակներ, ապա նպատակակետ աղյուսակը կավարտվի նույնքան տողերով, որոնք զրոյական արժեքներ ունեին, որքան տողեր կային սկզբնաղբյուր աղյուսակում:
Եթե նույն անունով որոշ սյունակների համար սկզբնաղբյուր աղյուսակից տվյալների արժեքի տեսակը չի մտնում նպատակակետ աղյուսակի սյունակի թույլատրելի տեսակների զանգվածի մեջ, ապա այդպիսի դաշտերում մենք դատարկ արժեքներ կստանանք:
Դիտարկենք երրորդ դեպքը. Նույն անունով սյունակների դեպքում նպատակակետ աղյուսակի սյունակը պետք է լիովին համապատասխանի սկզբնաղբյուր աղյուսակի սյունակին:
Տվյալների ամբողջական պատճենը համապատասխան անուններով սյունակների համար
SimilarColumns = New Array();
SourceTable.Columns Loop-ից յուրաքանչյուր սյունակի համար
MatchingColumn = TableReceiver.Columns.Find(Column.Name);
Եթե MatchedColumn<>Չսահմանված Հետո
// Ստացեք սյունակի հատկությունները:
Անուն = Column.Name;
ValueType = Column.ValueType;
Title = Column.Title;
Width = Column.Width;
// Փոխարինեք սյունակները նպատակակետ աղյուսակում:
Index = TableReceiver.Columns.Index(CoincidentColumn);
TableReceiver.Columns.Delete(Index);
TableReceiver.Columns.Insert(Index, Name, ValueType, Title, Width);
// Զանգվածին ավելացրեք համապատասխան սյունակների հաջորդ անունը:
Same-nameColumns.Add(Column.Name);
EndIf;
End Cycle;
// Անցեք սկզբնաղբյուր աղյուսակի տողերի միջով:
SourceTable-ի յուրաքանչյուր տողի համար SourceTable Loop-ից
// Նոր տող ավելացրեք նպատակակետ աղյուսակում:
NewString = TableReceiver.Add();
// Լրացրեք արժեքները համապատասխան բջիջներում:
Նույն Անվան Սյունակների յուրաքանչյուր Անվան Սյունակների Համար
NewString[ColumnName] = SourceTableString[ColumnName];
End Cycle;
End Cycle;
Մենք պետք է փոխարինենք նպատակակետ աղյուսակի սյունակը նորով, որի հատկությունները լիովին կհամապատասխանեն սկզբնաղբյուր աղյուսակի սյունակին:
Հետևաբար, եթե ստացողի աղյուսակում գտնվի նույնանուն սյունակ, մենք փոփոխականներում հավաքում ենք նոր սյունակի բոլոր հատկությունները: Հաջորդը, ջնջեք հինը և ստեղծեք նոր սյունակ: Այնուհետև մենք շրջանցում ենք աղբյուրի աղյուսակի տողերը:
Հանգույցում մենք նոր տող ենք ավելացնում ստացողի աղյուսակում և բացում ենք հանգույց համապատասխան սյունակների զանգվածի սյունակների անունների միջոցով:
Այս ներդիր օղակի ներսում մենք լրացնում ենք ստացողի աղյուսակի բջիջները սկզբնաղբյուր աղյուսակի բջիջի տվյալներով։
13. Ինչպե՞ս սյունակներ ավելացնել «Արժեքների աղյուսակ» արժեքների աղյուսակում՝ տիպային սահմանափակումներով:
Սյունակ ավելացնելիս կարող եք պարզապես նշել դրա անունը և չդիպչել Add() մեթոդի երկրորդ պարամետրին։ Այս դեպքում սյունակի տվյալների տեսակը կամայական է:
Սյունակի ավելացում՝ առանց տվյալների տեսակը նշելու
// Ավելացնել սյունակ առանց տեսակի սահմանափակումների:
ValueTable.Columns.Add(«Օբյեկտ»);
Դուք կարող եք լրացնել երկրորդ պարամետրի արժեքը: Այնտեղ անհրաժեշտ է փոխանցել սյունակի համար թույլատրված տեսակի նկարագրությունը։ Նկարագրությունն ինքնին կարելի է ստանալ կոնստրուկտորի միջոցով՝ որպես պարամետր փոխանցելով տիպի տողի անունը (եթե կան շատ տեսակներ, ապա բաժանվում են ստորակետերով) կամ վավեր տիպերի զանգված։
Տվյալների տեսակը նշելով սյունակի ավելացում
// Սահմանափակումներ սյունակի տվյալների տեսակների վրա.
// Միայն «Կապալառուներ» գրացուցակի տարրեր:
ValueTable.Columns.Add("Account", New TypeDescription("ReferenceReference.Accounts"));
Եթե սյունակի տվյալները լրացնելու համար թույլատրված տեսակների մեջ կա տող, կարող եք սահմանափակել դրա բիթերի խորությունը (երկարությունը), նշել փոփոխական կամ ֆիքսված երկարության օգտագործումը: Այս ամենը տրամադրվում է StringQualifiers կոնստրուկտորի միջոցով օբյեկտ ստեղծելով։ Ավելին, այս օբյեկտը կօգտագործվի որպես TypeDescription կոնստրուկտորի պարամետրերից մեկը:
Օգտագործելով որակիչներ՝ արժեքների աղյուսակի սյունակի տվյալների տեսակը նշելու համար
// Պատրաստել և սահմանել սահմանափակումներ String տեսակի տվյալների համար:
String Qualifiers = Նոր տողերի որակավորում (20, ValidLength.Variable);
AllowedTypes = NewTypeDescription ("String",StringQualifiers);
ValueTable.Columns.Add("NoteStringShort", ValidTypes);
Դուք կարող եք անել նույնը թվերի և ամսաթվերի որակավորման համար:
Խնդրում ենք նկատի ունենալ. տիպի նկարագրությունը կարող է կառուցվել կոնստրուկտորի կողմից և՛ «զրոյից», և՛ որպես հիմք կարող եք օգտագործել գոյություն ունեցող տիպի նկարագրությունը:
Օգտագործելով գոյություն ունեցող տիպի հայտարարագրերը արժեքների աղյուսակի սյունակի տվյալների տեսակը նշելու համար
// Նախկինում օգտագործված տեսակների նկարագրության ընդլայնում:
Number Qualifiers = New Number Qualifiers(10, 2, ValidSign.Non-negative);
DateQualifiers = New DateQualifiers (DateParts.Date);
ExtendedValidTypes = NewTypeDescription(ValidTypes, "Number, Date",NumberQualifiers,DateQualifiers);
ValueTable.Columns.Add("Note", ExtendedAllowedTypes);
Որոնեք 1C արժեքների աղյուսակում
Ինչ մեթոդներ կան և ինչպես որոնել մի քանի արժեքներ միաժամանակ:
Արժեքների աղյուսակը որոնելու երկու հատուկ մեթոդ կա.
1. Գտեք
TVHorizon = Directories.Nomenclature.FindBy Name("Horizon TV");FoundString = TZNomenclature.Find(TVHorizon);
//կարող ենք նաև նշել, թե որ սյունակներում փնտրել որոնումն արագացնելու համար
FoundString = TKNomenclature.Find(TVHorizon, «Nomenclature»);
Այս մեթոդը վերադարձնում է առաջին հայտնաբերված տողը ձեր փնտրած արժեքով կամ Undefined, եթե այն չի գտնում: Ուստի հարմար է օգտագործել այն եզակի արժեքներ որոնելու համար, քանի որ հակառակ դեպքում արժեք գտնելիս պետք է այն ջնջեք աղյուսակից՝ հաջորդը գտնելու համար։
Չտառապելու համար գոյություն ունի հետևյալ մեթոդը, որը թույլ է տալիս գտնել համապատասխան տողերի զանգված.
2. Գտնել լարերը
Ընտրություն Structure.Insert("Nomenclature", TVHorizon); // նախ նշում ենք սյունակը, որտեղ փնտրել, իսկ հետո ինչ փնտրել։
Այս մեթոդը միշտ վերադարձնում է զանգված, բայց այն կարող է դատարկ լինել, եթե ոչինչ չգտնվի: Եվ այս մեթոդը, ինչպես նախորդը, վերադարձնում է արժեքների աղյուսակի տողերն իրենք, և ոչ թե իրենց արժեքները առանձին զանգվածում: Հետևաբար, փոխելով արժեքները զանգվածի տողում կամ, ինչպես նախորդ մեթոդով, գտնված տողի համար, դուք կփոխեք արժեքը մշակված արժեքների աղյուսակում:
Ուրիշ ինչ լավ է այս մեթոդի համար այն է, որ այն կարող է միանգամից որոնել արժեքների աղյուսակի մի քանի սյունակներ.
SelectionStructure = Նոր կառուցվածք;
Ընտրություն Structure.Insert("Nomenclature", TVHorizon);
Ընտրություն Structure.Insert("Quantity", 10);
FoundStringArray = TKNomenclature.FindStrings(SelectionStructure);
Միակ բացասականը, ինչպես տեսնում եք, դուք չեք կարող օգտագործել համեմատության այլ տեսակներ, բացի «հավասարից».