Nové funkcie pre prácu s reťazcami. Nové funkcie pre prácu s reťazcami 1c funkcie reťazca

  • 17.03.2024

Reťazec je jedným z primitívnych dátových typov v systémoch 1C:Enterprise 8 s premennými riadok obsahovať text.

Zadajte hodnoty premenných riadok sú uvedené v úvodzovkách. Je možné pridať niekoľko premenných tohto typu.

Per1 = "Slovo 1" ;
Per2 = "Slovo 2" ;
Per3 = Per1 + " " + Per2;

Nakoniec Per3 bude znamenať" Slovo 1 Slovo 2″.

Systémy 1C:Enterprise 8 navyše poskytujú funkcie pre prácu s reťazcami. Pozrime sa na tie hlavné:

EnterString(<Строка>, <Подсказка>, <Длина>, <Многострочность>) — funkcia je navrhnutá tak, aby zobrazila dialógové okno, v ktorom môže používateľ zadať hodnotu premennej typu Linka. Parameter <Строка> je povinný a obsahuje názov premennej, do ktorej sa zadaný reťazec zapíše. Parameter <Подсказка> voliteľné – toto je názov dialógového okna. Parameter <Длина> voliteľné, zobrazuje maximálnu dĺžku vstupného reťazca. Predvolená hodnota je nula, čo znamená neobmedzenú dĺžku. Parameter <Многострочность> voliteľné. Definuje režim viacriadkového zadávania textu: True—viacriadkový textový vstup s oddeľovačmi riadkov; False - zadajte jednoduchý reťazec.

Môžete zadať reťazec, ak poznáte kód znaku v Unicode:

Symbol(<КодСимвола>) — kód sa zadáva ako číslo.

Letter= Symbol(1103) ; // Ja

Existuje aj inverzná funkcia, ktorá vám umožní zistiť kód symbolu.

Kód symbolu(<Строка>, <НомерСимвола>) — vráti číslo Unicode zadaného znaku ako číslo.

Funkcie prevodu malých a veľkých písmen:

VReg(<Строка>) — Prevedie všetky znaky v reťazci na veľké písmená.

NReg(<Строка>) — Prevedie všetky znaky v reťazci na malé písmená.

TReg(<Строка>) — prevedie všetky znaky v reťazci na veľké a malé písmená. To znamená, že prvé písmená všetkých slov sa skonvertujú na veľké písmená a zvyšné písmená sa skonvertujú na malé.

Funkcie na vyhľadávanie a nahradenie znakov v reťazci:

Nájsť(<Строка>, <ПодстрокаПоиска>) — nájde číslo znaku výskytu hľadaného podreťazca. Napríklad:

Nájsť ("String" , "oka" ) ; // 4

StrFind(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) — nájde číslo znaku výskytu hľadaného podreťazca, číslo výskytu je uvedené v príslušnom parametri. V tomto prípade vyhľadávanie začína znakom, ktorého číslo je uvedené v parametri Počiatočná poloha. Vyhľadávanie je možné od začiatku alebo od konca reťazca. Napríklad:

Počet 4 výskytov = Str Nájsť ( "obrana", "o" ,Smer hľadania. Od začiatku, 1, 4); // 7

StrReplace(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) – nájde všetky výskyty hľadaného podreťazca v zdrojovom reťazci a nahradí ho náhradným podreťazcom.

StrReplace ("String" , "oka" , "" ); // Stránka

Prázdny riadok (<Строка>) – skontroluje, či reťazec neobsahuje významné znaky. Ak neexistujú žiadne alebo žiadne významné znaky, vráti sa hodnota Pravda. Inak - Klamať.

StrNumberOccurrences(<Строка>, <ПодстрокаПоиска>) – Vypočíta počet výskytov hľadaného podreťazca v zdrojovom reťazci.

StrNumberOccurrences ( "Študovať, študovať a ešte raz študovať", "študovať" , "" );

// 3<Строка>, <ЗначениеПодстановки1>…<ЗначениеПодстановкиN> — StrTemplate( nahradí parametre do reťazca číslom. Riadok musí obsahovať substitučné značky v tvare: “%1..%N”. Číslovanie značiek začína od 1. Ak je hodnota parametra Nedefinované

, je nahradený prázdny reťazec. StrTemplate (, "1" , "2" ) ; "Parameter 1 = %1, Parameter 2 = %2"

// Parameter 1= 1, Parameter 2 = 2

