1s hogyan lehet törölni egy karakterlánc első előfordulását. Új funkciók a karakterláncokkal való munkához. StrFind() karakterláncokkal végzett munka függvénye

19.11.2019 Biztonság

Megvalósítva a 8.3.6.1977 verzióban.

Bővítettük a karakterláncokkal való munkavégzés funkcióinak körét. Ezt annak érdekében tettük, hogy fejlettebb eszközöket biztosítsunk a karakterlánc-adatok elemzéséhez. Az új funkciók kényelmesek és hasznosak lesznek a szövegelemzés technológiai feladataiban. A formázott formában adatokat tartalmazó szöveg elemzésével kapcsolatos feladatokban. Ez lehet a berendezéstől kapott egyes fájlok elemzése, vagy például egy technológiai napló elemzése.

Az új funkciók által végrehajtott összes műveletet korábban is elvégezhette. Beágyazott nyelven írt többé-kevésbé bonyolult algoritmusok segítségével. Ezért az új funkciók nem adnak alapvetően új lehetőségeket. Lehetővé teszik azonban a kód mennyiségének csökkentését, egyszerűbbé és érthetőbbé teszik a kódot. Ezenkívül lehetővé teszik a műveletek végrehajtásának felgyorsítását. Mert a platformban megvalósított funkciók természetesen gyorsabban működnek, mint egy hasonló, a beépített nyelven írt algoritmus.

Formázási függvény StrTemplate()

Ez a függvény a paramétereket karakterláncba helyettesíti. Ilyen átalakítás szükségessége gyakran felmerül, például figyelmeztető üzenetek megjelenítésekor. Ennek a függvénynek a szintaxisa a következő:

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

<Шаблон>az a karakterlánc, amelyben a paraméterreprezentációkat helyettesíteni kell.

<Значение1> , ... <Значение10>- ezek azok a paraméterek (maximum - tíz), amelyek reprezentációit be kell cserélni a karakterláncba.

Egy adott hely megadásához a sablonban, ahol a helyettesítést el kívánja végezni, %1, ... %10 formátumú jelölőket kell használnia. A sablonban szereplő markerek számának és az értékeket tartalmazó paraméterek számának meg kell egyeznie.

Például egy ilyen operátor végrehajtásának eredménye:

lesz egy sor:

Adathiba a 2. sorban (dátumtípus szükséges)

String függvény StrCompare()

Ez a függvény két karakterláncot a kis- és nagybetűk megkülönböztetésével hasonlít össze. Például így:

Ugyanezt a műveletet végrehajthatja a ValueComparison objektum használata előtt:

Az új funkció használata azonban egyszerűbbnek tűnik. Ezen kívül a függvény, az Value Compare objektumtól eltérően, szintén működik vékony kliensés a webes kliensben.

String függvények StrBeginsC(), StrEndsTo()

Ezek a függvények határozzák meg, hogy egy karakterlánc egy megadott részkarakterlánccal kezdődik-e, vagy egy karakterlánc egy megadott részkarakterlánccal végződjön. Ezeknek a függvényeknek az algoritmusát nem nehéz beépített nyelven megvalósítani, de jelenlétükkel tisztább és érthetőbb kódokat írhatunk. És gyorsabban dolgoznak.

Például kényelmesen használhatók az If utasításban:

Függvények a StrSplit(), StrJoin() karakterláncokkal való munkához

Ezek a függvények a karakterláncot részekre osztják a megadott határolónak megfelelően. Vagy fordítva, több sort egyesítenek egybe, beillesztve közéjük a kiválasztott elválasztót. Kényelmesek naplók, technológiai naplók létrehozásához vagy elemzéséhez. Például egy technológiai naplóbejegyzést egyszerűen szétszedhet további elemzésre alkalmas részekre:

StrFind() karakterláncokkal végzett munka függvénye

A régi Find() függvény helyett implementáltuk új funkció, amely további funkciókkal rendelkezik:

  • Keresés különböző irányokba (az elejétől, a végétől);
  • Keresés a megadott pozícióból;
  • Keressen egy előfordulást a megadott számmal (második, harmadik stb.).

Valójában megkettőzi a régi funkció képességeit. Ez a régebbi verziókban lefordított modulokkal való kompatibilitás fenntartása érdekében történik. Javasoljuk, hogy a régi Find() függvényt ne használja többé.

Az alábbiakban egy példa látható az új keresési lehetőségek használatára. A visszafelé keresés akkor hasznos, ha egy formalizált karakterlánc utolsó darabjára van szüksége, például egy URL-ben lévő fájl teljes nevére. A megadott pozícióból való keresés pedig segít azokban az esetekben, amikor egy ismert töredékben kell keresni, nem pedig a teljes karakterláncban.

A String típus minden programozási nyelvben megtalálható. Primitív, és az 1C-ben sok funkció van a vele való munkához. Ebben a cikkben közelebbről megvizsgáljuk különböző módokon dolgozzon a karakterlánctípusokkal az 1C 8.3 és 8.2 példákban.

Vonal

Bármilyen típusú változó karakterláncsá konvertálásához létezik az azonos nevű "String ()" függvény. A bemeneti paraméter maga a változó lesz, amelynek karakterlánc-reprezentációját kell megkapni.

String(False) // "Nem"-et ad vissza
String(12345) // „12 345”-et ad vissza
Karakterlánc(AktuálisDátum()) //"2017.07.21. 11:55:36"

