Gaukite skaičių iš 1c eilutės. Naujos funkcijos darbui su stygomis. Simbolių paieškos ir keitimo eilutėje funkcijos

Pagrindinės programavimo kalbos galimybės paprastai apima darbą su skaičiais ir eilutėmis. Paprastai šios funkcijos yra sunkiai užkoduojamos į kompiliatoriaus kodą (arba įdiegiamos „bazinės“ programavimo kalbos klasės).

1C versijoje galimybė dirbti su stygomis yra užprogramuota pačioje platformoje. Šiandien apžvelgsime darbo su 1C eilutėmis ypatybes programose integruota 1C kalba.

Linijos reikšmė 1C

1. Pradėkime nuo paprasčiausio. Kintamojo sukūrimas ir pastovios eilutės reikšmės priskyrimas 1C atrodo taip:

Kintamasis = "Sveikas, pasauli!";

Jei jums reikia nurodyti citatos simbolį pastovioje 1C eilutės reikšmėje, turite jį padvigubinti „“

Kintamasis = "Sveikas, pasauli"!;

2. Linijos lūžis 1C vienu metu gali būti nurodytas dviem būdais. Pirmasis naudojamas simbolis |

Kintamasis = "Sveiki,
| pasaulis! ";

Antrasis yra simbolių sistemos išvardijimas. Tai leidžia pridėti 1C eilučių pertraukas ir kitus nespausdinamus simbolius, pvz., TAB.

Kintamasis = "Labas" + Simboliai.PS + "taika!";

3. 1C konfigūracijos gali būti sukurtos ne tik vienai kalbai (rusų, anglų ar kitai), bet ir kelioms kalboms vienu metu. Šiuo atveju 1C lango apačioje pasirenkama šiuo metu naudojama kalba.

Kalbų sąrašas yra konfigūracijos lange skyriuje Bendra / Kalbos. Kiekviena kalba turi trumpą identifikatorių, pvz ru arba angl.

Aišku, kad programuojant tokią konfigūraciją, 1C linijos gali būti ir daugiakalbės. Norėdami tai padaryti, tokią 1C eilutę galima sukurti nurodant per; parinktys pagal kalbos identifikatorių:

Kintamasis = "ru=""Sveikas, pasauli! ""; en=""Sveikas, pasauli! """;

Jei naudosite taip suformuotą 1C eilutę kaip įprasta, tada ji bus taip, kaip joje parašyta. Norint, kad sistema ją padalintų į dvi parinktis ir naudotų norimą, turite naudoti funkciją НStr():

//pataisyti dvikalbes konfigūracijas
Report(NStr(kintamasis));

Rekvizitai su linija tipo 1C

Atributas yra 1C katalogo / dokumento laukas. Jis skiriasi nuo kintamojo programoje 1C kalba tuo, kad atributui tiksliai nurodomas jo tipas (skaičius, 1C eilutė ir kt.). Jei reikia atnaujinti atmintį apie tai, kas yra rekvizitas, žiūrėkite pamoką.

Jei nurodote atributo tipą - 1C eilutę, turite papildomai nurodyti parametrus.

1C eilutės yra neriboto ilgio (nurodomos kaip ilgis = 0) ir riboto ilgio, nurodančios tikslų simbolių skaičių. 1C neriboto ilgio eilutės saugomos atskiroje SQL lentelėje, todėl jų naudojimas yra mažiau produktyvus nei ribotas.

Štai kodėl neriboto ilgio 1C stygų naudojimas turi savo apribojimų – ne visur jas galima naudoti. Pavyzdžiui, jis neleidžiamas kaip dokumento numeris, nuorodos kodas ar matavimas.

Darbas su 1C stygomis

Yra keletas integruotų 1C platformos funkcijų, skirtų darbui su stygomis.

  • AbbrLP („Neįtikėtina, bet tiesa!“)
    Pašalina papildomus tarpus iš 1C linijos. Taip pat gali būti naudojamas konvertuoti bet kokius tipus į 1C eilutę (pavyzdžiui, skaičius).
  • Kintamasis = "Vasya" + AbbrLP(" plius") + "Olya"; //bus "Vasya plus Olya"
    Kelių 1C eilutės reikšmių sumavimo pavyzdys. Rezultatas bus viena eilutė 1C.
  • Kintamasis = Lev("Muzika", 2); //bus "Mu"
    Kintamasis = Medium ("Muzika", 2, 2); //bus "grėsmė"
    Kintamasis = Teisės ("Muzika", 2); //bus "ka"
    Įvairios parinktys, kaip gauti eilutę iš 1C eilutės.
  • Kintamasis = Find("Muzika", "zy"); //bus 3
    Ieškokite poeilutės 1C eilutėje, pradedant 1 simboliu.
  • Kintamasis = StrLength("Muzika"); //bus 6
    Grąžina simbolių skaičių 1C eilutėje.
  • Pranešimas („Sveiki“) //pranešimo lange 1C lango apačioje
    Alert("Sveiki") //iššokantis dialogo langas
    Būsena ("Sveiki") //būsenos rodymo eilutėje apačioje kairėje
    .

