Nove funkcije za rad sa stringovima. Nove funkcije za rad sa stringovima Rad sa stringovima u 1c

Redovi u 1C 8.3 u ugrađenom jeziku 1C predstavljaju vrijednosti primitivnog tipa Linija. Vrijednosti ovog tipa sadrže Unicode niz proizvoljne dužine. Varijable tipa string su skup znakova zatvorenih u navodnike.

Primjer 1. Kreirajmo varijablu niza sa tekstom.

StringVariable = "Zdravo svijete!";

Funkcije za rad sa nizovima u 1s 8.3

IN ovaj odeljak Bit će date glavne funkcije koje vam omogućavaju da mijenjate linije u 1c ili analizirate informacije sadržane u njima.

StrLength

Snaga(<Строка>) . Vraća broj znakova sadržanih u nizu koji je proslijeđen kao parametar.

Primjer 2. Izbrojimo broj znakova u retku “Zdravo svijete!”

String = "Zdravo svijete!"; Broj znakova = StrLength(String); Izvještaj (broj znakova);

Rezultat izvršavanja ovog koda će biti prikaz broja znakova u redu: 11.

AbbrL

AbbrL(<Строка>) . Sječe znakove koji nisu značajni lijevo od prvog značajnog znaka u nizu.
Manji likovi:

  • prostor;
  • neprekidni prostor;
  • tabela;
  • povrat kočije;
  • prijevod redaka;
  • prevod obrasca (stranica).

Primjer 3. Uklonite sve razmake s lijeve strane linije "svijet!" i dodajte mu red "Zdravo".

String = Skraćenica("svijet!"); String = "Zdravo"+String; Izvještaj(String);

Rezultat izvršavanja ovog koda će biti prikaz reda „Zdravo, svijete“ na ekranu.

Skraćeno

Skraćenica(<Строка>) . Sječe nebitne znakove desno od prvog značajnog znaka u nizu.

Primjer 4. Formirajte iz redova “Zdravo” i “mir!” fraza "Zdravo svijete!"

Linija = Skraćenica("Zdravo ")+" "+ Skraćenica(" svijet!"); Izvještaj(String);

AbbrLP

AbbrLP(<Строка>) . Sječe znakove koji nisu značajni desno od prvog značajnog znaka u nizu, a također skraćuje nebitne znakove lijevo od prvog značajnog znaka u nizu. Ova funkcija koristi se češće od prethodna dva, jer je univerzalniji.

Primjer 5. Uklonite beznačajne znakove s lijeve i desne strane u nazivu druge strane.

Counterparty = Imenici. Pronađi po detaljima("TIN", "0777121211"); AccountObject = Account.GetObject(); CounterpartyObject.Name = AbbrLP(CounterpartyObject.Name); AccountObject.Write();

lav

lav (<Строка>, <ЧислоСимволов>) . Dobiva prve znakove niza, broj znakova je naveden u parametru Broj znakova.

Primjer 6. Neka u strukturi Zaposleni sadrži ime, prezime i prezime zaposlenog. Nabavite niz s prezimenom i inicijalima.

ImeInicijal = Lev(ime zaposlenog, 1); Patronim Inicijal = Lav(Zaposleni. Patronim, 1); Puno ime = Employee.Prezime + " " + Početno ime + "." + Srednje inicijal + ".";

U redu

tačno (<Строка>, <ЧислоСимволов>) . Dobiva posljednje znakove niza, broj znakova specificiranih u parametru Broj znakova. Ako navedeni broj znakova premašuje dužinu niza, onda se vraća cijeli niz.

Primjer 7. Neka datum u formatu “ggggmmdd” bude napisan na kraju string varijable, dobijete string s datumom i pretvorite ga u tip datum.

String = " Trenutni datum: 20170910"; StringDate = Prava (niz, 8); Datum = Datum (Datum niza);

srijeda

srijeda(<Строка>, <НачальныйНомер>, <ЧислоСимволов>) . Dobiva podniz iz niza koji je proslijeđen kao parametar Linija, počevši od znaka čiji je broj naveden u parametru InitialNumber i dužina predata u parametar Broj znakova. Numeracija znakova u retku počinje od 1. Ako je u parametru InitialNumber specificirana je vrijednost manja ili jednaka nuli, tada parametar uzima vrijednost 1. Ako je parametar Broj znakova nije navedeno, tada se biraju znakovi do kraja reda.

