Implementat în versiunea 8.3.6.1977.

Am extins setul de funcții pentru lucrul cu șiruri. Am făcut acest lucru pentru a vă oferi instrumente mai avansate pentru analiza datelor șirului. Noile funcții vor fi convenabile și utile în sarcinile tehnologice de analiză a textului. În sarcinile legate de analizarea textului care conține date formatate. Aceasta poate fi analiza unor fișiere primite de la echipament sau, de exemplu, analiza unui jurnal tehnologic.

Toate acțiunile care îndeplinesc funcții noi, le-ai fi putut efectua înainte. Cu ajutorul unor algoritmi mai mult sau mai puțin complexi scrise într-un limbaj încorporat. Prin urmare, noile funcții nu vă oferă posibilități fundamental noi. Cu toate acestea, pot reduce cantitatea de cod, pot face codul mai simplu și mai ușor de înțeles. Și, în plus, vă permit să accelerați executarea acțiunilor. Deoarece funcțiile implementate în platformă funcționează, desigur, mai repede decât un algoritm similar scris într-un limbaj încorporat.

Funcția de formatare StrPattern ()

Această funcție înlocuiește parametrii într-un șir. Necesitatea unei astfel de conversii apare adesea, de exemplu, atunci când se afișează mesaje de avertizare. Sintaxa pentru această funcție este următoarea:

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

<Шаблон> este un șir care să înlocuiască reprezentările parametrilor.

<Значение1> , ... <Значение10> - aceștia sunt parametri (maxim - zece), ale căror reprezentări trebuie înlocuite în șir.

Pentru a indica un anumit loc în șablon unde doriți să efectuați înlocuirea, trebuie să utilizați markeri precum% 1, ...% 10. Numărul de markeri utilizați în șablon și numărul de parametri care conțin valori trebuie să se potrivească.

De exemplu, rezultatul executării unei astfel de instrucțiuni:

va exista o linie:

Eroare de date pe linia 2 (se solicită tipul de dată)

Funcție pentru lucrul cu șiruri StrCompare ()

Această funcție compară două șiruri într-un mod insensibil la majuscule. De exemplu, astfel:

Ați fi putut efectua aceeași acțiune mai devreme folosind obiectul Comparare valoare:

Cu toate acestea, utilizarea noii funcții pare mai simplă. În plus, funcția, spre deosebire de obiectul Compararea valorilor, funcționează atât în \u200b\u200bclientul subțire, cât și în clientul web.

Funcții pentru lucrul cu șiruri RowStart With (), RREnd With ()

Aceste funcții determină dacă un șir începe cu un șir specificat sau se termină cu un șir specificat. Algoritmul acestor funcții este ușor de implementat într-un limbaj încorporat, dar prezența lor vă permite să scrieți cod mai curat și mai ușor de înțeles. Și funcționează mai repede.

De exemplu, este convenabil să le utilizați în If:

Funcții pentru lucrul cu șiruri StrSplit (), StrConnect ()

Aceste funcții împart șirul în părți în funcție de delimitatorul specificat. Sau invers, unesc mai multe linii într-una singură, inserând separatorul selectat între ele. Sunt convenabile pentru crearea sau analizarea jurnalelor, jurnalului tehnologic. De exemplu, puteți dezasambla cu ușurință o înregistrare a unui jurnal tehnologic în piese adecvate pentru analize suplimentare:

Funcție pentru lucrul cu șiruri StrFind ()

În loc de vechea funcție Find (), am implementat o nouă funcție care are capabilități suplimentare:

  • Căutați în direcții diferite (de la început, de la sfârșit);
  • Căutați dintr-o poziție specificată;
  • Căutați o apariție cu numărul specificat (al doilea, al treilea etc.).

De fapt, dublează capacitățile vechii funcții. Acest lucru se face pentru a menține compatibilitatea cu modulele compilate în versiuni mai vechi. Se recomandă să nu mai folosiți vechea funcție Find ().

Mai jos este un exemplu de utilizare a noilor funcții de căutare. Căutările înapoi sunt utile atunci când aveți nevoie de ultima bucată dintr-un șir formalizat, cum ar fi numele de fișier complet calificat dintr-o adresă URL. Și căutarea dintr-o poziție specificată ajută în cazurile în care trebuie să căutați într-un fragment cunoscut și nu în întregul șir.

