Mitä se tarkoittaa rivillä 1c. Uusia toimintoja merkkijonojen käsittelyyn. Funktio merkkijonojen kanssa työskentelemiseen StrFind()

Toteutettu versiossa 8.3.6.1977.

Olemme laajentaneet funktioiden joukkoa, jotka on suunniteltu toimimaan merkkijonojen kanssa. Teimme tämän tarjotaksemme sinulle kehittyneempiä työkaluja merkkijonotietojen jäsentämiseen. Uudet toiminnot ovat käteviä ja hyödyllisiä tekstianalyysin teknisissä tehtävissä. Tehtävissä, jotka liittyvät muotoiltua dataa sisältävän tekstin jäsentämiseen. Tämä voi olla joidenkin laitteelta vastaanotettujen tiedostojen analyysi tai esimerkiksi teknologisen lokin analyysi.

Voit suorittaa kaikki toiminnot, jotka suorittavat uusia toimintoja aiemmin. Käyttämällä enemmän tai vähemmän monimutkaisia ​​algoritmeja, jotka on kirjoitettu sisäänrakennetulla kielellä. Siksi uudet toiminnot eivät anna sinulle mitään perustavanlaatuisia uusia ominaisuuksia. Niiden avulla voit kuitenkin vähentää koodin määrää ja tehdä koodista yksinkertaisemman ja ymmärrettävämmän. Lisäksi niiden avulla voit nopeuttaa toimien suorittamista. Koska alustassa toteutetut toiminnot toimivat tietysti nopeammin kuin vastaava sisäänrakennetulla kielellä kirjoitettu algoritmi.

Muotoilufunktio StrTemplate()

Tämä funktio korvaa parametrit merkkijonoksi. Tarve tällaiselle muunnokselle tulee usein esille esimerkiksi varoitusviestejä näytettäessä. Tämän funktion syntaksi on seuraava:

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

<Шаблон>- tämä on merkkijono, johon sinun on korvattava parametrien esitykset.

<Значение1> , ... <Значение10>- nämä ovat parametreja (enintään kymmenen), joiden esitykset on korvattava merkkijonoon.

Osoittaaksesi tietyn paikan mallissa, jossa haluat suorittaa korvauksen, sinun on käytettävä merkkejä, kuten %1, ... %10. Malliin sisältyvien merkkien määrän ja arvoja sisältävien parametrien määrän on vastattava.

Esimerkiksi tällaisen operaattorin suorittamisen tulos:

tulee rivi:

Tietovirhe rivillä 2 (päivämäärä vaaditaan)

Funktio merkkijonojen kanssa työskentelemiseen StrCompare()

Tämä funktio vertaa kahta merkkijonoa isot ja pienet kirjaimet erottelemalla. Esimerkiksi näin:

Voit suorittaa saman toiminnon aiemmin käyttämällä Value Comparison -objektia:

Uuden ominaisuuden käyttäminen näyttää kuitenkin helpommalta. Ja tämän lisäksi toiminto, toisin kuin Value Comparison -objekti, toimii sekä ohuessa että web-asiakkaassa.

Funktiot merkkijonojen käsittelyyn StrStartsWith(), StrEndsAt()

Nämä funktiot määrittävät, alkaako merkkijono määritetyllä osamerkkijonolla vai päättyykö merkkijono määritettyyn osamerkkijonoon. Näiden toimintojen algoritmi ei ole vaikea toteuttaa sulautetulla kielellä, mutta niiden läsnäolo mahdollistaa puhtaamman ja ymmärrettävämmän koodin kirjoittamisen. Ja ne toimivat nopeammin.

Niitä on kätevä käyttää esimerkiksi If-lauseessa:

Toiminnot merkkijonojen StrDivide(), StrConnect() kanssa

Nämä funktiot jakavat merkkijonon osiin käyttämällä määritettyä erotinta. Tai päinvastoin, ne yhdistävät useita rivejä yhdeksi ja lisäävät valitun erottimen niiden väliin. Ne ovat käteviä lokien ja teknisten päiväkirjojen luomiseen tai analysointiin. Voit esimerkiksi helposti jäsentää teknologisen lokimerkinnän osiin, jotka soveltuvat jatkoanalyysiin:

Funktio merkkijonojen kanssa työskentelemiseen StrFind()

Vanhan Find()-funktion tilalle olemme ottaneet käyttöön uuden toiminnon, jolla on lisäominaisuuksia:

  • Hae eri suuntiin (alusta, lopusta);
  • Hae tietystä paikasta;
  • Hae esiintymää tietyllä numerolla (toinen, kolmas jne.).

Itse asiassa se kopioi vanhan toiminnon ominaisuudet. Tämä tehdään yhteensopivuuden säilyttämiseksi vanhempiin versioihin käännettyjen moduulien kanssa. On suositeltavaa, että et enää käytä vanhaa Find()-funktiota.

Alla on esimerkki uusien hakutoimintojen käyttämisestä. Käänteinen haku on hyödyllinen, kun tarvitset formalisoidun merkkijonon viimeisen fragmentin, kuten URL-osoitteen koko tiedostonimen. Ja etsiminen tietystä paikasta auttaa tapauksissa, joissa sinun on etsittävä tunnetusta fragmentista, ei koko riviltä.

String-tyyppi löytyy kaikista ohjelmointikielistä. Se on primitiivinen, ja 1C:ssä on monia toimintoja sen kanssa työskentelemiseen. Tässä artikkelissa tarkastellaan yksityiskohtaisesti erilaisia ​​​​tapoja työskennellä merkkijonotyyppien kanssa versioissa 1C 8.3 ja 8.2 esimerkkien avulla.

Linja

Minkä tahansa tyyppisen muuttujan muuttamiseksi merkkijonoksi on olemassa samanniminen funktio "String()". Syöttöparametri on itse muuttuja, jonka merkkijonoesitys on hankittava.