Primer 8. Neka string varijabla počevši od devete pozicije sadrži kod regiona, trebalo bi da ga dobijete i upišete u poseban red.

String = "Regija: 99 Moskva"; Region = Prosjek (niz, 9, 2);

PageFind

StrFind(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) . Traži određeni podniz u nizu, vraćajući broj pozicije prvog znaka pronađenog podniza. Pogledajmo parametre ove funkcije:

  • Linija. Izvorni niz;
  • Pretraži podniz. Search substring;
  • Smjer pretraživanja. Određuje smjer traženja podniza u nizu. Može uzeti vrijednosti:
    • Smjer pretraživanja.Od početka;
    • Search.End Direction;
  • InitialPosition. Određuje poziciju u nizu na kojoj pretraga počinje;
  • NumberOccurrences. Određuje broj pojavljivanja traženog podniza u izvornom nizu.

Primjer 9. U redu “Zdravo svijete!” Odredite poziciju posljednjeg pojavljivanja znaka "i".

PositionNumber = StrFind("Zdravo svijet!", "i", SearchDirection.End); Izvještaj (broj pozicije);

Rezultat izvršavanja ovog koda će biti prikaz broja posljednjeg pojavljivanja simbola “i”: 9.

VReg

VReg(<Строка>) . Pretvara sve znakove u navedenom nizu u 1s8 u velika slova.

Primjer 10: Konvertirajte string "zdravo svijet!" na velika slova.

StringVreg = VReg("zdravo svijet!"); Izvještaj(StringVreg);

Rezultat izvršavanja ovog koda će biti prikaz reda "ZDRAVO SVIJETE!"

NReg

NReg(<Строка>) . Pretvara sve znakove u navedenom nizu u 1s8 u mala slova.

Primjer 11: Konvertirajte string "HELLO WORLD!" na mala slova.

StringNreg = NReg("HELLO WORLD!"); Izvještaj(StringVreg);

Rezultat izvršavanja ovog koda će biti prikaz reda "zdravo svijete!"

Treg

TReg(<Строка>) . Konvertuje niz na sljedeći način: prvi znak svake riječi se pretvara u velika slova, a preostali znakovi riječi se pretvaraju u mala slova.

Primjer 12: Napišite velika slova riječi u redu "zdravo svijete!"

StringTreg = TReg("zdravo svijet!"); Izvještaj(StringTreg);

Rezultat izvršavanja ovog koda će biti prikaz reda "Hello World!"

Simbol

simbol(<КодСимвола>) . Dobiva znak pomoću svog Unicode koda.

Primjer 13. Dodajte lijevo i desno u red “Hello World!” simbol ★

StringWithStars = Symbol("9733")+"Hello World!"+Symbol("9733"); Izvještaj(StringWithStars);

Rezultat izvršavanja ovog koda će biti prikaz linije “★Hello World!★”

Šifra simbola

SymbolCode(<Строка>, <НомерСимвола>) . Dobiva kod Unicode karaktera iz niza specificiranog u prvom parametru, koji se nalazi na poziciji navedenoj u drugom parametru.

Primjer 14. Saznajte šifru posljednjeg znaka u redu “Hello World!”

String = "Hello World!"; CharacterCode = CharacterCode(String, StrLength(String)); Obavijesti (CharacterCode);

Rezultat izvršavanja ovog koda će biti prikaz koda simbola “!” - 33.

Prazna linija

Prazan red (<Строка>) . Provjerava da li se string sastoji samo od beznačajnih znakova, odnosno da li je prazan.

Primjer 15. Provjerite da li je string koji se sastoji od tri razmaka prazan.

Empty = EmptyString(" "); Izvještaj (prazan);

Rezultat izvršavanja ovog koda će biti prikaz riječi „Da“ (izraz niza logičke vrijednosti Istinito).

PageReplace

StrReplace(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) . Pronalazi sva pojavljivanja podniza za pretraživanje u izvornom nizu i zamjenjuje ga zamjenskim podnizom.

Primjer 16. U retku “Hello World!” zamijenite riječ “Mir” riječju “Prijatelji”.

