1s 8 kaip eilutės operacijos. Naujos funkcijos darbui su stygomis

Eilutė yra vienas iš primityvių duomenų tipų 1C:Enterprise 8 sistemose linija yra teksto.

Įveskite kintamųjų reikšmes linija yra įtrauktos į dvigubas kabutes. Keli kintamieji šio tipo galima sulankstyti.

Per1 = "1 žodis" ;
Per2 = "2 žodis" ;
Per3 = Per1 + " " + Per2;

Galų gale Per3 reikš " Žodis 1 Žodis 2 colių.

Be to, 1C:Enterprise 8 sistemos suteikia funkcijas, skirtas darbui su eilutėmis. Pažvelkime į pagrindinius:

EnterString(<Строка>, <Подсказка>, <Длина>, <Многострочность>) — funkcija skirta rodyti dialogo langą, kuriame vartotojas gali nurodyti tipo kintamojo reikšmę Linija. Parametras <Строка> yra būtinas ir jame yra kintamojo, į kurį bus įrašyta įvesta eilutė, pavadinimas. Parametras <Подсказка> neprivaloma – tai dialogo lango pavadinimas. Parametras <Длина> neprivaloma, rodo maksimalų įvesties eilutės ilgį. Numatytoji vertė yra nulis, o tai reiškia neribotą ilgį. Parametras <Многострочность> neprivaloma. Apibrėžiamas kelių eilučių teksto įvesties režimas: True – kelių eilučių teksto įvestis su eilučių skyrikliais; Netiesa – įveskite paprastą eilutę.

Galite įvesti eilutę, jei žinote simbolio kodą Unicode:

Simbolis (<КодСимвола>) — kodas įvedamas kaip skaičius.

Raidė= Simbolis(1103) ; // aš

Taip pat yra atvirkštinė funkcija, leidžianti sužinoti simbolio kodą.

Simbolio kodas(<Строка>, <НомерСимвола>) — grąžina nurodyto simbolio unikodo numerį kaip skaičių.

Teksto didžiųjų ir mažųjų raidžių konvertavimo funkcijos:

VReg(<Строка>) — Konvertuoja visus eilutės simbolius į didžiąsias raides.

NReg(<Строка>) — Konvertuoja visus eilutės simbolius į mažąsias raides.

TReg(<Строка>) — konvertuoja visus eilutės simbolius į pavadinimo didžiąsias ir mažąsias raides. Tai reiškia, kad pirmosios raidės visuose žodžiuose paverčiamos didžiosiomis raidėmis, o likusios raidės konvertuojamos į mažąsias.

Simbolių paieškos ir keitimo eilutėje funkcijos:

Rasti (<Строка>, <ПодстрокаПоиска>) — suranda paieškos poeilutės pasireiškimo simbolio numerį. Pavyzdžiui:

Rasti ("Styga" , "gerai" ) ; // 4

StrFind(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) — suranda paieškos poeilutės pasikartojimo simbolio numerį, įvykio numeris nurodomas atitinkamame parametre. Šiuo atveju paieška pradedama simboliu, kurio numeris nurodytas parametre Pradinė padėtis. Ieškoti galima nuo eilutės pradžios arba pabaigos. Pavyzdžiui:

Skaičius4 atvejai = Str Rasti ( "Gynybiškumas", "apie" ,Paieškos kryptis. Nuo pradžios, 1, 4); // 7

StrReplace(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) – suranda visus paieškos poeilutės atvejus šaltinio eilutėje ir pakeičia ją pakaitine poeilute.

StrReplace ("Eilutė" , "gerai" , "" ) ; // Puslapis

Tuščia eilutė (<Строка>) – patikrina, ar eilutėje nėra reikšmingų simbolių. Jei reikšmingų simbolių nėra arba visai nėra, vertė grąžinama Tiesa. Kitaip - Melas.

StrNumberOccurrences(<Строка>, <ПодстрокаПоиска>) – Skaičiuoja paieškos poeilutės pasikartojimų skaičių šaltinio eilutėje.

StrNumberCurrences ( „Mokykis, mokykis ir dar kartą mokykis“, "studija" , "" ) ;

// 3<Строка>, <ЗначениеПодстановки1>…<ЗначениеПодстановкиN> — StrTemplate( pakeičia parametrus į eilutę pagal skaičių. Eilutėje turi būti pakeitimo žymenys, tokios formos: „%1..%N“. Žymeklių numeracija prasideda nuo 1. Jei parametro reikšmė Neapibrėžtas

, pakeičiama tuščia eilutė. StrTemplate (, "1" , "2" ) ; "1 parametras = %1, 2 parametras = %2"

// 1 parametras = 1, 2 parametras = 2

