1c funksionon për të punuar me vargje. Funksione të reja për të punuar me vargje. Krahasimi i vargjeve me njëri-tjetrin

Një varg është një nga llojet primitive të të dhënave në sistemet 1C:Enterprise 8. Variablat me llojin linjë përmbajnë tekst.

Shkruani vlerat e variablave linjë janë të mbyllura në thonjëza të dyfishta. Mund të shtohen disa variabla të këtij lloji.

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

Përfundimisht Per 3 do të thotë " Fjala 1 Fjalë 2″.

Për më tepër, sistemet 1C:Enterprise 8 ofrojnë funksione për të punuar me vargje. Le të shohim ato kryesore:

EnterString (<Строка>, <Подсказка>, <Длина>, <Многострочность>) — funksioni është krijuar për të shfaqur një kuti dialogu në të cilën përdoruesi mund të specifikojë vlerën e një variabli të llojit Linjë. Parametri <Строка> kërkohet dhe përmban emrin e ndryshores në të cilën do të shkruhet vargu i futur. Parametri <Подсказка> opsionale - ky është titulli i kutisë së dialogut. Parametri <Длина> opsionale, tregon gjatësinë maksimale të vargut të hyrjes. Parazgjedhja është zero, që do të thotë gjatësi e pakufizuar. Parametri <Многострочность> opsionale. Përcakton modalitetin e futjes së tekstit me shumë rreshta: True—futja e tekstit me shumë rreshta me ndarës rreshtash; False - futni një varg të thjeshtë.

Mund të futni një varg nëse e dini kodin e karakterit në Unicode:

Simboli (<КодСимвола>) — kodi futet si numër.

Shkronja= Simbol(1103) ; // Unë

Ekziston edhe një funksion i kundërt që ju lejon të zbuloni kodin e një simboli.

Kodi i simbolit (<Строка>, <НомерСимвола>) — kthen numrin Unicode të karakterit të specifikuar si numër.

Funksionet e konvertimit të rasteve të tekstit:

VReg(<Строка>) — Konverton të gjitha karakteret në një varg në shkronja të mëdha.

NReg(<Строка>) — Konverton të gjitha karakteret në një varg në shkronja të vogla.

Treg(<Строка>) — konverton të gjitha karakteret në varg në rastet e titullit. Kjo do të thotë, shkronjat e para në të gjitha fjalët konvertohen në shkronja të mëdha, dhe shkronjat e mbetura shndërrohen në shkronja të vogla.

Funksionet për kërkimin dhe zëvendësimin e karaktereve në një varg:

Gjej(<Строка>, <ПодстрокаПоиска>) — gjen numrin e karakterit të shfaqjes së nënvargut të kërkimit. Për shembull:

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

StrFind(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) — gjen numrin e karakterit të shfaqjes së nënvargut të kërkimit, numri i ndodhjes tregohet në parametrin përkatës. Në këtë rast, kërkimi fillon me karakterin, numri i të cilit është specifikuar në parametër Pozicioni fillestar. Kërkimi është i mundur nga fillimi ose fundi i vargut. Për shembull:

Numri 4 Ndodhitë = Str Gjeni ( "Mbrojtja", "rreth" ,Drejtimi i kërkimit. Nga fillimi, 1, 4); // 7

StrReplace(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) – gjen të gjitha dukuritë e nënvargut të kërkimit në vargun burimor dhe e zëvendëson atë me nënvargun zëvendësues.

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

Linja e zbrazët (<Строка>) – kontrollon vargun për karaktere domethënëse. Nëse nuk ka karaktere domethënëse, ose nuk ka karaktere fare, atëherë vlera kthehet E vërtetë. Përndryshe - Gënjeshtra.

StrNumberOccurrences(<Строка>, <ПодстрокаПоиска>) – Llogarit numrin e dukurive të nënvargut të kërkimit në vargun burimor.

StrNumberOccurrences ( "Studoni, studioni dhe studioni përsëri", "studim" , "" ); // 3