String = StrReplace("Hello World!", "World", "Friends"); Izvještaj(String);

Rezultat izvršavanja ovog koda će biti prikaz reda „Zdravo prijatelji!“

StrNumberLines

StrNumberRow(<Строка>) . Omogućava vam da prebrojite broj redova u višelinijskom nizu. Ici nova linija u 1s 8 se koristi simbol PS(znak za novi red).

Primjer 17. Odredite broj redova u tekstu:
"Prva linija
Druga linija
Treća linija"

Broj = StrNumberString("Prvi red"+Znakovi.PS +"Drugi red"+Simboli.PS +"Treći red"); Izvještaj (broj);

Rezultat izvršavanja ovog koda će biti prikaz broja redova u tekstu: 3

StrGetString

StrGetString(<Строка>, <НомерСтроки>) . Dobiva red u višelinijskom nizu po broju. Numerisanje redova počinje od 1.

Primjer 18. Dobijte zadnji red u tekstu:
"Prva linija
Druga linija
Treća linija"

Tekst = "Prvi red" + PS + "Drugi red" + PS + "Treći red". LastRow = StrGetRow(Tekst, StrBroj linija(Tekst)); Izvještaj (posljednja linija);

Rezultat izvršavanja ovog koda će biti prikaz linije “Third Line”.

PageNumberOccurrences

StrNumberOccurrences(<Строка>, <ПодстрокаПоиска>) . Vraća broj pojavljivanja navedenog podniza u nizu. Funkcija je osjetljiva na velika i mala slova.

Primjer 19. Odredite koliko se puta slovo “c” pojavljuje u redu “Linije u 1s 8.3 i 8.2”, bez obzira na veliko i malo.

Linija = "Linije u 1s 8.3 i 8.2"; NumberOccurrences = StrNumberOccurrences(Vreg(String), "Sa"); Izvještaj (broj pojavljivanja);

Rezultat izvršavanja ovog koda će biti prikaz broja pojavljivanja: 2.

PageStartsWith

StrStartsWith(<Строка>, <СтрокаПоиска>) . Provjerava da li niz proslijeđen u prvom parametru počinje nizom u drugom parametru.

Primjer 20. Odredite da li PIB odabrane druge ugovorne strane počinje brojem 1. Upišite varijablu Counterparty Counterparties.

TIN = Counterparty.TIN; StartsUNits = StrStartsWith(TIN, "1"); Ako počinje s jedinicama Then //Vaš kod EndIf;

PageEndsOn

StrEndsWith(<Строка>, <СтрокаПоиска>) . Provjerava da li se niz proslijeđen u prvom parametru završava nizom u drugom parametru.

Primjer 21. Odredite da li se PIB odabrane druge ugovorne strane završava brojem 2. Upišite varijablu Counterparty pohranjuje se referenca na element direktorija Counterparties.

TIN = Counterparty.TIN; EndsWithTwo = StrEndsWith(TIN, "2"); If EndsInTwo Then //Vaš kod EndIf;

PageSplit

StrDivide(<Строка>, <Разделитель>, <ВключатьПустые>) . Razdvaja string na dijelove koristeći specificirane znakove za razdvajanje i upisuje rezultirajuće nizove u niz. Prvi parametar pohranjuje izvorni niz, drugi sadrži niz koji sadrži separator, treći pokazuje da li prazne nizove treba upisati u niz (podrazumevano Istinito).

Primjer 22. Neka imamo niz koji sadrži brojeve odvojene simbolom “;”, dobijemo niz brojeva iz niza.

String = "1; 2; 3"; Niz = StrDivide(String, ";"); Za Count = 0 Po Array.Quantity() - 1 Ciklus pokušaj Niz[Broj] = Broj(AbbrLP(Niz[Broj])); Niz izuzetaka[Sch] = 0; EndAttemptsEndCycle;

Kao rezultat izvršenja, dobiće se niz s brojevima od 1 do 3.

PageConnect

StrConnect(<Строки>, <Разделитель>) . Pretvara niz nizova iz prvog parametra u niz koji sadrži sve elemente niza razdvojene graničnikom navedenim u drugom parametru.