Eilučių konvertavimo funkcijos:<Строка>, <ЧислоСимволов>) Liūtas(

– grąžina pirmuosius eilutės simbolius.<Строка>, <ЧислоСимволов>) Teisingai (

– grąžina paskutinius eilutės simbolius.<Строка>, <НачальныйНомер>, <ЧислоСимволов>) trečiadienis (<ЧислоСимволов>– grąžina ilgio eilutę<НачальныйНомер>.

, pradedant nuo simbolio<Строка>) AbbrL(

apkarpo nereikšmingus simbolius į kairę nuo pirmojo reikšmingo simbolio eilutėje.<Строка>) Santrumpa (

— nupjauna nereikšmingus simbolius į dešinę nuo paskutinio reikšmingo simbolio eilutėje.<Строка>) AbbrLP(

– nupjauna nereikšmingus simbolius į kairę nuo pirmojo reikšmingo simbolio eilutėje ir į dešinę nuo paskutinio reikšmingo simbolio eilutėje.<Строка>, <НомерСтроки>) StrGetString(

– Gauna kelių eilučių eilutę pagal skaičių.

Kitos funkcijos:<Строка>) Stiprumas(

– grąžina simbolių skaičių eilutėje.<Строка>) StrNumberRow(

– grąžina kelių eilučių eilutės eilučių skaičių. Eilutė laikoma nauja, jei ji nuo ankstesnės atskirta naujos eilutės simboliu.<Строка1>, <Строка2> ) StrCompare( – lygina dvi eilutes neskiriant didžiųjų ir mažųjų raidžių. Funkcija veikia panašiai kaip objektas Vertybių palyginimas

  • . Grąžinimai:
  • 1 - jei pirmoji eilutė yra didesnė už antrąją
  • -1 - jei antroji eilutė yra didesnė už pirmąją

0 - jei eilutės yra lygios

StrCompare("Pirma eilutė" , "Antra eilutė") ; // 1 Linija 1C 8.3 eilutės integruotoje 1C kalboje reiškia primityvaus tipo reikšmes

. Šio tipo reikšmėse yra savavališko ilgio Unicode eilutė. Eilučių tipo kintamieji yra simbolių rinkinys, įtrauktas į kabutes.

1 pavyzdys. Sukurkime eilutės kintamąjį su tekstu.

StringVariable = "Sveikas pasaulis!";

Funkcijos dirbant su stygomis 1s 8.3 INšį skyrių

Bus pateiktos pagrindinės funkcijos, leidžiančios keisti 1c eilutes arba analizuoti jose esančią informaciją.

Kitos funkcijos:<Строка>) Stiprumas

2 pavyzdys. Suskaičiuokime simbolių skaičių eilutėje "Sveikas pasaulis!"

String = "Sveikas pasaulis!"; Simbolių skaičius = String(Eilutė); Ataskaita (Skaičius simboliai);

Šio kodo vykdymo rezultatas bus simbolių skaičius eilutėje: 11.

AbbrL

, pradedant nuo simbolio<Строка>) . Apkarpomi nereikšmingi simboliai į kairę nuo pirmojo reikšmingo simbolio eilutėje.
Smulkūs veikėjai:

  • erdvė;
  • nelūžtanti erdvė;
  • lentelės;
  • vežimo grąžinimas;
  • eilutės vertimas;
  • formos (puslapio) vertimas.

3 pavyzdys. Pašalinkite visus tarpus iš kairės eilutės "pasaulis!" ir pridėkite eilutę „Sveiki“.

String = Santrumpa("pasaulis!"); String = "Sveiki"+Eilutė; Report(String);

Šio kodo vykdymo rezultatas bus eilutė „Hello world!“ ekrane.

Sutrumpintas

apkarpo nereikšmingus simbolius į kairę nuo pirmojo reikšmingo simbolio eilutėje.<Строка>) . Apkarpomi nereikšmingi simboliai į dešinę nuo pirmojo reikšmingo simbolio eilutėje.

4 pavyzdys. Forma iš eilučių „Labas“ ir „taika! frazė "Sveikas pasaulis!"

Linija = Santrumpa("Sveiki ")+" "+ Santrumpa(" pasaulis!"); Report(String);

AbbrLP

— nupjauna nereikšmingus simbolius į dešinę nuo paskutinio reikšmingo simbolio eilutėje.<Строка>) . Apkarpomi nereikšmingi simboliai į dešinę nuo pirmojo reikšmingo simbolio eilutėje, taip pat apkarpomi nereikšmingi simboliai į kairę nuo pirmojo reikšmingo eilutės simbolio. Ši funkcija naudojama dažniau nei dvi ankstesnės, nes ji yra universalesnė.

5 pavyzdys. Pašalinkite nereikšmingus simbolius kairėje ir dešinėje sandorio šalies pavadinime.

Sandorio šalis = Katalogai. Ieškoti pagal išsamią informaciją ("TIN", "0777121211"); AccountObject = Account.GetObject(); Sandorio šaliesObject.Pavadinimas = AbbrLP(Sandorio šaliesObject.Name); AccountObject.Write();

Liūtas

