Contacte

Noi funcții pentru lucrul cu șiruri. Funcții noi pentru lucrul cu șiruri Funcții pentru lucrul cu șiruri în 1c

Note din Through the Looking Glass

18.08.2014 Noi funcții pentru lucrul cu șiruri

Implementat în versiunea 8.3.6.1977.

Am extins setul de funcții concepute pentru a funcționa 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 în formă formatată. Aceasta ar putea fi o analiză a unor fișiere primite de la echipament sau, de exemplu, o analiză a unui jurnal tehnologic.

Puteți efectua toate acțiunile care îndeplinesc funcții noi înainte. Folosind algoritmi mai mult sau mai puțin complecși scriși într-un limbaj încorporat. Prin urmare, noile funcții nu vă oferă capabilități fundamental noi. Cu toate acestea, vă permit să reduceți cantitatea de cod și să faceți codul mai simplu și mai ușor de înțeles. În plus, 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 StrTemplate()

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:

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

<Шаблон>- acesta este șirul în care trebuie să înlocuiți reprezentările parametrilor.

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

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

De exemplu, rezultatul executării unui astfel de operator:

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:

Puteți efectua aceeași acțiune mai devreme folosind obiectul Compararea Valorilor:

Cu toate acestea, utilizarea noii caracteristici pare mai ușoară. Și pe lângă aceasta, o funcție, spre deosebire de un obiect Compararea Valorilor, funcționează atât în ​​clientul subțire, cât și în clientul web.

Funcții pentru lucrul cu șiruri de caractere StrStartsWith(), StrEndsAt()

Aceste funcții determină dacă un șir începe cu un subșir specificat sau dacă un șir se termină cu un subșir specificat. Algoritmul pentru aceste funcții nu este greu de implementat într-un limbaj î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 StrDivide(), StrConnect()

Aceste funcții împart un șir în părți folosind un delimitator specificat. Sau invers, combină mai multe linii într-una singură, inserând între ele separatorul selectat. Sunt convenabile pentru crearea sau analizarea jurnalelor și a revistelor tehnologice. De exemplu, puteți analiza cu ușurință o intrare de jurnal tehnologic în părți adecvate pentru analiză ulterioară:

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