Primjer 23. Koristeći niz brojeva iz prethodnog primjera, dobiti originalni niz.

Za račun = 0 Po Array.Quantity() - 1 Ciklus Niz[Akt] = String(Niz[Akt]); EndCycle; Red = StrConnect(Niz, ";");

TO osnovne sposobnosti Programski jezici obično uključuju rad sa brojevima i nizovima. Obično su ove karakteristike tvrdo kodirane u kod kompajlera (ili se implementiraju „bazne“ klase programskog jezika).

U 1C, mogućnost rada sa stringovima je programirana u samoj platformi. Danas ćemo pogledati karakteristike rada sa 1C stringovima u programima na ugrađenom 1C jeziku.

Vrijednost linije 1C

1. Počnimo s najjednostavnijim. Kreiranje varijable i dodjeljivanje konstantne vrijednosti niza izgleda ovako u 1C:

Variable = "Zdravo, svijet!";

Ako trebate navesti znak navodnika u konstantnoj vrijednosti stringa 1C, morate ga udvostručiti ""

Varijabla = "Zdravo, svijete"!;

2. Prijelom reda 1C može se specificirati na dva načina odjednom. Prvi je korištenje simbola |

Variable = "Zdravo,
| svijet! ";

Drugi je korištenje sistemske numeracije Symbols. Omogućava vam da dodate i 1C prijelome reda i druge znakove koji se ne štampaju, kao što je TAB.

Varijabla = "Zdravo" + Simboli.PS + "mir!";

3. Konfiguracije u 1C mogu se razvijati ne samo za jedan jezik (ruski, engleski ili drugi) - već istovremeno za nekoliko jezika. U ovom slučaju, jezik koji se trenutno koristi se odabire na dnu prozora 1C.

Lista jezika se nalazi u prozoru za konfiguraciju u grani Općenito/Jezici. Svaki jezik ima kratak identifikator kao što je ru ili eng.

Jasno je da prilikom programiranja takve konfiguracije 1C linije mogu biti i višejezične. Da biste to učinili, moguće je kreirati takvu 1C liniju navođenjem kroz; opcije prema identifikatoru jezika:

Variable = "ru=""Zdravo, svijete! ""; en=""Zdravo, svijete! """;

Ako koristite liniju 1C formiranu na ovaj način kao i obično, to će biti ono što je napisano u njoj. Da bi ga sistem podijelio na dvije opcije i koristio željenu, potrebno je koristiti funkciju NStr():

//ispravan za dvojezične konfiguracije
Izvještaj(NStr(Varijabla));

Rekviziti sa linijom tipa 1C

Atribut je polje u 1C direktoriju/dokumentu. Razlikuje se od varijable u programu na 1C jeziku po tome što je za atribut precizno naznačen njen tip (broj, 1C niz, itd.). Ako trebate osvježiti sjećanje na to što je rekvizit, pogledajte lekciju dalje.

Ako navedete vrstu atributa - red 1C, tada morate dodatno navesti parametre.

1C linije dolaze u neograničenoj dužini (označeno kao dužina = 0) i ograničenoj dužini, što ukazuje na tačan broj znakova. 1C linije neograničene dužine pohranjuju se u zasebno SQL tabela, pa je njihova upotreba manje produktivna nego ograničena.

Zato upotreba 1C nizova neograničene dužine ima svoja ograničenja - nije ih moguće koristiti svuda. Na primjer, nije dozvoljeno kao broj dokumenta, referentni kod ili mjera.

Rad sa 1C žicama

Postoji nekoliko ugrađenih funkcija 1C platforme za rad sa stringovima.

  • AbbrLP (“Nevjerovatno, ali istinito!”)
    Uklanja se iz linije 1C dodatni prostori. Također se može koristiti za pretvaranje bilo koje vrste u 1C niz (na primjer, brojeve).
  • Varijabla = "Vasya" + AbbrLP(" plus") + "Olya"; // biće "Vasya plus Olya"
    Primjer zbrajanja nekoliko vrijednosti niza 1C. Rezultat će biti jedan red 1C.
  • Varijabla = Lev("Muzika", 2); //bit će "Mu"
    Varijabla = Medium("Muzika", 2, 2); //postat će "prijetnja"
    Varijabla = Prava("Muzika", 2); // biće "ka"
    Različite opcije za dobijanje podniza iz 1C niza.
  • Varijabla = Find("Muzika", "zy"); //biće 3
    Potražite podniz u nizu 1C, počevši od znaka 1.
  • Varijabla = StrLength("Muzika"); //biće 6
    Vraća broj znakova u liniji 1C.
  • Report("Hello") //u prozoru za poruke na dnu prozora 1C
    Alert("Hello") //popup dijalog
    Status("Zdravo") //u redu prikaza statusa u donjem lijevom kutu
    .