Tipul „String” se găsește în toate limbajele de programare. Este primitiv și în 1C există multe funcții pentru lucrul cu acesta. În acest articol, vom arunca o privire mai atentă asupra diferitelor moduri de a lucra cu tipurile de șiruri în 1C 8.3 și 8.2 folosind exemple.

Linia

Pentru a converti o variabilă de orice tip într-un șir, există o funcție cu același nume „Șir ()”. Parametrul de intrare va fi variabila însăși, a cărei reprezentare a șirului trebuie obținută.

Șir (False) // returnează „Nu”
Șir (12345) // returnează „12 345”
Șir (CurrentDate ()) // 21.07.2017 11:55:36 ″

Este posibil să convertiți nu numai tipurile primitive într-un șir, ci și altele, de exemplu, elemente de directoare, documente.

SocrLP, SocrL, SocrP

O variabilă de tip șir este utilizată ca parametri de intrare pentru aceste funcții. Funcțiile elimină caractere nesemnificative (spații, retururi de carucioare și altele): din partea stângă și dreapta, numai din partea stângă și, respectiv, numai din dreapta.

Abreviere („Spațiile de pe ambele părți vor fi eliminate”) // „Spațiile de pe ambele părți vor fi eliminate”
Abreviat („Spațiile de pe ambele părți vor fi eliminate”) // „Spațiile din stânga vor fi eliminate”
Abreviere („Spațiile de pe ambele părți vor fi eliminate”) // „Spațiile din dreapta vor fi eliminate”

Leo, corect, miercuri

Aceste funcții vă permit să tăiați o parte a unui șir. Funcția „Lion ()” va returna partea șirului din partea stângă a lungimii specificate. Funcția „Dreapta ()” este aceeași, dar decuparea se face în dreapta. Funcția „Med ()” vă permite să specificați numărul caracterului din care va fi selectat șirul și lungimea acestuia.

Lion („Variabilă șir”, 4) // returnează „Stro”
Dreapta („Variabilă șir”, 7) // returnează „variabilă”
Miercuri („Variabilă șir”, 2, 5) // returnează „troco”

Lungimea str

Funcția determină numărul de caractere conținute în variabila șir.

StrLength („Cuvânt”) // rezultatul execuției va fi numărul 5

A găsi

Funcția face posibilă căutarea unei părți a unui șir în orice variabilă de șir. Valoarea returnată va fi un număr care arată poziția de la începutul șirului găsit. Dacă nu se găsește nicio potrivire, se returnează zero.

Rețineți că căutările sunt sensibile la majuscule și minuscule. Dacă șirul original conține mai multe apariții ale șirului de căutare, funcția va returna începutul primei apariții.

Găsiți („unu, doi, unu, doi, trei”, „doi”) // funcția va returna numărul 6

Linie goală

Utilizarea acestei funcții vă permite să determinați dacă un șir este gol. Caracterele nesemnificative, cum ar fi spațiul, returul carului și altele, sunt ignorate.

EmptyString („Pupkin Vasily Ivanovich”) // funcția va returna valoarea False
EmptyString ("") // funcția va reveni True

VReg, NReg, Treg

Aceste funcții sunt foarte utile pentru compararea și conversia variabilelor șir. Breg () va returna șirul original cu majuscule, HPreg () cu litere mici, iar TPreg () îl va forma astfel încât primul caracter al fiecărui cuvânt individual să fie scris cu majusculă și toate cele ulterioare să fie minuscule.

Vreg („DIRECTOR GENERAL”) // valoarea returnată - „DIRECTOR GENERAL”
NReg („DIRECTOR GENERAL”) // valoarea returnată - „director general”
TREG („DIRECTOR GENERAL”) // valoarea returnată - „Director general”

Înlocuiți pagina

Această funcție este similară cu înlocuirea în editorii de text. Vă permite să înlocuiți un caracter sau un set de caractere cu altul în variabile șir.

StrReplace ("roșu, alb, galben", ",", ";") // va returna "roșu; alb; galben"

StrNumberStrings