StrTemplate(<Строка>, <ЗначениеПодстановки1>…<ЗначениеПодстановкиN> — zëvendëson parametrat në një varg me numër. Rreshti duhet të përmbajë shënues zëvendësues të formës: “%1..%N”. Numërimi i shënuesit fillon nga 1. Nëse vlera e parametrit E papërcaktuar, një varg bosh është zëvendësuar.

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

Funksionet e konvertimit të vargut:

Nje luan(<Строка>, <ЧислоСимволов>) – kthen karakteret e para të një vargu.

E drejta(<Строка>, <ЧислоСимволов>) – kthen karakteret e fundit të një vargu.

e mërkurë (<Строка>, <НачальныйНомер>, <ЧислоСимволов>) – kthen një varg gjatësie<ЧислоСимволов>, duke filluar nga simboli<НачальныйНомер>.

AbbrL(<Строка>) shkurton karaktere jo të rëndësishme në të majtë të karakterit të parë domethënës në varg.

Shkurtesa (<Строка>) — ndërpret karakteret e parëndësishme në të djathtë të karakterit të fundit domethënës në rresht.

AbbrLP(<Строка>) – ndërpret karakteret e parëndësishme në të majtë të karakterit të parë domethënës në rresht dhe në të djathtë të karakterit të fundit domethënës në rresht.

StrGetString(<Строка>, <НомерСтроки>) – Merr një varg me shumë rreshta sipas numrit.

Karakteristika te tjera:

Gjatësia e fortë (<Строка>) – kthen numrin e karaktereve në varg.

StrNumberRow(<Строка>) – kthen numrin e rreshtave në një varg me shumë rreshta. Një rresht konsiderohet i ri nëse ndahet nga ai i mëparshmi me një karakter të linjës së re.

StrKrahaso(<Строка1>, <Строка2> ) – krahason dy vargje në mënyrë të pandjeshme ndaj shkronjave. Një funksion funksionon si një objekt Krahasimi i vlerave. Kthimet:

  • 1 - nëse rreshti i parë është më i madh se i dyti
  • -1 - nëse rreshti i dytë është më i madh se i pari
  • 0 - nëse vargjet janë të barabarta

StrCompare("Rreshti i parë", "Rreshti i dytë"); // 1

Rreshtat në 1C 8.3 në gjuhën e integruar 1C përfaqësojnë vlera të një lloji primitiv Linjë. Vlerat e këtij lloji përmbajnë një varg Unicode me gjatësi arbitrare. Variablat e tipit të vargut janë një grup karakteresh të mbyllura në thonjëza.

Shembulli 1. Le të krijojmë një variabël vargu me tekst.

StringVariable = "Përshëndetje botë!";

Funksionet për të punuar me vargje në 1s 8.3

Ky seksion do të ofrojë funksionet kryesore që ju lejojnë të ndryshoni linjat në 1c, ose të analizoni informacionin që përmbahet në to.

Fortësia

Gjatësia e fortë (<Строка>) . Rikthen numrin e karaktereve të përfshira në vargun e kaluar si parametër.

Shembulli 2. Le të numërojmë numrin e karaktereve në rreshtin "Përshëndetje botë!"

String = "Përshëndetje botë!"; Numri i Karaktereve = StrLength(String); Raporti (Numri Personazhet);

Rezultati i ekzekutimit të këtij kodi do të jetë shfaqja e numrit të karaktereve në rreshtin: 11.

AbbrL

AbbrL(<Строка>) . Prit karaktere jo të rëndësishme në të majtë të karakterit të parë domethënës në varg.
Personazhet e vegjël:

  • hapësirë;
  • hapësirë ​​që nuk prishet;
  • tabelimi;
  • kthim ngarkese;
  • përkthimi i linjës;
  • përkthimi i formularit (faqes).

Shembulli 3. Hiqni të gjitha hapësirat nga ana e majtë e rreshtit "botë!" dhe shtoni rreshtin "Përshëndetje" në të.

String = Shkurtim ("botë!"); String = "Përshëndetje"+String; Raporti (String);

Rezultati i ekzekutimit të këtij kodi do të jetë shfaqja e rreshtit "Përshëndetje botë!" në ekran.

Shkurtuar

Shkurtesa (<Строка>) . Shkurt karakteret jo të rëndësishme në të djathtë të karakterit të parë domethënës në varg.

Shembulli 4. Formoni nga rreshtat "Përshëndetje" dhe "Paqe!" fraza "Përshëndetje botë!"

Line = Shkurtesa("Përshëndetje ")+" "+ Shkurtesa("botë!"); Raporti (String);

AbbrLP

AbbrLP(<Строка>) . Prit karakteret jo të rëndësishme në të djathtë të karakterit të parë domethënës në varg, dhe gjithashtu shkurton karakteret jo të rëndësishme në të majtë të karakterit të parë domethënës në varg. Ky funksion përdoret më shpesh se dy të mëparshmit, pasi është më universal.

Shembulli 5. Hiqni karakteret e parëndësishme majtas dhe djathtas në emër të palës tjetër.

Counterparty = Directories. Counterparties.Find By Details("TIN", "0777121211"); AccountObject = Account.GetObject(); CounterpartyObject.Name = AbbrLP(CounterpartyObject.Name); AccountObject.Write();

nje luan

Nje luan(<Строка>, <ЧислоСимволов>) . Merr karakteret e para të vargut, numri i karaktereve është specifikuar në parametër Numri i Personazheve.

Shembulli 6. Lëreni në strukturë Punonjës përmbajnë emrin, mbiemrin dhe patronimin e punonjësit. Merrni një varg me mbiemrin dhe inicialet.

NameInitial = Lev(Emri i Punonjësit, 1); Fillestar patronimik = Luani (Punonjës. Patronimik, 1); Emri i plotë = Punonjës.Mbiemri + " " + Fillestar i Emrit + "." + Fillestar i mesëm + ".";

E drejta

E drejta(<Строка>, <ЧислоСимволов>) . Merr karakteret e fundit të një vargu, numrin e karaktereve të specifikuara në parametër Numri i Personazheve. Nëse numri i specifikuar i karaktereve tejkalon gjatësinë e vargut, atëherë i gjithë vargu kthehet.

Shembulli 7. Le të shkruhet një datë në formatin “yyyymmdd” në fund të një variabli të vargut, merrni një varg me datën dhe kthejeni atë në tip datë.

String = "Data aktuale: 20170910"; StringDate = Të drejtat (String, 8); Data = Data (Data e vargut);

e mërkurë

e mërkurë (<Строка>, <НачальныйНомер>, <ЧислоСимволов>) . Merr një nënvarg nga vargu i kaluar si parametër Linjë, duke u nisur nga karakteri, numri i të cilit është specifikuar në parametër Numri fillestar dhe gjatësia kaloi në parametër Numri i Personazheve. Numërimi i karaktereve në një rresht fillon nga 1. Nëse në parametrin Numri fillestar specifikohet një vlerë më e vogël ose e barabartë me zero, atëherë parametri merr vlerën 1. Nëse parametri Numri i Personazheve nuk është specifikuar, atëherë zgjidhen karakteret deri në fund të rreshtit.

Shembulli 8. Lëreni variablin e vargut duke filluar nga pozicioni i nëntë të përmbajë kodin e rajonit, duhet ta merrni dhe ta shkruani në një rresht të veçantë.

String = "Rajoni: 99 Moskë"; Rajoni = Mesatar (String, 9, 2);

FaqeGjeni

StrFind(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) . Kërkon për një nënvarg të specifikuar në një varg, duke kthyer numrin e pozicionit të karakterit të parë të nënvargut të gjetur. Le të shohim parametrat e këtij funksioni:

  • Linjë. Vargu i burimit;
  • Kërkoni nënvargun. Kërkimi i nënvargut;
  • Drejtimi i kërkimit. Përcakton drejtimin për të kërkuar një nënvarg në një varg. Mund të marrë vlera:
    • Drejtimi i kërkimit.Nga fillimi;
    • Kërko.Drejtimi i Fundit;
  • Pozicioni fillestar. Përcakton pozicionin në vargun në të cilin fillon kërkimi;
  • Numri Ndodhitë. Përcakton numrin e shfaqjes së nënvargut të kërkuar në vargun burimor.

Shembulli 9. Në rreshtin "Përshëndetje botë!" Përcaktoni pozicionin e shfaqjes së fundit të karakterit "dhe".

PositionNumber = StrFind("Përshëndetje botë!", "dhe", SearchDirection.End); Raporti (Numri i Pozicionit);

Rezultati i ekzekutimit të këtij kodi do të jetë shfaqja e numrit të shfaqjes së fundit të simbolit "dhe": 9.

VReg

VReg(<Строка>) . Konverton të gjitha karakteret në vargun e specifikuar në 1s8 në shkronja të mëdha.

Shembulli 10: Konvertoni vargun "hello world!" në shkronja të mëdha.

StringVreg = VReg ("përshëndetje botë!"); Raporti (StringVreg);

Rezultati i ekzekutimit të këtij kodi do të jetë shfaqja e rreshtit "HELLO WORLD!"

NReg

NReg(<Строка>) . Konverton të gjithë karakteret e vargut të specifikuar në 1s 8 në shkronja të vogla.

Shembulli 11: Konvertoni vargun "HELLO WORLD!" me shkronja të vogla.

StringNreg = NReg("HELLO WORLD!"); Raporti (StringVreg);

Rezultati i ekzekutimit të këtij kodi do të jetë shfaqja e rreshtit "përshëndetje botë!"

Treg

Treg(<Строка>) . Konverton një varg si më poshtë: karakteri i parë i secilës fjalë konvertohet në shkronja të mëdha, karakteret e mbetura të fjalës konvertohen në shkronja të vogla.

Shembulli 12: Shkruani shkronjat e para të fjalëve në rreshtin "përshëndetje botë!"

StringTreg = TReg ("përshëndetje botë!"); Raporti (StringTreg);

Rezultati i ekzekutimit të këtij kodi do të jetë shfaqja e rreshtit "Hello World!"

Simboli

Simboli (<КодСимвола>) . Merr një karakter nga kodi i tij Unicod.

Shembulli 13. Shtoni majtas dhe djathtas rreshtit "Hello World!" simboli ★

StringWithStars = Symbol("9733")+"Hello World!"+Symbol("9733"); Raporti (StringWithStars);

Rezultati i ekzekutimit të këtij kodi do të jetë shfaqja e rreshtit "★Hello World!★"

Kodi i simboleve

Kodi i simbolit (<Строка>, <НомерСимвола>) . Merr kodin e karakterit Unicode nga vargu i specifikuar në parametrin e parë, i vendosur në pozicionin e specifikuar në parametrin e dytë.

Shembulli 14. Gjeni kodin e karakterit të fundit në rreshtin "Hello World!"

String = "Përshëndetje Botë!"; Kodi i Karakterit = Kodi i Karakterit (String, StrLength (String)); Njoftoni (Kodi i Karakterit);

Rezultati i ekzekutimit të këtij kodi do të jetë shfaqja e kodit të simbolit "!" - 33.

Linjë bosh

Linja e zbrazët (<Строка>) . Kontrollon nëse vargu përbëhet vetëm nga karaktere të parëndësishme, domethënë nëse është bosh.

Shembulli 15. Kontrolloni nëse një varg i përbërë nga tre hapësira është bosh.

Empty = EmptyString(" "); Raporti (bosh);

Rezultati i ekzekutimit të këtij kodi do të jetë shfaqja e fjalës "Po" (një shprehje vargu me vlerë logjike E vërtetë).

Replace Page

StrReplace(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) . Gjen të gjitha dukuritë e nënvargut të kërkimit në vargun burimor dhe e zëvendëson atë me nënvargun zëvendësues.

Shembulli 16. Në rreshtin "Hello World!" zëvendësoni fjalën “Paqe” me fjalën “Miq”.

String = StrReplace("Hello World!", "World", "Friends"); Raporti (String);

Rezultati i ekzekutimit të këtij kodi do të jetë shfaqja e rreshtit "Përshëndetje miq!"

StrNumberLines

StrNumberRow(<Строка>) . Ju lejon të numëroni numrin e rreshtave në një varg me shumë rreshta. Për të shkuar në një rresht të ri në 1s 8, përdorni simbolin PS(karakter i linjës së re).

Shembulli 17. Përcaktoni numrin e rreshtave në tekst:
"Linja e parë
Rreshti i dytë
Linja e tretë"

Number = StrNumberString("Rreshti i parë"+Karakteret.PS +"Rreshti i dytë"+Simbolet.PS +"Rreshti i tretë"); Raporti (Numri);

Rezultati i ekzekutimit të këtij kodi do të jetë shfaqja e numrit të rreshtave në tekst: 3

StrGetString

StrGetString(<Строка>, <НомерСтроки>) . Merr një rresht në një varg me shumë rreshta sipas numrit të tij. Numërimi i rreshtave fillon nga 1.

Shembulli 18. Merrni rreshtin e fundit në tekst:
"Linja e parë
Rreshti i dytë
Linja e tretë"

Teksti = "Rreshti i parë" + Simbolet. PS + "Rreshti i dytë" + Simbolet. PS + "Rreshti i tretë"; LastRow = StrGetRow(Text, StrNumberLines(Text)); Raporti (Last Line);

Rezultati i ekzekutimit të këtij kodi do të jetë shfaqja e rreshtit "Rreshti i tretë".

Numri i faqeve Ndodhitë

StrNumberOccurrences(<Строка>, <ПодстрокаПоиска>) . Rikthen numrin e dukurive të nënvargut të specifikuar në një varg. Funksioni është i ndjeshëm ndaj shkronjave të vogla.

Shembulli 19. Përcaktoni sa herë shkronja "c" shfaqet në rreshtin "Rreshtat në 1s 8.3 dhe 8.2", pavarësisht nga shkalla e saj.

Line = "Linjat në 1s 8.3 dhe 8.2"; NumberOccurrences = StrNumberOccurrences(Vreg(String), "C"); Raporti (Numri Ndodhitë);

Rezultati i ekzekutimit të këtij kodi do të jetë shfaqja e numrit të dukurive: 2.

Faqja FillonMe

StrFillonMe(<Строка>, <СтрокаПоиска>) . Kontrollon nëse vargu i kaluar në parametrin e parë fillon me vargun në parametrin e dytë.

Shembulli 20. Përcaktoni nëse TIN-i i palës tjetër të zgjedhur fillon me numrin 1. Lëreni variablin Kundërpartia Kundërpalët.

NIPT = Kundërpartia.TIN; StartsUNits = StrStartsWith(TIN, "1"); Nëse fillon me njësi Pastaj //Kodi juaj EndIf;

Page EndsOn

StrendsWith(<Строка>, <СтрокаПоиска>) . Kontrollon nëse vargu i kaluar në parametrin e parë përfundon me vargun në parametrin e dytë.

Shembulli 21. Përcaktoni nëse TIN-i i palës tjetër të zgjedhur përfundon me numrin 2. Lëreni variablin Kundërpartia ruhet një referencë për një element drejtorie Kundërpalët.

NIPT = Kundërpartia.TIN; EndsWithTwo = StrEndsWith(TIN, "2"); If EndsInTwo then //Kodi juaj EndIf;

Ndarja e faqeve

StrDivide(<Строка>, <Разделитель>, <ВключатьПустые>) . Ndan një varg në pjesë duke përdorur karakteret ndarëse të specifikuara dhe shkruan vargjet që rezultojnë në një grup. Parametri i parë ruan vargun burimor, i dyti përmban vargun që përmban ndarësin dhe i treti tregon nëse vargjet boshe duhet të shkruhen në grup (si parazgjedhje E vërtetë).

Shembulli 22. Le të kemi një varg që përmban numra të ndarë me simbolin “;”, të marrim një varg numrash nga vargu.

Vargu = "1; 2; 3"; Array = StrDivide(String, ";"); Për Numërimin = 0 Sipas Array.Sasia() - 1 Përpjekje Cikli Array[Numërimi] = Numri(AbbrLP(Array[Count])); Array përjashtimi[Sch] = 0; EndAttemptsEndCycle;

Si rezultat i ekzekutimit, do të merret një grup me numra nga 1 në 3.

PageConnect

StrConnect(<Строки>, <Разделитель>) . Shndërron grupin e vargjeve nga parametri i parë në një varg që përmban të gjithë elementët e grupit të ndarë nga ndarësi i specifikuar në parametrin e dytë.

Shembulli 23. Duke përdorur grupin e numrave nga shembulli i mëparshëm, merrni vargun origjinal.

Për Llogari = 0 Sipas Array.Sasia() - 1 Array Cikli[Act] = String(Array[Act]); Cikli i Fundit; Rreshti = StrConnect(Array, "; ");

Aftësitë themelore të një gjuhe programimi zakonisht përfshijnë punën me numra dhe vargje. Zakonisht këto veçori janë të koduara në kodin e përpiluesit (ose zbatohen klasat "bazë" të gjuhës së programimit).

Në 1C, aftësia për të punuar me vargje është programuar në vetë platformën. Sot do të shikojmë veçoritë e punës me vargjet 1C në programet në gjuhën e integruar 1C.

Vlera e linjës 1C

1. Le të fillojmë me më të thjeshtat. Krijimi i një ndryshoreje dhe caktimi i një vlere konstante të vargut duket kështu në 1C:

Variabla = "Përshëndetje, botë!";

Nëse duhet të specifikoni një karakter citate në një vlerë konstante të vargut 1C, atëherë duhet ta dyfishoni atë ""

Variabla = "Përshëndetje, botë"!;

2. Ndërprerja e linjës 1C mund të specifikohet në dy mënyra njëherësh. E para është duke përdorur simbolin |

Variabla = "Përshëndetje,
| botë! ";

E dyta është përdorimi i numërimit të sistemit të simboleve. Kjo ju lejon të shtoni të dyja ndërprerjet e linjës 1C dhe karaktere të tjera që nuk printohen, si TAB.

Variabla = "Përshëndetje" + Simbolet.PS + "paqe!";

3. Konfigurimet në 1C mund të zhvillohen jo vetëm për një gjuhë (rusisht, anglisht ose një tjetër) - por njëkohësisht për disa gjuhë. Në këtë rast, gjuha e përdorur aktualisht zgjidhet në fund të dritares 1C.

Lista e gjuhëve ndodhet në dritaren e konfigurimit në degën e Përgjithshme/Gjuhët. Çdo gjuhë ka një identifikues të shkurtër si p.sh ru ose eng.

Është e qartë se kur programoni një konfigurim të tillë, linjat 1C mund të jenë gjithashtu shumëgjuhëshe. Për ta bërë këtë, është e mundur të krijoni një linjë të tillë 1C duke specifikuar përmes; opsionet sipas identifikuesit të gjuhës:

Variable = "ru=""Përshëndetje, botë! ""; en=""Përshëndetje, botë! """;

Nëse përdorni linjën 1C të formuar në këtë mënyrë si zakonisht, atëherë do të jetë ajo që shkruhet në të. Në mënyrë që sistemi ta ndajë atë në dy opsione dhe të përdorë atë të dëshiruar, duhet të përdorni funksionin НStr():

//korrekt për konfigurimet dygjuhëshe
Raporti(NStr(Variable));

Rekuizita me linjë të tipit 1C

Atributi është një fushë në drejtorinë/dokumentin 1C. Ai ndryshon nga një variabël në një program në gjuhën 1C në atë që për atributin tregohet saktësisht lloji i tij (numri, vargu 1C, etj.). Nëse keni nevojë të rifreskoni kujtesën tuaj se çfarë është një mbështetëse, shikoni mësimin në vazhdim.

Nëse specifikoni llojin e atributit - rreshti 1C, atëherë duhet të specifikoni gjithashtu parametrat.

Linjat 1C vijnë në gjatësi të pakufizuar (treguar si gjatësi = 0) dhe gjatësi të kufizuar, duke treguar numrin e saktë të karaktereve. Rreshtat 1C me gjatësi të pakufizuar ruhen në një tabelë të veçantë SQL, kështu që përdorimi i tyre është më pak produktiv sesa ato të kufizuara.

Kjo është arsyeja pse përdorimi i vargjeve 1C me gjatësi të pakufizuar ka kufizimet e veta - nuk është e mundur t'i përdorni ato kudo. Për shembull, nuk lejohet si numër dokumenti, kod referimi ose matje.

Duke punuar me vargjet 1C

Ekzistojnë disa funksione të integruara të platformës 1C për të punuar me vargje.

  • AbbrLP ("E pabesueshme, por e vërtetë!")
    Heq hapësirat shtesë nga linja 1C. Mund të përdoret gjithashtu për të kthyer çdo lloj në një varg 1C (për shembull, numra).
  • Variabli = "Vasya" + AbbrLP(" plus") + "Olya"; //do të jetë "Vasya plus Olya"
    Një shembull i përmbledhjes së disa vlerave të vargut 1C. Rezultati do të jetë një rresht 1C.
  • Variabla = Lev ("Muzikë", 2); //do të jetë "Mu"
    Variabla = Medium ("Muzikë", 2, 2); //do të ketë "kërcënim"
    Variabla = Të drejtat ("Muzikë", 2); //do të ketë "ka"
    Opsione të ndryshme për marrjen e një nënvargu nga një varg 1C.
  • Variable = Find("Muzikë", "zy"); //do të ketë 3
    Kërkoni për një nënvarg në vargun 1C, duke filluar nga karakteri 1.
  • Variable = StrLength ("Muzikë"); //do të ketë 6
    Kthen numrin e karaktereve në rreshtin 1C.
  • Raportoni ("Përshëndetje") //në dritaren e mesazhit në fund të dritares 1C
    Alert ("Përshëndetje") // dialog popup
    Statusi ("Përshëndetje") //në vijën e shfaqjes së statusit në fund të majtë
    .

Sjellja e objekteve në rreshtin 1C

Siç e dini, formati më i popullarizuar për shkëmbimin e informacionit të strukturuar aktualisht është XML. Edhe versioni më i fundit i MS Office Word dhe Excel ruan skedarët në këtë format (përkatësisht docx dhe xlsx, ndryshoni shtesën në zip, hapeni në një arkivues).

Platforma 1C për shkëmbimin e të dhënave ofron disa opsione, kryesore prej të cilave është gjithashtu XML.

1. Metoda më e thjeshtë është përdorimi i funksionit Abbreviation() ose String(). Ju mund të përdorni funksionin PËRFAQËSIM() në trupin e kërkesës. Rezultati i veprimit të tyre është i njëjtë - ata gjenerojnë një paraqitje të vargut të çdo objekti 1C për përdoruesin.

Për një direktori si parazgjedhje, ky do të jetë emri i tij. Për një dokument - emri i dokumentit, numri dhe data.

2. Çdo objekt 1C (me kufizime) mund të konvertohet në XML dhe anasjelltas. Procesi i konvertimit quhet serializimi.

StringViewXml = XMLString(Vlera); //merr XML nga vlera 1C
Vlera1C = XMLValue(Type("DirectoryLink.Nomenklature"),TypeStringXml); //merrni vlerën 1C nga vargu XML, duhet të specifikoni llojin 1C që duhet të merret

3. Ekziston mënyra e vetë platformës 1C për të kthyer çdo objekt 1C në një varg. Ai migroi nga versioni 1C 7.7. Ky format nuk kuptohet nga programet e tjera, por 1C të tjera e kuptojnë atë, gjë që e bën të lehtë përdorimin e tij për shkëmbim midis bazave të të dhënave 1C.

Rreshti = ValueInRowInt(Vlera1C); //merr vargun 1C nga vlera 1C
ValueVFile("C:\MyFile.txt", Value1C); //një opsion tjetër, marrim një skedar me një varg të ruajtur nga vlera 1C
Vlera1C = ValueFromStringInt(String); //kthehu nga rreshti 1C
Value1C = ValueFile ("C:\MyFile.txt"); //kthehu nga skedari

Redaktimi i rreshtave 1C në formular

Përveç punës me vargjet 1C në një program në gjuhën 1C, sigurisht që do të doja që përdoruesi të mund t'i modifikonte ato. Ka disa mundësi për këtë:

1. Mënyra më e lehtë është të kërkoni hyrjen e një linje 1C sipas kërkesës. Kjo metodë përdoret kur mëson programimin 1C; në jetë përdoret shumë më rrallë (por përdoret!).

Variabla = "";
Rreshti = EnterValue (Variable, "Enter Full Name");

2. Për të shfaqur detajet e një objekti 1C (drejtori/dokument) ose detajet e formularit (shih), më së shpeshti përdoret një fushë hyrëse. Ky është mjeti më i zakonshëm në 1C që përdoruesi të punojë me fushat e redaktimit.

3. Mund të zgjerohen aftësitë e fushës së hyrjes (shihni vetitë e fushës hyrëse, kliko me të djathtën mbi të, më shumë detaje):

  • Kutia e kontrollit Modaliteti i redaktimit me shumë rreshta
  • Kutia e kontrollit të redaktimit të avancuar (e disponueshme nëse kutia e mëparshme e kontrollit është e zgjedhur)
  • Kutia e kontrollit Modaliteti i fjalëkalimit (shih).

4. Nëse të gjitha aftësitë e fushës së hyrjes nuk janë të mjaftueshme për ju, ekziston një redaktues i integruar. Për ta shtuar atë në formular, duhet të shtoni një fushë të dokumentit tekst në menunë Form/Insert Control. Në vetitë e tij mund të specifikoni mënyrën e funksionimit - veçorinë Extension.

Një fushë dokumenti tekstual nuk mund të lidhet drejtpërdrejt me të dhënat. Është e nevojshme të shkruhet një funksion në mbajtësin e ngjarjeve OnOpen() të formularit (shih):

Elementet e formës.Emri i elementitTextDocumentField.SetText(StringValue); //këtu ValueString është teksti i marrë, për shembull, nga atributi

Dhe në mbajtësin e ruajtjes - për shembull, në butonin Ruaj - shtoni një ruajtje:

ValueString = FormElements.ElementiNameTextDocumentField.GetText(); //VleraRreshti këtu është atributi ku ruajmë vlerën

5. Në versionin 1C 8.2.11, në format e menaxhuara, është shfaqur një opsion i ri për paraqitjen e një linje 1C - fusha e Dokumentit të Formatuar.


Ngjashëm me fushën e një dokumenti tekstual, duhet ta vendosni kur e hapni dhe ta shkruani kur e ruani vetë duke përdorur programin.

  • Në objektin 1C, formën e të cilit po krijojmë (drejtori, dokument, përpunim, etj.) - shtoni një atribut me llojin Value Storage
  • Në funksionin OnReadOnServer() vendosim tekstin nga atributi

    //këtu Atributi është atributi i shtuar i objektit 1C
    //këtu FormattedDocument është emri i fushës në formularin për redaktim
    &Në server

    FormattedDocument = CurrentObject.Attributes.Get();
    Fundi i procedurës

  • Në funksionin BeforeWritingOnServer() ose duke përdorur butonin, do të shkruajmë tekstin nga fusha

    &Në server
    Procedura gjatë leximit në server (Objekti aktual)
    CurrentObject.Props = NewValueStorage(FormattedDocument);
    Fundi i procedurës

Ka pak mekanizma për të punuar me vargjet në pyetjet 1C. Së pari, linjat mund të shtohen. Së dyti, ju mund të merrni një nënvarg nga një varg. Së treti, vargjet mund të krahasohen, duke përfshirë edhe modelin. Kjo është ndoshta gjithçka që mund të bëhet me vargje.

Shtimi i vargut

Për të shtuar rreshta në një pyetje, përdoret operacioni "+". Mund të shtoni vetëm vargje me gjatësi të kufizuar.

SELECT "Emri: " + Kundërpalët. Emri AS Kolona 1 NGA Drejtoria.

Funksioni i nënvargut

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

Një analog i funksionit Environment() nga modeli i objektit. Funksioni Substring() mund të aplikohet në të dhënat e vargut dhe ju lejon të zgjidhni një fragment <Строки> , duke filluar me numrin e karakterit <НачальнаяПозиция> (personazhet në një rresht numërohen duke filluar nga 1) dhe gjatësia <Длина> personazhet. Rezultati i llogaritjes së funksionit ka një lloj vargu me gjatësi të ndryshueshme dhe gjatësia do të konsiderohet e pakufizuar nëse <Строка> ka gjatësi dhe parametra të pakufizuar <Длина> nuk është konstante ose më e madhe se 1024.

Nëse gjatësia e vargut është më e vogël se sa është specifikuar në parametrin e dytë, atëherë funksioni do të kthejë një varg bosh.

Kujdes! Përdorimi i funksionit SUBSTRING() për të kthyer vargjet me gjatësi të pakufizuar në vargje me gjatësi të kufizuar nuk rekomandohet. Në vend të kësaj, është më mirë të përdorni operatorin cast EXPRESS().

Funksioni i ngjashëm

Nëse duhet të sigurohemi që një atribut i vargut plotëson disa kritere, ne e krahasojmë atë:

SELECT Kundërpalët. Emri AS Kolona 1 NGA Drejtoria. Kundërpalët AS Kundërpalët WHERE Kundërpalët. Emri = "Gazprom"

Por çfarë nëse keni nevojë për një krahasim më delikat? Jo vetëm barazi apo pabarazi, por ngjashmëri me një model të caktuar? Pikërisht për këtë është krijuar funksioni SIMILAR.

LIKE - Operatori për kontrollimin e një vargu për ngjashmëri me një model. Analog i LIKE në SQL.

Operatori SIMILAR ju lejon të krahasoni vlerën e shprehjes së specifikuar në të majtë të saj me vargun e modelit të specifikuar në të djathtë. Vlera e shprehjes duhet të jetë e tipit string. Nëse vlera e shprehjes përputhet me modelin, rezultati i operatorit do të jetë TRUE, përndryshe do të jetë FALSE.

Karakteret e mëposhtme në vargun e shabllonit janë karaktere shërbimi dhe kanë një kuptim të ndryshëm nga karakteri i vargut:

  • % (përqind): një sekuencë që përmban çdo numër karakteresh arbitrare;
  • _ (nënvizoj): një karakter arbitrar;
  • […] (një ose më shumë karaktere në kllapa katrore): çdo karakter i vetëm i listuar brenda kllapave katrore. Numërimi mund të përmbajë vargje, për shembull a-z, që do të thotë një karakter arbitrar i përfshirë në interval, duke përfshirë skajet e diapazonit;
  • [^...] (në kllapa katrore një shenjë mohimi e ndjekur nga një ose më shumë karaktere): çdo karakter i vetëm përveç atyre të renditur pas shenjës së mohimit.

Çdo simbol tjetër nënkupton vetveten dhe nuk mbart ndonjë ngarkesë shtesë. Nëse një nga personazhet e listuar duhet të shkruhet si vetvetja, atëherë duhet të paraprihet<Спецсимвол>. Veten time<Спецсимвол>(çdo karakter i përshtatshëm) përcaktohet në të njëjtën deklaratë pas fjalës kyçe KARAKTER SPECIALE.

Zbatuar në versionin 8.3.6.1977.

Ne kemi zgjeruar grupin e funksioneve të krijuara për të punuar me vargje. Ne e bëmë këtë për t'ju dhënë mjete më të avancuara për analizimin e të dhënave të vargut. Funksionet e reja do të jenë të përshtatshme dhe të dobishme në detyrat teknologjike të analizës së tekstit. Në detyrat që lidhen me analizimin e tekstit që përmban të dhëna në formë të formatuar. Kjo mund të jetë një analizë e disa skedarëve të marrë nga pajisja, ose, për shembull, një analizë e një regjistri teknologjik.

Ju mund të kryeni të gjitha veprimet që kryejnë funksione të reja më parë. Përdorimi i algoritmeve pak a shumë komplekse të shkruara në një gjuhë të integruar. Prandaj, funksionet e reja nuk ju japin ndonjë aftësi thelbësisht të re. Sidoqoftë, ato ju lejojnë të zvogëloni sasinë e kodit dhe ta bëni kodin më të thjeshtë dhe më të kuptueshëm. Përveç kësaj, ato ju lejojnë të përshpejtoni ekzekutimin e veprimeve. Sepse funksionet e implementuara në platformë funksionojnë, natyrisht, më shpejt se një algoritëm i ngjashëm i shkruar në një gjuhë të integruar.

Funksioni i formatimit StrTemplate()

Ky funksion zëvendëson parametrat në një varg. Nevoja për një konvertim të tillë shpesh lind, për shembull, kur shfaqen mesazhe paralajmëruese. Sintaksa për këtë funksion është si më poshtë:

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

<Шаблон>- ky është vargu në të cilin duhet të zëvendësoni paraqitjet e parametrave.

<Значение1> , ... <Значение10>- këto janë parametra (maksimumi dhjetë), paraqitjet e të cilave duhet të zëvendësohen në varg.

Për të treguar një vend specifik në shabllon ku dëshironi të kryeni zëvendësimin, duhet të përdorni shënues si %1, ... %10. Numri i shënuesve të përfshirë në shabllon dhe numri i parametrave që përmbajnë vlera duhet të përputhen.

Për shembull, rezultati i ekzekutimit të një operatori të tillë:

do të ketë një linjë:

Gabim i të dhënave në rreshtin 2 (kërkohet lloji i datës)

Funksioni për të punuar me vargjet StrCompare()

Ky funksion krahason dy vargje në një mënyrë të pandjeshme ndaj shkronjave. Për shembull, si kjo:

Ju mund të kryeni të njëjtin veprim më herët duke përdorur objektin Krahasimi i vlerave:

Megjithatë, përdorimi i veçorisë së re duket më i lehtë. Dhe përveç kësaj, funksioni, ndryshe nga objekti Value Comparison, funksionon si në klientin e hollë ashtu edhe në klientin në internet.

Funksionet për të punuar me vargjet StrStartsWith(), StrEndsAt()

Këto funksione përcaktojnë nëse një varg fillon me një nënvarg të caktuar ose nëse një varg përfundon me një nënvarg të caktuar. Algoritmi për këto funksione nuk është i vështirë për t'u zbatuar në një gjuhë të integruar, por prania e tyre ju lejon të shkruani kod më të pastër dhe më të kuptueshëm. Dhe ata punojnë më shpejt.

Për shembull, ato janë të përshtatshme për t'u përdorur në deklaratën If:

Funksionet për të punuar me vargjet StrDivide(), StrConnect()

Këto funksione ndajnë një varg në pjesë duke përdorur një kufizues të caktuar. Ose anasjelltas, ata kombinojnë disa rreshta në një, duke futur ndarësin e zgjedhur midis tyre. Ato janë të përshtatshme për krijimin ose analizimin e regjistrave dhe revistave teknologjike. Për shembull, mund të analizoni lehtësisht një hyrje teknologjike të regjistrit në pjesë të përshtatshme për analiza të mëtejshme:

Funksioni për të punuar me vargjet StrFind()

Në vend të funksionit të vjetër Find(), ne kemi implementuar një funksion të ri që ka aftësi shtesë:

  • Kërko në drejtime të ndryshme (nga fillimi, nga fundi);
  • Kërkoni nga një pozicion i caktuar;
  • Kërkoni për një ndodhi me një numër të caktuar (i dyti, i tretë, etj.).

Në fakt, ai kopjon aftësitë e funksionit të vjetër. Kjo është bërë për të ruajtur përputhshmërinë me modulet e përpiluara në versionet më të vjetra. Rekomandohet që të mos përdorni më funksionin e vjetër Find().

Më poshtë është një shembull duke përdorur aftësitë e reja të kërkimit. Kërkimi i kundërt është i dobishëm kur ju nevojitet pjesa e fundit e një vargu të formalizuar, siç është emri i plotë i skedarit në një URL. Dhe kërkimi nga një pozicion i caktuar ndihmon në rastet kur duhet të kërkoni në një fragment të njohur, dhe jo në të gjithë rreshtin.