Dovođenje objekata na liniju 1C

Kao što znate, trenutno najpopularniji format za razmjenu strukturiranih informacija je XML. Čak najnoviju verziju GOSPOĐA Office Word i Excel čuvaju datoteke u ovom formatu (docx i xlsx, respektivno, mijenjaju ekstenziju u zip, otvaraju u arhiveru).

1C platforma za razmjenu podataka nudi nekoliko opcija, od kojih je glavna također XML.

1. Najjednostavniji metod je korištenje funkcije Abbreviation() ili String(). Možete koristiti funkciju REPRESENTATION() u tijelu zahtjeva. Rezultat njihove akcije je isti - oni generiraju string reprezentaciju bilo kojeg 1C objekta za korisnika.

Za direktorij po defaultu, ovo će biti njegovo ime. Za dokument – ​​naziv dokumenta, broj i datum.

2. Bilo koji 1C objekt (sa ograničenjima) može se pretvoriti u XML i obrnuto. Proces konverzije se naziva serijalizacija.

StringViewXml = XMLString(Vrijednost); //dobijemo XML iz 1C vrijednosti
Value1C = XMLValue(Type("DirectoryLink.Nomenclature"),TypeStringXml); //dobijamo 1C vrijednost iz XML niza, morate navesti 1C tip koji treba primiti

3. Postoji vlastiti način 1C platforme za pretvaranje bilo kojeg 1C objekta u string. Migrirao je sa verzije 1C 7.7. Ovaj format ne razumiju drugi programi, ali ga drugi 1C razumiju, što ga čini lakim za razmjenu između 1C baza podataka.

Red = ValueInRowInt(Value1C); //dobijamo string 1C iz vrijednosti 1C
ValueVFile("C:\MyFile.txt", Value1C); //druga opcija, dobijamo datoteku sa sačuvanim nizom iz 1C vrijednosti
Value1C = ValueFromStringInt(String); //povratak sa linije 1C
Value1C = ValueFile("C:\MyFile.txt"); //povratak iz datoteke

Uređivanje 1C linija na obrascu

Pored rada sa 1C stringovima u programu na 1C jeziku, naravno da bih voleo da korisnik može da ih uređuje. Za to postoji nekoliko mogućnosti:

1. Najlakši način je zatražiti unos 1C linije na zahtjev. Ova metoda se koristi pri podučavanju 1C programiranja u životu se koristi mnogo rjeđe (ali se koristi!).

Varijabla = "";
Red = EnterValue(Variable, "Unesite puno ime");

2. Za prikaz detalja 1C objekta (direktorij/dokument) ili detalje obrasca (vidi), najčešće se koristi polje za unos. Ovo je najčešći alat u 1C za korisnika za rad s poljima za uređivanje.

3. Mogućnosti polja za unos se mogu proširiti (pogledajte svojstva polja za unos, desni klik o njemu, više detalja):

  • Polje za potvrdu Višelinijski način uređivanja
  • Potvrdni okvir za napredno uređivanje (dostupno ako je prethodno potvrđen okvir za potvrdu)
  • Potvrdni okvir Režim lozinke (vidi).

4. Ako vam sve mogućnosti polja za unos nisu dovoljne, postoji ugrađeni uređivač. Da biste ga dodali u obrazac, potrebno je da dodate polje u kontrolni meni Obrazac/Umetanje tekstualni dokument. U njegovim svojstvima možete odrediti njegov način rada – svojstvo Extension.

Polje tekstualnog dokumenta ne može se direktno povezati s podacima. Potrebno je napisati funkciju u OnOpen() rukovatelju događaja oblika (pogledajte):