Eilučių konvertavimo funkcijos:<Строка>, <ЧислоСимволов>) . Gauna pirmuosius eilutės simbolius, simbolių skaičius nurodomas parametre Simbolių skaičius.

6 pavyzdys. Įleiskite struktūrą Darbuotojas turi būti darbuotojo vardas, pavardė ir tėvavardis. Gaukite eilutę su pavarde ir inicialais.

VardasPradinis = Lev(Darbuotojo.Vardas, 1); Patroniminis inicialas = Liūtas(Darbuotojas. Patronimas, 1); FullName = Darbuotojas.Pavardė + " " + Vardo pradžia + "." + Vidurinė pradžia + ".";

Teisingai

– grąžina pirmuosius eilutės simbolius.<Строка>, <ЧислоСимволов>) . Gauna paskutinius eilutės simbolius, parametre nurodytą simbolių skaičių Simbolių skaičius. Jei nurodytas simbolių skaičius viršija eilutės ilgį, grąžinama visa eilutė.

7 pavyzdys. Tegul eilutės kintamojo pabaigoje įrašoma data formatu „yyyymmdd“, gaukite eilutę su data ir konvertuokite į tipą data.

String = "Dabartinė data: 20170910"; StringDate = teisės (Eilutė, 8); Data = Data(StringDate);

trečiadienį

– grąžina paskutinius eilutės simbolius.<Строка>, <НачальныйНомер>, <ЧислоСимволов>) . Gauna poeilelę iš eilutės, perduotos kaip parametras Linija, pradedant nuo simbolio, kurio numeris nurodytas parametre PradinisSkaičius o ilgis perduotas į parametrą Simbolių skaičius. Simbolių numeracija eilutėje prasideda nuo 1. Jei parametre PradinisSkaičius nurodyta reikšmė mažesnė arba lygi nuliui, tada parametras įgauna reikšmę 1. Jei parametras Simbolių skaičius nenurodytas, tada pasirenkami simboliai iki eilutės pabaigos.

8 pavyzdys. Tegul eilutės kintamajame, pradedant nuo devintos pozicijos, yra regiono kodas, jį reikia gauti ir įrašyti atskiroje eilutėje.

Styga = "Regionas: 99 Maskva"; Regionas = vid.(Eilutė, 9, 2);

Puslapio radimas

StrFind(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) . Ieško nurodytos poeilutės eilutėje, grąžindama rastos poeilutės pirmojo simbolio pozicijos numerį. Pažvelkime į šios funkcijos parametrus:

  • Linija. Šaltinio eilutė;
  • Ieškoti poeilutės. Ieškoti poeilutės;
  • Paieškos kryptis. Nurodo kryptį ieškoti poeilutės eilutėje. Gali imti vertes:
    • Paieškos kryptis. Nuo pradžios;
    • Paieška.Pabaigos kryptis;
  • Pradinė padėtis. Nurodo vietą eilutėje, nuo kurios prasideda paieška;
  • Skaičius Atsitikimai. Nurodo ieškomos poeilutės pasireiškimo numerį šaltinio eilutėje.

9 pavyzdys. Eilutėje „Sveikas pasauli! Nustatykite paskutinio „ir“ simbolio pasireiškimo vietą.

PositionNumber = StrFind("Sveikas pasaulis!", "ir", Paieškos kryptis.Pabaiga); Ataskaita(PozicijosNumeris);

Vykdant šį kodą bus rodomas paskutinio simbolio „ir“ pasireiškimo numeris: 9.

VReg

VReg(<Строка>) . Konvertuoja visus simbolius nurodytoje eilutėje 1s8 į didžiąsias raides.

10 pavyzdys: konvertuokite eilutę "labas pasaulis!" į didžiąsias raides.

StringVreg = VReg("sveikas pasaulis!"); Report(StringVreg);

Šio kodo vykdymo rezultatas bus eilutė "HELLO WORLD!"

NReg

NReg(<Строка>) . Konvertuoja visus nurodytos eilutės simbolius 1s 8 į mažąsias raides.

11 pavyzdys: konvertuokite eilutę "HELLO WORLD!" į mažąsias raides.

StringNreg = NReg("SVEIKAS PASAULIS!"); Report(StringVreg);

Šio kodo vykdymo rezultatas bus eilutė "labas pasaulis!"

Treg

TReg(<Строка>) . Konvertuoja eilutę taip: pirmasis kiekvieno žodžio simbolis paverčiamas didžiosiomis raidėmis, likę žodžio simboliai paverčiami mažosiomis raidėmis.

12 pavyzdys: Pirmąsias žodžių raides eilutėje "labas pasaulis!"

StringTreg = TReg("labas pasaulis!"); Ataskaita(StringTreg);

Šio kodo vykdymo rezultatas bus eilutė „Sveikas pasaulis!

Simbolis

Simbolis (<КодСимвола>) . Gauna simbolį pagal Unicod kodą.