Nemcsak primitív típusok, hanem egyéb, például könyvtárak és dokumentumok elemei is karakterláncsá konvertálhatók.

Rövidítve LP, rövidítve L, rövidítve P

Ezeknek a függvényeknek a bemeneti paraméterei karakterlánc típusú változók. A függvények eltávolítják a jelentéktelen karaktereket (szóközök, kocsivisszaadások stb.): bal és jobb oldalról, csak balról, illetve csak jobbról.

abbrl("A kétoldali szóközök el lesznek távolítva") // "A kétoldali szóközök el lesznek távolítva"
abbr("A kétoldali szóközök el lesznek távolítva") // "A bal oldali szóközök el lesznek távolítva"
abbr(" A két oldalon lévő szóközök el lesznek távolítva ") // "A jobb oldali szóközök el lesznek távolítva"

Leo, jobbra, középen

Ezek a függvények lehetővé teszik egy karakterlánc egy részének levágását. A Lion() függvény a karakterlánc bal oldalán lévő, megadott hosszúságú részét adja vissza. A "Right()" függvény hasonló, de a vágás a jobb oldalon történik. A "Sze()" függvény lehetővé teszi annak a karakterszámnak a meghatározását, amelyből a karakterláncot kiválasztja, és annak hosszát.

Lion("String változó", 4) // a "Stro" értéket adja vissza
Right("String változó", 7) // a "változót" adja vissza
avg("String változó", 2, 5)// a "troco"-t adja vissza

Erősség

A függvény határozza meg a karakterlánc változóban található karakterek számát.

StrLength("Word") // a végrehajtás eredménye 5 lesz

megtalálja

A függvény lehetővé teszi a karakterlánc egy részének keresését egy karakterlánc változóban. A visszatérési érték egy szám lesz, amely a talált karakterlánc elejének pozícióját jelzi. Ha nem található egyezés, nullát ad vissza.

Vegye figyelembe, hogy a keresés megkülönbözteti a kis- és nagybetűket. Ha a keresési részkarakterlánc egynél több előfordulása van az eredeti karakterláncban, a függvény az első előfordulás elejét adja vissza.

Find("egy, kettő, egy, kettő, három", "kettő") // a függvény a 6-os számot adja vissza

Üres sor

Ennek a függvénynek a használata lehetővé teszi annak meghatározását, hogy egy karakterlánc üres-e. A jelentéktelen karaktereket, például a szóközt, a kocsi visszatérését és másokat a rendszer nem veszi figyelembe.

EmptyString("Vasily Ivanovich Pupkin") // a függvény False értéket ad vissza
EmptyString(" ") // a függvény True értéket ad vissza

VReg, NReg, TReg

Ezek a függvények nagyon hasznosak a karakterlánc-változók összehasonlításakor és konvertálásakor. A "Vreg()" visszaadja az eredeti karakterláncot nagybetűvel, a "HReg()" kisbetűvel, a "TReg()" pedig úgy formázza vissza, hogy minden egyes szó első karaktere nagybetűs legyen, és minden további karakter kisbetűs legyen.

VReg("GENERAL DIRECTOR") // visszatérési érték - "GENERAL DIRECTOR"
HReg("GENERAL DIRECTOR") // visszatérési érték - "CEO"
TReg("GENERAL IRECTOR") // visszatérési érték - "General Director"

StrReplace

Ez a funkció az in csere analógja szövegszerkesztők. Lehetővé teszi, hogy egy karaktert vagy karakterkészletet helyettesítsen egy másikkal a karakterlánc-változókban.

StrReplace("piros, fehér, sárga", ",", ";") // "piros; fehér; sárga"

StrNumberRows

A függvény lehetővé teszi, hogy meghatározza a kocsivisszajelzéssel elválasztott sorok számát egy szöveges változóban.

Az alábbi példában a hurok három körön megy keresztül, mert az StrNumberRows függvény a 3-as értéket adja vissza:

Ind \u003d 1, StrNumber of Lines ("Line1" + Symbols.PS + "String2" + Symbols.PS + "Line3") hurok
<тело цикла>
EndCycle;

StrGetString

Ez a funkció ugyanúgy működik többsoros szöveggel, mint az előző. Lehetővé teszi, hogy egy szöveges változóból egy adott karakterláncot kapjon.

StrGetString("Karakterlánc1" + Szimbólumok.PS + "Karakterlánc2" + Szimbólumok.PS + "Karakterlánc3", 2) // a "Line2"-t adja vissza

StrNumberOccurrences

A függvény megszámolja egy karakter vagy részkarakterlánc előfordulásának számát a keresett karakterláncban.

StrNumberInstallations("a;b;c;d; ", ";") // a függvény a 4-es számot adja vissza

Szimbólum és SymbolCode

Ezek a függvények lehetővé teszik, hogy egy karaktert Unicode kódja alapján kapjon meg, valamint maga a karakter határozza meg ezt a kódot.

SymbolCode("A") // a függvény az 1 040 számot adja vissza
SymbolCode(1040) // a függvény "A"-t ad vissza

Gyakori feladatok húrokkal való munka során

Karakterlánc összefűzése

Több karakterlánc összefűzéséhez (összefűzéséhez) egyszerűen használja az összeadás operátort.

"1. sor" + "2. sor" //két sor hozzáadásának eredménye "1. sor 2. sor"

Típus konverzió