Objektų perkėlimas į 1C eilutę

Kaip žinote, šiuo metu populiariausias struktūrinės informacijos mainų formatas yra XML. Netgi naujausios versijos MS Office Word ir Excel išsaugo failus tokiu formatu (atitinkamai docx ir xlsx pakeičia plėtinį į zip, atidaromas archyvatoriuje).

1C duomenų mainų platforma suteikia keletą parinkčių, iš kurių pagrindinė taip pat yra XML.

1. Paprasčiausias būdas yra naudoti funkciją Abreviation() arba String(). Užklausos turinyje galite naudoti funkciją REPREZENTACIJA(). Jų veiksmo rezultatas yra tas pats - jie sukuria vartotojui bet kurio 1C objekto eilutę.

Kataloge pagal numatytuosius nustatymus tai bus jo pavadinimas. Dokumentui – dokumento pavadinimas, numeris ir data.

2. Bet kurį 1C objektą (su apribojimais) galima konvertuoti į XML ir atvirkščiai. Konversijos procesas vadinamas serializavimu.

StringViewXml = XMLString(reikšmė); //gauti XML iš 1C reikšmės
Reikšmė1C = XMLVvertė(Tipas("Katalogo nuoroda.Nomenklatūra"),TypeStringXml); //Gaukite 1C reikšmę iš XML eilutės, turite nurodyti 1C tipą, kuris turėtų būti gautas

3. 1C platforma turi savo būdą bet kurį 1C objektą paversti eilute. Jis perkeltas iš 1C 7.7 versijos. Šio formato nesupranta kitos programos, tačiau kiti 1C jį supranta, todėl jį lengva naudoti mainams tarp 1C duomenų bazių.

Eilutė = ValueInRowInt(Value1C); //gauti 1C eilutę iš 1C reikšmės
ValueVFile("C:\MyFile.txt", Value1C); //kita parinktis, iš 1C reikšmės gauname failą su išsaugota eilute
Reikšmė1C = ValueFromStringInt(String); //atgal nuo 1C eilutės
Reikšmė1C = ValueFile("C:\MyFile.txt"); //atgal iš failo

1C eilučių redagavimas formoje

Be darbo su 1C eilutėmis programoje 1C kalba, žinoma, norėčiau, kad vartotojas galėtų jas redaguoti. Tam yra keletas galimybių:

1. Lengviausias būdas yra paprašyti įvesti 1C liniją pagal pareikalavimą. Šis metodas naudojamas mokant 1C programavimo gyvenime jis naudojamas daug rečiau (bet jis naudojamas!).

Kintamasis = "";
Eilutė = EnterValue(kintamasis, "Įveskite visą pavadinimą");

2. Norint parodyti 1C objekto (katalogo/dokumento) ar formos detales (žr.), dažniausiai naudojamas įvesties laukas. Tai yra labiausiai paplitęs 1C įrankis, skirtas vartotojui dirbti su redagavimo laukais.

3. Įvesties lauko galimybes galima išplėsti (žr. įvesties lauko savybes, dešiniuoju pelės mygtuku spustelėkite jį, daugiau informacijos):

  • Žymės langelis Kelių eilučių redagavimo režimas
  • Išplėstinio redagavimo žymimasis laukelis (pasiekiamas, jei pažymėtas ankstesnis žymimasis laukelis)
  • Žymės langelis Slaptažodžio režimas (žr.).

4. Jei visų įvesties lauko galimybių jums neužtenka, yra įmontuotas redaktorius. Norėdami įtraukti jį į formą, į meniu Forma / Įterpti valdiklį turite įtraukti teksto dokumento lauką. Jo ypatybėse galite nurodyti jo veikimo režimą – ypatybę Extension.

Teksto dokumento laukas negali būti tiesiogiai susietas su duomenimis. Formos įvykių tvarkyklėje OnOpen() būtina parašyti funkciją (žr.):

Formos elementai.ElementoPavadinimasTekstasDokumentolaukas.SetText(StringValue); //čia ValueString yra tekstas, gautas, pavyzdžiui, iš atributo

O išsaugojimo tvarkyklėje, pavyzdžiui, mygtuke Išsaugoti, pridėkite išsaugojimą:

ValueString = FormElements.ElementNameTextDocumentField.GetText(); //ValueEilutė čia yra atributas, kuriame išsaugome reikšmę

5. 1C versijoje 8.2.11, valdomose formose, atsirado nauja parinktis, skirta 1C linijai atvaizduoti - laukas Formatted Document.


Panašiai kaip ir tekstinio dokumento lauką, jį reikia nustatyti atidarant ir užsirašyti, kai išsaugomas pats naudojant programą.

  • 1C objekte, kurio formą kuriame (katalogas, dokumentas, apdorojimas ir kt.) - pridėkite atributą su Value Storage tipu
  • Funkcijoje OnReadOnServer() nustatome tekstą iš atributo

    //čia atributas yra pridėtas 1C objekto atributas
    //čia FormattedDocument yra redaguoti skirtos formos lauko pavadinimas
    &Serveryje

    FormattedDocument = CurrentObject.Attributes.Get();
    Procedūros pabaiga

  • Funkcijoje BeforeWritingOnServer() arba mygtuku parašysime tekstą iš lauko

    &Serveryje
    Procedūra, kai nuskaitoma serveryje (dabartinis objektas)
    CurrentObject.Props = NewValueStorage(FormattedDocument);
    Procedūros pabaiga

Stygos tipas yra visose programavimo kalbose. Jis yra primityvus, o 1C yra daug funkcijų, skirtų darbui su juo. Šiame straipsnyje mes išsamiai apžvelgsime įvairius darbo su eilučių tipais 1C 8.3 ir 8.2 pavyzdžiais būdus.

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 abiejose pusėse bus pašalintos"
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"

Stiprumas

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, 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 teksto rengyklėse. 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 pašalins 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" = "labas" // grąžina False
"Hello" = "Labas" // grąžina True
"Hello" = "Sudie" // grąžina False

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

Įveskite kintamųjų reikšmes linija yra įtrauktos į dvigubas kabutes. Galima pridėti keletą šio tipo kintamųjų.

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 parodyti 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 yra, visų žodžių pirmosios raidės konvertuojamos į didžiąsias, o likusios raidės – į 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

StrTemplate(<Строка>, <ЗначениеПодстановки1>…<ЗначениеПодстановкиN> — 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 parametras = %1, 2 parametras = %2", "1" , "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.

abr(<Строка>) — 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.

StrCompare(<Строка1>, <Строка2> ) – lygina dvi eilutes neskiriant didžiųjų ir mažųjų raidžių. Funkcija veikia kaip objektas Vertybių palyginimas. Grąžinimai:

  • 1 - jei pirmoji eilutė yra didesnė už antrąją
  • -1 - jei antroji eilutė didesnė už pirmąją
  • 0 – jei eilutės lygios

StrCompare("Pirma eilutė" , "Antra eilutė") ; // 1

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;
  • […] (vienas ar daugiau simbolių laužtiniuose skliaustuose): bet koks atskiras simbolis, esantis 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.

1C 8.3 eilutės integruotoje 1C kalboje reiškia primityvaus tipo reikšmes Linija. Š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

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

Stiprumas

Stiprumas(<Строка>) . Grąžina simbolių skaičių eilutėje, perduodamoje kaip parametras.

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

AbbrL(<Строка>) . 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

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

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

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

AbbrLP

AbbrLP(<Строка>) . 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.Pavadinimas); AccountObject.Write();

Liūtas

Liūtas(<Строка>, <ЧислоСимволов>) . Gauna pirmuosius eilutės simbolius, simbolių skaičius nurodomas parametre Simbolių skaičius.

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

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

Teisingai

Teisingai (<Строка>, <ЧислоСимволов>) . 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į

trečiadienis (<Строка>, <НачальныйНомер>, <ЧислоСимволов>) . 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į, kuria reikia 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 pasaulis!" 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!"); Ataskaita(StringVreg);

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

NReg

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

11 pavyzdys: konvertuokite eilutę "HELLO WORLD!" mažosiomis raidėmis.

StringNreg = NReg("SVEIKAS PASAULIS!"); Ataskaita(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“ rašykite didžiosiomis raidėmis.

StringTreg = TReg("sveikas 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);

Šio kodo vykdymo rezultatas bus eilutė „★ Sveiki, pasauli!★“

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

StrNumberRow(<Строка>) . Leidžia suskaičiuoti kelių eilučių eilutės eilučių skaičių. Norėdami pereiti į naują eilutę 1s 8, naudokite simbolį PS(naujos eilutės simbolis).

17 pavyzdys. Nustatykite eilučių skaičių tekste:
"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

StrGetString(<Строка>, <НомерСтроки>) . 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 = "Pirma 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 per 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, "; ");