13 pavyzdys. Pridėkite kairę ir dešinę eilutę „Sveikas pasaulis! simbolis ★

StringWithStars = Simbolis("9733")+"Sveikas pasaulis!"+Simbolis("9733"); Report(StringWithStars);

Vykdant šį kodą bus rodoma eilutė „★Hello World!★“

Simbolio kodas

Simbolio kodas(<Строка>, <НомерСимвола>) . Gauna Unikodo simbolio kodą iš pirmame parametre nurodytos eilutės, esančios antrajame parametre nurodytoje pozicijoje.

14 pavyzdys. Sužinokite paskutinio simbolio kodą eilutėje „Sveikas pasaulis!

String = "Sveikas pasaulis!"; CharacterCode = CharacterCode(Eilutė, Strings(Eilutė)); Pranešti (simbolio kodas);

Šio kodo vykdymo rezultatas bus simbolio kodas „! – 33.

Tuščia eilutė

Tuščia eilutė (<Строка>) . Patikrina, ar eilutė susideda tik iš nereikšmingų simbolių, ty ar ji tuščia.

15 pavyzdys. Patikrinkite, ar eilutė, susidedanti iš trijų tarpų, yra tuščia.

Tuščias = EmptyString(" "); Ataskaita (tuščia);

Šio kodo vykdymo rezultatas bus žodis „Taip“ (loginės reikšmės eilutės išraiška Tiesa).

Puslapio keitimas

StrReplace(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) . Suranda visus paieškos poeilutės atvejus šaltinio eilutėje ir pakeičia ją pakaitine poeilute.

16 pavyzdys. Eilutėje "Sveikas pasaulis!" pakeisti žodį „Taika“ žodžiu „Draugai“.

String = StrReplace("Sveikas pasaulis!", "Pasaulis", "Draugai"); Report(String);

Šio kodo vykdymo rezultatas bus eilutė „Sveiki draugai!

StrNumberLines

– grąžina simbolių skaičių eilutėje.<Строка>) . Leidžia suskaičiuoti kelių eilučių eilutės eilučių skaičių. Eiti į nauja linija 1s 8 simbolis naudojamas PS(naujos eilutės simbolis).

17 pavyzdys. Nustatykite teksto eilučių skaičių:
"Pirma eilė
Antra eilutė
Trečioji eilutė"

Skaičius = StrNumberString("Pirmoji eilutė"+Simboliai.PS +"Antra eilutė"+Simboliai.PS +"Trečia eilutė"); Ataskaita(Skaičius);

Šio kodo vykdymo rezultatas bus teksto eilučių skaičius: 3

StrGetString

– nupjauna nereikšmingus simbolius į kairę nuo pirmojo reikšmingo simbolio eilutėje ir į dešinę nuo paskutinio reikšmingo simbolio eilutėje.<Строка>, <НомерСтроки>) . Gauna eilutę kelių eilučių eilutėje pagal jos numerį. Eilučių numeracija prasideda nuo 1.

18 pavyzdys. Gaukite paskutinę teksto eilutę:
"Pirma eilė
Antra eilutė
Trečioji eilutė"

Tekstas = "Pirmoji eilutė" + Simboliai PS + "Antra eilutė" + Simboliai. Paskutinė eilutė = StrGetRow(tekstas, StrNumberLines(tekstas)); Ataskaita (Paskutinė eilutė);

Šio kodo vykdymo rezultatas bus eilutė „Trečia eilutė“.

PuslapiųNumberAtvykimai

StrNumberOccurrences(<Строка>, <ПодстрокаПоиска>) . Grąžina nurodytos poeilutės pasikartojimų skaičių eilutėje. Funkcija yra didžiosios ir mažosios raidės.

19 pavyzdys. Nustatykite, kiek kartų raidė „c“ pasirodo eilutėje „Eilutės 1s 8.3 ir 8.2“, neatsižvelgiant į jos raidę.

Linija = "Eilutės po 1s 8.3 ir 8.2"; Skaičiuspasireiškimai = StrSkaičiusAtlikimai(Vreg(String), "C"); Ataskaita (įvykių skaičius);

Šio kodo vykdymo rezultatas bus įvykių skaičius: 2.

Puslapis prasideda nuo

StrStartsWith(<Строка>, <СтрокаПоиска>) . Patikrina, ar pirmame parametre perduota eilutė prasideda antrojo parametro eilute.

20 pavyzdys. Nustatykite, ar pasirinktos sandorio šalies TIN prasideda skaičiumi 1. Įveskite kintamąjį Sandorio šalis Sandorio šalys.

TIN = sandorio šalis.TIN; StartsUNits = StrStartsWith(TIN, "1"); Jei prasideda vienetais Tada //Jūsų kodas EndIf;

PageEndsOn

StrEndsWith(<Строка>, <СтрокаПоиска>) . Patikrina, ar pirmame parametre perduota eilutė baigiasi antrojo parametro eilute.