Funkcie konverzie reťazcov:<Строка>, <ЧислоСимволов>) Lev(

– vráti prvé znaky reťazca.<Строка>, <ЧислоСимволов>) Správny(

– vráti posledné znaky reťazca.<Строка>, <НачальныйНомер>, <ЧислоСимволов>) streda(<ЧислоСимволов>– vráti reťazec dĺžky<НачальныйНомер>.

, počnúc symbolom<Строка>) AbbrL(

orezáva nevýznamné znaky vľavo od prvého významného znaku v reťazci.<Строка>) Abbr(

— odreže nepodstatné znaky napravo od posledného významného znaku v riadku.<Строка>) AbbrLP(

– odreže nepodstatné znaky naľavo od prvého významného znaku v riadku a napravo od posledného významného znaku v riadku.<Строка>, <НомерСтроки>) StrGetString(

– Získa viacriadkový reťazec podľa čísla.

Ďalšie vlastnosti:<Строка>) StrLength(

– vráti počet znakov v reťazci.<Строка>) StrNumberRow(

– vráti počet riadkov vo viacriadkovom reťazci. Riadok sa považuje za nový, ak je od predchádzajúceho oddelený znakom nového riadku.<Строка1>, <Строка2> ) StrCompare( – porovnáva dva reťazce bez ohľadu na veľkosť písmen. Funkcia funguje podobne ako objekt Porovnanie hodnôt

  • . Vrátenie:
  • 1 - ak je prvý riadok väčší ako druhý
  • -1 - ak je druhý riadok väčší ako prvý

0 - ak sú reťazce rovnaké

StrCompare("Prvý riadok" , "Druhý riadok" ) ; // 1

Poznámky cez zrkadlo

18.08.2014 Nové funkcie pre prácu s reťazcami

Realizované vo verzii 8.3.6.1977.

Predtým ste mohli vykonávať všetky akcie, ktoré vykonávajú nové funkcie. Používanie viac či menej zložitých algoritmov napísaných v zabudovanom jazyku. Nové funkcie vám preto nedávajú zásadne nové schopnosti. Umožňujú vám však znížiť množstvo kódu a urobiť kód jednoduchším a zrozumiteľnejším. Okrem toho vám umožňujú urýchliť vykonávanie akcií. Pretože funkcie implementované v platforme fungujú, samozrejme, rýchlejšie ako podobný algoritmus napísaný vo vstavanom jazyku.

Funkcia formátovania StrTemplate()

Táto funkcia nahrádza parametre do reťazca. Potreba takejto konverzie často vzniká napríklad pri zobrazovaní varovných správ. Syntax tejto funkcie je nasledovná:

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

<Шаблон>- toto je reťazec, do ktorého musíte nahradiť reprezentácie parametrov.

<Значение1> , ... <Значение10>- ide o parametre (maximálne desať), ktorých reprezentácie musia byť dosadené do reťazca.

Na označenie konkrétneho miesta v šablóne, kde chcete vykonať nahradenie, musíte použiť značky ako %1, ... %10. Počet značiek zahrnutých v šablóne a počet parametrov obsahujúcich hodnoty sa musia zhodovať.

Napríklad výsledok vykonania takéhoto operátora:

bude tam riadok:

Chyba údajov na riadku 2 (vyžaduje sa typ dátumu)

Funkcia na prácu s reťazcami StrCompare()

Táto funkcia porovnáva dva reťazce bez ohľadu na veľkosť písmen. Napríklad takto:

Rovnakú akciu môžete vykonať skôr pomocou objektu – porovnáva dva reťazce bez ohľadu na veľkosť písmen. Funkcia funguje podobne ako objekt:

Používanie novej funkcie však vyzerá jednoduchšie. A okrem toho funkcia, na rozdiel od objektu – porovnáva dva reťazce bez ohľadu na veľkosť písmen. Funkcia funguje podobne ako objekt, funguje v tenkom aj webovom klientovi.

Funkcie na prácu s reťazcami StrStartsWith(), StrEndsAt()

Tieto funkcie určujú, či reťazec začína určeným podreťazcom alebo či reťazec končí určeným podreťazcom. Algoritmus pre tieto funkcie nie je ťažké implementovať vo vstavanom jazyku, ale ich prítomnosť vám umožňuje písať čistejší a zrozumiteľnejší kód. A pracujú rýchlejšie.

Napríklad je vhodné ich použiť v operátorovi Ak:

Funkcie na prácu s reťazcami StrDivide(), StrConnect()

Tieto funkcie rozdeľujú reťazec na časti pomocou určeného oddeľovača. Alebo naopak, spoja niekoľko riadkov do jedného, ​​pričom medzi ne vložia vybraný oddeľovač. Sú vhodné na vytváranie alebo analýzu denníkov a technologických denníkov. Napríklad môžete jednoducho analyzovať záznam technologického denníka na časti vhodné na ďalšiu analýzu:

Funkcia na prácu s reťazcami StrFind()

Namiesto starej funkcie Nájsť() Implementovali sme novú funkciu, ktorá má ďalšie možnosti:

  • Hľadať v rôznych smeroch (od začiatku, od konca);
  • vyhľadávanie zo zadanej pozície;
  • Vyhľadajte výskyt so zadaným číslom (druhý, tretí atď.).

V skutočnosti duplikuje schopnosti starej funkcie. Deje sa tak s cieľom zachovať kompatibilitu s modulmi zostavenými v starších verziách. Stará funkcia Nájsť() Odporúča sa už nepoužívať.

Nižšie je uvedený príklad použitia nových možností vyhľadávania. Spätné vyhľadávanie je užitočné, keď potrebujete poslednú časť formalizovaného reťazca, ako je napríklad úplný názov súboru v adrese URL. A vyhľadávanie zo zadanej pozície pomáha v prípadoch, keď potrebujete hľadať v známom fragmente, a nie v celom riadku.

Medzi základné možnosti programovacieho jazyka zvyčajne patrí práca s číslami a reťazcami. Zvyčajne sú tieto schopnosti pevne zakódované do kódu kompilátora (alebo sú implementované „základné“ triedy programovacieho jazyka).

V 1C je možnosť práce s reťazcami naprogramovaná v samotnej platforme. Dnes sa pozrieme na funkcie práce s 1C reťazcami v programoch vo vstavanom jazyku 1C.

Hodnota riadku 1C

1. Začnime tým najjednoduchším. Vytvorenie premennej a priradenie konštantnej hodnoty reťazca v 1C vyzerá takto:

Premenná = "Ahoj, svet!";

Ak potrebujete zadať znak úvodzovky v konštantnej hodnote reťazca 1C, musíte ho zdvojnásobiť „“

Premenná = "Ahoj, svet"!;

2. Zalomenie riadku 1C môže byť špecifikované dvoma spôsobmi naraz. Prvým je použitie symbolu |

Premenná = "Dobrý deň,
| svet! ";

Druhým je použitie systémovej enumerácie Symbols. Umožňuje vám pridať zalomenia riadkov 1C a ďalšie netlačiteľné znaky, ako napríklad TAB.

Premenná = "Ahoj" + Symboly.PS + "mier!";

3. Konfigurácie v 1C môžu byť vyvinuté nielen pre jeden jazyk (ruština, angličtina alebo iný) - ale súčasne pre niekoľko jazykov. V tomto prípade sa aktuálne používaný jazyk vyberie v spodnej časti okna 1C.

Zoznam jazykov sa nachádza v konfiguračnom okne vo vetve Všeobecné/Jazyky. Každý jazyk má krátky identifikátor ako napr ru alebo Ing.

Je jasné, že pri programovaní takejto konfigurácie môžu byť linky 1C aj viacjazyčné. Na tento účel je možné vytvoriť takýto riadok 1C zadaním cez; možnosti podľa identifikátora jazyka:

Premenná = "ru=""Ahoj svet! ""; en=""Ahoj svet! """;

Ak použijete čiaru 1C vytvorenú týmto spôsobom ako zvyčajne, bude to, čo je v nej napísané. Aby ho systém rozdelil na dve možnosti a použil požadovanú, musíte použiť funkciu НStr():

//správne pre dvojjazyčné konfigurácie
Správa(NStr(Premenná));

Rekvizity s líniou typu 1C

Atribút je pole v adresári/dokumente 1C. Od premennej v programe v jazyku 1C sa líši tým, že pre atribút je presne uvedený jej typ (číslo, reťazec 1C atď.). Ak si potrebujete osviežiť pamäť, čo je to rekvizita, pozrite si lekciu ďalej.

Ak zadáte typ atribútu - riadok 1C, musíte dodatočne zadať parametre.

1C riadky majú neobmedzenú dĺžku (označuje sa ako dĺžka = 0) a obmedzenú dĺžku s uvedením presného počtu znakov. 1C riadky neobmedzenej dĺžky sú uložené v samostatnej SQL tabuľke, takže ich použitie je menej produktívne ako obmedzené.

Preto má použitie 1C strún neobmedzenej dĺžky svoje obmedzenia - nie je možné ich použiť všade. Nie je napríklad povolené ako číslo dokumentu, referenčný kód alebo meranie.

Práca so strunami 1C

Pre prácu so strunami je v platforme 1C zabudovaných niekoľko funkcií.

  • AbbrLP („Neuveriteľné, ale pravdivé!“)
    Odstraňuje nadbytočné medzery z riadku 1C. Môže sa tiež použiť na konverziu akýchkoľvek typov na reťazec 1C (napríklad čísla).
  • Premenná = "Vasya" + AbbrLP(" plus") + "Olya"; //bude "Vasya plus Olya"
    Príklad sčítania niekoľkých hodnôt reťazca 1C. Výsledkom bude jeden riadok 1C.
  • Premenná = Lev("Hudba", 2); //bude "Mu"
    Premenná = Medium("Hudba", 2, 2); //bude tam "hrozba"
    Premenná = Práva("Hudba", 2); //bude "ka"
    Rôzne možnosti získania podreťazca z reťazca 1C.
  • Premenná = Nájsť ("Hudba", "zy"); //budú 3
    Vyhľadajte podreťazec v reťazci 1C, začínajúci znakom 1.
  • Premenná = StrLength("Hudba"); //bude 6
    Vráti počet znakov v riadku 1C.
  • Report("Ahoj") //v okne správy v spodnej časti okna 1C
    Alert("Ahoj") //vyskakovacie dialógové okno
    Status("Ahoj") //v stavovom riadku vľavo dole
    .

Prineste predmety na riadok 1C

Ako viete, v súčasnosti je najpopulárnejším formátom na výmenu štruktúrovaných informácií XML. Dokonca aj najnovšia verzia MS Office Word a Excel ukladá súbory v tomto formáte (docx a xlsx zmenia príponu na zip, otvoria v archivátore).

Platforma 1C na výmenu údajov poskytuje niekoľko možností, z ktorých hlavnou je tiež XML.

1. Najjednoduchšou metódou je použitie funkcie Abbreviation() alebo String(). V tele žiadosti môžete použiť funkciu REPRESENTATION(). Výsledok ich akcie je rovnaký – používateľovi vygenerujú reťazcovú reprezentáciu ľubovoľného objektu 1C.

V prípade adresára to bude štandardne jeho názov. Pre dokument - názov dokumentu, číslo a dátum.

2. Akýkoľvek objekt 1C (s obmedzeniami) je možné previesť do XML a naopak. Proces konverzie sa nazýva serializácia.

StringViewXml = XMLString(Hodnota); //získanie XML z hodnoty 1C
Value1C = XMLValue(Type("DirectoryLink.Nomenclature"),TypStringXml); //získajte hodnotu 1C z reťazca XML, musíte zadať typ 1C, ktorý sa má prijať

3. Existuje vlastný spôsob platformy 1C, ako previesť akýkoľvek objekt 1C na reťazec. Prešiel z verzie 1C 7.7. Tomuto formátu iné programy nerozumejú, ale iné 1C mu rozumejú, čo uľahčuje jeho používanie na výmenu medzi databázami 1C.

Riadok = ValueInRowInt(Value1C); //získame reťazec 1C z hodnoty 1C
ValueVFile("C:\MyFile.txt", Hodnota1C); //ďalšia možnosť, z hodnoty 1C dostaneme súbor s uloženým reťazcom
Hodnota1C = ValueFromStringInt(String); //späť z riadku 1C
Hodnota1C = ValueFile("C:\MyFile.txt"); //späť zo súboru

Úprava riadkov 1C vo formulári

Okrem práce s 1C reťazcami v programe v jazyku 1C by som bol samozrejme rád, keby ich používateľ mohol upravovať. Existuje na to niekoľko možností:

1. Najjednoduchším spôsobom je požiadať o vstup linky 1C na požiadanie. Táto metóda sa používa pri výučbe programovania 1C v živote sa používa oveľa menej často (ale používa sa!).

Premenná = "";
Riadok = EnterValue(Premenná, "Zadajte celé meno");

2. Na zobrazenie detailov objektu 1C (adresár/dokument) alebo detailov formulára (pozri) sa najčastejšie používa vstupné pole. Toto je najbežnejší nástroj v 1C pre používateľa na prácu s poľami úprav.

3. Možnosti vstupného poľa je možné rozšíriť (pozrite si vlastnosti vstupného poľa, kliknite naň pravým tlačidlom myši, ďalšie podrobnosti):

  • Začiarkavacie políčko Režim viacriadkovej úpravy
  • Začiarkavacie políčko Rozšírené úpravy (dostupné, ak je začiarknuté predchádzajúce políčko)
  • Zaškrtávacie políčko Režim hesla (pozri).

4. Ak by vám nestačili všetky možnosti vstupného poľa, je tu zabudovaný editor. Ak ho chcete pridať do formulára, musíte pridať pole textového dokumentu do ponuky Ovládanie formulára/vložiť. V jeho vlastnostiach môžete určiť jeho prevádzkový režim – vlastnosť Rozšírenie.

Pole textového dokumentu nemožno priamo priradiť k údajom. Je potrebné napísať funkciu do obsluhy udalosti OnOpen() formulára (pozri ):

Form Elements.ElementNameTextDocumentField.SetText(StringValue); //tu ValueString je text prijatý napríklad z atribútu

A v obslužnom programe uloženia - napríklad v tlačidle Uložiť - pridajte uloženie:

ValueString = FormElements.ElementNameTextDocumentField.GetText(); //HodnotaRiadok je atribút, do ktorého uložíme hodnotu

5. Vo verzii 1C 8.2.11 sa v spravovaných formulároch objavila nová možnosť reprezentácie riadku 1C - pole Formátovaný dokument.


Podobne ako pole textového dokumentu si ho musíte nastaviť pri jeho otváraní a zapísať si ho pri ukladaní sami pomocou programu.

  • V objekte 1C, ktorého formulár vytvárame (adresár, dokument, spracovanie atď.) - pridajte atribút s typom Uloženie hodnoty
  • Vo funkcii OnReadOnServer() nastavíme text z atribútu

    //tu Atribút je pridaný atribút objektu 1C
    //tu FormattedDocument je názov poľa vo formulári na úpravu
    &Na serveri

    FormattedDocument = CurrentObject.Attributes.Get();
    EndProcedure

  • Vo funkcii BeforeWritingOnServer() alebo pomocou tlačidla napíšeme text z poľa

    &Na serveri
    Postup pri ReadingOnServer(CurrentObject)
    CurrentObject.Props = NewValueStorage(FormattedDocument);
    EndProcedure

Riadky v 1C 8.3 v zabudovanom jazyku 1C sú hodnoty primitívneho typu Linka. Hodnoty tohto typu obsahujú reťazec Unicode ľubovoľnej dĺžky. Premenné typu reťazec sú množinou znakov uzavretých v úvodzovkách.

Príklad 1. Vytvorme reťazcovú premennú s textom.

StringVariable = "Ahoj svet!";

Funkcie pre prácu s reťazcami v 1s 8.3

Táto časť poskytuje hlavné funkcie, ktoré vám umožňujú meniť riadky v 1c alebo analyzovať informácie v nich obsiahnuté.

StrLength

Ďalšie vlastnosti:<Строка>) . Vráti počet znakov obsiahnutých v reťazci odovzdanom ako parameter.

