Kako podesiti pametne telefone i računare. Informativni portal
  • Dom
  • Windows 8
  • Zamijenite bilo koji znak u 1c direktoriju. Nove funkcije za rad sa stringovima

Zamijenite bilo koji znak u 1c direktoriju. Nove funkcije za rad sa stringovima

String je jedan od primitivnih tipova podataka u sistemima 1C:Enterprise 8. Varijable sa tipom linija sadrže tekst.

Unesite vrijednosti varijabli linija nalaze se u dvostrukim navodnicima. Može se dodati nekoliko varijabli ovog tipa.

Per1 = "Riječ 1" ;
Per2 = "Riječ 2" ;
Per3 = Per1 + " " + Per2 ;

Na kraju Per3će značiti " Riječ 1 Riječ 2″.

Pored toga, sistemi 1C:Enterprise 8 pružaju funkcije za rad sa stringovima. Pogledajmo glavne:

EnterString(<Строка>, <Подсказка>, <Длина>, <Многострочность>) — funkcija je dizajnirana da prikaže dijaloški okvir u kojem korisnik može odrediti vrijednost varijable tipa Linija. Parametar <Строка> je obavezan i sadrži ime varijable u koju će uneti niz biti upisan. Parametar <Подсказка> opciono - ovo je naslov dijaloškog okvira. Parametar <Длина> opciono, pokazuje maksimalnu dužinu ulaznog niza. Podrazumevano je nula, što znači neograničenu dužinu. Parametar <Многострочность> opciono. Definira višeredni način unosa teksta: Tačno—unos višerednog teksta sa separatorima redova; False - unesite jednostavan niz.

Možete unijeti niz ako znate kod znakova u Unicodeu:

simbol(<КодСимвола>) — kod se unosi kao broj.

Slovo= Simbol(1103) ; // I

Postoji i inverzna funkcija koja vam omogućava da saznate kod simbola.

SymbolCode(<Строка>, <НомерСимвола>) — vraća Unicode broj navedenog znaka kao broj.

Funkcije konverzije velikih i malih slova:

VReg(<Строка>) — Konvertuje sve znakove u nizu u velika slova.

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

TReg(<Строка>) — pretvara sve znakove u nizu u velika slova. Odnosno, prva slova u svim riječima se pretvaraju u velika, a preostala slova u mala.

Funkcije za traženje i zamjenu znakova u nizu:

Pronađi(<Строка>, <ПодстрокаПоиска>) — pronalazi broj karaktera pojavljivanja podniza pretraživanja. Na primjer:

Find ("String" , "oka" ) ; // 4

StrFind(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) — pronalazi broj karaktera pojavljivanja podniza pretraživanja, broj pojavljivanja je naznačen u odgovarajućem parametru. U ovom slučaju, pretraga počinje sa znakom čiji je broj naveden u parametru InitialPosition. Pretraživanje je moguće od početka ili kraja niza. Na primjer:

Broj4 pojavljivanja = Str Find ( "odbrana", "o" ,Smjer pretraživanja. Od početka, 1, 4); // 7

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

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

Prazan red (<Строка>) – provjerava niz značajnih znakova. Ako nema značajnih znakova ili uopšte nema znakova, tada se vraća vrijednost Istinito. inače - Lazi.

StrNumberOccurrences(<Строка>, <ПодстрокаПоиска>) – Izračunava broj pojavljivanja podniza pretraživanja u izvornom nizu.

StrNumberOccurrences ( "Uči, uči i uči ponovo", "prouči" , "" ) ; // 3