Funcția vă permite să determinați numărul de linii separate prin returnări de căruță într-o variabilă text.

Bucla din exemplul de mai jos va trece prin trei cercuri, deoarece funcția RowNumber va reveni la 3:

Pentru ind \u003d 1 după StrNumber of Lines ("String1" + Symbols.PS + "String2" + Symbols.PS + "String3") Buclă
<тело цикла>
Sfârșitul ciclului;

StrGetString

Această funcție funcționează cu text cu mai multe linii în același mod ca și cea precedentă. Vă permite să obțineți un șir specific dintr-o variabilă text.

StrGetString ("String1" + Symbols.PS + "String2" + Symbols.PS + "String3", 2) // va returna „String2”

StrNumber of Occurrences

Funcția contorizează numărul de apariții ale unui caracter sau al unui șir din șirul de căutare.

StrNumber of Attachments ("a; b; c; d;", \u200b\u200b";") // funcția va returna numărul 4

Simbol și cod de simbol

Aceste funcții vă permit să obțineți un caracter după codul său Unicode, precum și să determinați acest cod de către caracterul însuși.

SymbolCode ("A") // funcția va returna numărul 1 040
SymbolCode (1040) // funcția va returna „A”

Sarcini frecvente atunci când lucrați cu șiruri

Concatenarea șirurilor

Pentru a concatena mai multe șiruri (pentru a efectua concatenarea), este suficient să utilizați operatorul de adăugare.

„Linia 1 ″ +„ Linia 2 ″ // rezultatul adăugării a două linii va fi „Linia 1 Linia 2”

Conversie tip

Pentru a converti un tip într-un șir, de exemplu, o referință la un articol din dicționar, un număr etc., este suficient să folosiți funcția „Șir ()”. Funcții precum „Abreviere ()” vor converti, de asemenea, variabile într-un șir, dar imediat cu trunchierea caracterelor nesemnificative.

Șirul (1000) // va returna „1000”

Vă rugăm să rețineți că atunci când convertiți un număr într-un șir, programul a adăugat automat un spațiu care separă o mie. Pentru a evita acest lucru, puteți utiliza următoarele construcții:

StrReplace (String (1000), Characters.NPP, "") // va returna "1000"

Șir (Format (1000, "ChG \u003d")) // va returna "1000"

Citate într-un șir

Destul de des va trebui să vă confruntați cu necesitatea de a specifica ghilimele într-o variabilă șir. Poate fi fie un text de cerere scris în configurator, fie doar o variabilă. Pentru a rezolva această problemă, trebuie doar să setați două ghilimele.