21 pavyzdys. Nustatykite, ar pasirinktos sandorio šalies TIN baigiasi skaičiumi 2. Įveskite kintamąjį Sandorio šalis išsaugoma nuoroda į katalogo elementą Sandorio šalys.

TIN = sandorio šalis.TIN; EndsWithTwo = StrEndsWith(TIN, "2"); If EndsInTwo Then //Jūsų kodas EndIf;

Puslapio padalijimas

StrDivide(<Строка>, <Разделитель>, <ВключатьПустые>) . Padalina eilutę į dalis, naudodamas nurodytus skiriamuosius simbolius, ir įrašo gautas eilutes į masyvą. Pirmasis parametras saugo šaltinio eilutę, antrasis yra eilutė su skyrikliu, o trečiasis nurodo, ar į masyvą reikia įrašyti tuščias eilutes (pagal numatytuosius nustatymus Tiesa).

22 pavyzdys. Turėkime eilutę su skaičiais, atskirtais simboliu „;“, gaukime skaičių masyvą iš eilutės.

Eilutė = "1; 2; 3"; Masyvas = StrDivide(Eilutė, ";"); Skaičiavimui = 0 pagal masyvą.Kiekis() - 1 ciklo bandymas Masyvas[Count] = Skaičius(AbbrLP(Masyvas[Skaičius])); Išimčių masyvas[Sch] = 0; EndAttemptsEndCycle;

Vykdymo metu bus gautas masyvas su skaičiais nuo 1 iki 3.

PageConnect

StrConnect(<Строки>, <Разделитель>) . Konvertuoja eilučių masyvą iš pirmojo parametro į eilutę, kurioje yra visi masyvo elementai, atskirti antrajame parametre nurodytu skyrikliu.

23 pavyzdys. Naudodami skaičių masyvą iš ankstesnio pavyzdžio, gaukite pradinę eilutę.

Sąskaitai = 0 pagal masyvą.Kiekis() - 1 ciklas Masyvas[Act] = String(Masyvas[Veiksmas]); EndCycle; Eilutė = StrConnect(Masyvas, "; ");

Įdiegta 8.3.6.1977 versijoje.

Išplėtėme funkcijų rinkinį, skirtą darbui su eilutėmis. Tai padarėme norėdami suteikti jums pažangesnius įrankius, skirtus eilučių duomenims analizuoti. Naujos funkcijos bus patogios ir naudingos atliekant technologines teksto analizės užduotis. Atliekant užduotis, susijusias su teksto, kuriame yra suformatuotų duomenų, analizavimu. Tai gali būti kai kurių failų, gautų iš įrangos, analizė arba, pavyzdžiui, technologinio žurnalo analizė.

Anksčiau galėjote atlikti visus veiksmus, kurie atlieka naujas funkcijas. Naudojant daugiau ar mažiau sudėtingus algoritmus, parašytus integruota kalba. Todėl naujos funkcijos nesuteikia jums jokių iš esmės naujų galimybių. Tačiau jie leidžia sumažinti kodo kiekį ir padaryti kodą paprastesnį bei suprantamesnį. Be to, jie leidžia pagreitinti veiksmų atlikimą. Nes platformoje įdiegtos funkcijos, žinoma, veikia greičiau nei panašus algoritmas, parašytas integruota kalba.

Formatavimo funkcija StrTemplate()

Ši funkcija pakeičia parametrus į eilutę. Tokios konversijos poreikis dažnai iškyla, pavyzdžiui, kai rodomi įspėjamieji pranešimai. Šios funkcijos sintaksė yra tokia:

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

<Шаблон>- tai eilutė, į kurią reikia pakeisti parametrų atvaizdus.

<Значение1> , ... <Значение10>- tai yra parametrai (daugiausia dešimt), kurių atvaizdai turi būti pakeisti į eilutę.

Norėdami nurodyti konkrečią šablono vietą, kurioje norite atlikti pakeitimą, turite naudoti tokius žymenis kaip %1, ... %10. Šablone dalyvaujančių žymeklių skaičius ir parametrų, kuriuose yra reikšmės, skaičius turi sutapti.

Pavyzdžiui, tokio operatoriaus vykdymo rezultatas:

bus eilutė:

Duomenų klaida 2 eilutėje (reikia datos tipo)

Funkcija, skirta dirbti su eilutėmis StrCompare()

Ši funkcija lygina dvi eilutes neskiriant didžiųjų ir mažųjų raidžių. Pavyzdžiui, taip:

Tą patį veiksmą galėtumėte atlikti anksčiau naudodami objektą Vertės palyginimas:

Tačiau naudotis nauja funkcija atrodo lengviau. Be to, ši funkcija, skirtingai nei vertės palyginimo objektas, veikia ir plonajame kliente, ir žiniatinklio kliente.

Funkcijos, skirtos darbui su eilutėmis StrStartsWith(), StrEndsAt()