Elementi obrasca.ElementNameTextDocumentField.SetText(StringValue); //ovdje ValueString je tekst primljen, na primjer, iz atributa

I u rukovatelju spremanja - na primjer, u dugme Sačuvaj - dodajte spremanje:

ValueString = FormElements.ElementNameTextDocumentField.GetText(); //ValueLinija ovdje je atribut u koji pohranjujemo vrijednost

5. U 1C verziji 8.2.11, in kontrolisane forme, pojavio se nova prilika 1C linijski prikaz – Formatirano polje dokumenta.


Slično kao i polje tekstualnog dokumenta, morate ga postaviti prilikom otvaranja i zapisati kada ga sami pohranjujete pomoću programa.

  • U 1C objekt čiju formu kreiramo (direktorij, dokument, obrada itd.) - dodajte atribut sa tipom Value Storage
  • U funkciji OnReadOnServer() postavljamo tekst iz atributa

    //ovdje je atribut dodani atribut 1C objekta
    //ovdje FormattedDocument je naziv polja na obrascu za uređivanje
    &Na serveru

    FormattedDocument = CurrentObject.Attributes.Get();
    EndProcedure

  • U funkciji BeforeWritingOnServer() ili pomoću dugmeta upisaćemo tekst iz polja

    &Na serveru
    Procedura prilikom čitanja na serveru (trenutni objekt)
    CurrentObject.Props = NewValueStorage(FormattedDocument);
    EndProcedure

Postoji nekoliko mehanizama za rad sa stringovima u 1C upitima. Prvo, linije se mogu dodati. Drugo, možete uzeti podniz iz niza. Treće, nizovi se mogu porediti, uključujući i uzorak. To je vjerovatno sve što se može uraditi sa žicama.

Dodavanje niza

Da biste dodali redove u upit, koristi se operacija “+”. Možete dodati samo nizove ograničene dužine.

SELECT "Naziv: " + Naziv AS Kolona 1 IZ Imenika Counterparties GDJE Counterparties

Funkcija podniza

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

Analog funkcije Environment() iz objektnog modela. Funkcija Substring() može se primijeniti na nizove podataka i omogućava vam da odaberete fragment <Строки> , počevši od broja karaktera <НачальнаяПозиция> (znakovi u redu su numerisani počevši od 1) i dužina <Длина> karaktera. Rezultat izračunavanja funkcije ima tip stringa promjenjive dužine, a dužina će se smatrati neograničenom ako <Строка> ima neograničenu dužinu i parametar <Длина> nije konstanta ili veća od 1024.

Ako je dužina niza manja od navedene u drugom parametru, funkcija će vratiti prazan niz.

Pažnja! Ne preporučuje se korištenje funkcije SUBSTRING() za pretvaranje nizova neograničene dužine u nizove ograničene dužine. Umjesto toga, bolje je koristiti cast operator EXPRESS().

Funkcija Slična

Ako se trebamo uvjeriti da atribut stringa ispunjava određene kriterije, uspoređujemo ga:

ODABIR Counterparts AS Kolona 1 IZ Imenika Counterparties GDJE Counterparts.

Ali šta ako vam treba suptilnije poređenje? Ne samo jednakost ili nejednakost, već sličnost s određenim obrascem? Upravo za to je stvorena SLIČNA funkcija.

LIKE — Operator za provjeru sličnosti niza sa uzorkom. Analog LIKE-a u SQL-u.

Operator SIMILAR vam omogućava da uporedite vrijednost izraza navedenog lijevo od njega sa nizom uzorka koji je specificiran desno. Vrijednost izraza mora biti tipa string. Ako vrijednost izraza odgovara uzorku, rezultat operatora će biti TRUE, u suprotnom će biti FALSE.

Sljedeći znakovi u nizu šablona su uslužni znakovi i imaju različito značenje od znakova niza:

  • % (procenat): niz koji sadrži bilo koji broj proizvoljnih znakova;
  • _ (donja crta): jedan proizvoljan znak;
  • […] (jedan ili više znakova u uglastim zagradama): svaki pojedinačni znak naveden unutar uglastih zagrada. Nabrajanje može sadržavati opsege, na primjer a-z, što znači proizvoljan znak uključen u raspon, uključujući krajeve raspona;
  • [^...] (u uglastim zagradama znak negacije iza kojeg slijedi jedan ili više znakova): bilo koji pojedinačni znak osim onih navedenih iza znaka negacije.

