Nove funkcije za rad sa stringovima. Nove funkcije za rad sa stringovima 1c konverzija u string

Osnovne karakteristike programskog jezika obično uključuju rad sa brojevima i nizovima. Obično su ove karakteristike ugrađene u kod kompajlera (ili se implementiraju "bazne" klase programskog jezika).

U 1C su mogućnosti rada sa stringovima programirane u samoj platformi. Danas ćemo razmotriti karakteristike rada sa 1C stringovima u programima na ugrađenom 1C jeziku.

Vrijednost linije 1C

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

Varijabla = "Zdravo svijete!";

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

Variable = "Zdravo, "svijet""!";

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 enuma sistema Symbols. Omogućava vam da dodate i prijelom reda 1C i druge znakove koji se ne mogu ispisati, kao što je TAB.

Varijabla = "Bok" + Symbols.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 en 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 ID-u jezika:

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

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

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

Rekviziti sa linijom tipa 1C

Neophodno je polje imenika/dokumenta 1C. Razlikuje se od varijable u programu na 1C jeziku po tome što je njen tip precizno naznačen za atribut (broj, niz 1C, itd.). Ako trebate osvježiti što su rekviziti, pogledajte tutorijal na .

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

1C nizovi su neograničene dužine (označene kao dužina = 0) i ograničene dužine, što ukazuje na tačan broj znakova. 1C nizovi 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 moguće kao broj dokumenta, šifru imenika, mjerenje.

Rad sa 1C linijama

Za rad sa stringovima postoji nekoliko ugrađenih funkcija 1C platforme.

  • AbbrLP("Nevjerovatno, ali istinito!")
    Uklanja dodatne razmake iz niza 1C. Također se može koristiti za pretvaranje bilo koje vrste u 1C niz (na primjer, brojeve).
  • Varijabla = "Vasya" + Abbrl("plus") + "Olya"; //bit će "Vasya plus Olya"
    Primjer zbrajanja nekoliko vrijednosti niza 1C. Rezultat je jedan red 1C.
  • Varijabla = Lav("Muzika", 2); // će biti "Mu"
    Varijabla = Prosjek("Muzika", 2, 2); // će biti "ps"
    Varijabla = Prava("Muzika", 2); // će biti "ka"
    Različite opcije za dobijanje podniza iz niza 1C.
  • Varijabla = Find("Muzika", "ps"); //bit ć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 nizu 1C.
  • Notify("Bok") //u okviru 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 je najpopularniji format za razmjenu strukturiranih informacija XML. Čak i najnovija verzija MS Office Word-a i Excel-a čuva datoteke u ovom formatu (docx i xlsx, promijenite ekstenziju u zip, otvorite je u arhiveru).

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

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

Za podrazumevani direktorijum, 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.

ViewStringXml = XMLString(Value); //dobijemo XML iz vrijednosti 1C
Value1S = XMLValue(Type("CatalogReference.Nomenclature"),ViewStringXml); //dobijamo 1C vrijednost iz XML stringa, morate specificirati tip 1C koji treba primiti

3. Postoji izvorni 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 razumije drugi 1C, što ga čini lakim za razmjenu između 1C baza podataka.

String = ValueInStringInt(Value1S); //dobijamo string 1C iz vrijednosti 1C
ValueToFile("C:\MyFile.txt", Value1C); //druga opcija, dobijamo datoteku sa spremljenim nizom od vrijednosti 1C
Value1C = ValueFromStringInt(String); //povratak sa linije 1C
Value1C = ValueFromFile("C:\MyFile.txt"); //povratak iz datoteke

Uređivanje linija 1C na obrascu

Pored rada sa 1C stringovima u 1C programu, naravno, voleo bih 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 = "";
String = EnterValue(Variable, "Unesite puno ime");

2. Za prikaz detalja 1C objekta (imenika/dokumenta) ili detalja 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, kliknite desnim klikom na njega, za 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)
  • Potvrdni okvir Režim lozinke (pogledajte ).

4. Ako vam sve mogućnosti polja za unos nisu dovoljne, postoji ugrađen uređivač. Da biste ga dodali u obrazac, potrebno je da dodate Polje tekstualnog dokumenta u meni Obrazac / Ubaci kontrolni element. U njegovim svojstvima možete odrediti način njegovog rada - svojstvo Extension.

Polje tekstualnog dokumenta ne može se direktno povezati s podacima. Potrebno je upisati sljedeću funkciju u obrađivač događaja forme OnOpening() (pogledajte ):

FormElements.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(); //ValueString ovdje je rekvizit gdje spremamo vrijednost

5. U 1C verziji 8.2.11, u upravljanim oblicima, postoji nova mogućnost predstavljanja 1C linije - polje Formatirani dokument.


Slično kao i polje tekstualnog dokumenta, potrebno ga je podesiti prilikom otvaranja i pisati prilikom samog snimanja teksta pomoću programa.

  • U objektu 1C, čiji oblik izrađujemo (referenca, dokument, obrada, itd.) - dodajte atribut sa tipom Value Storage
  • U funkciji OnReadOnServer() postavite tekst iz atributa

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

    FormattedDocument = CurrentObject.Attributes.Get();
    EndProcedure

  • U funkciji BeforeWriteOnServer() ili pritiskom na dugme upišite tekst iz polja

    &Na serveru
    Procedura OnReadingOnServer(CurrentObject)
    CurrentObject.Attributes = NewValueStorage(FormattedDocument);
    EndProcedure

Nizovi u 1C 8.3 u ugrađenom jeziku 1c su 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 1s ili analizirate informacije sadržane u njima.

Snaga

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

Primjer 2. Izbrojimo broj znakova u nizu "Hello world!".

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

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

Skraćeno

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

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

Primjer 3. Uklonite sve razmake s lijeve strane niza "mir!" i dodajte string "Hello" na njega.

String = abbr("svijet!"); String = "Bok"+String; Obavijesti (String);

Rezultat izvršenja ovog koda će biti prikaz stringa "Hello world!".

Skraćenica

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

Primjer 4. Formirajte iz nizova "Hello" i "world!" fraza "Zdravo svijete!"

String = abbr("Bok")+" "+abbr("svijet!"); Obavijesti (String);

Skraćeno LP

Abbrl(<Строка>) . Sječe nebitne znakove desno od prvog značajnog znaka u nizu, također skraćuje nebitne znakove lijevo od prvog značajnog znaka u nizu. Ova funkcija se koristi češće od prethodne dvije, jer je svestranija.

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

Izvođač = Direktoriji.Izvođači.Pronađi po detaljima("TIN", "0777121211"); ContractorObject = Contractor.GetObject(); ContractorObject.Description = Skraćeni LP(ContractorObject.Description); ContractorObject.Write();

lav

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

Primjer 6. Neka struktura Zaposleni sadrži ime, prezime i patronimiju zaposlenog. Nabavite niz sa prezimenom i inicijalima.

PočetnoIme = Lav(Ime zaposlenog, 1); Patronim Inicijal = Lav(Zaposleni.Patronim, 1); Puno ime = Employee.Prezime + " " + Početno ime + "." + Patronimsko inicijalo + ".";

Prava

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

Primjer 7. Neka se datum napiše na kraju string varijable u formatu “ggggmmdd”, dobijete niz s datumom i pretvorite ga u tip datum.

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

srijeda

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

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

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

PageFind

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

  • Linija. Izvorni niz;
  • SubstringSearch. Željeni podniz;
  • DirectionSearch. Određuje smjer traženja podniza u nizu. Može uzeti vrijednosti:
    • Smjer pretraživanja. Od početka;
    • Smjer pretraživanja. Od kraja;
  • StartPosition. Određuje poziciju u nizu na kojoj treba započeti pretragu;
  • Entry Number. Određuje broj pojavljivanja traženog podniza u izvornom nizu.

Primjer 9. U redu "Zdravo svijete!" odredite poziciju posljednjeg pojavljivanja znaka "i".

PositionNumber = StrFind("Hello World!", "and", SearchDirection.From End); Obavijesti (broj pozicije);

Rezultat izvršenja ovog koda bit će prikaz broja posljednjeg pojavljivanja simbola "i" na ekranu: 9.

VReg

VReg(<Строка>) . Pretvara sve znakove navedenog niza u 1s 8 u velika slova.

Primjer 10. Konvertirajte string "hello world!" na velika slova.

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

Rezultat izvršenja ovog koda će biti prikaz stringa "HELLO WORLD!"

HReg

HReg(<Строка>) . Pretvara sve znakove navedenog niza u 1s 8 u mala slova.

Primjer 11. Pretvorite string "HELLO WORLD!" na mala slova.

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

Rezultat izvršenja ovog koda će biti prikaz stringa "zdravo svijet!"

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 nizu "zdravo svijet!".

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

Rezultat izvršenja ovog koda će biti prikaz stringa "Hello World!"

Simbol

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

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

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

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

SymbolCode

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

Primjer 14. Saznajte kod posljednjeg znaka u nizu "Hello World!".

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

Rezultat izvršenja ovog koda će biti prikaz koda simbola "!" — 33.

Prazna linija

Prazan red (<Строка>) . Provjerava da li se niz sastoji samo od znakova koji nisu značajni, odnosno da li je prazan.

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

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

Rezultat izvršenja ovog koda će biti prikaz riječi "Yes" (string izraz booleove vrijednosti Istinito).

StrReplace

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

Primjer 16. U redu "Hello World!" zamijenite riječ "Svijet" riječju "Prijatelji".

String = StrReplace("Hello World!", "World", "Friends"); Obavijesti (String);

Rezultat izvršenja ovog koda će biti prikaz stringa "Hello Friends!"

StrNumberRows

StrBroj linija(<Строка>) . Omogućava vam da prebrojite broj redova u višelinijskom nizu. Za prelazak na novi red za 1s 8 koristi se simbol PS(znak za povlačenje linije).

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

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

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

StrGetString

StrGetString(<Строка>, <НомерСтроки>) . Dobiva niz 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 = "Prva linija"+Znakovi.PS +"Drugi red"+Znakovi.PS +"Treći red"; LastLine = StrGetLine(tekst, strBroj redova(tekst)); Obavijesti (poslednja linija);

Rezultat izvršenja ovog koda će biti prikaz reda "Third line".

StrNumberOccurrences

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

Primjer 19. Odredite koliko puta slovo “c” ulazi u red “Linije u 1s 8.3 i 8.2”, bez obzira na veličinu slova.

String = "Linije u 1s 8.3 i 8.2"; Broj pojavljivanja = StrBroj pojavljivanja(Vreg(String), "C"); izvještaj (broj pojava);

Rezultat izvršavanja ovog koda će prikazati broj pojavljivanja na ekranu: 2.

PageBeginsFrom

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

Primjer 20. Odredite da li PIB odabrane druge ugovorne strane počinje brojem 1. Neka varijabla druga strana Counterparties.

PIB = Izvođač.TIN; StartsCUnits = StrStartsC(TIN, "1"); If StartsFROM1 Then //Vaš kod EndIf;

Stranica se završava

StrEndsOn(<Строка>, <СтрокаПоиска>) . 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. Neka varijabla druga strana sprema se veza do elementa direktorija Counterparties.

PIB = Izvođač.TIN; Završava sa dva = Str se završava sa (TIN, "2"); Ako se završava sa dva then //Vaš kod EndIf;

PageSplit

StrDivide(<Строка>, <Разделитель>, <ВключатьПустые>) . Razdvaja string na dijelove prema specificiranim graničnim znakovima i upisuje rezultirajuće nizove u niz. Prvi parametar pohranjuje originalni niz, drugi parametar sadrži niz koji sadrži graničnik, treći parametar pokazuje da li prazne nizove treba upisati u niz (podrazumevano Istinito).

Primjer 22. Pretpostavimo da imamo niz koji sadrži brojeve odvojene simbolom ";", dobijemo niz brojeva iz niza.

String = "1; 2; 3"; Niz = StrSplit(String, ";"); Za Count = 0 By Array.Quantity() - 1 Loop Attempt Niz[Broj] = Broj(Ablp(Niz[Broj])); Niz izuzetaka[W] = 0; EndTry EndCycle;

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

StrConnect

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

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

Za Count = 0 By Array.Quantity() - 1 Loop Niz[Broj] = String(Niz[Broj]); EndCycle; String = StrConnect(Niz, "; ");

Implementirano u verziji 8.3.6.1977.

Proširili smo skup funkcija za rad sa stringovima. Ovo smo učinili kako bismo vam pružili naprednije alate za raščlanjivanje podataka niza. Nove funkcije će biti zgodne i korisne u tehnološkim zadacima analize teksta. U zadacima koji se odnose na raščlanjivanje teksta koji sadrži podatke u formatiranom obliku. Ovo može biti analiza nekih datoteka primljenih od opreme ili, na primjer, analiza tehnološkog dnevnika.

Sve radnje koje izvode nove funkcije, mogli ste izvršiti prije. Uz pomoć manje ili više složenih algoritama napisanih na ugrađenom jeziku. Stoga vam nove funkcije ne daju nikakve suštinski nove mogućnosti. Međutim, oni vam omogućavaju da smanjite količinu koda, učinite kod jednostavnijim i razumljivijim. Osim toga, oni vam omogućavaju da ubrzate izvršenje radnji. Jer funkcije implementirane u platformi rade, naravno, brže od sličnog algoritma napisanog na ugrađenom jeziku.

Funkcija formatiranja StrTemplate()

Ova funkcija zamjenjuje parametre u string. Potreba za takvom konverzijom često se javlja, na primjer, prilikom prikazivanja poruka upozorenja. Sintaksa za ovu funkciju je sljedeća:

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

<Шаблон>je niz u kojem se zamjenjuju reprezentacije parametara.

<Значение1> , ... <Значение10>- ovo su parametri (maksimalno - deset), čije se reprezentacije moraju zamijeniti u nizu.

Da biste naveli određeno mjesto u šablonu na kojem želite da izvršite zamjenu, trebate koristiti markere oblika %1, ... %10. Broj markera uključenih u predložak i broj parametara koji sadrže vrijednosti moraju se podudarati.

Na primjer, rezultat izvršavanja takvog operatora:

bit će red:

Greška u podacima u redu 2 (zahtijeva tip datuma)

Funkcija niza StrCompare()

Ova funkcija uspoređuje dva niza neosjetljivo na velika i mala slova. Na primjer, ovako:

Istu radnju možete izvesti prije korištenja ValueComparison objekta:

Međutim, korištenje nove funkcije izgleda jednostavnije. Osim toga, funkcija, za razliku od Value Compare objekta, radi i u tankom i u web klijentu.

Funkcije niza StrBeginsC(), StrEndsTo()

Ove funkcije određuju da li string počinje određenim podnizom ili da li niz završava navedenim podnizom. Algoritam ovih funkcija nije teško implementirati na ugrađenom jeziku, ali njihovo prisustvo vam omogućava da pišete čistiji i razumljiviji kod. I rade brže.

Na primjer, zgodni su za korištenje u naredbi If:

Funkcije za rad sa stringovima StrSplit(), StrJoin()

Ove funkcije dijele niz na dijelove prema specificiranom graničniku. Ili obrnuto, kombinuju nekoliko redova u jedan, ubacujući odabrani razdjelnik između njih. Pogodni su za kreiranje ili analizu dnevnika, tehnološkog dnevnika. Na primjer, možete jednostavno rastaviti unos tehnološkog dnevnika na dijelove pogodne za daljnju analizu:

Funkcija rada sa stringovima StrFind()

Umjesto stare funkcije Find(), implementirali smo novu funkciju koja ima dodatne mogućnosti:

  • Traži u različitim smjerovima (od početka, od kraja);
  • Traži sa određene pozicije;
  • Potražite pojavljivanje sa navedenim brojem (drugo, treće, itd.).

U stvari, duplira mogućnosti stare funkcije. Ovo se radi kako bi se održala kompatibilnost sa modulima kompajliranim u starijim verzijama. Preporučuje se da se stara funkcija Find() više ne koristi.

Ispod je primjer korištenja novih mogućnosti pretraživanja. Pretraživanje unazad je korisno kada vam je potreban posljednji dio formaliziranog niza, kao što je puno ime datoteke u URL-u. A pretraživanje sa određene pozicije pomaže u slučajevima kada trebate pretraživati ​​u poznatom fragmentu, a ne u cijelom nizu.

zdravo svima
Danas su me zamolili da ne prikazujem prefiks dokumenta prilikom štampanja implementacionog dokumenta, problem je riješen na sljedeći način.

StrReplace(Broj, Lav(Broj, 3), "" );

Kada sam pogledao pomoćnika za sintaksu, toliko mi se dopao da sam hteo da pišem o tome rad sa stringovima u 1C: Enterprise.

Niz u 1C odnosi se na primitivni tip podataka.

Ako pogledate u 1C pomoć, vidjet ćete sljedeći opis tipa String (String)
Vrijednosti ovog tipa sadrže Unicode niz proizvoljne dužine.
Ako svojim riječima o žicama, onda će funkcionirati. Niz je konstanta koja se sastoji od različitih znakova, uvijek okružena navodnicima.

String specifikacija
Title = "Zdravo putniče";

Višeredni nizovi u tipičnim konfiguracijama najčešće se kreiraju pomoću vertikalnog separatora "|":
String = "Višelinijski
|string
|piši
|tekst";

Navodnik unutar stringa je specificiran dvostrukim navodnicima.
String = ""Tekst pod navodnicima"";

Postoji mnogo operacija nad nizovima (pretraga unutar niza, određivanje prvih, itd.), bolje je pogledati pomoćnik za sintaksu.
Sintaksni pomoćnik - Opšti opis ugrađenog jezika-> ugrađene funkcije-> funkcije za rad sa stringovima.

Funkcije za rad sa stringovima

Ovdje ću u kratkom obliku dati funkcije za rad sa stringovima:

VReg(<Строка>) - Funkcija pretvara sve znakove niza u velika slova.

SymbolCode(<Строка>, <НомерСимвола>) – Funkcija prima kod karaktera koji se nalazi u prenesenom nizu na poziciji sa navedenim brojem.

lav (<Строка>, <ЧислоСимволов>) – Funkcija odabire prve znakove s lijeve strane niza.

Pronađi(<Строка>, <ПодстрокаПоиска>) — Funkcija pronalazi pojavljivanje traženog niza kao podniza u originalnom nizu.

HReg(<Строка>) — Funkcija pretvara sve znakove niza u mala slova.

tačno (<Строка>, <ЧислоСимволов>) – Ova funkcija se razlikuje od funkcija Lijeva po tome što bira posljednje znakove s desne strane niza.

Prazan red (<Строка>) — Funkcija provjerava prisustvo značajnih znakova u nizu.

simbol(<КодСимвола>) — Funkcija pretvara kod karaktera u niz koji sadrži znak.

skraćeno(<Строка>) — Funkcija odsijeca beznačajne znakove lijevo od prvog značajnog znaka u nizu.

Abbrl(<Строка>) — Funkcija odsiječe beznačajne znakove lijevo od prvog značajnog znaka u nizu i razmakne desno od posljednjeg značajnog znaka u nizu.

skraćeno(<Строка>) — Funkcija odsiječe beznačajne znakove desno od posljednjeg značajnog znaka u nizu.

srijeda(<Строка>, <НачальныйНомер>, <ЧислоСимволов>) - Funkcija odabire niz znakova, počevši od znaka<НачальныйНомер>, ukupno<ЧислоСимволов>.

Snaga(<Строка>) — Funkcija dobiva broj znakova u nizu.

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

StrGetString(<Строка>, <НомерСтроки>) — Funkcija dobiva niz višelinijskog niza po broju.

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

StrBroj linija(<Строка>) — Funkcija broji broj redova u višelinijskom nizu. U višelinijskom nizu, redovi su odvojeni znakovima novog reda.

TReg(<Строка>) — Funkcija pretvara string u velika slova. To znači da se za svaku riječ prvi znak konvertuje u velika velika slova ili u velika ako za znak nije specificirano velika mala slova. Ostali znakovi se pretvaraju u mala slova.

Tip konverzije
Za eksplicitnu konverziju tipa podataka, postoje funkcije s istim imenom kao i tip podataka u koji se vrši konverzija: String(<Значение>)

StringFromNumbers= String(Broj);

Sve ove funkcije su detaljno opisane u Syntax Assistant-u, kako Syntax Assistant može pomoći programeru početniku, opisao sam u članku.

String Examples

Pretvorite broj u niz i nazad.

Da biste dobili prikaz godine u nizu, koristite funkciju Format.

Godina = Format(TrenutniDatum(), "DF=yyyy" ) // Godina = "2012"

Da biste broj pretvorili u niz bez umetanja znaka za razdvajanje grupe (razmak bez prekida), morate primijeniti funkciju Format s parametrom NH=0:

Broj = 2012 String = Format(Broj, "NW=0"); //String = "2012"

String Bez razmaka.