Šios funkcijos nustato, ar eilutė prasideda nurodyta poeile, ar eilutė baigiasi nurodyta poeile. Šių funkcijų algoritmą nėra sunku įdiegti įterptoje kalboje, tačiau jų buvimas leidžia parašyti švaresnį ir suprantamesnį kodą. Ir jie dirba greičiau.

Pavyzdžiui, juos patogu naudoti If teiginyje:

Funkcijos, skirtos darbui su eilutėmis StrDivide(), StrConnect()

Šios funkcijos padalija eilutę į dalis, naudodamos nurodytą skyriklį. Arba atvirkščiai, jie sujungia kelias eilutes į vieną, tarp jų įterpdami pasirinktą skyriklį. Jie yra patogūs žurnalams ir technologiniams žurnalams kurti ar analizuoti. Pavyzdžiui, galite lengvai išanalizuoti technologinio žurnalo įrašą į dalis, tinkamas tolesnei analizei:

Funkcija darbui su eilutėmis StrFind()

Vietoj senosios Find() funkcijos įdiegėme nauja funkcija, kuri turi papildomų funkcijų:

  • Ieškoti skirtingomis kryptimis (nuo pradžios, nuo pabaigos);
  • Ieškoti iš nurodytos padėties;
  • Ieškokite įvykio su nurodytu skaičiumi (antru, trečiu ir pan.).

Tiesą sakant, tai dubliuoja senosios funkcijos galimybes. Tai daroma siekiant išlaikyti suderinamumą su moduliais, sudarytais senesnėse versijose. Rekomenduojama nebenaudoti senosios Find() funkcijos.

Toliau pateikiamas naujų paieškos galimybių naudojimo pavyzdys. Atvirkštinė paieška naudinga, kai reikia paskutinės formalizuotos eilutės dalies, pvz., viso failo pavadinimo URL. O paieška iš nurodytos padėties padeda tais atvejais, kai reikia ieškoti žinomame fragmente, o ne visoje eilutėje.

Yra keletas mechanizmų, kaip dirbti su eilutėmis 1C užklausose. Pirma, eilutes galima pridėti. Antra, galite paimti eilutę iš eilutės. Trečia, stygas galima palyginti, taip pat ir pagal šabloną. Tikriausiai tai viskas, ką galima padaryti su stygomis.

Stygos papildymas

Norėdami pridėti eilučių į užklausą, naudojama operacija „+“. Galite pridėti tik riboto ilgio eilutes.

PASIRINKITE „Vardas:“ + Sandorio šalys Pavadinimas AS 1 stulpelis FROM Sandorio šalys WHERE Sandorio šalys

Poeilutės funkcija

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

Funkcijos Environment() analogas iš objekto modelio. Funkcija Substring() gali būti taikoma eilutės duomenims ir leidžia pasirinkti fragmentą <Строки> , pradedant simbolio numeriu <НачальнаяПозиция> (simboliai eilutėje numeruojami pradedant nuo 1) ir ilgis <Длина> personažai. Funkcijos skaičiavimo rezultatas turi kintamo ilgio eilutės tipą ir ilgis bus laikomas neribotu, jei <Строка> turi neribotą ilgį ir parametrus <Длина> nėra konstanta arba didesnis nei 1024.

Jei eilutės ilgis yra mažesnis nei nurodyta antrajame parametre, funkcija grąžins tuščią eilutę.

Dėmesio! Nerekomenduojama naudoti funkcijos SUBSTRING() norint konvertuoti neriboto ilgio eilutes į riboto ilgio eilutes. Vietoj to geriau naudoti perdavimo operatorių EXPRESS().

Funkcija panaši

Jei turime įsitikinti, kad eilutės atributas atitinka tam tikrus kriterijus, palyginame jį:

SELECT Sandorio šalys Pavadinimas AS 1 stulpelis FROM Sandorio šalys WHERE Pavadinimas = "Gazprom".

Bet ką daryti, jei jums reikia subtilesnio palyginimo? Ne tik lygybė ar nelygybė, bet ir panašumas į tam tikrą modelį? Būtent tam buvo sukurta funkcija PANAŠAS.

LIKE – operatorius, skirtas patikrinti, ar eilutė yra panaši į šabloną. LIKE analogas SQL.

PANAŠAS operatorius leidžia palyginti kairėje nuo jo nurodytos išraiškos reikšmę su dešinėje nurodyta šablono eilute. Išraiškos vertė turi būti eilutės tipo. Jei išraiškos reikšmė atitinka šabloną, operatoriaus rezultatas bus TRUE, kitu atveju jis bus FALSE.