Príklad 2. Spočítajme počet znakov v riadku „Ahoj svet!“

String = "Ahoj svet!"; Počet znakov = StrLength(String); Report(NumberCharacters);

Výsledkom vykonania tohto kódu bude zobrazenie počtu znakov v riadku: 11.

AbbrL

, počnúc symbolom<Строка>) . Orezáva nevýznamné znaky vľavo od prvého významného znaku v reťazci.
Vedľajšie postavy:

  • priestor;
  • neprerušiteľný priestor;
  • tabelácia;
  • návrat kočiara;
  • preklad riadkov;
  • preklad formulára (stránky).

Príklad 3. Odstráňte všetky medzery z ľavej strany riadku "svet!" a pridajte k nemu riadok „Ahoj“.

String = Skratka("svet!"); String = "Ahoj"+String; Report(String);

Výsledkom vykonania tohto kódu bude zobrazenie riadku „Ahoj svet!“.

Skrátené

orezáva nevýznamné znaky vľavo od prvého významného znaku v reťazci.<Строка>) . Orezáva nevýznamné znaky vpravo od prvého významného znaku v reťazci.

Príklad 4. Formulár z riadkov „Ahoj“ a „mier!“ frázu "Ahoj svet!"

Riadok = Skratka("Ahoj ")+" "+ Skratka("svet!"); Report(String);