String(False) // palauttaa "Ei"
String(12345) // palauttaa "12 345"
Merkkijono(NykyinenPäiväys()) //"21/07/2017 11:55:36"

On mahdollista muuntaa paitsi primitiiviset tyypit merkkijonoksi, myös muita, esimerkiksi hakemistojen ja asiakirjojen elementtejä.

SokrLP, SokrL, SokrP

Näiden funktioiden syöttöparametrit ovat merkkijonotyyppisiä muuttujia. Toiminnot poistavat merkityksettömät merkit (välilyönnit, rivinvaihdot jne.): vasemmalta ja oikealta puolelta, vain vasemmalta puolelta ja vain oikealta.

Lyhenne(" Välilyönnit poistetaan molemmilta puolilta ") // "Tyhjät poistetaan molemmilta puolilta"
Lyhenne(" Välilyönnit molemmilta puolilta poistetaan ") // " Vasemmalla olevat välilyönnit poistetaan "
Lyhenne(" Välilyönnit molemmilta puolilta poistetaan ") // " Oikeanpuoleiset välilyönnit poistetaan"

Leo, oikea, keskikokoinen

Näiden toimintojen avulla voit leikata osan merkkijonosta. "Left()"-funktio palauttaa osan merkkijonosta sen vasemmalta puolelta määritetyn pituuden verran. "Right()"-funktio on samanlainen, mutta rajaa oikealta. "Avg()"-funktiolla voit määrittää sen merkin numeron, josta rivi valitaan, ja sen pituuden.

Lev("merkkijonomuuttuja", 4) // palauttaa "Str"
Right("merkkijonomuuttuja", 7) // palauttaa "muuttujan"
Medium("merkkijonomuuttuja", 2, 5) // palauttaa "troko"

Vahvuus

Funktio määrittää merkkijonomuuttujan sisältämien merkkien määrän.

StrLength("Word") // suorituksen tulos on numero 5

löytö

Funktio mahdollistaa merkkijonon osan etsimisen merkkijonomuuttujasta. Palautusarvo on numero, joka näyttää löydetyn merkkijonon alun sijainnin. Jos vastaavuutta ei löydy, palautetaan nolla.

Huomaa, että haussa kirjainkoolla on merkitystä. Jos alkuperäisessä merkkijonossa on useampi kuin yksi hakuosamerkkijono, funktio palauttaa ensimmäisen esiintymän alun.

Find("yksi, kaksi, yksi, kaksi, kolme", ​​"kaksi") //-funktio palauttaa luvun 6

Tyhjä rivi

Tämän toiminnon avulla voit määrittää, onko merkkijono tyhjä. Pieniä merkkejä, kuten välilyöntiä, vaunun palautusta ja muita ei oteta huomioon.

EmptyString("Pupkin Vasily Ivanovich") //-funktio palauttaa arvon False
EmptyString(" ") //-funktio palauttaa arvon True

VReg, NReg, TReg

Nämä toiminnot ovat erittäin hyödyllisiä, kun verrataan ja muunnetaan merkkijonomuuttujia. "Vreg()" palauttaa alkuperäisen merkkijonon isoilla kirjaimilla, "HPreg()" pienillä kirjaimilla ja "TReg()" muotoilee sen siten, että jokaisen yksittäisen sanan ensimmäinen merkki kirjoitetaan isolla ja kaikki seuraavat merkit isoilla kirjaimilla.

VReg("GENERAL DIRECTOR") // palauttaa arvon - "TOIMITTUSJOHTAJA"
NReg("CEO DIRECTOR") // palautusarvo - "CEO"
TREG ("CEO DIRECTOR") // palautusarvo - "pääjohtaja"

Sivunvaihto

Tämä toiminto on analoginen tekstieditorien korvaamiseen. Sen avulla voit korvata yhden merkin tai merkkijoukon toisella merkkijonomuuttujissa.