Šie simboliai šablono eilutėje yra paslaugų simboliai ir jų reikšmė skiriasi nuo eilutės simbolio:

  • % (procentai): seka, turinti bet kokį skaičių savavališkų simbolių;
  • _ (pabraukimas): vienas savavališkas simbolis;
  • […] (V laužtiniai skliaustai vienas ar keli simboliai): bet kuris vienas simbolis iš išvardytų laužtiniuose skliaustuose. Sąraše gali būti diapazonų, pavyzdžiui, nuo a iki z, o tai reiškia, kad į diapazoną įtrauktas savavališkas simbolis, įskaitant diapazono galus;
  • [^...] (laužtiniuose skliaustuose neigimo ženklas, po kurio yra vienas ar daugiau simbolių): bet koks atskiras simbolis, išskyrus tuos, kurie išvardyti po neigimo ženklo.

Bet koks kitas simbolis reiškia save ir nekelia jokios papildomos apkrovos. Jei vieną iš išvardytų simbolių reikia parašyti kaip save patį, tada prieš jį reikia įrašyti<Спецсимвол>. Aš pats<Спецсимвол>(bet koks tinkamas simbolis) apibrėžiamas tame pačiame teiginyje po raktinio žodžio SPECIAL CHARACTER.

Stygos tipas yra visose programavimo kalbose. Jis yra primityvus, o 1C yra daug funkcijų, skirtų darbui su juo. Šiame straipsnyje mes pažvelgsime atidžiau įvairių būdų darbas su eilučių tipais 1C 8.3 ir 8.2, naudojant pavyzdžius.

Linija

Norint konvertuoti bet kokio tipo kintamąjį į eilutę, yra to paties pavadinimo funkcija „String()“. Įvesties parametras bus pats kintamasis, kurio eilutės atvaizdavimas turi būti gautas.

String(False) // grąžina "Ne"
String(12345) // grąžina "12 345"
Eilutė(CurrentDate()) //"07/21/2017 11:55:36"

Į eilutę galima konvertuoti ne tik primityvius tipus, bet ir kitus, pavyzdžiui, katalogų ir dokumentų elementus.

SokrLP, SokrL, SokrP

Šių funkcijų įvesties parametrai yra eilutės tipo kintamieji. Funkcijos pašalina nereikšmingus simbolius (tarpus, karietų grąžinimus ir kt.): atitinkamai iš kairės ir dešinės pusės, tik iš kairės pusės ir tik iš dešinės.

Santrumpa(" Tarpai bus pašalinti iš abiejų pusių ") // "Tarpos bus pašalintos iš abiejų pusių"
Santrumpa(" Tarpai iš abiejų pusių bus pašalinti ") // " Tarpai kairėje bus pašalinti "
Santrumpa(" Tarpai iš abiejų pusių bus pašalinti ") // " Tarpai dešinėje bus pašalinti"

Liūtas, dešinysis, vidutinis

Šios funkcijos leidžia apkarpyti dalį eilutės. Funkcija „Left()“ grąžins nurodyto ilgio eilutės dalį iš kairės pusės. Funkcija „Right()“ yra panaši, bet apkarpoma iš dešinės. Funkcija „Avg()“ leidžia nurodyti simbolio, iš kurio bus pasirinkta eilutė, skaičių ir jos ilgį.

Lev ("Eilutės kintamasis", 4) // grąžina "Str"
Right ("Eilutės kintamasis", 7) // grąžina "kintamąjį"
Medium ("Eilutės kintamasis", 2, 5) // grąžina "troco"

Bus pateiktos pagrindinės funkcijos, leidžiančios keisti 1c eilutes arba analizuoti jose esančią informaciją.

Funkcija nustato simbolių, esančių eilutės kintamajame, skaičių.

StrLength("Word") // vykdymo rezultatas bus skaičius 5

Rasti

Funkcija leidžia ieškoti eilutės dalies eilutės kintamajame. Grąžinama reikšmė bus skaičius, rodantis rastos eilutės pradžios vietą. Jei atitikmens nerasta, grąžinamas nulis.

Atminkite, kad ieškant skiriamos didžiosios ir mažosios raidės. Jei pradinėje eilutėje yra daugiau nei vienas paieškos poeilutės atvejis, funkcija grąžins pirmojo įvykio pradžią.

Funkcija Find ("vienas, du, vienas, du, trys", "du") // grąžins skaičių 6

Tuščia eilutė

Naudodami šią funkciją galite nustatyti, ar eilutė tuščia. Neatsižvelgiama į smulkius simbolius, tokius kaip tarpas, vežimo grįžimas ir kiti.

EmptyString("Pupkin Vasilijus Ivanovičius") // funkcija grąžins reikšmę False
Funkcija EmptyString(" ") // grąžins reikšmę True

VReg, NReg, TReg

Šios funkcijos labai naudingos lyginant ir konvertuojant eilučių kintamuosius. „Vreg()“ grąžins pradinę eilutę didžiosiomis raidėmis, „HPreg()“ – mažosiomis raidėmis, o „TReg()“ formatuos taip, kad pirmasis kiekvieno atskiro žodžio simbolis būtų rašomas didžiosiomis raidėmis, o visi tolesni simboliai – didžiosiomis raidėmis.