AbbrLP

— odreže nepodstatné znaky napravo od posledného významného znaku v riadku.<Строка>) . Orezáva nevýznamné znaky vpravo od prvého významného znaku v reťazci a tiež orezáva nevýznamné znaky vľavo od prvého významného znaku v reťazci. Táto funkcia sa používa častejšie ako predchádzajúce dve, keďže je univerzálnejšia.

Príklad 5. Odstráňte nepodstatné znaky vľavo a vpravo v mene protistrany.

Protistrana = Adresáre. Nájsť podľa podrobností("DIČ", "0777121211"); AccountObject = Account.GetObject(); Názov objektu protistrany = AbbrLP(Názov objektu protistrany); AccountObject.Write();

Lev

Funkcie konverzie reťazcov:<Строка>, <ЧислоСимволов>) . Získa prvé znaky reťazca, počet znakov je zadaný v parametri Počet znakov.

Príklad 6. Vpustite štruktúru zamestnanec obsahuje meno, priezvisko a priezvisko zamestnanca. Získajte reťazec s priezviskom a iniciálami.

MenoPočiatočné = Lev(meno zamestnanca, 1); Patronymická iniciála = Lev(Zamestnanec. Patronymika, 1); Celé meno = Zamestnanec.Priezvisko + " " + Úvodné meno + "." + Stredná iniciála + ".";

