Cum se configurează smartphone-uri și PC-uri. Portal informativ
  • Acasă
  • Windows Phone
  • Trunchiază șirul la caracterul 1. Noi funcții pentru lucrul cu șiruri

Trunchiază șirul la caracterul 1. Noi funcții pentru lucrul cu șiruri

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

Concatenarea șirurilor

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

SELECTAȚI „Nume:” + Contrapărți. Nume AS Coloana 1 FROM Director. Contrapărți AS Contrapărți WHERE Contrapărți. Link = & Link

Funcția subșir

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

Analog al funcției Environment () din modelul obiect. Funcția Subșir () 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! Utilizarea funcției SUBSTRING () pentru a converti șiruri de lungime nelimitată în șiruri de lungime limitată nu este recomandată. Este mai bine să utilizați o operațiune de turnare precum EXPRESS ().

Funcționează ca

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

SELECTAȚI Counterparties. Nume AS Coloana 1 FROM Directory. Counterparties AS Counterparties WHERE Contrapartide. Nume = "Gazprom"

Dar dacă vrei o comparație mai complicată? Nu doar egalitate sau inegalitate, ci ca un anumit tipar? Exact pentru asta este creată funcția LIKE.

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

Operatorul LIKE vă permite să comparați valoarea expresiei specificate î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 avea ca rezultat TRUE, în caz contrar - FALSE.

Următoarele caractere din șirul șablon sunt caractere de serviciu și au o altă semnificație decât 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 enumerat î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, altul decât cele enumerate după semnul de negație.

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

Caracteristicile de bază ale unui limbaj de programare includ de obicei lucrul cu numere și șiruri. De obicei, aceste caracteristici sunt codificate în codul compilatorului (sau sunt implementate clasele „de bază” ale limbajului de programare).

În 1C, capacitatea de a lucra cu șiruri este programată în platforma în sine. Astăzi vom lua în considerare caracteristicile lucrului cu șiruri 1C în programele în limbajul 1C încorporat.

Valoarea liniei 1C

1. Să începem cu cel mai simplu. Crearea unei variabile și atribuirea unei valori constante șirului arată astfel în 1C:

Variabilă = „Bună lume!”;

Dacă trebuie să specificați ghilimele într-o valoare constantă a șirului 1C, atunci trebuie să-l dublați „”

Variabilă = „Bună ziua”, „lume” „!”;

2. Ruptura de linie 1C poate fi specificată în două moduri simultan. Primul folosește simbolul |

Variabilă = „Bună ziua,
| pace! ";

Al doilea folosește enumerarea sistemului Symbols. Vă permite să adăugați atât întreruperi de linie 1C, cât și alte caractere neprintabile, cum ar fi TAB.

Variabilă = „Bună ziua” + Simboluri.PS + „lumea!”;

3. Configurațiile în 1C pot fi dezvoltate nu numai pentru o limbă (rusă, engleză sau alta) - ci simultan pentru mai multe limbi. În acest caz, limba utilizată curent este selectată în partea de jos a ferestrei 1C.

Lista limbilor se află în fereastra de configurare din ramura General / Limbi. Fiecare limbă are un identificator scurt, cum ar fi ru sau ing.

Este clar că la programarea unei astfel de configurații, liniile 1C pot fi și multilingve. Pentru a face acest lucru, este posibil să creați o astfel de linie 1C specificând prin; opțiuni după identificatorul de limbă:

Variabilă = "ru =" "Bună, lume!" "; En =" "Bună, lume!" "";

Dacă utilizați linia 1C formată în acest mod ca de obicei, atunci va fi ceea ce este scris în ea. Pentru ca sistemul să îl împartă în două opțiuni și să o folosească pe cea dorită, trebuie să utilizați funcția HStr ():

// corectă pentru configurații bilingve
Raport (НStr (variabilă));

Recuzită cu linie tip 1C

O cerință este un câmp de referință/document 1C. Diferă de o variabilă dintr-un program 1C prin faptul că tipul acesteia (număr, șir 1C etc.) este indicat precis pentru un atribut. Dacă trebuie să perfecționați ce sunt recuzita - urmăriți lecția.

Dacă specificați tipul de atribut - linia 1C, atunci trebuie să specificați suplimentar parametrii.

Șirurile 1C au lungime nelimitată (specificată ca lungime = 0) și lungime limitată, indicând numărul exact de caractere. Rândurile 1C de lungime nelimitată sunt stocate într-un tabel SQL separat, astfel încât utilizarea lor este mai puțin productivă decât limitată.

De aceea, utilizarea șirurilor 1C de lungime nelimitată are propriile sale limitări - nu este posibil să le folosiți peste tot. De exemplu, nu poate fi folosit ca număr de document, cod de director, dimensiune.

Lucrul cu șiruri 1C