Ahhoz, hogy egy típust karakterláncsá alakítsunk, például egy szótári elemre való hivatkozást, egy számot stb., elegendő a „String ()” függvény használata. Az olyan függvények, mint a "ShortLP()" szintén karakterláncokká alakítják a változókat, de azonnal levágják a jelentéktelen karaktereket.

String(1000) // az "1000" értéket adja vissza

Kérjük, vegye figyelembe, hogy egy szám karakterláncsá alakításakor a program automatikusan hozzáad egy szóközt, amely elválasztja az ezret. Ennek elkerülése érdekében a következő struktúrákat használhatja:

StrReplace(String(1000),Karakterek.NPP,"") // az "1000" értéket adja vissza

String(Format(1000,"CH=")) // értéke "1000"

Idézetek egy karakterláncban

Gyakran meg kell küzdenie azzal, hogy egy karakterlánc-változóba idézőjeleket kell tenni. Ez lehet a konfigurátorban írt kérés szövege, vagy csak egy változó. A probléma megoldásához mindössze két idézőjel karaktert kell beállítania.

Header = String("A Horns and Hooves LLC mi vagyunk!") // visszatér a "Roga and Hooves LLC mi vagyunk!"

Többsoros, sortörés

Többsoros szöveg létrehozásához elegendő sortörés karaktereket (Symbols.PS) hozzáadni.

MultilineText = "Első sor" + Karakterek.PS + "Második sor"

Hogyan távolítsuk el a szóközöket

A jobb vagy bal oldali szóközök eltávolításához használhatja a "Stretch()" (valamint a "Scrpt()" és "ScreenP()") függvényt:

StringWithoutSpaces = ShortLP(" Sok betű ") // a függvény a "Sok betű" értéket adja vissza

Ha egy szám karakterláncsá alakítása után el kell távolítania nem törő terek, használja a következő konstrukciót:

StringWithoutSpaces = StrReplace(String(99999),Karakterek.NPP,"") // "99999"-et adja vissza

Ezenkívül a programozók gyakran használják a következő konstrukciót, amely lehetővé teszi a szöveges változó minden szóközének eltávolítását vagy helyettesítését egy másik karakterrel:

StringWithoutSpaces = StrReplace(" hello", " " ,"") // a "hello" kifejezést adja vissza

A húrok összehasonlítása egymással

Összehasonlíthatja a kifejezéseket a szokásos egyenlőségjellel. Az összehasonlítás megkülönbözteti a kis- és nagybetűket.

"hello" = "hello" // hamis értéket ad vissza
"Hello" = "Hello" // True értékkel tér vissza
"Hello" = "Viszlát" // a False értéket adja vissza

A string az egyik primitív adattípus az 1C:Enterprise 8 rendszerekben. Típusú változók vonal szöveget tartalmaznak.

Változóértékek típusa vonal benne van dupla idézőjelek. Több változó ebből a típusbólösszecsukható.

Per1 = "1. szó" ;
Per2 = "2. szó" ;
Per3 = Per1 + " " + Per2 ;

Végül is Per3 számítani fog" Szó 1 Szó 2″.

Ezenkívül az 1C:Enterprise 8 rendszerek funkciókat biztosítanak a karakterláncokkal való munkavégzéshez. Fontolja meg a főbbeket:

EnterString(<Строка>, <Подсказка>, <Длина>, <Многострочность>) — a függvény egy párbeszédpanel megjelenítésére szolgál, amelyben a felhasználó megadhatja egy típusú változó értékét Vonal. Paraméter <Строка> kötelező, és tartalmazza annak a változónak a nevét, amelybe a beírt karakterláncot írjuk. Paraméter <Подсказка> opcionális a párbeszédpanel címe. Paraméter <Длина> opcionális, műsorok maximális hossza bemeneti karakterlánc. Az alapértelmezett nulla, ami korlátlan hosszúságot jelent. Paraméter <Многострочность> választható. Meghatározza a többsoros szövegbeviteli módot: True – többsoros szövegbevitel sorelválasztókkal; False – Írjon be egy egyszerű karakterláncot.

Egy karakterlánc beírható, és a Unicode karakterkód ismeretében:

Szimbólum(<КодСимвола>) — A kód számként kerül beírásra.

Letter= Symbol(1103 ) ; // I

Van egy inverz függvény is, amely lehetővé teszi egy karakter kódjának kiderítését.

SymbolCode(<Строка>, <НомерСимвола>) — A megadott karakter Unicode-számát adja vissza számként.

Kis- és nagybetűk átalakító funkciói:

VReg(<Строка>) - átalakítja a karakterlánc összes karakterét nagybetűs.

HReg(<Строка>) - A karakterlánc összes karakterét kisbetűvé alakítja.

Treg(<Строка>) - a karakterlánc összes karakterét nagybetűvé alakítja. Vagyis az összes szó első betűit nagybetűvé, a többi betűt kisbetűvé alakítja.

Karakterek keresésének és cseréjének függvényei egy karakterláncban:

Megtalálja(<Строка>, <ПодстрокаПоиска>) - megkeresi a keresési részstring előfordulásának karakterszámát. Például:

Find ("String" , "eye" ) ; // négy

StrFind(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) — megkeresi a keresési részstring előfordulásának karakterszámát, az előfordulási szám a megfelelő paraméterben van megadva. Ebben az esetben a keresés attól a karaktertől indul, amelynek száma a paraméterben van megadva Kezdőpozíció. A keresés a karakterlánc elejétől vagy végétől lehetséges. Például:

Number4 Entry= StrFind( "védekezés", "o" , Keresési irány. Először 1 , 4 ); 7