Správny

– vráti prvé znaky reťazca.<Строка>, <ЧислоСимволов>) . Získa posledné znaky reťazca, počet znakov zadaný v parametri Počet znakov. Ak zadaný počet znakov prekročí dĺžku reťazca, vráti sa celý reťazec.

Príklad 7. Nechajte na koniec reťazcovej premennej napísať dátum vo formáte „rrrrmmdd“, získajte reťazec s dátumom a preveďte ho na typ dátum.

String = "Aktuálny dátum: 20170910"; StringDate = Rights(String, 8); Date = Date(StringDate);

streda

– vráti posledné znaky reťazca.<Строка>, <НачальныйНомер>, <ЧислоСимволов>) . Získa podreťazec z reťazca odovzdaného ako parameter Linka, počnúc znakom, ktorého číslo je uvedené v parametri InitialNumber a dĺžka prenesená do parametra Počet znakov.Číslovanie znakov v riadku začína od 1. Ak je v parametri InitialNumber je zadaná hodnota menšia alebo rovná nule, potom parameter nadobudne hodnotu 1. Ak je parameter Počet znakov nie je zadané, potom sa vyberú znaky až do konca riadku.

Príklad 8. Nech reťazcová premenná začínajúca od deviatej pozície obsahuje kód regiónu, mali by ste ho získať a napísať do samostatného riadku.