Există mai multe funcții încorporate ale platformei 1C pentru lucrul cu șiruri.

  • SocrLP ("Incredibil, dar adevărat!")
    Elimină spațiile suplimentare din linia 1C. Poate fi folosit și pentru a converti orice tip în șiruri 1C (de exemplu, numere).
  • Variabilă = "Vasya" + SokrLP ("plus") + "Olya"; // va fi „Vasya plus Olya”
    Un exemplu de însumare a mai multor valori de șir 1C. Rezultatul va fi o linie de 1C.
  • Variabilă = Leu („Muzică”, 2); // va fi "Mu"
    Variabila = miercuri („Muzica”, 2, 2); // va fi „shl”
    Variabilă = Dreapta („Muzică”, 2); // va fi "ka"
    Diverse opțiuni pentru obținerea unui subșir dintr-un șir 1C.
  • Variabilă = Găsiți („Muzică”, „Shl”); // va fi 3
    Căutați un subșir în șirul 1C, începând cu caracterul 1.
  • Variabilă = StrLength („Music”); // va fi 6
    Returnează numărul de caractere din rândul 1C.
  • Raportare („Bună ziua”) // în fereastra de mesaje din partea de jos a ferestrei 1C
    Avertisment ("Bună ziua") // dialog pop-up
    Stare ("Bună ziua") // în linia de afișare a stării din stânga jos
    .

Aruncarea obiectelor pe linia 1C

După cum știți, cel mai popular format pentru schimbul de informații structurate în prezent este XML. Chiar și cea mai recentă versiune de MS Office Word și Excel salvează fișiere în acest format (docx și, respectiv, xlsx, schimbă extensia în zip, deschide în arhivator).

Platforma 1C pentru schimbul de date oferă mai multe opțiuni, dintre care principala este și XML.

1. Cea mai simplă metodă este să folosiți funcția Abreviere () sau String (). În corpul interogării, puteți utiliza funcția REPREZENTARE (). Rezultatul acțiunii lor este același - ei generează o reprezentare șir a oricărui obiect 1C pentru utilizator.

Pentru o carte de referință, acesta va fi numele ei în mod implicit. Pentru un document - numele documentului, numărul și data.

2. Orice obiect 1C (cu restricții) poate fi convertit în XML și invers. Procesul de conversie se numește serializare.

ViewStringXml = XMLString (Valoare); // obțineți XML din valoarea 1C
Value1C = XMLValue (Tip ("ReferenceLink.Nomenclature"), ViewStringXml); // obțineți valoarea 1C din șirul XML, trebuie să specificați tipul 1C care ar trebui să fie primit

3. Există o modalitate a platformei 1C de a converti orice obiect 1C într-un șir. A migrat de la versiunea 1C 7.7. Acest format nu este înțeles de alte programe, dar este înțeles de un alt 1C, ceea ce face ușoară utilizarea lui pentru schimbul între bazele 1C.

String = ValueVSStringInter (Valoare1C); // obțineți linia 1C din valoarea 1C
ValueVFile ("C: \ MyFile.txt", Value1C); // altă opțiune, obținem un fișier cu un șir salvat din valoarea 1C
Value1C = ValueFromStringInternal (Șir); // înapoi de la linia 1C
Value1C = ValueOfFile ("C: \ MyFile.txt"); // înapoi din fișier

Editarea liniilor 1C pe formular

Pe lângă lucrul cu șiruri 1C într-un program 1C, desigur, aș dori ca utilizatorul să le poată edita. Există mai multe posibilități pentru aceasta:

1. Cel mai simplu mod este de a solicita intrarea liniei 1C la cerere. Această metodă este folosită atunci când predați programarea 1C, în viața reală este folosită mult mai rar (dar este folosit!).

Variabila = "";
String = EnterValue (variabilă, „Introduceți numele complet”);

2. Pentru a afișa atributul obiectului 1C (carte de referință / document) sau atributul formularului (vezi), cel mai des este folosit câmpul de introducere. Acesta este cel mai comun instrument din 1C pentru lucrul utilizatorului cu câmpuri de editare.

3. Posibilitățile câmpului de introducere pot fi extinse (vezi proprietățile câmpului de introducere, clic dreapta pe el, pentru mai multe detalii):

  • Bifă Modul de editare pe mai multe linii
  • Casetă de selectare Editare avansată (disponibilă dacă caseta de selectare anterioară este bifată)
  • Casetă de selectare Mod parolă (vezi).

4. Dacă toate posibilitățile câmpului de introducere nu sunt suficiente pentru tine, există un editor încorporat. Pentru a-l adăuga în formular, trebuie să adăugați un câmp de document text în meniul Formular / Inserare control. În proprietățile sale, puteți specifica modul de funcționare a acestuia - proprietatea Extensie.

