1c funkcijos darbui su stygomis. Naujos funkcijos darbui su stygomis. Lyginant stygas tarpusavyje

Eilutė yra vienas iš primityvių duomenų tipų 1C:Enterprise 8 sistemose. Kintamieji su tipu 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 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

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.

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

AbbrLP(<Строка>) – nupjauna nereikšmingus simbolius, esančius kairėje nuo pirmojo reikšmingo eilutės simbolio 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 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

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;
  • eilinis 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ės „Hello world!“ rodymas ekrane.

Sutrumpintas

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

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.

Counterparty = Katalogai. Counterparties.Find By Details ("TIN", "0777121211"); AccountObject = Account.GetObject(); Sandorio šaliesObject.Pavadinimas = AbbrLP(Sandorio šaliesObject.Name); 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į 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 Pasireiškimai. 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("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"); Ataskaita (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 prie naujos eilutės 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. PS + "Trečia eilutė"; 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, "; ");

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" + Symbols.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 taip suformuotą 1C eilutę naudosite kaip įprasta, tai bus taip, kaip joje parašyta. Kad sistema galėtų padalyti ją į dvi parinktis ir naudoti norimą, turite naudoti funkciją НStr():

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

Rekvizitai su 1C tipo linija

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 nuo 1 simbolio.
  • 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 naujausia MS Office Word ir Excel versija išsaugo failus tokiu formatu (atitinkamai docx ir xlsx, pakeičia plėtinį į zip, atidaromas archyve).

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ę.

Pagal numatytuosius nustatymus kataloge 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 1C eilutės vaizdavimo parinktis - 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

Yra keletas mechanizmų, kaip dirbti su eilutėmis 1C užklausose. Pirma, galima pridėti eilutes. 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 Katalogas. Sandorio šalys AS Sandorio šalys WHERE Sandorio šalys. Nuoroda = &Nuoroda

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ą, o 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į:

PASIRINKITE sandorio šalis. Pavadinimas AS 1 stulpelis FROM Katalogas. Sandorio šalys AS Sandorio šalys WHERE Sandorio šalys. 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šus operatorius leidžia palyginti išraiškos, nurodytos jo kairėje, reikšmę su šablono eilute, nurodyta dešinėje. 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, reiškiančių savavališką simbolį, įtrauktą į diapazoną, į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.

Į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:

StrTemplate(<Шаблон>, <Значение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 darbui 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 naudoti naują funkciją 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 senos funkcijos Find() įdiegėme naują funkciją, kuri turi papildomų galimybių:

  • 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.