Reťazec = "Región: 99 Moskva"; Oblasť = priem(reťazec, 9, 2);

PageFind

StrFind(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) . Vyhľadá zadaný podreťazec v reťazci a vráti číslo pozície prvého znaku nájdeného podreťazca. Pozrime sa na parametre tejto funkcie:

  • Linka. Zdrojový reťazec;
  • Hľadať podreťazec. Hľadať podreťazec;
  • Smer hľadania. Určuje smer hľadania podreťazca v reťazci. Môže nadobúdať hodnoty:
    • Smer hľadania. Od začiatku;
    • Smer hľadania. Koniec;
  • Počiatočná poloha. Určuje pozíciu v reťazci, na ktorej začína vyhľadávanie;
  • Počet výskytov. Určuje číslo výskytu hľadaného podreťazca v zdrojovom reťazci.

Príklad 9. V riadku „Ahoj svet!“ Určte polohu posledného výskytu znaku „a“.

PositionNumber = StrFind("Ahoj svet!", "and", SearchDirection.End); Report(PositionNumber);

Výsledkom vykonania tohto kódu bude zobrazenie čísla posledného výskytu symbolu „a“: 9.

VReg

VReg(<Строка>) . Skonvertuje všetky znaky v zadanom reťazci v 1s8 na veľké písmená.

Príklad 10: Preveďte reťazec "ahoj svet!" na veľké písmená.

StringVreg = VReg("ahoj svet!"); Report(StringVreg);

Výsledkom vykonania tohto kódu bude zobrazenie riadku „HELLO WORLD!“

NReg

NReg(<Строка>) . Skonvertuje všetky znaky zadaného reťazca v 1 s 8 na malé písmená.

Príklad 11: Preveďte reťazec "HELLO WORLD!" na malé písmená.

StringNreg = NReg("AHOJ SVET!"); Report(StringVreg);

Výsledkom vykonania tohto kódu bude zobrazenie riadku "ahoj svet!"

Treg

TReg(<Строка>) . Skonvertuje reťazec nasledovne: prvý znak každého slova sa skonvertuje na veľké písmeno, zvyšné znaky slova sa skonvertujú na malé.

Príklad 12: Veľké prvé písmená slov v riadku „ahoj svet!“

StringTreg = TReg("ahoj svet!"); Report(StringTreg);

Výsledkom vykonania tohto kódu bude zobrazenie riadku „Ahoj svet!“

Symbol

Symbol(<КодСимвола>) . Získa znak pomocou kódu Unicod.

Príklad 13. Pridajte doľava a doprava do riadku „Ahoj svet!“ symbol ★

StringWithStars = Symbol("9733")+"Ahoj svet!"+Symbol("9733"); Report(StringWithStars);

Výsledkom vykonania tohto kódu bude zobrazenie riadku „★Ahoj svet!★“

Kód symbolu

Kód symbolu(<Строка>, <НомерСимвола>) . Získa kód znaku Unicode z reťazca zadaného v prvom parametri, ktorý sa nachádza na pozícii špecifikovanej v druhom parametri.

Príklad 14. Zistite kód posledného znaku v riadku „Ahoj svet!“