Title \u003d String ("Horns and Hooves LLC" - asta suntem noi! ") // returnează" Horns and Hoofs LLC - suntem noi! "

Linii multiple, întrerupere de linie

Pentru a crea un text cu mai multe linii, este suficient să îi adăugați caractere de întrerupere a liniei (Symbols.PS).

MultilineText \u003d "Prima linie" + Simboluri.PS + "A doua linie"

Cum să eliminați spațiile

Pentru a elimina spațiile din dreapta sau din stânga, puteți utiliza funcția „Abreviere ()” (precum și „Abreviere ()” și „Abreviere ()”):

StringNoSpaces \u003d abreviatLP ("Multe litere") // funcția va returna valoarea "Multe litere"

Dacă, după convertirea unui număr într-un șir, trebuie să eliminați spațiile care nu se rup, utilizați următoarea construcție:

StringNoSpaces \u003d StrReplace (String (99999), Characters.NPP, "") // va returna "99999"

De asemenea, programatorii folosesc adesea următoarea construcție, care vă permite să eliminați sau să înlocuiți toate spațiile unei variabile text cu un alt caracter:

StringNoSpaces \u003d StrReplace ("bun venit", "", "") // returnează "salut"

Comparând șiruri între ele

Termenii pot fi comparați cu semnul egal obișnuit. Comparația este sensibilă la majuscule și minuscule.

"Hello" \u003d "hello" // returnează False
"Hello" \u003d "Hello" // va reveni True
"Hello" \u003d "Goodbye" // va întoarce False

Șirurile din 1C 8.3 în limbajul încorporat 1C sunt valori de tip primitiv Linia... Valorile de acest tip conțin un șir Unicode de lungime arbitrară. Variabilele de tip șir sunt un set de caractere cuprinse între ghilimele.

Exemplul 1. Să creăm o variabilă șir cu text.

StringVariable \u003d "Bună ziua lume!";

Funcții pentru lucrul cu șiruri în 1c 8.3

Această secțiune va furniza principalele funcții care vă permit să schimbați liniile în 1c sau să analizați informațiile conținute în acestea.

Lungimea str

StrLength (<Строка>) ... Returnează numărul de caractere conținut în șirul trecut în parametru.

Exemplul 2. Să numărăm numărul de caractere din linia „Bună ziua lume!”

String \u003d "Bună ziua lume!"; Număr de caractere \u003d StrLength (String); Raport (Număr de caractere);

Rezultatul executării acestui cod va fi afișarea numărului de caractere din șir: 11.

Abreviere

AbbrL (<Строка>) ... Trunchiază caractere nesemnificative în stânga primului caracter semnificativ din șir.
Caractere mici:

  • spaţiu;
  • spațiu care nu se rupe;
  • intabulare;
  • retur transport;
  • traducere linie;
  • traducerea formularului (pagina).

Exemplul 3. Eliminați toate spațiile din partea stângă a liniei „lume!” și atașați șirul „Bună ziua” la acesta.

Șir \u003d prescurtat („pace!”); String \u003d "Hello" + String; Raport (șir);

Rezultatul executării acestui cod va fi ieșirea liniei „Hello world!”

Abreviere

Abreviere (<Строка>) ... Trunchiază caractere nesemnificative în dreapta primului caracter semnificativ din șir.

Exemplul 4. Formați „Bună ziua” și „Lumea!” sintagma "Bună lume!"

Șir \u003d prescurtat („Bună ziua”) + „„ + prescurtat („lume!”); Raport (șir);

SokrLP

SocrLP (<Строка>) ... Trunchiază caractere nesemnificative în dreapta primului caracter semnificativ din șir și, de asemenea, tăie caractere nesemnificative în stânga primului caracter semnificativ din șir. Această funcție este utilizată mai des decât cele două precedente, deoarece este mai versatilă.

Exemplul 5. Eliminați caracterele nesemnificative din stânga și din dreapta în numele contrapartidei.

Contrapartă \u003d Directories.Contractors.NaytiPoRequisite ("INN", "0777121211"); CounterpartyObject \u003d Counterparty.GetObject (); CounterpartyObject.Name \u003d ShortLP (CounterpartyObject.Name); CounterpartyObject.Write ();

un leu

Un leu(<Строка>, <ЧислоСимволов>) ... Obține primele caractere ale șirului, numărul de caractere este specificat în parametru Numărul de caractere.

Exemplul 6. Lăsați în structură Angajat conține numele, prenumele și patronimicul angajatului. Obțineți un șir cu numele și inițialele.

InitialName \u003d Leo (Employee.Name, 1); Inițială Patronimică \u003d Leu (Angajat, Patronimic, 1); FullName \u003d Employee.Surname + "" + InitialName + "." + Inițială a Patronimic + ".";

Dreapta

Dreapta (<Строка>, <ЧислоСимволов>) ... Obține ultimele caractere ale unui șir, numărul de caractere este specificat în parametru Numărul de caractere. Dacă numărul specificat de caractere depășește lungimea șirului, se restituie întregul șir.

Exemplul 7. Să presupunem că sfârșitul unei variabile șir conține o dată în formatul "aaaaaaa", obțineți un șir cu o dată și convertiți-l la tipul Data.

Șir \u003d "Data actuală: 20170910"; StringDate \u003d Right (String, 8); Data \u003d Data (StringDate);

miercuri

Miercuri (<Строка>, <НачальныйНомер>, <ЧислоСимволов>) ... Obține un șir de caractere dintr-un șir trecut ca parametru Linia, începând de la caracterul al cărui număr este specificat în parametru StartNumber iar lungimea transmisă parametrului Numărul de caractere.Numerotarea caracterelor din linie începe de la 1. Dacă parametrul StartNumber se specifică o valoare mai mică sau egală cu zero, atunci parametrul preia valoarea 1. Dacă parametrul Numărul de simboluri nu este specificat, apoi sunt selectate caractere până la sfârșitul liniei.

Exemplul 8. Lăsați variabila șir care începe din a noua poziție să conțină codul regiunii, ar trebui să-l obțineți și să-l scrieți într-o linie separată.

Linie \u003d "Regiune: 99 Moscova"; Regiune \u003d Miercuri (Linie, 9, 2);

Căutare

Căutare (<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) ... Căutați șirul specificat în șir, returnează numărul poziției primului caracter al șirului găsit. Luați în considerare parametrii acestei funcții:

  • Linia... Șirul sursă;
  • Căutare subșir... Căutarea subșirului;
  • Direcția de căutare... Specifică direcția de căutare a unui șir într-un șir. Poate lua valori:
    • Direcția de căutare.De la început;
    • Direcția de căutare.;
  • Poziția inițială... Specifică poziția din șirul de la care începe căutarea;
  • Număr de intrări... Specifică numărul de apariții al șirului de caractere dorit în șirul original.

Exemplul 9. În rândul „Bună ziua lume!” determinați poziția ultimei apariții a simbolului „și”.

PositionNumber \u003d StrNayti ("Bună ziua lume!", "Și", DirectionSearch.End); Raport (Număr poziție);

Rezultatul acestei executări de cod va fi afișarea numărului ultimei apariții a simbolului „și”: 9.

Vreg

BReg (<Строка>) ... Convertește toate caracterele din șirul specificat în 1s 8 în majuscule.

Exemplul 10. Convertiți șirul „salut lume!” la majuscule.

StringBreg \u003d BReg („bună lume!”); Raport (StringVreg);

Rezultatul executării acestui cod va fi afișarea liniei „BUNĂ LUME!”

Nreg

HPreg (<Строка>) ... Convertește toate caracterele din șirul specificat în 1s 8 în minuscule.

Exemplul 11. Convertiți șirul „BUNĂ LUME!” cu minuscule.

StringNreg \u003d НReg ("BUNĂ LUME!"); Raport (StringVreg);

Rezultatul executării acestui cod va fi ieșirea liniei „salut lume!”

Treg

Treg (<Строка>) ... Convertește un șir după cum urmează: primul caracter al fiecărui cuvânt este convertit în majuscule, restul de caractere ale cuvântului sunt convertite în minuscule.

Exemplul 12. Cu majuscule primele litere ale cuvintelor din șirul „salut lume!”

StringTreg \u003d Treg ("salut lume!"); Raport (StringTreg);

Rezultatul executării acestui cod va fi ieșirea liniei „Hello World!”

Simbol

Simbol(<КодСимвола>) ... Obține un caracter după codul său Unicod.

Exemplul 13. Adăugați stânga și dreapta la linia „Hello World!” simbol ★

StringWithStars \u003d Symbol ("9733") + "Hello World!" + Symbol ("9733"); Raport (StringWithStars);

Rezultatul acestei execuții de cod va fi ieșirea liniei „★ Hello World! ★”

Cod simbol

SymbolCode (<Строка>, <НомерСимвола>) ... Obține codul de caracter Unicode din șirul specificat în primul parametru, situat în poziția specificată în al doilea parametru.

Exemplul 14. Aflați codul ultimului caracter din „Hello World!”

String \u003d "Hello World!"; CharacterCode \u003d CharacterCode (String, StrLength (String)); Raport (SymbolCode);

Rezultatul executării acestui cod va fi afișarea codului simbolului "!" - 33.

Linie goală

Linie goală (<Строка>) ... Verifică dacă un șir conține doar caractere nesemnificative, adică dacă este gol.

Exemplul 15. Verificați dacă un șir format din trei spații este gol.

Empty \u003d EmptyString (""); Raport (gol);

Rezultatul executării acestui cod va fi afișarea cuvântului „Da” (expresie șir a valorii logice Adevărat).

Înlocuiți pagina

PReplace (<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) ... Găsește toate aparițiile șirului de căutare din șirul original și îl înlocuiește cu șirul de înlocuire.

Exemplul 16. În rândul „Hello World!” înlocuiți cuvântul „Pace” cu cuvântul „Prieteni”.

String \u003d StrReplace („Bună ziua lumii!”, „Lumea”, „Prietenii”); Raport (șir);

Rezultatul executării acestui cod va fi afișarea liniei „Bună ziua prietenilor!”

StrNumberStrings

RowNumber (<Строка>) ... Numără numărul de linii dintr-un șir cu mai multe linii. Pentru a trece la o nouă linie în 1s 8, utilizați caracterul PS (caracter de alimentare cu linie).

Exemplul 17. Determinați numărul de linii din text:
"Prima linie
A doua linie
A treia linie "

Number \u003d StrNumberStrings ("Prima linie" + Symbols.PS + "A doua linie" + Symbols.PS + "A treia linie"); Raport (număr);

Rezultatul executării acestui cod va fi afișarea numărului de linii din text: 3

StrGetString

StrGetString (<Строка>, <НомерСтроки>) ... Obține un șir într-un șir multiliniu după numărul său. Numerotarea liniilor începe de la 1.

Exemplul 18. Obțineți ultima linie din text:
"Prima linie
A doua linie
A treia linie "

Text \u003d "Prima linie" + Simboluri.PS + "A doua linie" + Simboluri.PS + "A treia linie"; LastString \u003d StrGetString (Text, StrNumberLines (Text)); Raport (LastLine);

Rezultatul executării acestui cod va fi afișarea liniei „A treia linie”.

StrNumber of Occurrences

StrNumber of Occurrences (<Строка>, <ПодстрокаПоиска>) ... Returnează numărul de apariții al șirului de caractere specificat într-un șir. Funcția este sensibilă la majuscule.

Exemplul 19. Determinați de câte ori apare litera "c" în linia "Linii în 1s 8.3 și 8.2", indiferent de caz.

Linie \u003d "Linii în 1s 8.3 și 8.2"; Number of Occurrences \u003d StrNumber of Occurrences (Vreg (String), "S"); Raport (numărul de apariții);

Rezultatul executării acestui cod va fi afișarea numărului de apariții: 2.

Pagina începe cu

Pagina începe cu (<Строка>, <СтрокаПоиска>) ... Verifică dacă șirul trecut în primul parametru începe cu șirul din al doilea parametru.

Exemplul 20. Determinați dacă TIN-ul contrapartidei selectate începe cu numărul 1. Introduceți variabila Contrapartă Contractori.

TIN \u003d Counterparty.INN; StartsUnits \u003d StrStartsWith (INN, "1"); If BeginsUnits Then // Your Code EndIf;

Pagina se încheie cu

Pagina se încheie cu (<Строка>, <СтрокаПоиска>) ... Verifică dacă șirul trecut în primul parametru se termină cu șirul din al doilea parametru.

Exemplul 21. Determinați dacă TIN-ul contrapartidei selectate se termină cu cifra 2. Introduceți variabila Contrapartăeste stocat un link către un element de director Contractori.

TIN \u003d Counterparty.INN; Se termină cu două \u003d Str Se termină cu (INN, "2"); If Ends WithDouble Then // Codul tău EndIf;

PageSplit

StrSplit (<Строка>, <Разделитель>, <ВключатьПустые>) ... Împarte un șir în părți utilizând caracterele delimitator specificate și scrie șirurile rezultate într-o matrice. Primul parametru stochează șirul original, al doilea conține o linie care conține separatorul, al treilea indică dacă șirurile goale trebuie scrise în matrice (în mod implicit Adevărat).

Exemplul 22. Să presupunem că avem un șir care conține numere separate prin ";", obțineți o serie de numere din șir.

Șir \u003d "1; 2; 3"; Array \u003d StrSplit (String, ";"); Pentru RV \u003d 0 By Array.Quantity () - 1 Cycle Attempt Array [Rd] \u003d Number (AbbrLP (Array [Rb])); Exception Array [Сч] \u003d 0; Sfârșitul încercărilor Sfârșitul buclei;

Ca rezultat al execuției, se va obține o matrice cu numere de la 1 la 3.

StrConnect

StrConnect (<Строки>, <Разделитель>) ... Convertește o matrice de șiruri de la primul parametru într-un șir care conține toate elementele matricei, separate prin delimitatorul specificat în al doilea parametru.

Exemplul 23. Folosind matricea de numere din exemplul anterior, obțineți șirul original.

Pentru Ref \u003d 0 By Array.Quantity () - 1 Loop Array [Ref] \u003d String (Array [Ref]); Sfârșitul ciclului; String \u003d StrConnect (Array, ";");

Există puține mecanisme pentru lucrul cu șiruri în interogările 1C. În primul rând, liniile pot fi adăugate. În al doilea rând, puteți lua un șir dintr-un șir. În al treilea rând, șirurile pot fi comparate, inclusiv după model. Acesta este probabil tot ce puteți face cu șiruri.

Concatenarea șirului

Pentru a adăuga șiruri într-o interogare, se folosește operația „+”. Doar șirurile de lungime limitată pot fi pliate.

SELECȚIAȚI „Nume:" + Contrapărți. Nume AS Coloană1 DIN Director. Contractanți AS Contrapărți UNDE Contrapărți. Link \u003d & Link

Funcția de șir

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

Analog al funcției Environment () din modelul obiect. Funcția Substring () poate fi aplicată datelor de tip șir și vă permite să selectați un fragment <Строки> începând cu numărul caracterului <НачальнаяПозиция> (caracterele din șir sunt numerotate de la 1) și lungime <Длина> personaje. Rezultatul evaluării funcției are un tip de șir de lungime variabilă, iar lungimea va fi considerată nelimitată dacă <Строка> are lungime și parametri nelimitați <Длина> nu este constantă sau depășește 1024.

Dacă lungimea șirului este mai mică decât cea specificată în al doilea parametru, atunci funcția va returna un șir gol.

Atenţie! Nu este recomandată utilizarea funcției SUBSTRING () pentru a converti șiruri de lungime nelimitată în șiruri de lungime limitată. Este mai bine să folosiți operația de exprimare EXPRESS ().

Funcție ca

Dacă trebuie să ne asigurăm că un atribut șir îndeplinește anumite criterii, îl comparăm:

SELEGEȚI Contrapărți. Nume AS Coloană1 DIN Director. Contrapărți CA CONTRAPARTI UNDE Contrapărți. Nume \u003d "Gazprom"

Dar dacă doriți o comparație mai complicată? Nu doar egalitatea sau inegalitatea, ci ca un anumit tipar? Tocmai pentru asta este creată funcția LIKE.

LIKE - Operator pentru verificarea unui șir ca un model. Analog LIKE în SQL.

Operatorul LIKE vă permite să comparați valoarea expresiei specificată în stânga acesteia cu șirul șablon specificat în dreapta. Valoarea expresiei trebuie să fie de tip șir. Dacă valoarea expresiei se potrivește cu modelul, operatorul va întoarce ADEVĂRAT, altfel va fi FALS.

Următoarele caractere din șablonul șablon sunt caractere de serviciu și au o semnificație diferită de caracterul șir:

  • % (procent): o secvență care conține orice număr de caractere arbitrare;
  • _ (subliniere): un caracter arbitrar;
  • […] (Unul sau mai multe caractere între paranteze drepte): orice caracter unic listat între paranteze drepte. Enumerarea poate conține intervale, de exemplu, a-z, adică un caracter arbitrar inclus în interval, inclusiv capetele intervalului;
  • [^…] (Între paranteze pătrate un semn de negație urmat de unul sau mai multe caractere): orice caracter unic, cu excepția celor enumerate după semnul de negare.

Orice alt simbol înseamnă el însuși și nu are nicio semnificație suplimentară. Dacă unul dintre caracterele enumerate trebuie înregistrat ca el însuși, atunci trebuie să fie precedat de<Спецсимвол>... Se<Спецсимвол> (orice caracter adecvat) este definit în aceeași declarație după cuvântul cheie SPECIAL CHARACTER.

Însemnări dinspre geam

18.08.2014 Noi funcții pentru lucrul cu șiruri

Implementat în versiunea 8.3.6.1977.

Am extins setul de funcții pentru lucrul cu șiruri. Am făcut acest lucru pentru a vă oferi instrumente mai avansate pentru analiza datelor șirului. Noile funcții vor fi convenabile și utile în sarcinile tehnologice de analiză a textului. În sarcinile legate de analizarea textului care conține date formatate. Aceasta poate fi analiza unor fișiere primite de la echipament sau, de exemplu, analiza unui jurnal tehnologic.

Toate acțiunile care îndeplinesc funcții noi, le-ai fi putut efectua înainte. Cu ajutorul unor algoritmi mai mult sau mai puțin complexi scrise într-un limbaj încorporat. Prin urmare, noile funcții nu vă oferă posibilități fundamental noi. Cu toate acestea, pot reduce cantitatea de cod, pot face codul mai simplu și mai ușor de înțeles. Și, în plus, vă permit să accelerați executarea acțiunilor. Deoarece funcțiile implementate în platformă funcționează, desigur, mai repede decât un algoritm similar scris într-un limbaj încorporat.

Funcția de formatare StrPattern ()

Această funcție înlocuiește parametrii într-un șir. Necesitatea unei astfel de conversii apare adesea, de exemplu, atunci când se afișează mesaje de avertizare. Sintaxa pentru această funcție este următoarea:

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

<Шаблон> este un șir care să înlocuiască reprezentările parametrilor.

<Значение1> , ... <Значение10> - aceștia sunt parametri (maxim - zece), ale căror reprezentări trebuie înlocuite în șir.

Pentru a indica un anumit loc în șablon unde doriți să efectuați înlocuirea, trebuie să utilizați markeri precum% 1, ...% 10. Numărul de markeri utilizați în șablon și numărul de parametri care conțin valori trebuie să se potrivească.

De exemplu, rezultatul executării unei astfel de instrucțiuni:

va exista o linie:

Eroare de date pe linia 2 (se solicită tipul de dată)

Funcție pentru lucrul cu șiruri StrCompare ()

Această funcție compară două șiruri într-un mod insensibil la majuscule. De exemplu, astfel:

Ați fi putut efectua aceeași acțiune înainte de a utiliza obiectul Compararea valorilor:

Cu toate acestea, utilizarea noii funcții pare mai simplă. Și pe lângă aceasta, funcția, spre deosebire de obiect Compararea valorilor, funcționează atât în \u200b\u200bclientul subțire, cât și în clientul web.

Funcții pentru lucrul cu șiruri RowStart With (), RREnd With ()

Aceste funcții determină dacă un șir începe cu un șir specificat sau se termină cu un șir specificat. Algoritmul acestor funcții este ușor de implementat într-un limbaj încorporat, dar prezența lor vă permite să scrieți cod mai curat și mai ușor de înțeles. Și funcționează mai repede.

De exemplu, este convenabil să le utilizați în operator Dacă:

Funcții pentru lucrul cu șiruri StrSplit (), StrConnect ()

Aceste funcții împart șirul în părți în funcție de delimitatorul specificat. Sau invers, unesc mai multe linii într-una singură, inserând separatorul selectat între ele. Sunt convenabile pentru crearea sau analizarea jurnalelor, jurnalului tehnologic. De exemplu, puteți dezasambla cu ușurință o înregistrare a unui jurnal tehnologic în piese adecvate pentru analize suplimentare:

Funcție pentru lucrul cu șiruri StrFind ()

În loc de funcția veche A găsi() am implementat o nouă funcție care are caracteristici suplimentare:

  • Căutați în direcții diferite (de la început, de la sfârșit);
  • Căutați dintr-o poziție specificată;
  • Căutați o apariție cu numărul specificat (al doilea, al treilea etc.).

De fapt, dublează capacitățile vechii funcții. Acest lucru se face pentru a menține compatibilitatea cu modulele compilate în versiuni mai vechi. Funcție veche A găsi() nu se recomandă utilizarea din nou.

Mai jos este un exemplu de utilizare a noilor funcții de căutare. Căutările înapoi sunt utile atunci când aveți nevoie de ultima bucată dintr-un șir formalizat, cum ar fi numele de fișier complet calificat dintr-o adresă URL. Și căutarea dintr-o poziție specificată ajută în cazurile în care trebuie să căutați într-un fragment cunoscut și nu în întregul șir.