VReg("GENERALUS DIREKTORIAUS") // grąžina reikšmę - "GENERALUS DIREKTORIAUS"
NReg („CEO DIRECTOR“) // grąžinama reikšmė – „CEO“
TREG („CEO DIRECTOR“) // grąžinama reikšmė – „Generalinis direktorius“

Puslapio keitimas

Ši funkcija yra analogiška pakeitimui in teksto redaktoriai. Tai leidžia pakeisti vieną simbolį ar simbolių rinkinį kitu eilutės kintamuosiuose.

StrReplace("raudona, balta, geltona", ","", ";") // grąžina "raudoną; baltas; geltona"

StrNumberLines

Funkcija leidžia nustatyti eilučių, atskirtų karietos grąžinimu, skaičių tekstiniame kintamajame.

Toliau pateiktame pavyzdyje kilpa pereis tris raundus, nes funkcija LineNumberRow grąžins 3 reikšmę:

Ind = 1 pagal eilučių skaičių (1 eilutė + simboliai. PS + 2 eilutė + simboliai. PS + 3 eilutė)
<тело цикла>
EndCycle;

StrGetString

Ši funkcija veikia su kelių eilučių tekstu taip pat, kaip ir ankstesnė. Tai leidžia jums gauti konkrečią eilutę iš teksto kintamojo.

StrGetString("Eilutė1" + simboliai.PS + "Eilutė2" + simboliai.PS + "Eilutė3", 2) // grąžinti "String2"

PuslapiųNumberAtvykimai

Funkcija skaičiuoja simbolio arba poeilutės pasikartojimų skaičių paieškos eilutėje.

StrNumberAttachments("a;b;c;d; ", ";") // funkcija grąžins skaičių 4

Simbolis ir simbolio kodas

Šios funkcijos leidžia gauti simbolį pagal jo kodą Unicode koduotėje, taip pat nustatyti šį kodą pagal patį simbolį.

SymbolCode("A") // funkcija grąžins skaičių 1 040
CharacterCode(1040) // funkcija grąžins „A“

Dažnos užduotys dirbant su stygomis

Stygų sujungimas

Norint sujungti kelias eilutes (sujungimui atlikti), pakanka naudoti sudėjimo operatorių.

"Line 1" + "Line 2" //dviejų eilučių pridėjimo rezultatas bus "Line 1 Line 2"

Tipas Konversija

Norint konvertuoti tipą į eilutę, pavyzdžiui, nuorodą į katalogo elementą, skaičių ir pan., pakanka naudoti funkciją „String()“. Tokios funkcijos kaip „ScrLP()“ taip pat konvertuos kintamuosius į eilutę, bet iš karto nukirsdamos nereikšmingus simbolius.

String(1000) // grąžina "1 000"

Atkreipkite dėmesį, kad konvertuojant skaičių į eilutę, programa automatiškai pridėjo tarpą, skiriantį tūkstantį. Norėdami to išvengti, galite naudoti šias konstrukcijas:

StrReplace(String(1000),Characters.NPP,"") // grąžina "1000"

String(Formatas(1000,"HG=")) // grąžina "1000"

Citatos eilutėje

Gana dažnai teks susidurti su poreikiu nurodyti kabutes eilutės kintamajame. Tai gali būti arba užklausos tekstas, parašytas konfigūratoriuje, arba tiesiog kintamasis. Norėdami išspręsti šią problemą, tereikia nustatyti dvi kabutes.

Header = String("Horns and Hooves LLC - tai mes!") // grąžins "Horns and Hooves LLC - tai mes!"

Kelių eilučių, eilutės pertrauka

Norėdami sukurti kelių eilučių tekstą, tiesiog pridėkite eilučių pertraukas (Symbols.PS).

MultilineText = "Pirma eilutė" + Simboliai.PS + "Antra eilutė"

Kaip pašalinti tarpus

Norėdami pašalinti tarpus dešinėje arba kairėje, galite naudoti funkciją „ScrAP()“ (taip pat „ScrL()“ ir „ScrP()“):

StringNoSpaces = Santrumpa(" Daug raidžių ") // funkcija grąžins reikšmę "Daug raidžių"

Jei konvertavus skaičių į eilutę reikia pašalinti nepertraukiamus tarpus, naudokite šią konstrukciją:

StringNoSpaces = StrReplace(String(99999),Characters.NPP,"") // grąžina "99999"

Programuotojai taip pat dažnai naudoja šią konstrukciją, kuri leidžia pašalinti arba pakeisti kitu simboliu visas tarpas teksto kintamajame:

StringNoSpaces = StrReplace("hello","") // grąžina "hello"

Lyginant stygas tarpusavyje

Galite palyginti terminus su įprastu lygybės ženklu. Palyginimui skiriamos didžiosios ir mažosios raidės.

"Hello" = "hello" // grąžina False
"Hello" = "Labas" // grąžina True
"Hello" = "Goodbye" // grįš False

mob_info