StrReplace(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) Megkeresi a keresési részkarakterlánc összes előfordulását a forráskarakterláncban, és lecseréli a helyettesítő karakterláncra.

StrReplace("String" , "szem" , "" ) ; // Oldal

Üres sor (<Строка>) - ellenőrzi, hogy a karakterláncban vannak-e jelentős karakterek. Ha nincsenek jelentős karakterek, vagy egyáltalán nincsenek karakterek, akkor a rendszer az értéket adja vissza Igaz. Másképp - Hazugság.

StrNumberOccurrences(<Строка>, <ПодстрокаПоиска>) – kiszámítja a keresési részkarakterlánc előfordulásának számát a forráskarakterláncban.

StrNumberOccurrences ( "Tanulj, tanulj és tanulj újra", "tanulni" , "" ) ; 3

StrTemplate(<Строка>, <ЗначениеПодстановки1>…<ЗначениеПодстановкиN> — számmal helyettesíti a paramétereket a karakterláncban. A karakterláncnak tartalmaznia kell a következő formátumú helyettesítési jelzőket: "%1..%N". A markerek számozása 1-től kezdődik. Ha a paraméter értéke Meghatározatlan, az üres karakterlánc behelyettesítésre kerül.

StrPattern ( "1. lehetőség = %1, 2. lehetőség = %2", "1" , "2" ) ; // 1. paraméter = 1, 2. paraméter = 2

String konverziós függvények:

Egy oroszlán(<Строка>, <ЧислоСимволов>) visszaadja a karakterlánc első karaktereit.

Jobb(<Строка>, <ЧислоСимволов>) - a karakterlánc utolsó karaktereit adja vissza.

Szerda(<Строка>, <НачальныйНомер>, <ЧислоСимволов>) - egy hosszúságú karakterláncot ad vissza<ЧислоСимволов>karakterrel kezdve<НачальныйНомер>.

rövid(<Строка>) a nem szignifikáns karaktereket a karakterlánc első jelentős karakterétől balra csonkolja.

rövidítés(<Строка>) - levágja a jelentéktelen karaktereket a karakterlánc utolsó jelentős karakterétől jobbra.

Abbrl(<Строка>) - levágja a nem szignifikáns karaktereket a karakterlánc első jelentős karakterétől balra és a karakterlánc utolsó jelentős karakterétől jobbra.

StrGetString(<Строка>, <НомерСтроки>) – szám szerint lekéri a többsoros karakterlánc sztringjét.

Más funkciók:

Erősség(<Строка>) - a karakterláncban lévő karakterek számát adja vissza.

StrNumber of Lines(<Строка>) - egy többsoros karakterlánc sorainak számát adja vissza. Egy sor akkor tekinthető újnak, ha újsor karakter választja el az előző sortól.

StrCompare(<Строка1>, <Строка2> ) - érzéketlenül hasonlít össze két karakterlánc kis- és nagybetűket. A függvény objektumként működik Értékek összehasonlítása. Visszaküldések:

  • 1 - ha az első sor nagyobb, mint a második
  • -1 - ha a második sor nagyobb, mint az első
  • 0 - ha a karakterláncok egyenlőek

StrCompare("Első sor" , "Második sor" ) ; // egy

Az 1C 8.3 karakterláncai az 1c beépített nyelvben primitív típusú értékek Vonal. Az ilyen típusú értékek tetszőleges hosszúságú Unicode karakterláncot tartalmaznak. A karakterlánc típusú változók idézőjelbe zárt karakterkészletek.

Példa 1. Hozzunk létre egy karakterlánc-változót szöveggel.

StringVariable = "Szia világ!";

Függvények karakterláncokkal való munkavégzéshez 1s-ben 8.3

NÁL NÉL ez a szekció a fő funkciókat kapjuk, amelyek lehetővé teszik a sorok 1 másodpercenkénti megváltoztatását, vagy a bennük lévő információk elemzését.

Erősség

Erősség(<Строка>) . A paraméterben átadott karakterláncban található karakterek számát adja vissza.

2. példa. Számoljuk meg a "Hello world!" karakterlánc karaktereinek számát.

String = "Helló világ!"; Karakterek száma = StrLength(String); Jelentés(Karakterek száma);

A kód végrehajtásának eredményeként megjelenik a karakterláncban lévő karakterek száma: 11.

Rövidítve

rövid(<Строка>) . A nem szignifikáns karaktereket a karakterlánc első jelentős karakterétől balra vágja.
Jelentéktelen karakterek:

  • tér;
  • nem törő tér;
  • táblázatosítás;
  • kocsi vissza;
  • soros fordítás;
  • az űrlap (oldal) fordítása.

3. példa: Távolítson el minden szóközt a "béke!" karakterlánc bal oldaláról. és fűzze hozzá a "Hello" karakterláncot.

String = abbr("világ!"); String = "Szia"+karakterlánc; Értesítés(String);

A kód végrehajtásának eredménye a "Hello world!" karakterlánc megjelenítése lesz.

Rövidítés

rövidítés(<Строка>) . A nem jelentős karaktereket levágja a karakterlánc első jelentős karakterétől jobbra.

Példa 4. Formázz a "Hello" és a "world!" karakterláncokból! kifejezés "Hello világ!"

String = abbr("Szia")+" "+abbr("világ!"); Értesítés(String);

Rövidített LP

Abbrl(<Строка>) . Levágja a nem szignifikáns karaktereket a karakterlánc első jelentős karakterétől jobbra, a nem szignifikáns karaktereket is levágja a karakterlánc első jelentős karakterétől balra. Ezt a funkciót gyakrabban használják, mint az előző kettőt, mivel sokoldalúbb.

5. példa: Távolítsa el a jelentéktelen karaktereket a partner nevéből a bal és a jobb oldalon.

Vállalkozó = Directories.Contractors.FindBy Details("TIN", "0777121211"); ContractorObject = Contractor.GetObject(); ContractorObject.Description = Rövidített LP(ContractorObject.Description); ContractorObject.Write();

egy oroszlán

Egy oroszlán(<Строка>, <ЧислоСимволов>) . Lekéri egy karakterlánc első karaktereit, a karakterek száma a paraméterben van megadva Karakterek száma.

6. példa. Legyen a szerkezet Munkavállaló tartalmazza a munkavállaló nevét, vezetéknevét és családnevét. Szerezzen be egy karakterláncot vezetéknévvel és kezdőbetűkkel.

InitialName = Oroszlán(Alkalmazott.Név, 1); Apanév kezdőbetűje = Oroszlán(Alkalmazott.Patronym, 1); FullName = Alkalmazott.Vezetéknév + " " + Keresztnév kezdeti + "." + Apanév kezdőbetűje + ".";

jogok

Jobb(<Строка>, <ЧислоСимволов>) . Lekéri egy karakterlánc utolsó karaktereit, a karakterek száma a paraméterben van megadva Karakterek száma. Ha a megadott számú karakter meghaladja a karakterlánc hosszát, akkor a teljes karakterláncot a rendszer visszaadja.

7. példa: Írjon egy dátumot egy karakterláncváltozó végére „ééééhhnn” formátumban, szerezzen be egy dátumot tartalmazó karakterláncot, és alakítsa át típussá dátum.

Karakterlánc = " Az aktuális dátum: 20170910"; StringDate = Jogok(String, 8); Date = Date(StringDate);

szerda

Szerda(<Строка>, <НачальныйНомер>, <ЧислоСимволов>) . Lekér egy részkarakterláncot a paraméterben átadott karakterláncból Vonal, attól a karaktertől kezdve, amelynek száma a paraméterben van megadva InitialNumberés a paraméternek átadott hossz Karakterek száma. A karakterláncban lévő karakterek számozása 1-től kezdődik. Ha a paraméter InitialNumber nullánál kisebb vagy azzal egyenlő érték van megadva, akkor a paraméter az 1 értéket veszi fel. Ha a paraméter Karakterek száma nincs megadva, a karakterlánc végéig tartó karakterek kerülnek kiválasztásra.

Példa 8. Hagyja, hogy a karakterlánc változó tartalmazza a régiókódot a kilencedik pozíciótól kezdve, ezt kell beszerezni és külön sorba írni.

String = "Régió: 99 Moszkva"; Régió = Átl.(sor, 9, 2);

PageFind

StrFind(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) . Megkeresi a megadott részkarakterláncot egy karakterláncban, visszaadja a talált részstring első karakterének pozíciószámát. Tekintsük ennek a függvénynek a paramétereit:

  • Vonal. Forrás karakterlánc;
  • SubstringSearch. A kívánt részkarakterlánc;
  • Iránykeresés. Megadja a karakterláncban lévő részkarakterlánc keresésének irányát. Értékeket vehet fel:
    • Keresési irány. A kezdetektől;
    • Keresési irány. A végétől;
  • Kezdőpozíció. Megadja azt a pozíciót a karakterláncban, ahol a keresést indítani kell;
  • Belépési szám. Megadja a keresett részkarakterlánc előfordulásának számát a forráskarakterláncban.

9. példa A "Hello world!" sorban. határozza meg az "és" karakter utolsó előfordulásának helyét.

PositionNumber = StrFind("Hello World!", "és", Keresési Irány.A végétől); Értesítés(pozíciószám);

A kód végrehajtásának eredménye az „és” szimbólum utolsó előfordulásának száma jelenik meg a képernyőn: 9.

VReg

VReg(<Строка>) . A megadott karakterlánc összes karakterét 1s 8-ra nagybetűvé alakítja.

10. példa Konvertálja a "hello world!" karakterláncot. nagybetűre.

StringVreg = Vreg("helló világ!"); Jelentés(StringVreg);

A kód végrehajtásának eredménye a "HELLO WORLD!" karakterlánc megjelenítése lesz.

HReg

HReg(<Строка>) . A megadott karakterlánc összes karakterét 1s 8-ra kisbetűvé alakítja.

11. példa Konvertálja a "HELLO WORLD!" kisbetűsre.

StringNreg = NReg("HELLO VILÁG!"); Jelentés(StringVreg);

A kód végrehajtásának eredménye a "hello world!" karakterlánc megjelenítése lesz.

Treg

Treg(<Строка>) . A karakterláncot a következőképpen alakítja át: minden szó első karakterét nagybetűvé, a szó többi karakterét kisbetűvé alakítja.

Példa 12. Készíts először a tőke a "hello világ!" karakterláncban lévő szavak betűi.

StringTreg = TReg("helló világ!"); Jelentés(StringTreg);

A kód végrehajtásának eredménye a "Hello World!" karakterlánc megjelenítése lesz.

Szimbólum

Szimbólum(<КодСимвола>) . Unicode kódja alapján kap egy karaktert.

13. példa: Adjon hozzá bal és jobb oldalt a "Hello World!" szimbólum ★

StringWithStars = Karakter("9733")+"Helló világ!"+Karakter("9733"); Jelentés(StringWithStars);

A kód végrehajtásának eredményeként megjelenik a „★Hello World!★” karakterlánc.

SymbolCode

SymbolCode(<Строка>, <НомерСимвола>) . A Unicode karakterkódot az első paraméterben megadott karakterláncból kéri le, amely a második paraméterben megadott helyen található.

14. példa: Keresse meg a "Hello World!" karakterlánc utolsó karakterének kódját.

String = "Hello World!"; CharacterCode =KarakterKód(karakterlánc, StrLength(String)); Értesítés (Karakterkód);

A kód végrehajtásának eredménye a "!" szimbólum kódjának megjelenítése lesz. — 33.

Üres sor

Üres sor (<Строка>) . Ellenőrzi, hogy a karakterlánc csak nem szignifikáns karakterekből áll-e, azaz üres-e.

15. példa Ellenőrizze, hogy a karakterlánc üres-e, és három szóközből áll-e.

Empty = EmptyString(" "); Jelentés(Üres);

A kód végrehajtásának eredményeként megjelenik az "Igen" szó (egy logikai érték karakterlánc kifejezése Igaz).

StrReplace

StrReplace(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) . Megkeresi a keresési részkarakterlánc összes előfordulását a forráskarakterláncban, és lecseréli a helyettesítő karakterláncra.

16. példa A "Hello World!" sorban. cserélje ki a „Világ” szót a „Barátok” szóra.

String = StrReplace("Hello World!", "World", "Barátok"); Értesítés(String);

A kód végrehajtásának eredménye a "Hello Friends!" karakterlánc megjelenítése lesz.

StrNumberRows

StrNumber of Lines(<Строка>) . Lehetővé teszi egy többsoros karakterláncban lévő sorok számának megszámlálását. A váltáshoz új sor 1s 8-ban a szimbólumot használják PS(soremelés karakter).

17. példa Határozza meg a sorok számát a szövegben:
"Első sor
Második sor
Harmadik sor"

Number = StrNumber of Lines("Első sor"+Szimbólumok.PS +"Második sor"+Szimbólumok.PS +"Harmadik sor"); Jelentés(szám);

A kód végrehajtásának eredménye a sorok számának megjelenítése a szövegben: 3

StrGetString

StrGetString(<Строка>, <НомерСтроки>) . A többsoros karakterláncban lévő karakterláncot a száma alapján kapja meg. A sorszámozás 1-től kezdődik.

18. példa: Szerezze be a szöveg utolsó sorát:
"Első sor
Második sor
Harmadik sor"

Szöveg = "Első sor"+Karakterek.PS +"Második sor"+Karakterek.PS +"Harmadik sor"; LastLine = StrGetLine(szöveg, sorok száma(szöveg)); Értesítés (Utolsó sor);

A kód végrehajtásának eredménye a „Harmadik sor” sor megjelenítése lesz.

StrNumberOccurrences

StrNumberOccurrences(<Строка>, <ПодстрокаПоиска>) . A megadott részkarakterlánc előfordulásának számát adja vissza egy karakterláncban. A funkció megkülönbözteti a kis- és nagybetűket.

19. példa Határozza meg, hogy a „c” betű hányszor lép be a „Lines in 1s 8.3 and 8.2” sorba, kis- és nagybetűtől függetlenül.

String = "Sorok az 1s 8.3-ban és 8.2-ben"; Előfordulások száma = Str. Előfordulások száma(Vreg(String), "C"); jelentés(előfordulások száma);

A kód végrehajtásának eredménye az előfordulások számát jeleníti meg a képernyőn: 2.

Page BeginsFrom

StrBeginsFrom(<Строка>, <СтрокаПоиска>) . Ellenőrzi, hogy az első paraméterben megadott karakterlánc a második paraméterben szereplő karakterlánccal kezdődik-e.

20. példa Határozza meg, hogy a kiválasztott partner TIN-je 1-gyel kezdődik-e. Legyen a változó szerződő fél Ügyfelek.

TIN = Vállalkozó.TIN; StartsCUnits = StrStartsC(TIN, "1"); If StartsFROM1 Then //A kódod EndIf;

Az oldal vége

StrEndsOn(<Строка>, <СтрокаПоиска>) . Ellenőrzi, hogy az első paraméterben átadott karakterlánc a második paraméterben lévő karakterláncra végződik-e.

21. példa Határozza meg, hogy a kiválasztott partner TIN-száma 2-re végződik-e. Legyen a változó szerződő fél a címtárelemre mutató hivatkozás tárolásra kerül Ügyfelek.

TIN = Vállalkozó.TIN; Kettővel végződik = Str A következővel végződik (TIN, "2"); If Ends With Two Then //A kódod EndIf;

PageSplit

StrDivide(<Строка>, <Разделитель>, <ВключатьПустые>) . Egy karakterláncot részekre bont a megadott határoló karakterekkel, és a kapott karakterláncokat egy tömbbe írja. Az első paraméter az eredeti karakterláncot tárolja, a második a határolót tartalmazó karakterláncot, a harmadik paraméter jelzi, hogy kell-e üres karakterláncokat írni a tömbbe (alapértelmezés szerint Igaz).

22. példa. Tegyük fel, hogy van egy karakterláncunk, amely számokat tartalmaz ";" szimbólummal elválasztva, kapjunk egy számtömböt a karakterláncból.

Karakterlánc = "1; 2; 3"; Tömb = StrSplit(String, ";"); For Count = 0 by Array.Quantity() - 1 Loop Attempt Array[Count] = Number(Ablp(Tömb[Count])); Kivételtömb[W] = 0; EndTry EndCycle;

A végrehajtás eredményeként egy 1-től 3-ig terjedő számokat tartalmazó tömb keletkezik.

StrConnect

StrConnect(<Строки>, <Разделитель>) . Az első paraméterből álló karakterláncok tömbjét a második paraméterben megadott határolóval a tömb összes elemét tartalmazó karakterláncsá alakítja át.

23. példa: Az előző példa számtömbjének felhasználásával kapja meg az eredeti karakterláncot.

For Count = 0 by Array.Quantity() - 1 Loop Array[Count] = String(Tömb[Count]); EndCycle; String = StrConnect(tömb, "; ");

A programozási nyelvek alapvető jellemzői általában a számokkal és karakterláncokkal való munka. Általában ezek a szolgáltatások a fordítókódba vannak bekötve (vagy a programozási nyelv "alap" osztályai vannak megvalósítva).

Az 1C-ben a karakterláncokkal való munkavégzés lehetőségeit magában a platformban programozzák. Ma megvizsgáljuk az 1C karakterláncokkal való munkavégzés jellemzőit a beépített 1C nyelvű programokban.

Vonalérték 1C

1. Kezdjük a legegyszerűbbel. Változó létrehozása és karakterlánc-konstans érték hozzárendelése a következőképpen néz ki az 1C-ben:

Változó = "Helló világ!";

Ha egy idézőjel karaktert szeretne megadni egy állandó 1C karakterlánc értékben, akkor meg kell dupláznia ""

Változó = "Helló, "világ""!";

2. Az 1C sortörés egyszerre kétféleképpen adható meg. Az első a | szimbólum használata

Változó = "Szia!
| világ! ";

A második a Symbols system enum használata. Lehetővé teszi sortörés 1C és egyéb nem nyomtatható karakterek, például TAB hozzáadását.

Változó = "Szia" + Symbols.ps + "béke!";

3. Az 1C konfigurációi nem csak egy nyelvre (orosz, angol vagy más) fejleszthetők, hanem egyidejűleg több nyelvre is. Ebben az esetben az 1C ablak alján az aktuálisan használt nyelv kerül kiválasztásra.

A nyelvek listája az Általános/Nyelvek ág konfigurációs ablakában található. Minden nyelvnek van egy rövid azonosítója, mint pl hu vagy eng.

Nyilvánvaló, hogy egy ilyen konfiguráció programozásakor az 1C vonalak többnyelvűek is lehetnek. Ehhez létre lehet hozni egy ilyen 1C sort az átmenő megadásával; lehetőségek nyelvazonosító szerint:

Változó = "ru=""Szia, világ!""; hu=""Szia, világ! """;

Ha az így kialakított 1C sort szokás szerint használod, akkor az lesz ami benne van írva. Ahhoz, hogy a rendszer két lehetőségre bontsa, és a kívántat használja, az NStr() függvényt kell használnia:

//kétnyelvű konfigurációk esetén helyes
Jelentés(NStr(Változó));

1C vonaltípusú kellékek

A szükséges feltétel az 1C könyvtár / dokumentum mezője. Az 1C nyelvű programban lévő változóktól abban különbözik, hogy típusa pontosan meg van adva az attribútumhoz (szám, 1C karakterlánc stb.). Ha pontosítania kell a kellékeket, nézze meg az oktatóanyagot a webhelyen.

Ha megadja az attribútum típusát - 1C sor, akkor meg kell adnia a paramétereket is.

Az 1C karakterláncok korlátlan hosszúságúak (hosszúság = 0) és korlátozott hosszúságúak, jelezve a karakterek pontos számát. A korlátlan hosszúságú 1C karakterláncokat külön tároljuk SQL tábla, így használatuk kevésbé produktív, mint korlátozott.

Éppen ezért a korlátlan hosszúságú 1C húrok használatának megvannak a maga korlátai - nem lehet mindenhol használni őket. Például bizonylatszámként, címtárkódként, mérésként nem lehetséges.

Munkavégzés 1C vonalakkal

A karakterláncokkal való munkához az 1C platform számos beépített funkciója van.

  • AbbrLP ("Hihetetlen, de igaz!")
    Eltávolítja a felesleges szóközöket az 1C karakterláncból. Bármilyen típus 1C karakterláncsá alakítására is használható (például számok).
  • Változó = "Vasya" + Abbrl("plusz") + "Olya"; //"Vasya plus Olya" lesz
    Példa több karakterlánc-érték összegzésére 1C. Az eredmény egy sor 1C.
  • Változó = Oroszlán("Zene", 2); // "Mu" lesz
    Változó = Átlag("Zene", 2, 2); // "ps" lesz
    Változó = Jogok("Zene", 2); // "ka" lesz
    Különféle lehetőségek egy karakterláncból való részkarakterlánc megszerzésére 1C.
  • Változó = Find("Zene", "ps"); //3 lesz
    Keressen egy részkarakterláncot az 1C karakterláncban, az 1. karakterrel kezdve.
  • Változó = StrLength("Zene"); //6 lesz
    Egy 1C karakterlánc karaktereinek számát adja vissza.
  • Notify("Hi") //az 1C ablak alján található üzenetmezőben
    alert("hello") //felugró párbeszédpanel
    Status("Hello") //az állapotkijelző sorban a bal alsó sarokban
    .

Tárgyak bevitele az 1C sorba

Mint ismeretes, jelenleg az XML a legnépszerűbb formátum a strukturált információcserére. Még legújabb verzió KISASSZONY Office Wordés Excel menti a fájlokat ebben a formátumban (docx és xlsx, módosítsa a kiterjesztést zip-re, nyissa meg archiválóban).

Az 1C adatcserére szolgáló platform számos lehetőséget kínál, amelyek közül a fő szintén az XML.

1. A legegyszerűbb módszer a ShortLP() vagy String() függvény használata. Használhatja a REPRESENTATION() függvényt a lekérdezés szövegében. Műveletük eredménye ugyanaz - bármilyen 1C objektum karakterlánc reprezentációját generálják a felhasználó számára.

Az alapértelmezett könyvtár esetében ez lesz a neve. Dokumentum esetén a dokumentum neve, száma és dátuma.

2. Bármely 1C objektum (korlátozásokkal) konvertálható XML-be és fordítva. Az átalakítási folyamatot szerializálásnak nevezik.

ViewStringXml = XMLString(Érték); //XML beszerzése az 1C értékből
Value1С = XMLValue(Típus("Katalógushivatkozás.Nómenklatúra"),ViewStringXml); //szerezze le az 1C értéket az XML karakterláncból, meg kell adnia a fogadandó 1C típusát

3. Az 1C platform natív módon bármilyen 1C objektumot karaktersorozattá alakít. Az 1C 7.7-es verzióról költözött. Ezt a formátumot más programok nem értik, de megért egy másik 1C-t, ami megkönnyíti az 1C adatbázisok közötti cserét.

Karakterlánc = ValueInStringInt(Érték1S); //lekéri az 1C karakterláncot az 1C értékből
ValueToFile("C:\Sajátfájl.txt", Érték1C); //egy másik lehetőség, az 1C értékből kapunk egy mentett karakterláncot tartalmazó fájlt
Érték1C = ValueFromStringInt(String); //vissza az 1C sorból
Érték1C = ÉrtékFájl("C:\Sajátfájl.txt"); //vissza a fájlból

1C sorok szerkesztése az űrlapon

Amellett, hogy egy 1C programban 1C karakterláncokkal dolgozom, természetesen szeretném, ha a felhasználó szerkeszthetné azokat. Erre több lehetőség is kínálkozik:

1. A legegyszerűbb módja az 1C vonal bevitelének kérése. Ezt a módszert az 1C programozás tanításakor használják, az életben sokkal ritkábban használják (de használják!).

Változó = "";
String = EnterValue(Változó, "Írja be a teljes nevet");

2. Az 1C objektum részleteinek (könyvtár / dokumentum) vagy az űrlap részleteinek (lásd) megjelenítéséhez leggyakrabban a beviteli mezőt használják. Ez a leggyakoribb eszköz az 1C-ben a felhasználó számára a szerkesztőmezők kezeléséhez.

3. A beviteli mező lehetőségei bővíthetők (lásd a beviteli mező tulajdonságait, kattintson rá jobb gombbal, további részletekért):

  • Jelölőnégyzet Többsoros szerkesztési mód
  • Speciális szerkesztés jelölőnégyzet (akkor érhető el, ha az előző jelölőnégyzet be van jelölve)
  • Jelszómód jelölőnégyzet (lásd ).

4. Ha a beviteli mező összes lehetősége nem elegendő Önnek, van beépített szerkesztő. Az űrlaphoz való hozzáadásához hozzá kell adni egy Mezőt az Űrlap / Vezérlő beszúrása menüben szöveges dokumentum. Tulajdonságaiban megadhatja működésének módját - az Extension tulajdonságot.

Szöveges dokumentummező nem kapcsolható közvetlenül adatokhoz. Az OnOpening() form eseménykezelőjébe a következő függvényt kell beírni (lásd ):

FormElements.ElementNameTextDocumentField.SetText(StringValue); //itt a ValueString az a szöveg, amelyet például az attribútumból kapunk

És a mentéskezelőben - például a Mentés gombban - adjon hozzá egy mentést:

ValueString = FormElements.ElementNameTextDocumentField.GetText(); //ValueString itt a kellékek, ahova mentjük az értéket

5. Az 1C 8.2.11-es verziójában in kezelt űrlapok, megjelent új lehetőség vonalábrázolás 1C - Formázott dokumentummező.


A szöveges dokumentum mezőjéhez hasonlóan itt is be kell állítani a megnyitáskor, és írni kell, ha a program segítségével saját maga menti a szöveget.

  • Az 1C objektumban, amelynek formáját készítjük (referenciakönyv, dokumentum, feldolgozás stb.) - adjon hozzá egy attribútumot Value Storage típusú
  • Az OnReadOnServer() függvényben állítsa be az attribútum szövegét

    //itt a Requisite az 1C objektum hozzáadott attribútuma
    //itt a FormattedDocument a mező neve a szerkesztési űrlapon
    &A szerveren

    FormattedDocument = CurrentObject.Attributes.Get();
    Vége eljárás

  • A BeforeWriteOnServer() függvényben vagy a gomb megnyomásával írja be a szöveget a mezőből

    &A szerveren
    Eljárás onReadingOnServer(CurrentObject)
    CurrentObject.Attributes = NewValueStorage(FormattedDocument);
    Vége eljárás