String = "Ahoj Svet!"; CharacterCode = CharacterCode(String, StrLength(String)); Upozorniť(Kód znaku);

Výsledkom vykonania tohto kódu bude zobrazenie kódu symbolu „!“ - 33.

Prázdny riadok

Prázdny riadok (<Строка>) . Kontroluje, či reťazec pozostáva len z nepodstatných znakov, teda či je prázdny.

Príklad 15. Skontrolujte, či je reťazec pozostávajúci z troch medzier prázdny.

Empty = EmptyString(" "); Report(Empty);

Výsledkom vykonania tohto kódu bude zobrazenie slova „Áno“ (reťazcový výraz logickej hodnoty Pravda).

PageReplace

StrReplace(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) . Vyhľadá všetky výskyty hľadaného podreťazca v zdrojovom reťazci a nahradí ho náhradným podreťazcom.

Príklad 16. V riadku „Ahoj Svet!“ nahradiť slovo „mier“ slovom „priatelia“.

String = StrReplace("Ahoj svet!", "Svet", "Priatelia"); Report(String);

Výsledkom vykonania tohto kódu bude zobrazenie riadku „Ahoj priatelia!“

StrNumberLines

– vráti počet znakov v reťazci.<Строка>) . Umožňuje vám spočítať počet riadkov vo viacriadkovom reťazci. Ak chcete prejsť na nový riadok za 1 s 8, použite symbol PS(znak nového riadku).

Príklad 17. Určte počet riadkov v texte:
"Prvá línia
Druhý riadok
Tretí riadok"

Číslo = StrNumberString("Prvý riadok"+Znaky.PS +"Druhý riadok"+Symboly.PS +"Tretí riadok"); Správa (číslo);

Výsledkom vykonania tohto kódu bude zobrazenie počtu riadkov v texte: 3

StrGetString

– odreže nepodstatné znaky naľavo od prvého významného znaku v riadku a napravo od posledného významného znaku v riadku.<Строка>, <НомерСтроки>) . Získa riadok vo viacriadkovom reťazci podľa jeho čísla. Číslovanie riadkov začína od 1.

Príklad 18. Získajte posledný riadok v texte:
"Prvá línia
Druhý riadok
Tretí riadok"

Text = "Prvý riadok" + Symboly PS + "Druhý riadok" + Symboly PS + "Tretí riadok"; LastRow = StrGetRow(Text, StrNumberLines(Text)); Správa (Posledný riadok);

Výsledkom vykonania tohto kódu bude zobrazenie riadku „Tretí riadok“.

PageNumberOccurrences

StrNumberOccurrences(<Строка>, <ПодстрокаПоиска>) . Vráti počet výskytov zadaného podreťazca v reťazci. Funkcia rozlišuje malé a veľké písmená.

Príklad 19. Určite, koľkokrát sa písmeno „c“ objaví v riadku „Riadky v 1s 8.3 a 8.2“, bez ohľadu na veľkosť písmen.

Riadok = "Čiar v 1 s 8,3 a 8,2"; NumberOccurrences = StrNumberOccurrences(Vreg(String), "S"); Report(NumberOccurrences);

Výsledkom vykonania tohto kódu bude zobrazenie počtu výskytov: 2.

PageStartsWith

StrStartsWith(<Строка>, <СтрокаПоиска>) . Skontroluje, či reťazec odovzdaný v prvom parametri začína reťazcom v druhom parametri.

Príklad 20. Určte, či DIČ vybranej protistrany začína číslom 1. Nechajte premennú Protistrana protistrany.

DIČ = Counterparty.TIN; StartsUNits = StrStartsWith(TIN, "1"); If Začína jednotkami Then //Váš kód EndIf;

PageEndsOn

StrEndsWith(<Строка>, <СтрокаПоиска>) . Skontroluje, či reťazec odovzdaný v prvom parametri končí reťazcom v druhom parametri.

Príklad 21. Určte, či DIČ vybranej protistrany končí číslom 2. Nech v premennej Protistrana je uložený odkaz na prvok adresára protistrany.

DIČ = Counterparty.TIN; EndsWithTwo = StrEndsWith(TIN, "2"); If EndsInTwo Then //Váš kód EndIf;

PageSplit

StrDivide(<Строка>, <Разделитель>, <ВключатьПустые>) . Rozdelí reťazec na časti pomocou zadaných oddeľovacích znakov a výsledné reťazce zapíše do poľa. Prvý parameter ukladá zdrojový reťazec, druhý obsahuje reťazec obsahujúci oddeľovač, tretí udáva, či sa majú do poľa zapisovať prázdne reťazce (štandardne Pravda).

Príklad 22. Majme reťazec obsahujúci čísla oddelené symbolom „;“, získajme z reťazca pole čísel.