StrTemplate(<Строка>, <ЗначениеПодстановки1>…<ЗначениеПодстановкиN> — zamjenjuje parametre u string brojem. Red mora sadržavati zamjenske markere u obliku: “%1..%N”. Numeracija markera počinje od 1. Ako je vrijednost parametra Nedefinisano, prazan niz je zamijenjen.

StrTemplate ( "Parametar 1 = %1, Parametar 2 = %2", "1" , "2" ) ; // Parametar 1= 1, Parametar 2 = 2

Funkcije konverzije nizova:

lav (<Строка>, <ЧислоСимволов>) – vraća prve znakove niza.

tačno (<Строка>, <ЧислоСимволов>) – vraća posljednje znakove niza.

srijeda(<Строка>, <НачальныйНомер>, <ЧислоСимволов>) – vraća niz dužine<ЧислоСимволов>, počevši od simbola<НачальныйНомер>.

AbbrL(<Строка>) skraćuje nebitne znakove lijevo od prvog značajnog znaka u nizu.

Skraćenica(<Строка>) — odsijeca beznačajne znakove desno od posljednjeg značajnog znaka u redu.

AbbrLP(<Строка>) – odsijeca beznačajne znakove lijevo od prvog značajnog znaka u retku i desno od posljednjeg značajnog znaka u retku.

StrGetString(<Строка>, <НомерСтроки>) – Dobiva višeredni niz po broju.

Ostale karakteristike:

Snaga(<Строка>) – vraća broj znakova u nizu.

StrNumberRow(<Строка>) – vraća broj redova u višelinijskom nizu. Red se smatra novim ako je od prethodnog odvojen znakom za novi red.

StrCompare(<Строка1>, <Строка2> ) – uspoređuje dva niza na način bez obzira na velika i mala slova. Funkcija radi slično objektu Poređenje vrijednosti. Povratak:

  • 1 - ako je prvi red veći od drugog
  • -1 - ako je drugi red veći od prvog
  • 0 - ako su stringovi jednaki

StrCompare("Prvi red" , "Drugi red" ) ; // 1

Osnovne mogućnosti programskog jezika 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 npr 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 NStr() funkciju:

//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 redovi neograničene dužine pohranjeni su u zasebnoj SQL tablici, tako da je njihova upotreba manje produktivna od ograničenih.

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 dodatne razmake iz 1C linije. Također se može koristiti za pretvaranje bilo koje vrste u 1C string (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("Hello") //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 i najnovija verzija MS Office Worda i Excela spremaju datoteke u ovom formatu (docx i xlsx, 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 objekat (sa ograničenjima) može se konvertovati 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 želim 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 na njega, više detalja):

  • Potvrdni okvir Višelinijski način uređivanja
  • Potvrdni okvir za napredno uređivanje (dostupno ako je prethodno potvrđen okvir za potvrdu)
  • Polje za potvrdu Način 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 tekstualnog dokumenta u meni Kontrola obrasca/umetanja. U njegovim svojstvima možete odrediti njegov način rada – svojstvo Extension.

Polje tekstualnog dokumenta ne može se povezati direktno 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, u upravljanim obrascima, pojavila se nova opcija za predstavljanje 1C linije - polje Formatirani dokument.


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();
    Kraj procedure

  • 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);
    Kraj procedure

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

Ovaj odjeljak će pružiti 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 linije “Hello world!” 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 seče nebitne znakove lijevo od prvog značajnog znaka u nizu. Ova funkcija se koristi češće od prethodne dvije, jer je univerzalnija.

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

Counterparty = Direktoriji.Counterparties.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(String, 8); Datum = Datum(StringDate);

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;
  • Search Substring. 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 retku “Zdravo svijete!” Odredite poziciju posljednjeg pojavljivanja znaka "i".

PositionNumber = StrFind("Hello world!", "and", 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 navedenog niza u 1s 8 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 string na sledeći način: prvi znak svake reči se konvertuje u velika slova, a preostali znakovi reč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. Da biste prešli na novi red za 1s 8, koristite 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" + Simboli. PS + "Drugi red" + Simboli. 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), "C"); 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(<Строка>, <Разделитель>, <ВключатьПустые>) . Dijeli 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 graničnik, a 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(<Строки>, <Разделитель>) . Konvertuje niz stringova iz prvog parametra u niz koji sadrži sve elemente niza odvojene 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, ";");

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: " + Counterparties. Naziv AS Kolona 1 IZ Imenika. Counterparties AS Counterparties GDJE Counterparties. Link = &Link

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 moramo biti sigurni da atribut stringa ispunjava određene kriterije, uspoređujemo ga:

ODABIR Counterparts Naziv AS Kolona 1 IZ Imenika.Counterparties AS Counterparts GDJE Counterparts Naziv = "Gazprom"

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 znak) je definiran u istoj izjavi nakon ključne riječi SPECIAL CHARACTER.

Najbolji članci na ovu temu