Un câmp de document text nu poate fi legat direct la date. Este necesar să scrieți o funcție în handlerul de evenimente OnOpening () al formularului (vezi):

FormElements.ElementNameTextDocumentField.SetText (ValueString); // aici ValueString este textul obținut, de exemplu, din elemente de recuzită

Și în gestionarea de salvare - de exemplu, în butonul Salvare - adăugați o salvare:

ValueString = FormElements.ElementNameTextDocumentField.GetText (); // Valoare Șirul aici este recuzita în care stocăm valoarea

5. În versiunea 1C 8.2.11, în formele gestionate, există o nouă oportunitate de a reprezenta linia 1C - câmpul Document formatat.


Similar cu câmpul unui document text, este necesar să setați la deschidere și să scrieți atunci când salvați textul dvs. folosind programul.

  • În obiectul 1C, a cărui formă o facem (carte de referință, document, procesare etc.) - adăugați un atribut cu tipul de stocare
  • În funcția ReadOnServer (), setați textul din elemente de recuzită

    // aici Props este proprietatea adăugată a obiectului 1C
    // aici FormattedDocument este numele câmpului din formularul de editat
    &Pe server

    FormattedDocument = CurrentObject.Props.Get ();
    Sfârșitul procedurii

  • În funcția BeforeWriteOnServer () sau prin buton, scrieți textul din câmp

    &Pe server
    Procedura pentru ReadingOnServer (CurrentObject)
    CurrentObject.Props = NewValueStore (FormattedDocument);
    Sfârșitul procedurii

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 analizarea datelor șirurilor. 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-ați fi putut realiza înainte. Cu ajutorul unor algoritmi mai mult sau mai puțin complecși scriși într-un limbaj încorporat. Prin urmare, noile funcții nu vă oferă posibilități fundamental noi. Cu toate acestea, ele pot reduce cantitatea de cod, fac codul mai simplu și mai ușor de înțeles. Și, pe lângă asta, vă permit să accelerați execuția acțiunilor. Pentru că funcțiile implementate în platformă funcționează, desigur, mai rapid 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, la afișarea mesajelor de avertizare. Sintaxa pentru această funcție este următoarea:

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

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

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

Pentru a indica un anumit loc în șablon în care doriți să efectuați înlocuirea, trebuie să utilizați jetoane de forma% 1, ...% 10. Numărul de marcatori utilizați în șablon și numărul de parametri care conțin valori trebuie să fie același.

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

va fi o linie:

Eroare de date pe linia 2 (Tipul de dată este necesar)

Funcție pentru lucrul cu șiruri de caractere StrCompare ()

Această funcție compară două șiruri de caractere fără a ține seama de majuscule și minuscule. De exemplu, așa:

Ați fi putut efectua aceeași acțiune mai devreme folosind obiectul Comparație valori:

Cu toate acestea, utilizarea noii funcție pare mai simplă. În plus, funcția, spre deosebire de obiectul Comparație de valori, funcționează atât în ​​clientul 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 subșir specificat sau se termină cu un subșir specificat. Algoritmul acestor funcții nu este greu de implementat în limbajul încorporat, dar prezența lor vă permite să scrieți un cod mai curat și mai ușor de înțeles. Și lucrează mai repede.

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

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

Aceste funcții împart șirul în părți conform delimitatorului specificat. Sau invers, combină mai multe linii într-una singură, inserând între ele separatorul selectat. Sunt convenabile pentru crearea sau analizarea jurnalelor, a jurnalelor tehnologice. De exemplu, puteți dezasambla cu ușurință o înregistrare a unui jurnal tehnologic în părți adecvate pentru analiză ulterioară:

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:

  • Caută î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 (a doua, a treia etc.).

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

Mai jos este un exemplu de utilizare a noilor capabilități de căutare. Căutările înapoi sunt utile atunci când aveți nevoie de ultima parte dintr-un șir formalizat, cum ar fi numele de fișier complet calificat într-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.

Un șir este unul dintre tipurile de date primitive din 1C: Enterprise 8. Variabile cu tipul linia conţin text.

Valori ale variabilelor de tip linia sunt cuprinse între ghilimele duble. Se pot adăuga mai multe variabile de acest tip.

Per1 = „Cuvântul 1”;
Per2 = „Cuvântul 2”;
Per3 = Per1 + "" + Per2;

În cele din urmă Per3 va însemna „ Cuvântul 1 Cuvântul 2 ″.

În plus, sistemele 1C: Enterprise 8 oferă funcții pentru lucrul cu șiruri. Să le luăm în considerare pe cele principale:

Introduceți șirul (<Строка>, <Подсказка>, <Длина>, <Многострочность>) — funcția are scopul de a afișa o casetă de dialog în care utilizatorul poate specifica valoarea unei variabile de tip Linia... Parametru <Строка> este obligatoriu și conține numele variabilei în care va fi scris șirul introdus. Parametru <Подсказка> opțional este titlul casetei de dialog. Parametru <Длина> opțional, indică lungimea maximă a șirului de intrare. Valoarea implicită este zero, ceea ce înseamnă lungime nelimitată. Parametru <Многострочность> opțional. Determină modul de introducere a textului cu mai multe rânduri: True - introducerea textului cu mai multe linii cu separatoare de linii; False - introducerea unui șir simplu.

Șirul poate fi introdus și poate fi dat codul caracterelor Unicode:

Simbol(<КодСимвола>) — codul este introdus ca număr.

Literă = Simbol (1103); // EU SUNT

Există și o funcție inversă care vă permite să aflați codul unui caracter.

Cod simbol (<Строка>, <НомерСимвола>) — returnează numărul caracterului Unicode specificat ca număr.

Funcții de conversie a cazurilor:

BReg (<Строка>) - convertește toate caracterele din șir în majuscule.

HPreg (<Строка>) - convertește toate caracterele dintr-un șir în minuscule.

Treg (<Строка>) - convertește toate caracterele dintr-un șir în majuscule. Adică, primele litere din toate cuvintele sunt convertite în majuscule, iar literele rămase sunt convertite în minuscule.

Funcții pentru căutarea și înlocuirea caracterelor dintr-un șir:

Găsi(<Строка>, <ПодстрокаПоиска>) - găsește numărul de caracter al apariției subșirului de căutare. De exemplu:

Găsiți ("String", "Oka"); // 4

Găsi (<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) - găsește numărul de caracter al apariției subșirului de căutare, numărul de apariție este indicat în parametrul corespunzător. În acest caz, căutarea începe cu caracterul, al cărui număr este specificat în parametru Poziția inițială. Căutarea este posibilă de la începutul sau de la sfârșitul șirului. De exemplu:

Number4 Apariții = StrFind ( „Capacitate de apărare”, „o”, Direcția de căutare. De la început, 1, 4); // 7

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

StrReplace ("String", "Oka", ""); // Pagina

Linie goală (<Строка>) - verifică un șir de caractere semnificative. Dacă nu există caractere semnificative sau nici un caracter, atunci valoarea este returnată Adevărat... In caz contrar - Minciună.

StrNumăr de apariții (<Строка>, <ПодстрокаПоиска>) - calculează numărul de apariții ale subșirului de căutare în șirul original.

StrNumăr de apariții ( „Studiați, studiați și studiați din nou”, "a studia" , "" ) ; // 3

StrPattern (<Строка>, <ЗначениеПодстановки1>…<ЗначениеПодстановкиN> — înlocuiește parametrii în șir prin număr. Șirul trebuie să conțină markeri de substituție de forma: „% 1 ..% N”. Markerii sunt numerotate începând de la 1. Dacă valoarea parametrului Nedefinit, un șir gol este înlocuit.

StrPattern ( „Parametrul 1 =% 1, Parametrul 2 =% 2”, "1" , "2" ) ; // Parametrul 1 = 1, Parametrul 2 = 2

Funcții de conversie a șirurilor:

Un leu(<Строка>, <ЧислоСимволов>) - returnează mai întâi primele caractere ale șirului.

Dreapta (<Строка>, <ЧислоСимволов>) - returnează ultimele caractere ale șirului.

miercuri (<Строка>, <НачальныйНомер>, <ЧислоСимволов>) - returnează un șir de lungime<ЧислоСимволов>începând cu personajul<НачальныйНомер>.

AbbrL (<Строка>) trunchiază caracterele nesemnificative la stânga primului caracter semnificativ din șir.

Abreviere (<Строка>) - decupează caracterele nesemnificative din dreapta ultimului caracter semnificativ din șir.

SocrLP (<Строка>) - decupează caracterele nesemnificative din stânga primului caracter semnificativ din rând și din dreapta ultimului caracter semnificativ din rând.

StrGetString (<Строка>, <НомерСтроки>) - primește un șir cu mai multe linii după număr.

Alte functii:

StrLength (<Строка>) - returnează numărul de caractere dintr-un șir.

StrNumăr de linii (<Строка>) - returnează numărul de linii dintr-un șir cu mai multe linii. O linie este considerată nouă dacă este separată de linia anterioară printr-un caracter newline.

Compara (<Строка1>, <Строка2> ) - compară două șiruri de caractere, fără distincție între majuscule și minuscule. Funcția funcționează în același mod ca un obiect Compararea Valorilor... Se intoarce:

  • 1 - dacă prima linie este mai mare decât a doua
  • -1 - dacă a doua linie este mai mare decât prima
  • 0 - dacă șirurile sunt egale

StrCompare ("Prima linie", "A doua linie"); // unu

Top articole similare