1c-funktiot merkkijonojen kanssa työskentelemiseen. Uusia toimintoja merkkijonojen käsittelyyn. Merkkien vertailua keskenään

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 tarkoittaa" Sana 1 Sana 2″.

Lisäksi 1C:Enterprise 8 -järjestelmät tarjoavat toimintoja merkkijonojen käsittelyyn. 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 kirjaimiin. 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 haun alimerkkijonon 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äärittämä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

Rivit 1C 8.3:ssa sisäänrakennetulla kielellä 1C edustavat primitiivisen tyypin 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(Merkkien määrä);

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 vasemmalta ja oikealta merkityksettömät merkit 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 1s8:ssa määritetyn merkkijonon merkit isoiksi kirjaimille.

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 määritetyn merkkijonon 1s 8 merkit pieniksi kirjaimille.

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 lukumäärän merkkijonossa. Toiminto on isojen ja pienten kirjainten välinen erotus.

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 ja 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 se, 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 on ilmoitettu 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.

Hakemistolle oletusarvoisesti tämä on sen 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ä vastaanotettava 1C-tyyppi

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ämiseen 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

1C-kyselyissä merkkijonojen kanssa työskentelemiseen on vain vähän mekanismeja. Ensinnäkin rivit voidaan lisätä. Toiseksi, voit ottaa alimerkkijonon merkkijonosta. Kolmanneksi merkkijonoja voidaan verrata, myös kuvion mukaan. Se on luultavasti kaikki mitä voidaan tehdä jousilla.

Merkkijonojen lisäys

Rivien lisäämiseksi kyselyyn käytetään +-toimintoa. Voit lisätä vain rajoitetun pituisia merkkijonoja.

VALITSE "Nimi:" + Vastapuolet Nimi AS Sarake 1 Vastapuolet AS Vastapuolet WHERE Linkki

Osamerkkijonotoiminto

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

Oliomallin Environment()-funktion analogi. Substring()-funktiota voidaan soveltaa merkkijonotietoihin ja sen avulla voit valita fragmentin <Строки> , alkaen merkkinumerosta <НачальнаяПозиция> (rivin merkit numeroidaan 1:stä alkaen) ja pituus <Длина> hahmoja. Funktiolaskennan tuloksella on muuttuvapituinen merkkijonotyyppi ja pituus katsotaan rajoittamattomaksi, jos <Строка> sillä on rajoittamaton pituus ja parametrit <Длина> ei ole vakio tai suurempi kuin 1024.

Jos merkkijonon pituus on pienempi kuin toisessa parametrissa määritetty, funktio palauttaa tyhjän merkkijonon.

Huomio! SUBSTRING()-funktion käyttämistä rajoittamattoman pituisten merkkijonojen muuntamiseen rajoitetun pituisiksi merkkijonoiksi ei suositella. Sen sijaan on parempi käyttää cast-operaattoria EXPRESS().

Toiminto samanlainen

Jos meidän on varmistettava, että merkkijonoattribuutti täyttää tietyt kriteerit, vertaamme sitä:

SELECT Counterparties Nimi AS Sarake 1 Vastapuolet Vastapuolet WHERE Nimi = "Gazprom".

Mutta entä jos tarvitset hienovaraisemman vertailun? Ei vain tasa-arvoa tai eriarvoisuutta, vaan samankaltaisuutta tiettyyn malliin? Juuri tätä varten SAMANLAISET-toiminto luotiin.

LIKE — Operaattori, jolla tarkistetaan merkkijonon samankaltaisuus kuvion kanssa. LIKE:n analogi SQL:ssä.

SAMANLAISET-operaattorilla voit verrata sen vasemmalla puolella määritetyn lausekkeen arvoa oikealla olevaan kuviomerkkijonoon. Lausekkeen arvon on oltava merkkijono. Jos lausekkeen arvo vastaa kuviota, operaattorin tulos on TRUE, muuten se on EPÄTOSI.

Seuraavat merkit kuviomerkkijonossa ovat palvelumerkkejä ja niillä on eri merkitys kuin merkkijonomerkillä:

  • % (prosentti): sarja, joka sisältää minkä tahansa määrän mielivaltaisia ​​merkkejä;
  • _ (alaviiva): yksi mielivaltainen merkki;
  • […] (yksi tai useampi merkki hakasulkeissa): mikä tahansa yksittäinen hakasulkeissa oleva merkki. Luettelo voi sisältää alueita, esimerkiksi a-z, mikä tarkoittaa mielivaltaista merkkiä, joka sisältyy alueeseen, mukaan lukien alueen päät;
  • [^...] (hakasulkeissa negatiivinen merkki, jota seuraa yksi tai useampi merkki): mikä tahansa yksittäinen merkki, paitsi ne, jotka on lueteltu kieltomerkin jälkeen.

Mikä tahansa muu symboli tarkoittaa itseään, eikä sillä ole lisäkuormaa. Jos jokin luetelluista merkeistä on kirjoitettava itsestään, sitä edeltää<Спецсимвол>. Itse<Спецсимвол>(mikä tahansa sopiva merkki) määritellään samassa käskyssä avainsanan SPECIAL CHARACTER jälkeen.

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 alustalla 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 osan, kuten URL-osoitteen koko tiedostonimen. Ja etsiminen tietystä paikasta auttaa tapauksissa, joissa sinun on etsittävä tunnetusta fragmentista, ei koko riviltä.