În loc de vechea funcție Găsi() Am implementat o nouă funcție care are capacităț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 un număr specificat (al doilea, al treilea 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. Funcție veche Găsi() Se recomandă să nu mai utilizați.

Mai jos este un exemplu de utilizare a noilor capabilități de căutare. Căutarea inversă este utilă atunci când aveți nevoie de ultima parte a unui șir oficial, cum ar fi numele complet al fișierului î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 întreaga linie.

Implementat în versiunea 8.3.6.1977.

Am extins setul de funcții concepute pentru a funcționa 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 în formă formatată. Aceasta ar putea fi o analiză a unor fișiere primite de la echipament sau, de exemplu, o analiză a unui jurnal tehnologic.

Puteți efectua toate acțiunile care îndeplinesc funcții noi înainte. Folosind algoritmi mai mult sau mai puțin complecși scriși într-un limbaj încorporat. Prin urmare, noile funcții nu vă oferă capabilități fundamental noi. Cu toate acestea, vă permit să reduceți cantitatea de cod și să faceți codul mai simplu și mai ușor de înțeles. În plus, 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 StrTemplate()

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:

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

<Шаблон>- acesta este șirul în care trebuie să înlocuiți reprezentările parametrilor.

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

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

De exemplu, rezultatul executării unui astfel de operator:

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:

Puteți efectua aceeași acțiune mai devreme folosind obiectul Comparație valori:

Cu toate acestea, utilizarea noii caracteristici pare mai ușoară. Și pe lângă aceasta, funcția, spre deosebire de obiectul Value Comparison, funcționează atât în ​​clientul subțire, cât și în clientul web.

Funcții pentru lucrul cu șiruri de caractere StrStartsWith(), StrEndsAt()

Aceste funcții determină dacă un șir începe cu un subșir specificat sau dacă un șir se termină cu un subșir specificat. Algoritmul pentru aceste funcții nu este greu de implementat într-un limbaj î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, ele sunt convenabile de utilizat în instrucțiunea If:

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

Aceste funcții împart un șir în părți folosind un delimitator specificat. Sau invers, combină mai multe linii într-una singură, inserând între ele separatorul selectat. Sunt convenabile pentru crearea sau analizarea jurnalelor și a revistelor tehnologice. De exemplu, puteți analiza cu ușurință o intrare de jurnal tehnologic în părți adecvate pentru analiză ulterioară:

Funcție pentru lucrul cu șiruri de caractere 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 un număr specificat (al doilea, al treilea 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. Este recomandat să nu mai folosiți vechea funcție Find().

Mai jos este un exemplu de utilizare a noilor capabilități de căutare. Căutarea inversă este utilă atunci când aveți nevoie de ultima parte a unui șir oficial, cum ar fi numele complet al fișierului î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 întreaga linie.

Rândurile din 1C 8.3 în limbajul încorporat 1C reprezintă 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 = „Bună lume!”;

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

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

StrLength

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

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

String = „Bună lume!”; NumberofCharacters = StrLength(String); Raport (NumărCaractere);

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

AbbrL

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

  • spaţiu;
  • spatiu nerupere;
  • intabulare;
  • retur transport;
  • traducere de linie;
  • traducerea formularului (pagina).

Exemplul 3. Eliminați toate spațiile din partea stângă a liniei „lume!” și adăugați linia „Bună ziua”.

String = Abreviere ("lumea!"); String = „Bună ziua”+String; Raport (Șir);

Rezultatul executării acestui cod va fi afișarea liniei „Hello world!” pe ecran.

Abreviat

Abreviere(<Строка>) . Decupează caracterele nesemnificative la dreapta primului caracter semnificativ din șir.

Exemplul 4. Formular din rândurile „Bună ziua” și „pace!” expresia „Bună lume!”

Linie = Abreviere("Bună ziua ")+" "+ Abreviere(" lume!"); Raport (Șir);

AbbrLP

AbbrLP(<Строка>) . Decupează caracterele nesemnificative la dreapta primului caracter semnificativ din șir și, de asemenea, decupează caracterele nesemnificative la stânga primului caracter semnificativ din șir. Această funcție este folosită mai des decât precedentele două, deoarece este mai universală.

Exemplul 5. Eliminați caracterele nesemnificative din stânga și dreapta din numele contrapărții.

Counterparty = Directoare. Counterparties.Find By Details("TIN", "0777121211"); AccountObject = Account.GetObject(); CounterpartyObject.Name = AbbrLP(CounterpartyObject.Name); AccountObject.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 structura Angajat conțin numele, prenumele și patronimele angajatului. Obțineți un șir cu numele de familie și inițialele.

NameInitial = Lev(Employee.Name, 1); Patronimic Initial = Leu(Angajat. Patronimic, 1); FullName = Employee.LastName + " " + FirstName Initial + "." + Inițiala din mijloc + ".";

Dreapta

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

Exemplul 7. Lăsați o dată în formatul „aaaammzz” să fie scrisă la sfârșitul unei variabile șir, obțineți un șir cu data și convertiți-l în tip Data.

String = „Data curentă: 20170910”; StringDate = Drepturi (String, 8); Data = Data(StringDate);

miercuri

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

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

String = „Regiune: 99 Moscova”; Regiune = Avg(String, 9, 2);

PageFind

StrFind(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) . Caută un subșir specificat într-un șir, returnând numărul de poziție al primului caracter al subșirului găsit. Să ne uităm la parametrii acestei funcții:

  • Linia. șir sursă;
  • Căutare subșir. Căutare subșir;
  • Direcția de căutare. Specifică direcția de căutare a unui subșir într-un șir. Poate lua valori:
    • Căutare Direcție. De la început;
    • Căutare.Sfârșit direcția;
  • Poziția inițială. Specifică poziția în șir de la care începe căutarea;
  • NumberOccurrence. Specifică numărul de apariție al subșirului căutat în șirul sursă.

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

PositionNumber = StrFind("Bună lume!", "și", SearchDirection.End); Raport (Număr Poziție);

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

VReg

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

Exemplul 10: Convertiți șirul „hello world!” la majuscule.

StringVreg = VReg("bună lume!"); Raport (StringVreg);

Rezultatul executării acestui cod va fi afișarea liniei „HELLO WORLD!”

NReg

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

Exemplul 11: Convertiți șirul „HELLO WORLD!” la litere mici.

StringNreg = NReg("HELLO WORLD!"); Raport (StringVreg);

Rezultatul executării acestui cod va fi afișarea liniei „hello world!”

Treg

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

Exemplul 12: Scrieți cu majuscule primele litere ale cuvintelor din rândul „hello world!”

StringTreg = TReg("bună lume!"); Raport (StringTreg);

Rezultatul executării acestui cod va fi afișarea liniei „Hello World!”

Simbol

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

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

StringWithStars = Simbol("9733")+"Bună lume!"+Simbol ("9733"); Raport (StringWithStars);

Rezultatul executării acestui cod va fi afișarea liniei „★Hello World!”

Cod simbol

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

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

String = „Bună lume!”; CharacterCode = CharacterCode(String, StrLength(String)); Notify(CharacterCode);

Rezultatul executării acestui cod va fi afișarea codului simbol „!” - 33.

Linie goală

Linie goală (<Строка>) . Verifică dacă șirul constă doar din caractere nesemnificative, adică dacă este gol.

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

Gol = EmptyString(" "); Raport (Gol);

Rezultatul executării acestui cod va fi afișarea cuvântului „Da” (o expresie șir de valoare logică Adevărat).

Înlocuire pagină

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

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

String = StrReplace("Bună lume!", "Lumea", "Prieteni"); Raport (Șir);

Rezultatul executării acestui cod va fi afișarea liniei „Salut prieteni!”

StrNumberLines

StrNumberRow(<Строка>) . Vă permite să numărați numărul de linii dintr-un șir cu mai multe linii. Pentru a merge la o nouă linie în 1s 8, utilizați simbolul PS(caracter nou linie).

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

Number = StrNumberString("Prima linie"+Caractere.PS +"A doua linie"+Simboluri.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 o linie într-un șir de mai multe linii 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 = "Prima linie" + Simboluri. PS + "A doua linie" + Simboluri. PS + "A treia linie"; LastRow = StrGetRow(Text, StrNumberLines(Text)); Raport (LastLine);

Rezultatul executării acestui cod va fi afișarea liniei „Third Line”.

PageNumberOccurrence

StrNumberOccurrences(<Строка>, <ПодстрокаПоиска>) . Returnează numărul de apariții ale subșirului specificat într-un șir. Funcția este sensibilă la majuscule și minuscule.

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

Linie = „Linii în 1s 8.3 și 8.2”; NumberOccurrences = StrNumberOccurrences(Vreg(String), "C"); Raport (Număr Apariții);

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

PageStartsWith

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

Exemplul 20. Determinați dacă TIN-ul contrapărții selectate începe cu numărul 1. Introduceți variabila Contrapartidă Contrapartide.

TIN = Counterparty.TIN; StartsUNits = StrStartsWith(TIN, "1"); If Starts with units Then //Codul dvs. EndIf;

PageEndsOn

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

Exemplul 21. Determinați dacă TIN-ul contrapărții selectate se termină cu numărul 2. Introduceți variabila Contrapartidă este stocată o referință la un element de director Contrapartide.

TIN = Counterparty.TIN; EndsWithTwo = StrEndsWith(TIN, „2”); If EndsInTwo Then //Codul dvs. EndIf;

PageSplit

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

Exemplul 22. Să avem un șir care conține numere separate prin simbolul „;”, obținem o matrice de numere din șir.

String = "1; 2; 3"; Array = StrDivide(String, ";"); Pentru Count = 0 By Array.Quantity() - 1 Cycle Attempt Array[Count] = Number(AbbrLP(Array[Count])); Exception Array[Sch] = 0; EndAttemptsEndCycle;

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

PageConnect

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

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

Pentru cont = 0 By Array.Quantity() - 1 Cycle Array[Act] = String(Array[Act]); EndCycle; Rând = StrConnect(Matrice, "; ");

Capacitățile 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ă chiar în platformă. Astăzi ne vom uita la 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 un caracter de ghilimele într-o valoare constantă de șir 1C, atunci trebuie să-l dublați „”

Variabilă = „Bună, lume”!;

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

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

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

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

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! ""; ro=""Bună, lume! """;

Dacă utilizați linia 1C formată astfel 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 utilizeze pe cea dorită, trebuie să utilizați funcția НStr():

//corect pentru configurațiile bilingve
Raport(NStr(Variabilă));

Recuzită cu linie tip 1C

Atributul este un câmp din directorul/documentul 1C. Diferă de o variabilă dintr-un program în limbajul 1C prin faptul că pentru atribut este indicat cu precizie tipul acesteia (număr, șir 1C etc.). Dacă aveți nevoie să vă reîmprospătați memoria despre ce este o recuzită, urmăriți lecția.

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

Liniile 1C au lungime nelimitată (indicată 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 cele limitate.

De aceea, utilizarea șirurilor 1C de lungime nelimitată are limitările sale - nu este posibil să le folosiți peste tot. De exemplu, nu este permis ca număr de document, cod de referință sau măsurare.

Lucrul cu șiruri 1C

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

  • AbbrLP („Incredibil, dar adevărat!”)
    Elimină spațiile suplimentare din linia 1C. Poate fi folosit și pentru a converti orice tip într-un șir 1C (de exemplu, numere).
  • Variabilă = "Vasya" + AbbrLP ("plus") + "Olya"; //va fi „Vasya plus Olya”
    Un exemplu de însumare a mai multor valori de șir 1C. Rezultatul va fi o linie 1C.
  • Variabilă = Lev(„Muzică”, 2); //va fi "Mu"
    Variabilă = Mediu(„Muzică”, 2, 2); //va exista „amenințare”
    Variabilă = Drepturi ("Muzică", 2); //va fi "ka"
    Diverse opțiuni pentru obținerea unui subșir dintr-un șir 1C.
  • Variabila = Find("Muzică", "zy"); //vor fi 3
    Căutați un subșir în șirul 1C, începând cu caracterul 1.
  • Variabilă = StrLength(„Muzică”); //vor fi 6
    Returnează numărul de caractere din linia 1C.
  • Raport ("Bună ziua") //în fereastra de mesaje din partea de jos a ferestrei 1C
    Alertă(„Bună ziua”) //dialog pop-up
    Stare(„Bună ziua”) //în linia de afișare a stării din stânga jos
    .

Aducerea 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șierele în acest format (docx și, respectiv, xlsx, schimbă extensia în zip, deschide într-un 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(). Puteți utiliza funcția REPRESENTATION() în corpul cererii. Rezultatul acțiunii lor este același - ei generează o reprezentare șir a oricărui obiect 1C pentru utilizator.

Pentru un director implicit, acesta va fi numele acestuia. 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.

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

3. Există o modalitate proprie 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 alți 1C îl înțelege, ceea ce face ușoară utilizarea lui pentru schimbul între bazele de date 1C.

Rând = ValueInRowInt(Value1C); //obține șirul 1C din valoarea 1C
ValueVFile("C:\MyFile.txt", Value1C); //o altă opțiune, obținem un fișier cu un șir salvat din valoarea 1C
Value1C = ValueFromStringInt(String); //înapoi de la linia 1C
Value1C = ValueFile("C:\MyFile.txt"); //înapoi din fișier

Editarea liniilor 1C pe formular

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

1. Cea mai ușoară modalitate este de a solicita intrarea unei linii 1C la cerere. Această metodă este folosită atunci când predați programarea 1C; în viață este folosită mult mai rar (dar este folosit!).

Variabila = "";
Rând = EnterValue(Variabilă, „Introduceți numele complet”);

2. Pentru a afișa detaliile unui obiect 1C (director/document) sau detalii de formular (vezi), cel mai des este folosit un câmp de introducere. Acesta este cel mai comun instrument din 1C pentru ca utilizatorul să lucreze cu câmpuri de editare.

3. Capacitățile câmpului de intrare pot fi extinse (a se vedea proprietățile câmpului de intrare, faceți clic dreapta pe el, mai multe detalii):

  • Casetă de selectare Modul de editare multilinie
  • Casetă de selectare Editare avansată (disponibilă dacă caseta de selectare anterioară este bifată)
  • Casetă de selectare Mod parolă (vezi).

4. Dacă toate capabilitățile câmpului de intrare nu sunt suficiente pentru dvs., 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 său de funcționare – proprietatea Extensie.

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

Form Elements.ElementNameTextDocumentField.SetText(StringValue); //aici ValueString este textul primit, de exemplu, de la atribut

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

ValueString = FormElements.ElementNameTextDocumentField.GetText(); //ValoareLinia aici este atributul în care salvăm valoarea

5. În versiunea 1C 8.2.11, în formele gestionate, a apărut o nouă opțiune pentru reprezentarea unei linii 1C - câmpul Document formatat.


Asemănător câmpului unui document text, trebuie să îl setați când îl deschideți și să îl notați când îl salvați singur folosind programul.

  • În obiectul 1C a cărui formă o creăm (director, document, procesare etc.) - adăugați un atribut cu tipul Value Storage
  • În funcția OnReadOnServer() setăm textul din atribut

    //aici Atributul este atributul adăugat al obiectului 1C
    //aici FormattedDocument este numele câmpului din formular pentru editare
    &Pe server

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

  • În funcția BeforeWritingOnServer() sau folosind butonul, vom scrie textul din câmp

    &Pe server
    Procedură la ReadingOnServer (CurrentObject)
    CurrentObject.Props = NewValueStorage(FormattedDocument);
    Sfârșitul procedurii

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

Tastați valori variabile 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 insemna " Cuvântul 1 Cuvântul 2″.

În plus, sistemele 1C:Enterprise 8 oferă funcții pentru lucrul cu șiruri. Să ne uităm la cele principale:

EnterString(<Строка>, <Подсказка>, <Длина>, <Многострочность>) — funcția este concepută pentru 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 - acesta este titlul casetei de dialog. Parametru <Длина> opțional, arată lungimea maximă a șirului de intrare. Implicit la zero, ceea ce înseamnă lungime nelimitată. Parametru <Многострочность> opțional. Definește modul de introducere a textului pe mai multe linii: Adevărat—introducerea textului pe mai multe linii cu separatoare de linii; False - introduceți un șir simplu.

Puteți introduce un șir dacă cunoașteți codul caracterului în Unicode:

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

Literă= Simbol(1103) ; // eu

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

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

Funcții de conversie a majusculei textului:

VReg(<Строка>) — Convertește toate caracterele dintr-un șir în majuscule.

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

TReg(<Строка>) — convertește toate caracterele din șir în majuscule pentru titlu. 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

StrFind(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) — găsește numărul de caracter al apariției subșirului de căutare, numărul apariției 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 = Str Find ( "Defensivitate", „despre” ,Direcția de căutare. De la Start, 1, 4); // 7

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

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

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

StrNumberOccurrences(<Строка>, <ПодстрокаПоиска>) – Calculează numărul de apariții ale subșirului de căutare în șirul sursă.

StrNumberOccurrences ( „Studiați, studiați și studiați din nou”, "studiu" , "" ); // 3

StrTemplate(<Строка>, <ЗначениеПодстановки1>…<ЗначениеПодстановкиN> — înlocuiește parametrii într-un șir după număr. Linia trebuie să conțină marcatori de substituție de forma: „%1..%N”. Numerotarea markerului începe de la 1. Dacă valoarea parametrului Nedefinit, un șir gol este înlocuit.

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

Funcții de conversie a șirurilor de caractere:

Un leu(<Строка>, <ЧислоСимволов>) – returnează primele caractere ale unui șir.

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

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

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

Abreviere(<Строка>) — decupează caracterele nesemnificative din dreapta ultimului caracter semnificativ din rând.

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

StrGetString(<Строка>, <НомерСтроки>) – Obține un șir de mai multe linii după număr.

Alte caracteristici:

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

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

StrCompare(<Строка1>, <Строка2> ) – compară două șiruri de caractere fără a ține seama de majuscule și minuscule. O funcție funcționează similar cu 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" ); // 1



Ți-a plăcut articolul? Împărtășește-l