Լարերի հետ աշխատելու նոր գործառույթներ. Տողերի հետ աշխատելու նոր գործառույթները 1c գտնում են դիրքը տողի մեջ

ՄԱՍ 1. ՄԵԹՈԴՆԵՐ (26).

1.1. Հիմնական մեթոդներ (10). Անկախ, կառուցված իրենց պարզ ալգորիթմների վրա:

Page_Add() (աջից ձախ լրացում նշված նիշերով):

Page_Inverse () (inversion - նիշերը աջից ձախ):

Page_Codes() (նիշերի կոդերը »-ի միջոցով և կոդերով զանգված)

Page_Characters() (կոդերի շարան, որն առանձնացված է «»-ով կամ կոդերով զանգվածից)

Page_ReplaceSymbols() (որոշ նիշերի փոխարինում մյուսներով):

String_FromArray() (տող բեկորների զանգվածից, որն առանձնացված է բաժանարարով)

Page_FindIn() (որոնել ենթատող (ներառյալ աջ կողմում) նշված առաջացման համարով):

Page_FindGr() (Որոնել նշված նիշերի հավաքածուում ներառված նիշերի խումբ)

Page_FindNumber() (Որոնել թվ, այդ թվում՝ աջ կողմում՝ նշված հայտնության համարով)

Page_Interpret() (զանգվածի մեջ՝ ըստ սահմանված շարահյուսության)

1.2. Ածանցյալ մեթոդներ (12). Փաստորեն, սա չորս ընդհանրացված ալգորիթմի մեթոդների օգտագործումն է (տես Մաս 2)