Bilo koji drugi simbol označava sam sebe i ne nosi nikakav dodatni teret. Ako jedan od navedenih znakova treba biti napisan kao sam, onda mu mora prethoditi<Спецсимвол>. Sebe<Спецсимвол>(bilo koji odgovarajući simbol) je definiran u istoj izjavi nakon ključna riječ POSEBNI SIMBOL.

String tip se nalazi u svim programskim jezicima. Primitivan je, a u 1C postoji mnogo funkcija za rad s njim. U ovom članku ćemo detaljnije pogledati razne načine rad sa tipovima nizova u 1C 8.3 i 8.2 koristeći primjere.

Linija

Da bi se varijabla bilo koje vrste pretvorila u string, postoji funkcija istog imena “String()”. Ulazni parametar će biti sama varijabla, čiji prikaz stringova se mora dobiti.

String(False) // vraća "Ne"
String(12345) // vraća "12,345"
String(CurrentDate()) //"07/21/2017 11:55:36″

Moguće je pretvoriti ne samo primitivne tipove u string, već i druge, na primjer, elemente direktorija i dokumenata.

SokrLP, SokrL, SokrP

Ulazni parametri ovih funkcija su varijabla tipa string. Funkcije uklanjaju beznačajne znakove (razmake, povratne znakove itd.): s lijeve i desne strane, samo s lijeve strane i samo s desne strane.

Skraćenica(" Razmaci će biti uklonjeni sa obe strane ") // "Razmaci će biti uklonjeni sa obe strane"
Skraćenica(" Razmaci na obje strane će biti uklonjeni ") // " Razmaci s lijeve strane će biti uklonjeni "
Skraćenica(" Razmaci sa obe strane će biti uklonjeni ") // " Razmaci sa desne strane će biti uklonjeni"

Leo, desno, srednje

Ove funkcije vam omogućavaju da skratite dio niza. Funkcija "Left()" će vratiti dio stringa sa njegove lijeve strane određene dužine. Funkcija "Right()" je slična, ali se izrezuje s desne strane. Funkcija “Avg()” vam omogućava da odredite broj karaktera iz kojeg će biti odabrana linija i njegovu dužinu.

Lev("String varijabla", 4) // vraća "Str"
Right("String varijabla", 7) // vraća "varijabla"
Medium("String varijabla", 2, 5) // vraća "troco"

StrLength

Funkcija određuje broj znakova koji su sadržani u varijabli stringa.

StrLength("Word") // rezultat izvršenja će biti broj 5

Nađi

Funkcija omogućava traženje dijela stringa u varijabli stringa. Povratna vrijednost će biti broj koji pokazuje poziciju početka pronađenog niza. Ako nije pronađeno podudaranje, vraća se nula.

Imajte na umu da je pretraga osjetljiva na velika i mala slova. Ako postoji više od jednog pojavljivanja podniza pretraživanja u originalnom nizu, funkcija će vratiti početak prvog pojavljivanja.

Find("jedan, dva, jedan, dva, tri", "dva") // funkcija će vratiti broj 6

Prazna linija

Korištenje ove funkcije vam omogućava da odredite da li je niz prazan. Manji znakovi kao što su razmak, povratak kočije i drugi se ne uzimaju u obzir.

EmptyString("Pupkin Vasily Ivanovich") // funkcija će vratiti vrijednost False
EmptyString(" ") // funkcija će vratiti vrijednost True

VReg, NReg, TReg

Ove funkcije su vrlo korisne kada se uspoređuju i pretvaraju niz varijabli. "Vreg()" će vratiti originalni niz velikim slovima, "HPreg()" malim slovima, a "TReg()" će ga formatirati tako da prvi znak svake pojedinačne riječi bude napisan velikim slovima, a svi sljedeći znakovi.

VReg("GENERALNI DIREKTOR") // povratna vrijednost - "GENERALNI DIREKTOR"
NReg(“CEO DIRECTOR”) // povratna vrijednost – “CEO”
TREG(“CEO DIREKTOR”) // povratna vrijednost – “Generalni direktor”