Reťazec = "1; 2; 3"; Pole = StrDivide(String, ";"); For Count = 0 By Array.Quantity() - 1 Cyklus pokusov Array[Count] = Number(AbbrLP(Array[Count])); Pole výnimiek[Sch] = 0; EndAttemptsEndCycle;

V dôsledku vykonania sa získa pole s číslami od 1 do 3.

PageConnect

StrConnect(<Строки>, <Разделитель>) . Skonvertuje pole reťazcov z prvého parametra na reťazec obsahujúci všetky prvky poľa oddelené oddeľovačom špecifikovaným v druhom parametri.

Príklad 23. Pomocou poľa čísel z predchádzajúceho príkladu získajte pôvodný reťazec.

Pre účet = 0 Podľa Array.Quantity() - 1 cyklus Array[Act] = String(Array[Act]); EndCycle; Riadok = StrConnect(Pole, "; ");

Existuje niekoľko mechanizmov na prácu s reťazcami v dopytoch 1C. Najprv je možné pridať riadky. Po druhé, môžete vziať podreťazec z reťazca. Po tretie, reťazce možno porovnávať, a to aj podľa vzoru. To je asi všetko, čo sa dá so šnúrkami robiť.

Pridávanie reťazcov

Na pridanie riadkov do dotazu sa používa operácia „+“. Môžete pridať iba reťazce obmedzenej dĺžky.

SELECT "Názov: " + Protistrany Názov AS Stĺpec 1 Z adresára Protistrany AS Protistrany WHERE Protistrany

Funkcia podreťazca

SUBSTRING(<Строка>, <НачальнаяПозиция>, <Длина>)

Analóg funkcie Environment() z objektového modelu. Funkciu Substring() možno použiť na údaje reťazca a umožňuje vám vybrať fragment <Строки> , začínajúc číslom znaku <НачальнаяПозиция> (znaky v riadku sú číslované od 1) a dĺžku <Длина> postavy. Výsledok výpočtu funkcie má typ reťazca s premenlivou dĺžkou a dĺžka sa bude považovať za neobmedzenú, ak <Строка> má neobmedzenú dĺžku a parametre <Длина> nie je konštantná alebo väčšia ako 1024.

Ak je dĺžka reťazca menšia ako špecifikovaná v druhom parametri, funkcia vráti prázdny reťazec.

Pozor! Použitie funkcie SUBSTRING() na konverziu reťazcov neobmedzenej dĺžky na reťazce obmedzenej dĺžky sa neodporúča. Namiesto toho je lepšie použiť operátor obsadenia EXPRESS().

Funkcia podobná

Ak sa potrebujeme uistiť, že atribút reťazca spĺňa určité kritériá, porovnáme ho:

VYBERTE protistrany Názov AS Stĺpec 1 Z adresára Protistrany AS Protistrany WHERE Protistrany.

Ale čo ak potrebujete jemnejšie porovnanie? Nielen rovnosť alebo nerovnosť, ale podobnosť s určitým vzorom? Presne na to bola vytvorená funkcia PODOBNÉ.

LIKE — Operátor na kontrolu podobnosti reťazca so vzorom. Analóg LIKE v SQL.

Operátor PODOBNÉ vám umožňuje porovnať hodnotu výrazu zadaného naľavo od neho s reťazcom vzoru zadaným napravo. Hodnota výrazu musí byť typu string. Ak sa hodnota výrazu zhoduje so vzorom, výsledok operátora bude TRUE, inak bude FALSE.

Nasledujúce znaky v reťazci šablóny sú servisné znaky a majú iný význam ako znak reťazca:

  • % (percentá): sekvencia obsahujúca ľubovoľný počet ľubovoľných znakov;
  • _ (podčiarkovník): jeden ľubovoľný znak;
  • […] (jeden alebo viac znakov v hranatých zátvorkách): akýkoľvek jednotlivý znak uvedený v hranatých zátvorkách. Enumerácia môže obsahovať rozsahy, napríklad a-z, čo znamená ľubovoľný znak zahrnutý v rozsahu, vrátane koncov rozsahu;
  • [^...] (v hranatých zátvorkách znak záporu, za ktorým nasleduje jeden alebo viacero znakov): každý jeden znak okrem tých, ktoré sú uvedené za znakom záporu.

Akýkoľvek iný symbol znamená sám seba a nenesie žiadnu dodatočnú záťaž. Ak jeden z uvedených znakov musí byť napísaný ako samotný, potom mu musí predchádzať<Спецсимвол>. Ja sám<Спецсимвол>(akýkoľvek vhodný znak) je definovaný v rovnakom príkaze za kľúčovým slovom SPECIAL CHARACTER.