Kako podesiti pametne telefone i računare. Informativni portal
  • Dom
  • Windows Phone
  • Skraćuje niz na znak 1s. Nove funkcije za rad sa stringovima

Skraćuje niz na znak 1s. Nove funkcije za rad sa stringovima

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 po uzorku. To je vjerovatno sve što možete učiniti sa žicama.

Konkatenacija nizova

Da biste dodali nizove u upit, koristi se operacija "+". Mogu se presavijati samo linije ograničene dužine.

SELECT "Naziv:" + Counterparties. Ime AS Kolona 1 IZ Imenika. Counterparties KAO Counterparties GDJE Counterparts. Link = & Link

Funkcija podniza

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

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

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

Pažnja! Ne preporučuje se korištenje funkcije SUBSTRING () za pretvaranje nizova neograničene dužine u nizove ograničene dužine. Bolje je koristiti operaciju cast kao što je EXPRESS ().

Function Like

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

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

Ali šta ako želite složenije poređenje? Ne samo jednakost ili nejednakost, već kao određeni obrazac? Funkcija LIKE je upravo za to stvorena.

LIKE - Operator za provjeru niza kao uzorak. Analog LIKE-a u SQL-u.

Operator LIKE vam omogućava da uporedite vrijednost izraza navedenog lijevo od njega sa nizom šablona specificiranim desno. Vrijednost izraza mora biti tipa string. Ako vrijednost izraza odgovara uzorku, operator će rezultirati TRUE, u suprotnom - FALSE.

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

  • % (postotak): niz koji sadrži bilo koji broj proizvoljnih znakova;
  • _ (podvlaka): jedan proizvoljan znak;
  • […] (Jedan ili više znakova u uglastim zagradama): svaki pojedinačni znak naveden u uglastim zagradama. 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 znači sam sebe i ne nosi nikakvo dodatno značenje. Ako je potrebno napisati jedan od navedenih znakova kao sebe, onda mu mora prethoditi<Спецсимвол>... Ja sam<Спецсимвол>(bilo koji odgovarajući znak) je definiran u istoj izjavi nakon ključne riječi SPECIAL CHARACTER.

Osnovne karakteristike 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 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 konstantne vrijednosti niza izgleda ovako u 1C:

Varijabla = "Zdravo svijete!";

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

Varijabla = "Zdravo," "svijet" "!";

2. Prijelom reda 1C može se specificirati na dva načina odjednom. Prvi koristi simbol |

Variable = "Zdravo,
| mir! ";

Drugi je korištenje nabrajanja sistema Symbols. Omogućava vam da dodate i 1C prijelome reda i druge znakove koji se ne mogu ispisati, kao što je TAB.

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

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, trenutno korišteni jezik odabire se 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, svet!" "; En =" "Zdravo, svet!" "";

Ako koristite 1C liniju 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, morate koristiti funkciju HStr ():

// ispravno za dvojezične konfiguracije
Izvještaj (NStr (Variable));

Rekviziti sa linijom tipa 1C

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

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

1C nizovi su neograničene dužine (određene kao dužina = 0) i ograničene dužine, š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 nego ograničena.

Zbog toga upotreba 1C nizova neograničene dužine ima svoja ograničenja - nije ih moguće koristiti svuda. Na primjer, ne može se koristiti kao broj dokumenta, šifra imenika, dimenzija.

Rad sa 1C žicama

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

  • SocrLP ("Nevjerovatno, ali istinito!")
    Uklanja dodatne razmake iz reda 1C. Također se može koristiti za pretvaranje bilo koje vrste u 1C nizove (na primjer, brojeve).
  • Varijabla = "Vasya" + SokrLP ("plus") + "Olya"; // će biti "Vasya plus Olya"
    Primjer zbrajanja nekoliko vrijednosti niza 1C. Rezultat će biti jedna linija 1C.
  • Varijabla = Leo ("Muzika", 2); // će biti "Mu"
    Varijabla = srijeda ("Muzika", 2, 2); // će biti "shl"
    Varijabla = Desno ("Muzika", 2); // bit će "ka"
    Različite opcije za dobijanje podniza iz 1C niza.
  • Varijabla = Pronađi ("Muzika", "Shl"); // će biti 3
    Potražite podniz u nizu 1C, počevši od znaka 1.
  • Varijabla = StrLength ("Muzika"); // će biti 6
    Vraća broj znakova u redu 1C.
  • Izvještaj ("Zdravo") // u prozoru za poruke na dnu prozora 1C
    Upozorenje ("Zdravo") // iskačući dijalog
    Stanje ("Zdravo") // u liniji prikaza statusa u donjem lijevom kutu
    .

Izbacivanje 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 skraćenica () ili string (). U tijelu upita možete koristiti funkciju REPRESENTATION (). Rezultat njihove akcije je isti - oni generiraju string reprezentaciju bilo kojeg 1C objekta za korisnika.

Za referentnu knjigu, ovo će biti njen naziv prema zadanim postavkama. 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 (Vrijednost); // dobiti XML iz 1C vrijednosti
Value1C = XMLValue (Type ("ReferenceLink.Nomenclature"), ViewStringXml); // dobijete 1C vrijednost iz XML niza, morate navesti 1C tip koji treba primiti

3. Postoji način da 1C platforma konvertuje bilo koji 1C objekat u string. Prešao je sa verzije 1C 7.7. Ovaj format ne razumiju drugi programi, ali ga razumije drugi 1C, što ga čini lakim za razmjenu između 1C baza.

String = ValueVSStringInter (Value1C); // dobijemo liniju 1C iz vrijednosti 1C
ValueVFile ("C: \ MyFile.txt", Value1C); // druga opcija, dobijamo datoteku sa sačuvanim nizom iz 1C vrijednosti
Value1C = ValueFromStringInternal (String); // povratak sa linije 1C
Value1C = ValueOfFile ("C: \ MyFile.txt"); // povratak iz datoteke

Uređivanje 1C linija na obrascu

Osim rada sa 1C stringovima u 1C programu, naravno, želio 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 stvarnom životu se koristi mnogo rjeđe (ali se koristi!).

Varijabla = "";
String = EnterValue (Varijabla, "Unesite svoje puno ime");

2. Za prikaz atributa 1C objekta (priručnik/dokument) ili atributa obrasca (vidi), najčešće se koristi polje za unos. Ovo je najčešći alat u 1C za rad korisnika 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):

  • Označite Režim za uređivanje više linija
  • Polje za potvrdu Napredno uređivanje (dostupno ako je prethodno označeno)
  • 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 obrascu, potrebno je da dodate polje za tekstualni dokument u meni Obrazac / Kontrola umetanja. 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 napisati funkciju u OnOpening () rukovatelju događaja oblika (pogledajte):

FormElements.ElementNameTextDocumentField.SetText (ValueString); // ovdje je ValueString tekst dobiven, na primjer, iz props-a

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

ValueString = FormElements.ElementNameTextDocumentField.GetText (); // ValueString ovdje je rekvizit gdje pohranjujemo 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 Storage
  • U funkciji ReadOnServer () postavite tekst iz rekvizita

    // ovdje Props je dodano svojstvo 1C objekta
    // ovdje FormattedDocument je naziv polja na obrascu za uređivanje
    &Na serveru

    FormattedDocument = CurrentObject.Props.Get ();
    Kraj procedure

  • U funkciji BeforeWriteOnServer () ili pomoću dugmeta upišite tekst iz polja

    &Na serveru
    Procedura za ReadingOnServer (CurrentObject)
    CurrentObject.Props = NewValueStore (FormattedDocument);
    Kraj procedure

Implementirano u verziji 8.3.6.1977.

Proširili smo skup funkcija za rad sa stringovima. Ovo smo uradili 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 formatirane podatke. To 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 mogu smanjiti količinu koda, učiniti kod jednostavnijim i lakšim za razumijevanje. 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 u ugrađenom jeziku.

Funkcija oblikovanja StrPattern ()

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:

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

<Шаблон>je niz za zamjenu parametarskih reprezentacija.

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

Da biste naznačili određeno mjesto u predlošku na kojem želite izvršiti zamjenu, trebate koristiti tokene oblika% 1, ...% 10. Broj markera koji se koriste u predlošku i broj parametara koji sadrže vrijednosti moraju biti isti.

Na primjer, rezultat izvršavanja takve izjave:

bit će red:

Greška u podacima u redu 2 (potreban je tip datuma)

Funkcija za rad sa stringovima StrCompare ()

Ova funkcija uspoređuje dva niza na način bez obzira na velika i mala slova. Na primjer, ovako:

Mogli ste izvesti istu radnju ranije koristeći objekt Usporedbe vrijednosti:

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

Funkcije za rad sa stringovima RowStart With (), RREnd With ()

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

Na primjer, zgodno ih je koristiti u operatoru Ako:

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

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

Funkcija za rad 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);
  • Pretraga sa određene pozicije;
  • Potražite pojavljivanje sa navedenim brojem (drugo, treće, itd.).

Zapravo, duplira mogućnosti stare funkcije. Ovo se radi kako bi se održala kompatibilnost sa modulima kompajliranim u starijim verzijama. Preporučujemo da više ne koristite staru funkciju Find ().

Ispod je primjer korištenja novih mogućnosti pretraživanja. Pretrage unatrag su korisne kada vam je potreban posljednji dio formaliziranog niza, kao što je potpuno kvalificirano 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.

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

Vrijednosti varijabli tipa 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. Razmotrimo glavne:

Unesite niz (<Строка>, <Подсказка>, <Длина>, <Многострочность>) — funkcija je namijenjena za prikaz dijaloškog okvira u kojem korisnik može odrediti vrijednost varijable tog tipa Linija... Parametar <Строка> je obavezan i sadrži ime varijable u koju će biti upisan uneseni niz. Parametar <Подсказка> opciono je naslov dijaloškog okvira. Parametar <Длина> opciono, označava maksimalnu dužinu ulaznog niza. Zadana vrijednost je nula, što znači neograničenu dužinu. Parametar <Многострочность> opciono. Određuje način unosa za višelinijski tekst: True - unos višelinijskog teksta sa separatorima redova; False - unos jednostavnog niza.

Niz se može unijeti i dati mu Unicode karakterni kod:

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

Slovo = Simbol (1103); // JA SAM

Postoji i inverzna funkcija koja vam omogućava da saznate šifru znaka.

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

Funkcije konverzije slučaja:

BReg (<Строка>) - pretvara sve znakove u nizu u velika slova.

HPreg (<Строка>) - 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 se pretvaraju 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

Pronađi (<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) - 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 Početna pozicija. Pretraživanje je moguće od početka ili od kraja niza. Na primjer:

Broj4 pojavljivanja = StrFind ( "Odbrambena sposobnost", "o", Smjer pretraživanja. Od početka, 1, 4); // 7

Zamijeni (<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) - pronalazi sva pojavljivanja podniza za pretraživanje u originalnom 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.

StrBroj pojavljivanja (<Строка>, <ПодстрокаПоиска>) - izračunava broj pojavljivanja podniza pretraživanja u originalnom nizu.

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

StrPattern (<Строка>, <ЗначениеПодстановки1>…<ЗначениеПодстановкиN> — zamjenjuje parametre u nizu brojem. Niz mora sadržavati zamjenske markere u obliku: "% 1 ..% N". Markeri se numerišu počevši od 1. Ako je vrijednost parametra Nedefinisano, prazan niz je zamijenjen.

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

Funkcije konverzije nizova:

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

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

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

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

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

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

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

Ostale funkcije:

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

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

Uporedite (<Строка1>, <Строка2> ) - upoređuje dva niza, bez obzira na velika i mala slova. Funkcija radi na isti način kao i objekt 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 nizovi jednaki

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

Top srodni članci