PageReplace

Ova funkcija je analogna zamjeni u uređivači teksta. Omogućava vam da zamijenite jedan karakter ili skup znakova drugim u string varijablama.

StrReplace("crveno, bijelo, žuto", ","", ";") // vraća "crveno; bijela; žuto"

StrNumberLines

Funkcija vam omogućava da odredite broj redova razdvojenih povratnim znakovima u tekstualnoj varijabli.

Petlja u primjeru ispod će proći kroz tri kruga jer će funkcija LineNumberRow vratiti vrijednost 3:

Za ind = 1 po StrBroj nizova ("Line1" + Symbols.PS + "Line2" + Symbols.PS + "Line3") Ciklus
<тело цикла>
EndCycle;

StrGetString

Ova funkcija radi s višerednim tekstom na isti način kao i prethodna. Omogućava vam da dobijete određeni string iz tekstualne varijable.

StrGetString("String1" + Characters.PS + "String2" + Characters.PS + "String3", 2) // vrati "String2"

PageNumberOccurrences

Funkcija broji broj pojavljivanja znaka ili podniza u nizu za pretraživanje.

StrNumberAttachments("a;b;c;d; ", ";") // funkcija će vratiti broj 4

Simbol i kod simbola

Ove funkcije vam omogućavaju da dobijete znak po njegovom kodu u Unicode kodiranju, kao i da odredite ovaj kod po samom znaku.

SymbolCode("A") // funkcija će vratiti broj 1,040
CharacterCode(1040) // funkcija će vratiti “A”

Uobičajeni zadaci pri radu sa stringovima

Povezivanje nizova

Za kombinovanje nekoliko nizova (za izvođenje konkatenacije), dovoljno je koristiti operator sabiranja.

„Linija 1″ + „Linija 2″ //rezultat dodavanja dva reda će biti „Linija 1 Linija 2”

Type Conversion

Da bi se tip pretvorio u string, na primjer, link na element direktorija, broj itd., dovoljno je koristiti funkciju “String()”. Funkcije poput “ScrLP()” će također pretvoriti varijable u string, ali odmah sa odsijecanjem beznačajnih znakova.

String(1000) // vraća "1.000"

Imajte na umu da kada konvertuje broj u niz, program automatski dodaje razmak koji razdvaja hiljadu. Da biste to izbjegli, možete koristiti sljedeće konstrukcije:

StrReplace(String(1000),Characters.NPP,"") // vraća "1000"

String(Format(1000,"HG=")) // vraća "1000"

Navodnici u nizu

Često ćete morati da se nosite sa potrebom da navedete navodnike u varijabli stringa. To može biti ili tekst zahtjeva napisan u konfiguratoru ili samo varijabla. Da biste riješili ovaj problem, trebate samo postaviti dva navodnika.

Header = String("Horns and Hooves LLC - to smo mi!") // će vratiti "Horns and Hooves LLC - to smo mi!"

Više redova, prijelom reda

Da biste kreirali višelinijski tekst, samo mu dodajte prijelome redaka (Symbols.PS).

MultilineText = “Prvi red” + Simboli.PS + “Drugi red”

Kako ukloniti razmake

Da biste uklonili razmake s desne ili lijeve strane, možete koristiti funkciju “ScrAP()” (kao i “ScrL()” i “ScrP()”):

StringNoSpaces = Skraćenica(" Mnogo slova ") // funkcija će vratiti vrijednost "Mnogo slova"

Ako nakon pretvaranja broja u niz morate ukloniti neprekidni prostori, koristite sljedeću konstrukciju:

StringNoSpaces = StrReplace(String(99999),Characters.NPP,"") // vraća "99999"

Programeri također često koriste sljedeću konstrukciju, koja vam omogućava da uklonite ili zamijenite drugim znakom sve razmake u tekstualnoj varijabli:

StringNoSpaces = StrReplace("zdravo","") // vraća "zdravo"

Poređenje struna međusobno

Možete uporediti pojmove sa uobičajenim znakom jednakosti. Poređenje je osjetljivo na velika i mala slova.

"Hello" = "hello" // vraća False
"Hello" = "Zdravo" // vraća True
"Hello" = "Zbogom" // će vratiti False

Dijeli