StrReplace("punainen, valkoinen, keltainen", ","", ";") // palauttaa "punaisen; valkoinen; keltainen"

StrNumberLines

Funktiolla voit määrittää rivien lukumäärän, jotka erotetaan rivinvaihdoilla tekstimuuttujassa.

Alla olevan esimerkin silmukka käy läpi kolme kierrosta, koska LineNumberRow-funktio palauttaa arvon 3:

Ind = 1 merkkijonojen StrNumberilla ("Line1" + Symbols.PS + "Line2" + Symbols.PS + "Line3") Cycle
<тело цикла>
EndCycle;

StrGetString

Tämä toiminto toimii monirivisen tekstin kanssa samalla tavalla kuin edellinen. Sen avulla voit saada tietyn merkkijonon tekstimuuttujasta.

StrGetString("merkkijono1" + merkit.PS + "merkkijono2" + merkit.PS + "merkkijono3", 2) // palauttaa "String2"

PageNumberOccurrences

Funktio laskee merkin tai osamerkkijonon esiintymisten määrän hakumerkkijonossa.

StrNumberAttachments("a;b;c;d; ", ";") //-funktio palauttaa luvun 4

Symboli ja symbolikoodi

Näiden toimintojen avulla voit saada merkin sen koodilla Unicode-koodauksessa sekä määrittää tämän koodin itse merkin perusteella.

SymbolCode("A") //-funktio palauttaa luvun 1 040
CharacterCode(1040) //-funktio palauttaa "A"

Yleisiä tehtäviä jousille työskennellessä

Merkkijonojen ketjuttaminen

Useiden merkkijonojen yhdistämiseksi (katenoinnin suorittamiseksi) riittää, että käytät summausoperaattoria.

"Line 1" + "Line 2" // kahden rivin lisäämisen tulos on "Line 1 Line 2"

Tyyppi muunnos

Tyypin muuntamiseen merkkijonoksi, esimerkiksi linkin hakemistoelementtiin, numeroon jne., riittää "String()"-funktion käyttäminen. Funktiot, kuten "ScrLP()" muuntaa myös muuttujat merkkijonoksi, mutta välittömästi leikkaamalla merkityksettömät merkit pois.

String(1000) // palauttaa "1 000"

Huomaa, että kun numero muunnetaan merkkijonoksi, ohjelma lisäsi automaattisesti välilyönnin, joka erottaa tuhannen. Tämän välttämiseksi voit käyttää seuraavia rakenteita:

StrReplace(String(1000),Characters.NPP,"") // palauttaa "1000"

String(Format(1000,"HG=")) // palauttaa "1000"

Lainaukset merkkijonossa

Melko usein joudut käsittelemään tarvetta määrittää merkkijonomuuttujassa lainausmerkit. Tämä voi olla joko konfiguraattoriin kirjoitettu pyyntöteksti tai pelkkä muuttuja. Tämän ongelman ratkaisemiseksi sinun tarvitsee vain asettaa kaksi lainausmerkkiä.

Header = String("Horns and Hooves LLC - se on me!") // palauttaa "Horns and Hooves LLC - se on me!"

Monirivi, rivinvaihto

Jos haluat luoda monirivistä tekstiä, lisää siihen rivinvaihdot (Symbols.PS).

MultilineText = "Ensimmäinen rivi" + Symbols.PS + "Toinen rivi"

Kuinka poistaa välilyöntejä

Poistaaksesi välilyönnit oikealta tai vasemmalta, voit käyttää funktiota "ScrAP()" (sekä "ScrL()" ja "ScrP()"):

StringNoSpaces = Lyhenne(" Monet kirjaimet ") // funktio palauttaa arvon "Monet kirjaimet"

Jos sinun on poistettava katkeamattomat välilyönnit luvun muuntamisen jälkeen merkkijonoksi, käytä seuraavaa rakennetta:

StringNoSpaces = StrReplace(String(99999),Characters.NPP,"") // palauttaa "99999"

Ohjelmoijat käyttävät usein myös seuraavaa rakennetta, jonka avulla voit poistaa tai korvata toisella merkillä kaikki välilyönnit tekstimuuttujassa:

StringNoSpaces = StrReplace("hello","") // palauttaa sanan "hello"

Merkkien vertailua keskenään

Voit verrata termejä tavallisella yhtäläisyysmerkillä. Vertailu on kirjainkoon erottelukykyä.

"Hello" = "hello" // palauttaa False
"Hello" = "Hei" // palauttaa True
"Hei" = "Hyvästi" // palauttaa False

Rivit 1C 8.3:ssa sisäänrakennetulla kielellä 1C edustavat primitiivityypin arvoja Linja. Tämän tyyppiset arvot sisältävät mielivaltaisen pituisen Unicode-merkkijonon. Merkkijonotyyppiset muuttujat ovat joukko merkkejä lainausmerkkien sisällä.

Esimerkki 1. Luodaan merkkijonomuuttuja tekstillä.

StringVariable = "Hei maailma!";

Toiminnot merkkijonojen käsittelyyn 1s:ssä 8.3

Tämä osio tarjoaa tärkeimmät toiminnot, joiden avulla voit muuttaa rivejä 1c:ssä tai analysoida niiden sisältämiä tietoja.

Vahvuus

Vahvuus(<Строка>) . Palauttaa parametrina välitetyn merkkijonon sisältämien merkkien määrän.

Esimerkki 2. Lasketaan merkkien määrä rivillä "Hei maailma!"

String = "Hei maailma!"; Merkkien lukumäärä = Stringth(merkkijono); Raportti(numeromerkit);

Tämän koodin suorittamisen tuloksena näkyy rivin merkkien määrä: 11.

AbbrL

AbbrL(<Строка>) . Leikkaa ei-merkittävät merkit merkkijonon ensimmäisen merkitsevän merkin vasemmalle puolelle.
Pienet hahmot:

  • tilaa;
  • rikkoutumaton tila;
  • taulukointi;
  • kuljetuksen paluu;
  • rivin käännös;
  • lomakkeen käännös (sivu).

Esimerkki 3. Poista kaikki välilyönnit rivin "world!" ja lisää siihen rivi "Hei".

String = Lyhenne("maailma!"); String = "Hei"+merkkijono; Raportti(merkkijono);

Tämän koodin suorittamisen seurauksena näytölle tulee rivi "Hei maailma!".

Lyhennettynä

Abbr(<Строка>) . Leikkaa ei-merkittävät merkit merkkijonon ensimmäisen merkitsevän merkin oikealle puolelle.

Esimerkki 4. Lomake riveistä "Hei" ja "rauhaa!" lause "Hei maailma!"

Rivi = Lyhenne("Hei ")+" "+ Lyhenne(" maailma!"); Raportti(merkkijono);

AbbrLP

AbbrLP(<Строка>) . Leikkaa ei-merkittävät merkit merkkijonon ensimmäisen merkitsevän merkin oikealle puolelle ja leikkaa myös ei-merkittävät merkit merkkijonon ensimmäisen merkitsevän merkin vasemmalle puolelle. Tätä toimintoa käytetään useammin kuin kahta edellistä, koska se on universaali.

Esimerkki 5. Poista merkityksettömät merkit vasemmalta ja oikealta vastapuolen nimestä.

Vastapuoli = Hakemistot Vastapuolet.Etsi tietojen mukaan ("TIN", "0777121211"); AccountObject = Account.GetObject(); CounterpartyObject.Name = AbbrLP(CounterpartyObject.Name); AccountObject.Write();

Leijona

Leijona(<Строка>, <ЧислоСимволов>) . Hakee merkkijonon ensimmäiset merkit, merkkien määrä on määritetty parametrissa Merkkien määrä.

Esimerkki 6. Päästä sisään rakenne Työntekijä sisältää työntekijän etu-, suku- ja isänimen. Hanki merkkijono, jossa on sukunimi ja nimikirjaimet.

NimiAlkuperäinen = Lev(Työntekijä.Nimi, 1); Isännimi alkukirjain = Leijona (työntekijä. Isännimi, 1); FullName = Työntekijä.Sukunimi + " " + Etunimi + "." + Keskimmäinen alkukirjain + ".";

Oikein

oikein (<Строка>, <ЧислоСимволов>) . Hakee merkkijonon viimeiset merkit, parametrissa määritetyn määrän merkkejä Merkkien määrä. Jos määritetty merkkien määrä ylittää merkkijonon pituuden, palautetaan koko merkkijono.

Esimerkki 7. Kirjoita päivämäärä muodossa "vvvvkkpp" merkkijonomuuttujan loppuun, hanki päivämäärän sisältävä merkkijono ja muunna se tyypiksi Päivämäärä.

String = "Nykyinen päivämäärä: 20170910"; StringDate = Oikeudet(merkkijono, 8); Päivämäärä = Päivämäärä(StringDate);

keskiviikko

Keskiviikko(<Строка>, <НачальныйНомер>, <ЧислоСимволов>) . Saa alimerkkijonon parametrina välitetystä merkkijonosta Linja, alkaen merkistä, jonka numero on määritetty parametrissa AlkuperäinenNumber ja parametriin siirretty pituus Merkkien määrä. Merkkien numerointi rivillä alkaa 1:stä. Jos parametrissa AlkuperäinenNumber arvo on pienempi tai yhtä suuri kuin nolla, niin parametri saa arvon 1. Jos parametri Merkkien määrä ei ole määritetty, valitaan merkit rivin loppuun asti.

Esimerkki 8. Anna yhdeksännestä paikasta alkavan merkkijonomuuttujan sisältää aluekoodin, sinun tulee hankkia se ja kirjoittaa se erilliselle riville.

String = "Alue: 99 Moskova"; Alue = Keskiarvo(merkkijono, 9, 2);

Sivuhaku

StrFind(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) . Etsii määritettyä osamerkkijonoa merkkijonosta ja palauttaa löydetyn alimerkkijonon ensimmäisen merkin paikkanumeron. Katsotaanpa tämän funktion parametreja:

  • Linja. lähde merkkijono;
  • Hae alimerkkijonoa. Etsi osamerkkijono;
  • Hakusuunta. Määrittää suunnan, jolla alimerkkijonoa etsitään merkkijonosta. Voi ottaa arvoja:
    • Hakusuunta.Alusta;
    • Haku.Loppusuunta;
  • Alkuasema. Määrittää paikan merkkijonossa, josta haku alkaa;
  • Esiintymien lukumäärä. Määrittää haetun alimerkkijonon esiintymisnumeron lähdemerkkijonossa.

Esimerkki 9. Rivillä "Hei maailma!" Määritä "ja"-merkin viimeisen esiintymän sijainti.

PositionNumber = StrFind("Hei maailma!", "ja", SearchDirection.End); Raportti(PositionNumber);

Tämän koodin suorittamisen tuloksena näytetään "ja"-symbolin viimeisen esiintymisen numero: 9.

VReg

VReg(<Строка>) . Muuntaa kaikki määritetyn merkkijonon 1s8:ssa isot kirjaimet.

Esimerkki 10: Muunna merkkijono "hei maailma!" isoihin kirjaimiin.

StringVreg = VReg("hei maailma!"); Raportti(StringVreg);

Tämän koodin suorittamisen seurauksena näyttöön tulee rivi "HELLO WORLD!"

NReg

NReg(<Строка>) . Muuntaa kaikki 1s8:ssa määritetyn merkkijonon merkit pieniksi kirjaimiksi.

Esimerkki 11: Muunna merkkijono "HELLO WORLD!" pieniin kirjaimiin.

StringNreg = NReg("HELLO MAAILMA!"); Raportti(StringVreg);

Tämän koodin suorittamisen tuloksena tulee näyttöön rivi "hello world!"

Treg

Treg(<Строка>) . Muuntaa merkkijonon seuraavasti: jokaisen sanan ensimmäinen merkki muunnetaan isoiksi, sanan muut merkit pieniksi kirjaimiksi.

Esimerkki 12: Kirjoita isot kirjaimet rivillä "hei maailma!"

StringTreg = TReg("hei maailma!"); Raportti(StringTreg);

Tämän koodin suorittamisen tuloksena tulee näkyviin rivi "Hello World!"

Symboli

Symboli(<КодСимвола>) . Hakee merkin Unicod-koodillaan.

Esimerkki 13. Lisää vasen ja oikea rivi "Hello World!" symboli ★

StringWithStars = Symboli("9733")+"Hei maailma!"+Symboli("9733"); Raportti(StringWithStars);

Tämän koodin suorittamisen seurauksena näyttöön tulee rivi ”★Hello World!★”

Symbolikoodi

SymbolCode(<Строка>, <НомерСимвола>) . Hakee Unicode-merkkikoodin ensimmäisessä parametrissa määritetystä merkkijonosta, joka sijaitsee toisessa parametrissa määritetyssä paikassa.

Esimerkki 14. Selvitä "Hei maailma!"-rivin viimeisen merkin koodi.

String = "Hei maailma!"; Merkkikoodi = Merkkikoodi(merkkijono, vahvuus(merkkijono)); Ilmoita (merkkikoodi);

Tämän koodin suorittamisen seurauksena näyttöön tulee symbolikoodi "!" - 33.

Tyhjä rivi

Tyhjä rivi(<Строка>) . Tarkistaa, sisältääkö merkkijono vain merkityksettömiä merkkejä, eli onko se tyhjä.

Esimerkki 15. Tarkista, onko kolmesta välilyönnistä koostuva merkkijono tyhjä.

Tyhjä = EmptyString(" "); Raportti(tyhjä);

Tämän koodin suorittamisen tuloksena tulee näyttöön sana "Yes" (loogisen arvon merkkijonolauseke Totta).

Sivunvaihto

StrReplace(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) . Etsii kaikki haun alimerkkijonon esiintymät lähdemerkkijonosta ja korvaa sen korvaavalla alimerkkijonolla.

Esimerkki 16. Rivillä "Hei maailma!" korvaa sana "rauha" sanalla "ystävät".

String = StrReplace("Hei maailma!", "Maailma", "Ystävät"); Raportti(merkkijono);

Tämän koodin suorittamisen tuloksena tulee näkyviin rivi "Hei ystävät!"

StrNumberLines

StrNumberRow(<Строка>) . Voit laskea monirivisen merkkijonon rivien määrän. Jos haluat siirtyä uudelle riville 1s 8:ssa, käytä symbolia PS(rivin uusi merkki).

Esimerkki 17. Määritä tekstin rivien määrä:
"Ensimmäinen linja
Toinen linja
Kolmas rivi"

Numero = StrNumberString("Ensimmäinen rivi"+Merkit.PS +"Toinen rivi"+Symbolit.PS +"Kolmas rivi"); Raportti(numero);

Tämän koodin suorittamisen tulos on tekstin rivien lukumäärän näyttö: 3

StrGetString

StrGetString(<Строка>, <НомерСтроки>) . Hakee rivin monirivisessä merkkijonossa sen numeron perusteella. Rivien numerointi alkaa 1:stä.

Esimerkki 18. Hae tekstin viimeinen rivi:
"Ensimmäinen linja
Toinen linja
Kolmas rivi"

Teksti = "Ensimmäinen rivi" + Symbolit + "Toinen rivi" + "Kolmas rivi"; Viimeinen rivi = StrGetRow(teksti, StrNumberLines(teksti)); Raportti(LastLine);

Tämän koodin suorittamisen tuloksena tulee näyttöön rivi "Kolmas rivi".

PageNumberOccurrences

StrNumberOccurrences(<Строка>, <ПодстрокаПоиска>) . Palauttaa määritetyn alimerkkijonon esiintymisten määrän merkkijonossa. Toiminto on isot ja pienet kirjaimet erotteleva.

Esimerkki 19. Määritä, kuinka monta kertaa kirjain "c" esiintyy rivillä "Lines in 1s 8.3 and 8.2" riippumatta sen kirjaimesta.

Line = "Rivit 1s 8.3 ja 8.2"; NumberOccurrences = StrNumberOccurrences(Vreg(String), "With"); Raportti(Tapahtumien lukumäärä);

Tämän koodin suorittamisen tulos näyttää esiintymien lukumäärän: 2.

Sivu alkaa kanssa

StrStartsWith(<Строка>, <СтрокаПоиска>) . Tarkistaa, alkaako ensimmäisessä parametrissa välitetty merkkijono toisen parametrin merkkijonolla.

Esimerkki 20. Selvitä, alkaako valitun vastapuolen TIN numerolla 1. Anna muuttuja Vastapuoli Vastapuolet.

TIN = vastapuoli.TIN; StartsUNits = StrStartsWith(TIN, "1"); If Alkaa yksiköillä Then //Koodisi EndIf;

PageEndsOn

StrEndsWith(<Строка>, <СтрокаПоиска>) . Tarkistaa, päättyykö ensimmäisessä parametrissa välitetty merkkijono toisen parametrin merkkijonoon.

Esimerkki 21. Selvitä, päättyykö valitun vastapuolen TIN numeroon 2. Anna muuttuja Vastapuoli viittaus hakemistoelementtiin tallennetaan Vastapuolet.

TIN = vastapuoli.TIN; EndsWithTwo = StrEndsWith(TIN, "2"); If EndsInTwo Then //Koodisi EndIf;

Sivujako

StrDivide(<Строка>, <Разделитель>, <ВключатьПустые>) . Jakaa merkkijonon osiin käyttämällä määritettyjä erotinmerkkejä ja kirjoittaa tuloksena olevat merkkijonot taulukkoon. Ensimmäinen parametri tallentaa lähdemerkkijonon, toinen sisältää erottimen sisältävän merkkijonon, kolmas osoittaa, tuleeko taulukkoon kirjoittaa tyhjiä merkkijonoja (oletuksena Totta).

Esimerkki 22. Olkoon merkkijono, joka sisältää numeroita erotettuina merkillä “;”, hanki merkkijonosta joukko numeroita.

Merkkijono = "1; 2; 3"; Array = StrDivide(merkkijono, ";"); For Count = 0 By Array.Quantity() - 1 Cycle Attempt Array[Count] = Luku(AbbrLP(Matriisi[Laskuri])); Poikkeustaulukko[Sch] = 0; EndAttemptsEndCycle;

Suorituksen tuloksena saadaan taulukko, jossa on numeroita 1-3.

PageConnect

StrConnect(<Строки>, <Разделитель>) . Muuntaa ensimmäisen parametrin merkkijonojoukon merkkijonoksi, joka sisältää kaikki taulukon elementit erotettuna toisessa parametrissa määritetyllä erottimella.

Esimerkki 23. Hae alkuperäinen merkkijono käyttämällä edellisen esimerkin numerotaulukkoa.

Tilille = 0 Array.Määrä() - 1 Cycle Joukko[Toimi] = Merkkijono(Matriisi[Toimi]); EndCycle; Rivi = StrConnect(Matriisi, "; ");

Ohjelmointikielen perusominaisuuksiin kuuluu yleensä työskentely numeroiden ja merkkijonojen kanssa. Yleensä nämä ominaisuudet on koodattu kääntäjäkoodiin (tai ohjelmointikielen "perus"-luokat toteutetaan).

1C:ssä kyky työskennellä merkkijonojen kanssa on ohjelmoitu itse alustaan. Tänään tarkastelemme 1C-merkkijonojen kanssa työskentelyn ominaisuuksia ohjelmissa sisäänrakennetulla 1C-kielellä.

Viivan arvo 1C

1. Aloitetaan yksinkertaisimmasta. Muuttujan luominen ja vakiomerkkijonoarvon määrittäminen sille näyttää tältä 1C:ssä:

Muuttuja = "Hei, maailma!";

Jos sinun on määritettävä lainausmerkki vakiossa 1C-merkkijonoarvossa, sinun on tuplattava se ""

Muuttuja = "Hei, maailma"!;

2. Rivinvaihto 1C voidaan määrittää kahdella tavalla kerralla. Ensimmäinen käyttää symbolia |

Muuttuja = "Hei,
| maailman! ";

Toinen on Symbols-järjestelmän luettelointi. Sen avulla voit lisätä sekä 1C-rivinvaihtoja että muita ei-tulostuvia merkkejä, kuten TAB.

Muuttuja = "Hei" + Symbols.PS + "rauha!";

3. 1C:n konfiguraatioita voidaan kehittää paitsi yhdelle kielelle (venäjäksi, englanniksi tai toiselle) - mutta samanaikaisesti useille kielille. Tässä tapauksessa tällä hetkellä käytetty kieli valitaan 1C-ikkunan alareunasta.

Kieliluettelo sijaitsee määritysikkunassa Yleiset/Kielet-haarassa. Jokaisella kielellä on lyhyt tunniste, kuten ru tai eng.

On selvää, että ohjelmoitaessa tällaista kokoonpanoa, 1C-linjat voivat olla myös monikielisiä. Tätä varten on mahdollista luoda tällainen 1C-rivi määrittämällä läpi; vaihtoehdot kielitunnisteen mukaan:

Muuttuja = "ru=""Hei, maailma! ""; en=""Hei, maailma! """;

Jos käytät tällä tavalla muodostettua 1C-linjaa tavalliseen tapaan, se on mitä siihen on kirjoitettu. Jotta järjestelmä voisi jakaa sen kahdeksi vaihtoehdoksi ja käyttää haluttua vaihtoehtoa, sinun on käytettävä НStr()-funktiota:

//oikea kaksikielisille kokoonpanoille
Raportti(NStr(Muuttuja));

Rekvisiitta linjalla 1C

Attribuutti on kenttä 1C-hakemistossa/asiakirjassa. Se eroaa 1C-kielen ohjelman muuttujasta siinä, että attribuutille sen tyyppi ilmoitetaan tarkasti (numero, 1C-merkkijono jne.). Jos haluat virkistää muistiasi siitä, mitä rekvisiitta on, katso oppitunti aiheesta.

Jos määrität attribuutin tyypin - rivi 1C, sinun on lisäksi määritettävä parametrit.

1C-rivejä on rajoittamaton pituus (ilmaistuna pituus = 0) ja rajoitettu pituus, mikä ilmaisee tarkan merkkimäärän. Rajoittamattoman pituiset 1C-rivit on tallennettu erilliseen SQL-taulukkoon, joten niiden käyttö on vähemmän tuottavaa kuin rajoitettujen.

Siksi rajoittamattoman pituisten 1C-merkkijonojen käytöllä on rajoituksensa - niitä ei ole mahdollista käyttää kaikkialla. Se ei ole sallittu esimerkiksi asiakirjanumerona, viitekoodina tai mittana.

Työskentely 1C-kielien kanssa

1C-alustalla on useita sisäänrakennettuja toimintoja merkkijonojen kanssa työskentelemiseen.

  • AbbrLP ("Uskomatonta, mutta totta!")
    Poistaa ylimääräiset välilyönnit 1C-riviltä. Voidaan käyttää myös minkä tahansa tyypin muuntamiseen 1C-merkkijonoksi (esimerkiksi numerot).
  • Muuttuja = "Vasya" + AbbrLP(" plus") + "Olya"; //tulee "Vasya plus Olya"
    Esimerkki useiden 1C-merkkijonoarvojen summaamisesta. Tuloksena on yksi rivi 1C.
  • Muuttuja = Lev("Musiikki", 2); //tulee olemaan "Mu"
    Muuttuja = Medium("Musiikki", 2, 2); //tulee "uhka"
    Muuttuja = Oikeudet("Musiikki", 2); //tulee "ka"
    Erilaisia ​​vaihtoehtoja alimerkkijonon saamiseksi 1C-merkkijonosta.
  • Muuttuja = Etsi("Musiikki", "zy"); //tulee 3
    Etsi alimerkkijono merkkijonosta 1C alkaen merkistä 1.
  • Muuttuja = StrLength("Musiikki"); //tulee 6
    Palauttaa 1C-rivin merkkien määrän.
  • Report("Hei") //viesti-ikkunassa 1C-ikkunan alaosassa
    Alert("Hei") //ponnahdusikkuna
    Status("Hei") //tilanäytön rivillä vasemmassa alakulmassa
    .

Esineiden tuominen riville 1C

Kuten tiedätte, tällä hetkellä suosituin muoto strukturoidun tiedon vaihtamiseen on XML. Jopa uusin versio MS Office Wordista ja Excelistä tallentaa tiedostot tässä muodossa (docx ja xlsx, vastaavasti, muuttavat laajennuksen zip-muotoon, avautuvat arkistaattorissa).

1C-alusta tiedonvaihtoon tarjoaa useita vaihtoehtoja, joista tärkein on myös XML.

1. Yksinkertaisin tapa on käyttää Abreviation()- tai String()-funktiota. Voit käyttää REPRESENTATION()-funktiota pyynnön rungossa. Niiden toiminnan tulos on sama - he luovat käyttäjälle merkkijonoesityksen mistä tahansa 1C-objektista.

Oletusarvoisesti tämä on hakemiston nimi. Asiakirjalle – asiakirjan nimi, numero ja päivämäärä.

2. Mikä tahansa 1C-objekti (rajoituksin) voidaan muuntaa XML-muotoon ja päinvastoin. Muunnosprosessia kutsutaan serialisoinniksi.

StringViewXml = XMLString(Arvo); //hae XML 1C-arvosta
Arvo1C = XMLValue(Tyyppi("Hakemiston linkki. Nimikkeistö"),TyyppimerkkijonoXml); //Hae 1C-arvo XML-merkkijonosta, sinun on määritettävä 1C-tyyppi, joka tulee vastaanottaa

3. 1C-alustalla on oma tapa muuntaa mikä tahansa 1C-objekti merkkijonoksi. Se siirtyi versiosta 1C 7.7. Muut ohjelmat eivät ymmärrä tätä muotoa, mutta muut 1C ymmärtävät sen, mikä tekee siitä helppoa vaihtamiseen 1C-tietokantojen välillä.

Rivi = ValueInRowInt(Arvo1C); //hae merkkijono 1C arvosta 1C
ValueVFile("C:\OmaTiedosto.txt", Arvo1C); //toinen vaihtoehto, saamme tiedoston, jossa on tallennettu merkkijono 1C-arvosta
Arvo1C = ValueFromStringInt(merkkijono); //takaisin riviltä 1C
Arvo1C = ArvoTiedosto("C:\OmaTiedosto.txt"); //takaisin tiedostosta

1C-rivien muokkaaminen lomakkeella

Sen lisäksi, että työskentelen 1C-merkkijonojen kanssa 1C-kielisessä ohjelmassa, haluaisin tietysti, että käyttäjä voi muokata niitä. Tähän on useita mahdollisuuksia:

1. Helpoin tapa on pyytää 1C-linjan syöttämistä pyynnöstä. Tätä menetelmää käytetään opetettaessa 1C-ohjelmointia elämässä sitä käytetään paljon harvemmin (mutta sitä käytetään!).

Muuttuja = "";
Rivi = EnterValue(Muuttuja, "Anna koko nimi");

2. 1C-objektin (hakemisto/asiakirja) tai lomakkeen yksityiskohtien (katso) näyttämiseksi käytetään useimmiten syöttökenttää. Tämä on 1C:n yleisin työkalu, jonka avulla käyttäjä voi työskennellä muokkauskenttien kanssa.

3. Syöttökentän ominaisuuksia voidaan laajentaa (katso syöttökentän ominaisuudet, napsauta sitä hiiren kakkospainikkeella, lisätietoja):

  • Valintaruutu Monirivinen muokkaustila
  • Lisämuokkausvalintaruutu (käytettävissä, jos edellinen valintaruutu on valittuna)
  • Valintaruutu Salasanatila (katso).

4. Jos kaikki syöttökentän ominaisuudet eivät riitä sinulle, on sisäänrakennettu editori. Jos haluat lisätä sen lomakkeeseen, sinun on lisättävä tekstiasiakirjakenttä Lomake/Lisää ohjausobjekti -valikkoon. Sen ominaisuuksissa voit määrittää sen toimintatavan – Extension-ominaisuuden.

Tekstiasiakirjan kenttää ei voi liittää suoraan tietoihin. Lomakkeen OnOpen()-tapahtumakäsittelijään on kirjoitettava funktio (katso):

Lomakeelementit.ElementinNimiTekstiAsiakirjaField.SetText(StringArvo); //tässä ValueString on teksti, joka on saatu esimerkiksi attribuutista

Ja tallennuskäsittelyyn - esimerkiksi Tallenna-painikkeeseen - lisää tallennus:

ValueString = FormElements.ElementNameTextDocumentField.GetText(); //ArvoRivi tässä on attribuutti, johon tallennamme arvon

5. 1C-versiossa 8.2.11, hallituissa lomakkeissa, on ilmestynyt uusi vaihtoehto 1C-rivin esittämiseen - Muotoiltu asiakirja -kenttä.


Kuten tekstidokumentin kenttä, se on asetettava avattaessa ja kirjoitettava muistiin, kun tallennat sen itse ohjelman avulla.

  • 1C-objektiin, jonka muotoa luomme (hakemisto, asiakirja, käsittely jne.) - lisää attribuutti, jonka tyyppi on Value Storage
  • OnReadOnServer()-funktiossa asetamme tekstin attribuutista

    //tässä attribuutti on 1C-objektin lisätty attribuutti
    //tässä FormattedDocument on muokattavan lomakkeen kentän nimi
    &Palvelimella

    FormattedDocument = CurrentObject.Attributes.Get();
    Menettelyn loppu

  • EnnenWritingOnServer()-funktiossa tai painikkeella kirjoitamme tekstin kentästä

    &Palvelimella
    Toimenpide, kun ReadingOnServer (nykyinen objekti)
    CurrentObject.Props = NewValueStorage(FormattedDocument);
    Menettelyn loppu

Merkkijono on yksi primitiivisistä tietotyypeistä 1C:Enterprise 8 -järjestelmissä linja sisältää tekstiä.

Kirjoita muuttujan arvot linja ovat lainausmerkeissä. Useita tämän tyyppisiä muuttujia voidaan lisätä.

Per1 = "Sana 1" ;
Per2 = "Sana 2" ;
Per3 = Per1 + " " + Per2;

Lopulta Per3 tulee tarkoittamaan" Sana 1 Sana 2″.

Lisäksi 1C:Enterprise 8 -järjestelmät tarjoavat toimintoja merkkijonojen kanssa työskentelemiseen. Katsotaanpa tärkeimpiä:

EnterString(<Строка>, <Подсказка>, <Длина>, <Многострочность>) — toiminto on suunniteltu näyttämään valintaikkuna, jossa käyttäjä voi määrittää tyypin muuttujan arvon Linja. Parametri <Строка> on pakollinen ja sisältää sen muuttujan nimen, johon syötetty merkkijono kirjoitetaan. Parametri <Подсказка> valinnainen - tämä on valintaikkunan otsikko. Parametri <Длина> valinnainen, näyttää syötemerkkijonon enimmäispituuden. Oletusarvo on nolla, mikä tarkoittaa rajoittamatonta pituutta. Parametri <Многострочность> valinnainen. Määrittää monirivisen tekstinsyöttötilan: True—monirivinen tekstinsyöttö rivierottimilla; False - kirjoita yksinkertainen merkkijono.

Voit kirjoittaa merkkijonon, jos tiedät Unicoden merkkikoodin:

Symboli(<КодСимвола>) — koodi syötetään numerona.

Kirjain= Symboli(1103) ; // Minä

On myös käänteinen toiminto, jonka avulla voit selvittää symbolin koodin.

SymbolCode(<Строка>, <НомерСимвола>) — palauttaa määritetyn merkin Unicode-numeron numerona.

Tekstin kirjainten muunnostoiminnot:

VReg(<Строка>) — Muuntaa kaikki merkkijonon merkit isoiksi kirjaimiksi.

NReg(<Строка>) — Muuntaa kaikki merkkijonon merkit pieniksi kirjaimille.

Treg(<Строка>) — muuntaa kaikki merkkijonon merkit otsikon kirjainkoon. Eli kaikkien sanojen ensimmäiset kirjaimet muunnetaan isoiksi ja loput kirjaimet pieniksi.

Toiminnot merkkien etsimiseen ja korvaamiseen merkkijonossa:

Löytö(<Строка>, <ПодстрокаПоиска>) — löytää haun alimerkkijonon esiintymän merkkinumeron. Esimerkiksi:

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

StrFind(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) — etsii hakuosamerkkijonon esiintymän merkkinumeron, esiintymisnumero ilmoitetaan vastaavassa parametrissa. Tässä tapauksessa haku alkaa merkillä, jonka numero on määritetty parametrissa Alkuasema. Haku on mahdollista merkkijonon alusta tai lopusta. Esimerkiksi:

Numero4 esiintymät = Str Etsi ( "Puolustavuus", "tietoa" ,Hakusuunta. Alusta, 1, 4); // 7

StrReplace(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) – etsii kaikki haun alimerkkijonon esiintymät lähdemerkkijonosta ja korvaa sen korvaavalla alimerkkijonolla.

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

Tyhjä rivi(<Строка>) – tarkistaa merkkijonon merkittävien merkkien varalta. Jos merkittäviä merkkejä ei ole tai merkkejä ei ole ollenkaan, arvo palautetaan Totta. Muuten - Valehdella.

StrNumberOccurrences(<Строка>, <ПодстрокаПоиска>) – Laskee haun alimerkkijonon esiintymisten määrän lähdemerkkijonossa.

StrNumberOccurrences ( "Opiskele, opiskele ja vielä kerran opiskele", "tutkimus" , "" ) ; // 3

StrTemplate(<Строка>, <ЗначениеПодстановки1>…<ЗначениеПодстановкиN> — korvaa parametrit merkkijonoksi numerolla. Rivin tulee sisältää korvausmerkit, joiden muoto on "%1..%N". Merkkien numerointi alkaa 1. Jos parametrin arvo Määrittelemätön, tyhjä merkkijono korvataan.

StrTemplate ( "Parametri 1 = %1, Parametri 2 = %2", "1" , "2" ) ; // Parametri 1 = 1, parametri 2 = 2

Merkkijonon muunnosfunktiot:

Leijona(<Строка>, <ЧислоСимволов>) – palauttaa merkkijonon ensimmäiset merkit.

oikein (<Строка>, <ЧислоСимволов>) – palauttaa merkkijonon viimeiset merkit.

Keskiviikko(<Строка>, <НачальныйНомер>, <ЧислоСимволов>) – palauttaa pituuden merkkijonon<ЧислоСимволов>, alkaen symbolista<НачальныйНомер>.

AbbrL(<Строка>) leikkaa ei-merkittävät merkit merkkijonon ensimmäisen merkitsevän merkin vasemmalle puolelle.

Abbr(<Строка>) — leikkaa pois merkityksettömät merkit rivin viimeisen merkitsevän merkin oikealta puolelta.

AbbrLP(<Строка>) – katkaisee merkityksettömät merkit rivin ensimmäisen merkitsevän merkin vasemmalta puolelta ja rivin viimeisen merkitsevän merkin oikealta puolelta.

StrGetString(<Строка>, <НомерСтроки>) – Hakee monirivisen merkkijonon numeron mukaan.

Muut ominaisuudet:

Vahvuus(<Строка>) – palauttaa merkkijonon merkkien määrän.

StrNumberRow(<Строка>) – palauttaa monirivisen merkkijonon rivien määrän. Riviä pidetään uutena, jos se erotetaan edellisestä rivinvaihtomerkillä.

StrCompare(<Строка1>, <Строка2> ) – vertaa kahta merkkijonoa isot ja pienet kirjaimet huomioimatta. Funktio toimii kuin objekti Arvojen vertailu. Palautukset:

  • 1 - jos ensimmäinen rivi on suurempi kuin toinen
  • -1 - jos toinen rivi on suurempi kuin ensimmäinen
  • 0 - jos merkkijonot ovat yhtä suuret

StrCompare("Ensimmäinen rivi" , "Toinen rivi" ) ; // 1