Page_Number() (տողի սկզբից և վերջից, մի «վախենաք» ոչ թվային նիշերից:

Page_Find() (որոնել ենթատող (ներառյալ մեծատառերի անզգույշ և դեպի աջ) նշված առաջացման համարով):

Page_Replace() (որոնում (ներառյալ մեծատառերի անզգույշ և աջակողմյան), և փոխարինիր սահմանազատող ենթատողերը):

String_Piece() (մի կտոր սահմանազատողի նշված երևույթների միջև (ձախ կամ աջ)):

Page_ReplacePiece() (փոխարինում է աղբյուրի տողի «կտորը» նշված տողով):

Page_ВArray() (անջատիչի նշված երևույթների միջև (ներառյալ աջ կողմում և առանց պատյանների):

Page_TransferBySyllables() (բաժանվում է «Hardly» ենթատողերի՝ գծիկով):

Page_MoveByWords() (բաժանված ենթատողերի «Փափուկ»)

Page_Cut() («Կտրել» նշված երկարությունների ենթատողերի)

Str_Shorten() (փոխարինել «կրճատ» նիշերի ձախ խումբը «փոխարինող տողով»

Page_Abbreviation() (փոխարինել «կրճատված» նիշերի աջ խումբը «փոխարինող տողով»

Str_ShortenS() (փոխարինել «կրճատված» նիշերի խմբի մեջտեղում «փոխարինող տողով»

Page_Extend (ընդլայնում մինչև որոշակի երկարություն՝ ավելացնելով նշված նիշերի քանակը)

1.3. Մանրամասն մեթոդներ (3). Տող «հերձում»՝ մանրամասն տեղեկություններով աղյուսակի փոխանցմամբ։

Page_vTableIn() (աղյուսակի մեջ՝ ըստ nested delimiters համակարգի):

Page_vTableGr (սեղանին ըստ բազմաստիճան ֆիլտրի):

Page_inTableNumbers (աղյուսակում, որոնց միջև կան թվեր և հատվածներ):

ՄԱՍ 2. ԸՆԴՀԱՆՐԱՑՎԱԾ ՄԵԹՈԴՆԵՐ-ԱԼԳՈՐԻՄՆԵՐ (3).

Page_Occurrence() («Գտնել» և «Փոխարինել» մեթոդները):

Page_Fragments() (մեթոդներ «Piece», «ReplacePiece», «InArray», «inTableIn»):

Page_Abcr() (մեթոդներ «AbcrL», «AbcrP», «AbcrS», «Expand»:

Page_Split() (մեթոդներ «Տեղափոխել ըստ վանկերի», «Տեղափոխել ըստ բառերի», «Կտրել»):

ՄԱՍ 3. ՈՒՆԻՎԵՐՍԱԼ ՖՈՒՆԿՑԻԱ.

Սա մի տեսակ պայմանական ծրագրավորման ինտերֆեյս է, որը թույլ է տալիս

միանգամից մի քանի մեթոդ կիրառեք տողի վրա: Իրականացվել է որպես

գործառույթներ յոթ պարամետրով («Դեմո»-ն կառուցված է այս ֆունկցիայի վրա).

Էջ_(Մեթոդներ, ենթամեթոդներ, մուտքագրում, պարամ1, պարամ2, երկարություն_համար_դիրք, լրացուցիչ ելք)

Ընտրանքներ:

- «Մեթոդներ» - մի քանի «համակցված» և (կամ) մեկ «բացառիկ» մեթոդ

(մեկ նիշանի կոդերը կամ անունները, հնարավոր է «,»-ի միջոցով)

- «Ենթամեթոդներ» - մի քանի «համակցված» և (կամ) «բացառիկ» տարբերակներ

«բացառիկ» մեթոդ (մեկ նիշի ծածկագրեր կամ անուններ);

- «Մուտք» - տող, կամ զանգված կամ արժեքների աղյուսակ;

- «Param1» - որոնման տող, փոխարինումներ, բաժանիչներ, զտիչներ;

- «Param2» - փոխարինող տող կամ նիշ;

- «Length_Number_Position» - Թիվ, թվեր բաժանարարի կամ թվերով զանգվածի միջոցով;

- «Լրացուցիչ ելք» - համար կամ տող կամ զանգված կամ արժեքների աղյուսակ;

Ենթամեթոդների անունները և/կամ մեկ նիշանի կոդերը, ինչպես նաև թվերը

(Length_Number_Position) կարող է լինել ցանկացած դեպքում և առանձնացված

Հետևյալ սահմանազատիչներից որևէ մեկը. «:;»:

ՄԱՍ 4. ՈՐՈՇ ՕՐԻՆՆԵՐ.

There areNumbersInLine=(Str_FindNumber(InLine)<>Չսահմանված);

Տողում կան թվեր = (String_FindGr(Inline,"+0123456789")>0);

Կա լատիներեն = (Str_FindGr(InStr, Str_Interpret("lL"))>0);

Կան Specified Signs = (Str_NfindGr(VxStr, "+to rogYu.0p9")>0);

IsNotPrinted=(Str_FindGr(InxStr, Line_Interpret("-l-L-r-R-P-Z-C"))>0);

ՄԱՍ 5. ԵԶՐԱԿԱՑՈՒԹՅՈՒՆ.

Հնարավորության դեպքում ես բավարարվեցի գծի մեկ անցումով: Երկրորդ անցումը սովորաբար բեկորային է: Ես չեմ օգտագործել ներկառուցված StrNumberOccurrences() ֆունկցիան։

Օգտագործվում են ներկառուցված գործառույթները՝ Left(), Right(), Middle(), StrLength()

- (Գծի տեղակայումը և մաս ստանալը պետք է լինի «արագ»):

Իրականացված տարբերակում 8.3.6.1977 թ.

Մենք ընդլայնել ենք լարերի հետ աշխատելու համար նախատեսված գործառույթների շարքը: Մենք դա արեցինք, որպեսզի ձեզ ավելի առաջադեմ գործիքներ տրամադրենք տողերի տվյալների վերլուծության համար: Նոր գործառույթները հարմար և օգտակար կլինեն տեքստի վերլուծության տեխնոլոգիական առաջադրանքներում։ Տեքստի վերլուծության հետ կապված առաջադրանքներում, որոնք պարունակում են տվյալներ ֆորմատավորված ձևով: Սա կարող է լինել սարքավորումներից ստացված որոշ ֆայլերի վերլուծություն կամ, օրինակ, տեխնոլոգիական մատյանի վերլուծություն:

Դուք կարող եք կատարել բոլոր այն գործողությունները, որոնք նախկինում կատարում են նոր գործառույթներ: Ներկառուցված լեզվով գրված քիչ թե շատ բարդ ալգորիթմների օգտագործում: Հետևաբար, նոր գործառույթները ձեզ սկզբունքորեն նոր հնարավորություններ չեն տալիս: Այնուամենայնիվ, դրանք թույլ են տալիս նվազեցնել կոդի քանակը և ծածկագիրը դարձնել ավելի պարզ և հասկանալի: Բացի այդ, նրանք թույլ են տալիս արագացնել գործողությունների կատարումը: Որովհետև հարթակում ներդրված ֆունկցիաները, իհարկե, ավելի արագ են աշխատում, քան ներկառուցված լեզվով գրված նմանատիպ ալգորիթմը։

StrTemplate() ֆորմատավորման ֆունկցիա

Այս ֆունկցիան պարամետրերը փոխարինում է տողի մեջ: Նման փոխակերպման անհրաժեշտությունը հաճախ է առաջանում, օրինակ, նախազգուշական հաղորդագրություններ ցուցադրելիս: Այս ֆունկցիայի շարահյուսությունը հետևյալն է.

StrTemplate (<Шаблон>, <Значение1-Значение10>)

<Шаблон>- սա այն տողն է, որի մեջ դուք պետք է փոխարինեք պարամետրերի ներկայացումները:

<Значение1> , ... <Значение10>- սրանք պարամետրեր են (առավելագույնը տասը), որոնց ներկայացումները պետք է փոխարինվեն տողի մեջ:

Կաղապարում որոշակի տեղ նշելու համար, որտեղ ցանկանում եք կատարել փոխարինումը, դուք պետք է օգտագործեք նշիչներ, ինչպիսիք են %1, ... %10: Կաղապարում ներգրավված մարկերների քանակը և արժեքներ պարունակող պարամետրերի քանակը պետք է համընկնեն:

Օրինակ, նման օպերատորի կատարման արդյունքը.

կլինի տող.

Տվյալների սխալ 2-րդ տողում (ամսաթվի տեսակը պարտադիր է)

StrCompare() տողերի հետ աշխատելու ֆունկցիա

Այս ֆունկցիան համեմատում է երկու տողեր՝ մեծատառերի անզգայուն եղանակով: Օրինակ, այսպես.

Դուք կարող եք նույն գործողությունը կատարել ավելի վաղ՝ օգտագործելով Value Comparison օբյեկտը.

Այնուամենայնիվ, նոր գործառույթից օգտվելն ավելի հեշտ է թվում: Եվ բացի սրանից, ֆունկցիան, ի տարբերություն Value Comparison օբյեկտի, աշխատում է ինչպես thin client-ում, այնպես էլ վեբ-հաճախորդում։

StrStartsWith(), StrEndsAt() տողերի հետ աշխատելու գործառույթներ

Այս ֆունկցիաները որոշում են՝ արդյոք տողը սկսվում է որոշակի ենթատողով, թե արդյոք տողը ավարտվում է նշված ենթատողով։ Այս գործառույթների ալգորիթմը ներդրված լեզվով իրականացնելը դժվար չէ, սակայն դրանց առկայությունը թույլ է տալիս գրել ավելի մաքուր և հասկանալի կոդ: Եվ նրանք ավելի արագ են աշխատում:

Օրինակ, դրանք հարմար է օգտագործել If դրույթում.

StrDivide(), StrConnect() տողերի հետ աշխատելու գործառույթներ

Այս գործառույթները տողը բաժանում են մասերի, օգտագործելով որոշակի սահմանազատիչ: Կամ հակառակը, նրանք միավորում են մի քանի տող մեկի մեջ, նրանց միջև ներդնելով ընտրված բաժանարարը: Դրանք հարմար են տեղեկամատյաններ և տեխնոլոգիական ամսագրեր ստեղծելու կամ վերլուծելու համար: Օրինակ, դուք կարող եք հեշտությամբ վերլուծել տեխնոլոգիական մատյան մուտքը մասերի, որոնք հարմար են հետագա վերլուծության համար.

StrFind() տողերի հետ աշխատելու ֆունկցիա

Հին Find() ֆունկցիայի փոխարեն մենք ներդրել ենք նոր ֆունկցիա, որն ունի լրացուցիչ հնարավորություններ.

  • Որոնել տարբեր ուղղություններով (սկզբից, վերջից);
  • Որոնել նշված դիրքից;
  • Որոնել նշված թվով երևույթ (երկրորդ, երրորդ և այլն):

Փաստորեն, դա կրկնօրինակում է հին ֆունկցիայի հնարավորությունները: Սա արվում է ավելի հին տարբերակներում կազմված մոդուլների հետ համատեղելիությունը պահպանելու համար: Խորհուրդ է տրվում այլևս չօգտագործել հին Find() ֆունկցիան:

Ստորև բերված է նոր որոնման հնարավորությունների օգտագործման օրինակ: Հակադարձ որոնումը օգտակար է, երբ ձեզ անհրաժեշտ է պաշտոնականացված տողի վերջին մասը, օրինակ՝ ֆայլի ամբողջական անունը URL-ում: Իսկ որոնումը նշված դիրքից օգնում է այն դեպքերում, երբ անհրաժեշտ է փնտրել հայտնի հատվածում, այլ ոչ թե ամբողջ տողում։

1C հարցումներում տողերի հետ աշխատելու մեխանիզմները քիչ են: Նախ, տողերը կարող են ավելացվել: Երկրորդ, դուք կարող եք վերցնել տողից ենթատող: Երրորդ, տողերը կարելի է համեմատել, այդ թվում՝ ըստ օրինաչափության։ Հավանաբար սա այն ամենն է, ինչ կարելի է անել լարերով:

Լարի ավելացում

Հարցման մեջ տողեր ավելացնելու համար օգտագործվում է «+» գործողությունը: Դուք կարող եք ավելացնել միայն սահմանափակ երկարությամբ տողեր:

Ընտրեք «Անուն.

Ենթալարի ֆունկցիա

ԵՆԹԱԴՐՈՒՄ (<Строка>, <НачальнаяПозиция>, <Длина>)

Environment() ֆունկցիայի անալոգը օբյեկտի մոդելից: Substring() ֆունկցիան կարող է կիրառվել լարային տվյալների վրա և թույլ է տալիս ընտրել հատված <Строки> , սկսած նիշի համարից <НачальнаяПозиция> (տողի նիշերը համարակալված են 1-ից սկսած) և երկարությունը <Длина> կերպարներ. Ֆունկցիայի հաշվարկի արդյունքն ունի փոփոխական երկարությամբ տողի տեսակ, և երկարությունը կհամարվի անսահմանափակ, եթե <Строка> ունի անսահմանափակ երկարություն և պարամետր <Длина> հաստատուն չէ կամ 1024-ից մեծ չէ:

Եթե ​​տողի երկարությունը փոքր է, քան նշված է երկրորդ պարամետրում, ապա ֆունկցիան կվերադարձնի դատարկ տող:

Ուշադրություն.Խորհուրդ չի տրվում օգտագործել SUBSTRING() ֆունկցիան՝ անսահմանափակ երկարությամբ տողերը սահմանափակ երկարությամբ տողերի փոխարկելու համար: Փոխարենը, ավելի լավ է օգտագործել Cast օպերատորը EXPRESS():

Գործառույթը նման է

Եթե ​​մենք պետք է համոզվենք, որ լարային հատկանիշը համապատասխանում է որոշակի չափանիշների, մենք համեմատում ենք այն.

ԸՆՏՐԵՔ Կողմնակիցներ. Անվանում AS Սյունակ 1 տեղեկատուից. Կողմնակիցներ ՈՐՊԵՍ Կողմնակիցներ WHERE Կոնտրագենտներ. Անուն = «Գազպրոմ»

Բայց ի՞նչ, եթե ավելի նուրբ համեմատության կարիք ունեք: Ոչ միայն հավասարություն կամ անհավասարություն, այլ նմանություն որոշակի օրինաչափության: Հենց դրա համար է ստեղծվել SIMILAR ֆունկցիան։

LIKE - Օպերատոր, որը ստուգում է տողը օրինաչափության նմանության համար: LIKE-ի անալոգը SQL-ում:

SIMILAR օպերատորը թույլ է տալիս համեմատել դրա ձախ կողմում նշված արտահայտության արժեքը աջ կողմում նշված օրինաչափության տողի հետ: Արտահայտության արժեքը պետք է լինի string տիպի: Եթե ​​արտահայտության արժեքը համապատասխանում է օրինաչափությանը, ապա օպերատորի արդյունքը կլինի TRUE, հակառակ դեպքում՝ FALSE:

Կաղապարի տողի հետևյալ նիշերը սպասարկման նիշեր են և ունեն տողային նիշից տարբեր նշանակություն.

  • % (տոկոս). հաջորդականություն, որը պարունակում է ցանկացած թվով կամայական նշաններ.
  • _ (ընդգծում). մեկ կամայական նիշ;
  • [...] (մեկ կամ մի քանի նիշ քառակուսի փակագծերում). ցանկացած առանձին նիշ, որը նշված է քառակուսի փակագծերում: Թվարկումը կարող է պարունակել միջակայքեր, օրինակ՝ a-z, որը նշանակում է կամայական նիշ, որը ներառված է տիրույթում, ներառյալ տիրույթի ծայրերը.
  • [^...] (քառակուսի փակագծերում ժխտման նշան, որին հաջորդում է մեկ կամ մի քանի նիշ). ցանկացած այլ նիշ, բացառությամբ ժխտման նշանին հաջորդող թվարկվածների:

Ցանկացած այլ նշան նշանակում է ինքն իրեն և չի կրում որևէ լրացուցիչ բեռ: Եթե ​​թվարկված նիշերից մեկը պետք է գրվի որպես ինքն իրեն, ապա դրան պետք է նախորդել<Спецсимвол>. ինքս ինձ<Спецсимвол>(ցանկացած հարմար նիշ) սահմանվում է նույն հայտարարության մեջ ՀԱՏՈՒԿ ՆՇԱՆԱՎՈՐ հիմնաբառից հետո: