Kapcsolatok

Függvények a húrokkal való munkavégzéshez 1c. Új funkciók a karakterláncokkal való munkához. Formázási függvény StrPattern ()

Az 1C 8.3 karakterláncai az 1c beépített nyelvben primitív típusú értékeket képviselnek Vonal... Az értékek ebből a típusból 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 a húrokkal való munkavégzéshez az 1c-ben 8.3

Ebben a részben megadjuk azokat a fő funkciókat, amelyek lehetővé teszik az 1c sorok megváltoztatását, vagy a bennük lévő információk elemzését.

Str Hossz

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

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

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ítés

AbbrL (<Строка>) ... A jelentéktelen karaktereket a karakterlánc első jelentős karakterétől balra csonkolja.
Kisebb 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 "világ!" sor bal oldaláról. és csatolja hozzá a "Hello" zsinórt.

String = rövidítve ("béke!"); String = "Hello" + Karakterlánc; Jelentés (String);

A kód végrehajtásának eredménye a "Hello world!" sor kimenete lesz.

Rövidítés

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

4. példa: Űzze ki a "Hello" és a "World!" a "Hello világ!"

String = rövidítve ("Hello") + "" + rövidítve ("világ!"); Jelentés (String);

SokrLP

SocrLP (<Строка>) ... Levágja a jelentéktelen karaktereket a karakterlánc első jelentős karakterétől jobbra, és a jelentéktelen karaktereket is levágja a karakterlánc első jelentős karakterétől balra. Ez a funkció 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.

Counterparty = Directories.Contractors.NaytiPoRequisite ("INN", "0777121211"); CounterpartyObject = Counterparty.GetObject (); CounterpartyObject.Name = SokrLP (CounterpartyObject.Name); CounterpartyObject.Write ();

egy oroszlán

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

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

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

Jobb

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. Tegyük fel, hogy egy karakterlánc-változó vége dátumot tartalmaz "ééééhhnn" formátumban, szerezzen be egy dátumot tartalmazó karakterláncot, és alakítsa át a típusra dátum.

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

szerda

Szerda (<Строка>, <НачальныйНомер>, <ЧислоСимволов>) ... A paraméterként átadott karakterláncból részkarakterláncot kap Vonal, attól a karaktertől kezdve, amelynek száma a paraméterben meg van adva Kezdőszámés a paraméternek átadott hossz Karakterek száma. A sorban a karakterek számozása 1-től kezdődik. Ha a paraméter Kezdőszám olyan értéket adunk meg, amely kisebb vagy egyenlő nullával, akkor a paraméter 1 értéket vesz fel. Ha a paraméter Szimbólumok száma nincs megadva, akkor a sor végéig tartó karakterek kerülnek kiválasztásra.

Példa 8. Tegyük fel, hogy a kilencedik pozíciótól induló karakterlánc változó tartalmazza a régiókódot, akkor azt kapjuk meg és írjuk egy külön sorba.

Sor = "Régió: 99 Moszkva"; Régió = Sze (9. sor, 2.);

Keresés

Megtalálja (<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) ... 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;
  • Alkarakterlánc... A keresendő részkarakterlánc;
  • Keresési irány... Megadja a karakterláncban lévő részkarakterlánc keresésének irányát. Értékeket vehet fel:
    • Keresési irány. Kezdettől;
    • Keresési irány.;
  • Kezdő pozíció... Megadja a pozíciót a karakterláncban, ahonnan a keresés kezdődik;
  • Bejáratok száma... Megadja a kívánt részkarakterlánc előfordulásának számát az eredeti karakterláncban.

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

PositionNumber = StrNayti ("Hello world!", "And", DirectionSearch.End); Jelenté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 lesz: 9.

VReg

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

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

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

A kód végrehajtásának eredményeként megjelenik a "HELLO WORLD!"

Nreg

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

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

StringNreg = НReg ("HELLO WORLD!"); Jelentés (StringVreg);

A kód végrehajtásának eredménye a "hello world!" sor kimenete lesz.

Treg

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

12. példa: Írd nagybetűvel a "hello world!" karakterlánc szavainak kezdőbetűit.

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

A kód végrehajtásának eredménye a képernyőn a "Hello World!" sor kimenete lesz.

Szimbólum

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

Példa 13. Adjuk hozzá a bal és jobb oldali sort a "Hello World!" szimbólum ★

StringWithStars = Szimbólum ("9733") + "Hello World!" + Szimbólum ("9733"); Jelentés (StringWithStars);

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

Szimbólum kód

Szimbólumkód (<Строка>, <НомерСимвола>) ... 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 az utolsó karakter kódját a "Hello World!"

String = "Hello World!"; CharacterCode = Karakterkód (String, StrLength (String)); Jelentés (SymbolCode);

A kód végrehajtásának eredményeként megjelenik a "!" - 33.

Üres sor

Üres sor (<Строка>) ... Ellenőrzi, hogy egy karakterlánc csak jelentéktelen karaktereket tartalmaz-e, azaz üres-e.

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

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

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

Oldalcsere

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

16. példa A "Hello World!" sorban. cserélje ki a „béke” szót a „barátok” szóra.

String = StrReplace ("Hello World!", "World", "Friends"); Jelentés (String);

A kód végrehajtásának eredménye a "Hello Friends!" sor jelenik meg.

StrNumberStrings

Sorok száma (<Строка>) ... Megszámolja a többsoros karakterlánc sorainak számát. Menni ú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 = StrNumberStrings ("Első sor" + Symbols.PS + "Second line" + Symbols.PS + "Third line"); 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" + Szimbólumok.PS + "Második sor" + Szimbólumok.PS + "Harmadik sor"; LastRow = StrGetString (Szöveg, StrNumberLines (Szöveg)); Jelentés (LastLine);

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

Str. Előfordulások száma

Az előfordulások száma (<Строка>, <ПодстрокаПоиска>) ... 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, hányszor jelenik meg a "c" betű a "Lines in 1s 8.3 and 8.2" sorban, függetlenül a kis- és nagybetűtől.

Line = "Sorok az 1s 8.3-ban és 8.2-ben"; Előfordulások száma = StrNumber of Előfordulások (Vreg (karakterlánc), "S"); Jelentés (Előfordulások száma);

A kód végrehajtásának eredménye az előfordulások számának kijelzése lesz: 2.

PageStarts with

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

20. példa Határozza meg, hogy a kiválasztott partner INN-je 1-gyel kezdődik-e. Hagyja be a változót Ügyfél Vállalkozók.

TIN = Partner.INN; Kezdődik egységekkel = StrInd az (INN, "1"); If BeginsUnits Then // Az Ön kódja EndIf;

Az oldal ezzel fejeződik be

Oldalvégek ezzel (<Строка>, <СтрокаПоиска>) ... 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-je 2-es számjegyre végződjön-e. Engedje meg a változót Ügyfél egy címtárelemre mutató hivatkozás tárolódik Vállalkozók.

TIN = Partner.INN; Kettővel végződik = Str A következővel végződik (INN, "2"); If Ends WithDouble Then // Az Ön kódja EndIf;

PageSplit

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

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

Karakterlánc = "1; 2; 3"; Tömb = StrSplit (karakterlánc, ";"); Ha Rd = 0 tömb szerint. Mennyiség () - 1 Cikluskísérlet Tömb [Rd] = Szám (AbbrLP (Tömb [Rd])); Kivételtömb [Сч] = 0; End of Attempts End of Loop;

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 olyan karakterláncsá alakítja, amely a tömb összes elemét tartalmazza, a második paraméterben megadott határolóval elválasztva.

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

For Rd = 0 By Array.Quantity () - 1 Cycle Array [Rd] = Karakterlánc (Tömb [Rd]); Ciklus vége; String = StrConnect (tömb, ";");

8.3.6.1977 verzióban implementálva.

Kibővítettük a karakterláncokkal végzett munka funkciókészleté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 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.

Minden olyan művelet, amely új funkciókat hajt végre, korábban is végrehajthatta. Többé-kevésbé összetett algoritmusok beágyazott nyelven írva. Ezért az új funkciók nem adnak alapvetően új lehetőségeket. Csökkenthetik azonban a kód mennyiségét, egyszerűbbé és érthetőbbé tehetik a kódot. És emellett 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ó, beágyazott nyelven írt algoritmus.

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

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ésekor. Ennek a függvénynek a szintaxisa a következő:

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

<Шаблон>egy karakterlánc, amely a paraméter-reprezentációkat helyettesíti.

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

Ahhoz, hogy a sablonban egy adott helyet jelöljön meg, ahol helyettesítést kíván végrehajtani, % 1, ...% 10 formátumú tokeneket kell használnia. A sablonban használt markerek és az értékeket tartalmazó paraméterek számának azonosnak kell lennie.

Például egy ilyen utasítás végrehajtásának eredménye:

lesz egy sor:

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

StrCompare () karakterláncokkal való munkavégzés funkciója

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

Ugyanezt a műveletet korábban is végrehajthatta volna az Érték-összehasonlítás objektum használatával:

Az új funkció használata azonban egyszerűbbnek tűnik. Ezenkívül a funkció az Értékek összehasonlítása objektumtól eltérően vékony kliensben és webes kliensben is működik.

Függvények karakterláncokkal való munkavégzéshez RowStart With (), RREnd With ()

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

Például kényelmes használni őket az operátorban, ha:

StrSplit (), StrConnect () karakterláncokkal végzett munka függvényei

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ára vagy elemzésére. Például egyszerűen szétszedheti a technológiai napló rekordját további elemzésre alkalmas részekre:

StrFind () karakterláncokkal való munkavégzés funkciója

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 egy 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 többé ne használja a régi Keresés () funkciót.

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

A karakterlánc az egyik primitív adattípus az 1C: Enterprise 8-ban. A típussal rendelkező változók vonal szöveget tartalmaznak.

A típusváltozók értékei vonal idézőjelek közé vannak zárva. Több ilyen típusú változó is hozzáadható.

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

Végül is Per3 azt fogja jelenteni, hogy " 1. szó 2. szó ″.

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

Írja be a karakterláncot (<Строка>, <Подсказка>, <Длина>, <Многострочность>) — a függvény célja egy párbeszédpanel megjelenítése, amelyben a felhasználó megadhat egy értéket változó típusú Vonal... Paraméter <Строка> kötelező, és tartalmazza annak a változónak a nevét, amelyre 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 a bemeneti karakterlánc. Az alapértelmezett nulla, ami korlátlan hosszúságot jelent. Paraméter <Многострочность> választható. Meghatározza a többsoros szöveg beviteli módját: Igaz - többsoros szöveg bevitele sorelválasztókkal; False - egyszerű karakterlánc bevitele.

A karakterlánc beírható, és megadható a Unicode karakterkód:

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

Betű = Szimbólum (1103); // ÉN VAGYOK

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

Szimbólumkód (<Строка>, <НомерСимвола>) — visszaadja a megadott Unicode karakterszámot számként.

Tokkonverziós funkciók:

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

HPreg (<Строка>) - 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", "Oka"); 4

Megtalálja (<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) - megkeresi a keresési részstring előfordulásának karakterszámát, az előfordulási számot a megfelelő paraméter jelzi. Ebben az esetben a keresés azzal a karakterrel kezdődik, 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:

4. számú előfordulások = StrFind ( "Védelmi képesség", "o", Keresési irány. Kezdettől fogva, 1, 4); 7

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

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

Üres sor (<Строка>) - ellenőrzi, hogy egy 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 - Fekszik.

Az előfordulások száma (<Строка>, <ПодстрокаПоиска>) - kiszámítja a keresési részkarakterlánc előfordulásának számát az eredeti karakterláncban.

Az előfordulások száma ( "Tanulj, tanulj és tanulj újra", "tanulni" , "" ) ; 3

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

StrPattern ( "1. paraméter =% 1, 2. paraméter =% 2", "1" , "2" ) ; // 1. paraméter = 1, 2. paraméter = 2

String konverziós függvények:

Egy oroszlán(<Строка>, <ЧислоСимволов>) - először a karakterlánc első karaktereit adja vissza.

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

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

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

SocrLP (<Строка>) - levágja a jelentéktelen karaktereket a sor első jelentős karakterétől balra és a sor utolsó jelentős karakterétől jobbra.

StrGetString (<Строка>, <НомерСтроки>) - többsoros karakterláncot kap szám szerint.

Egyéb funkciók:

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

Sorok száma (<Строка>) - 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.

Összehasonlítás (<Строка1>, <Строка2> ) - összehasonlít két karakterláncot, nem érzékeny a kis- és nagybetűkre. A függvény ugyanúgy működik, mint egy objektum Értékek összehasonlítása... Visszaküldés:

  • 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

Kevés mechanizmus létezik a karakterláncokkal való munkavégzésre az 1C lekérdezésekben. Először is hozzá lehet adni a sorokat. Másodszor, kivehet egy részkarakterláncot egy karakterláncból. Harmadszor, a karakterláncok összehasonlíthatók, beleértve a mintákat is. Valószínűleg ennyit tehetsz a húrokkal.

A karakterláncok összefűzése

Karakterláncok hozzáadásához a lekérdezéshez a „+” műveletet kell használni. Csak korlátozott hosszúságú vonalak hajtogathatók.

SELECT "Név:" + Partnerek. Név AS Oszlop1 FROM Címtárból Partnerek AS Partnerek WHERE Partnerek Link = & Link

Substring függvény

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

A Med () függvény analógja innen tárgymodell... A Substring () függvény egy karakterlánc típusú adatokra alkalmazható, és lehetővé teszi egy töredék kiválasztását <Строки> karakterszámmal kezdve <НачальнаяПозиция> (a karakterlánc karakterei 1-től vannak számozva) és hossza <Длина> karakterek. A függvény kiértékelésének eredménye változó hosszúságú karakterlánc típusú, és a hossza korlátlannak számít, ha <Строка> korlátlan hossza és paramétere van <Длина> nem állandó, vagy meghaladja az 1024-et.

Ha a karakterlánc hossza kisebb, mint a második paraméterben megadott, akkor a függvény üres karakterláncot ad vissza.

Figyelem! A SUBSTRING () függvény használata a korlátlan hosszúságú karakterláncok korlátozott hosszúságú karakterláncokká alakításához nem ajánlott. Inkább egy öntési műveletet használjon, például EXPRESS () helyett.

Funkció Like

Ha meg kell győződnie arról, hogy a húr kellékei illeszkednek bizonyos kritériumokösszehasonlítjuk:

SELECT Counterparts. Name AS Oszlop1 FROM Címtárból Partnerek AS Partnerfelek WHERE Partnerek Név = "Gazprom"

De mi van, ha trükkösebb összehasonlítást szeretne? Nem csak egyenlőség vagy egyenlőtlenség, hanem mint egy bizonyos minta? A LIKE függvény pontosan erre készült.

LIKE - Operátor egy karakterlánc mintaszerű ellenőrzésére. A LIKE analógja SQL-ben.

A LIKE operátor lehetővé teszi a tőle balra megadott kifejezés értékének összehasonlítását a jobb oldalon megadott sablon karakterlánccal. A kifejezés értékének karakterlánc típusúnak kell lennie. Ha a kifejezés értéke megegyezik a mintával, az operátor IGAZ értéket ad, ellenkező esetben - FALSE.

A sablon karakterláncának következő karakterei szolgáltatáskarakterek, és a karakterlánc karakterétől eltérő jelentéssel bírnak:

  • % (százalék): tetszőleges számú karaktert tartalmazó sorozat;
  • _ (aláhúzás): egy tetszőleges karakter;
  • […] (Egy vagy több karakter szögletes zárójelben): bármely, szögletes zárójelben szereplő karakter. A felsorolás tartalmazhat tartományokat, például a-z, ami egy tetszőleges karaktert jelent a tartományban, beleértve a tartomány végeit is;
  • [^…] (Szögletes zárójelben egy tagadójel, amelyet egy vagy több karakter követ): bármely más karakter, amely nem szerepel a tagadójel után.

Minden más szimbólum önmagát jelenti, és nem hordoz semmilyen további jelentést. Ha a felsorolt ​​karakterek közül egyet önmagaként kell beírni, akkor azt meg kell előzni<Спецсимвол>... Magamat<Спецсимвол>(bármelyik egyező karakter) ugyanabban az utasításban van megadva, miután kulcsszó KÜLÖNLEGES SZIMBÓLUM.

NAK NEK alapvető képességeit A programozási nyelvet általában számokkal és karakterláncokkal való munkavégzésnek nevezik. Általában ezek a szolgáltatások a fordítókódba vannak kódolva (vagy a programozási nyelv "alap" osztályai vannak megvalósítva).

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

Az 1C sor értéke

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

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

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

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

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

Változó = "Szia!
| béke! ";

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

Változó = "Hello" + Symbols.PS + "világ!";

3. Az 1C konfigurációi nem csak egy nyelvre (orosz, angol vagy másik) 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 ru 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 nyelvi azonosító szerint:

Változó = "ru =" "Szia, világ!" "; En =" "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, a HStr () függvényt kell használnia:

// helyes a kétnyelvű konfigurációk esetén
Jelentés (НStr (változó));

1C vonaltípusú kellékek

Szükséges egy 1C hivatkozási / dokumentummező. Abban különbözik az 1C program változóitól, hogy típusa (szám, 1C karakterlánc stb.) pontosan meg van adva egy attribútumhoz. Ha pontosítania kell a kellékeket, nézze meg a leckét.

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

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 sorok külön SQL táblában vannak tárolva, így használatuk kevésbé produktív, mint korlátozott.

Éppen ezért a korlátlan hosszúságú 1C karakterláncok használatának megvannak a maga korlátai - nem lehet mindenhol használni őket. Nem használható például bizonylatszámként, címtárkódként, dimenzióként.

Munka 1C húrokkal

Az 1C platform számos beépített funkcióval rendelkezik a húrokkal való munkavégzéshez.

  • SocrLP ("Hihetetlen, de igaz!")
    Eltávolítja a felesleges szóközöket az 1C sorból. Bármilyen típus 1C karakterláncokká alakítására is használható (például számok).
  • Változó = "Vasya" + SokrLP ("plusz") + "Olya"; // "Vasya plus Olya" lesz
    Példa több 1C karakterlánc érték összegzésére. Az eredmény 1C egy sora lesz.
  • Változó = Oroszlán ("Zene", 2); // "Mu" lesz
    Változó = szerda ("Zene", 2, 2); // "shl" lesz
    Változó = Jobb ("Zene", 2); // "ka" lesz
    Különféle lehetőségek egy részkarakterlánc 1C karakterláncból való beszerzésére.
  • Változó = Find ("Zene", "Shl"); // 3 lesz
    Keressen egy részkarakterláncot az 1C karakterláncban, az 1. karaktertől kezdve.
  • Változó = StrLength ("Zene"); // 6 lesz
    Az 1C sorban lévő karakterek számát adja vissza.
  • Jelentés ("Hello") // az 1C ablak alján lévő üzenetablakban
    Figyelmeztetés ("Hello") // felugró párbeszédpanel
    Állapot ("Hello") // az állapotkijelző sorban a bal alsó sarokban
    .

Objektumok öntése az 1C sorba

Mint tudják, a strukturált információk cseréjének jelenleg legnépszerűbb formátuma az XML. 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 az 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 Rövidítés () vagy String () függvény használata. A lekérdezés törzsében használhatja a REPREZENTÁCIÓ () függvényt. Tevékenységük eredménye ugyanaz – generálnak egy karakterlánc-ábrázolást bármely 1C objektumról a felhasználó számára.

Egy referenciakönyv esetében alapértelmezés szerint 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 lekérése 1C értékből
Value1C = XMLValue (Típus ("ReferenceLink.Nomenclature"), ViewStringXml); // lekérni az 1C értéket az XML karakterláncból, meg kell adni a fogadni kívánt 1C típust

3. Az 1C platformnak van egy módja annak, hogy bármilyen 1C objektumot karaktersorozattá alakítson. Átállt az 1C 7.7-es verzióról. Ezt a formátumot más programok nem értik, de egy másik 1C megérti, ami megkönnyíti az 1C bázisok közötti cserét.

Karakterlánc = ValueVSStringInter (Érték1C); // lekérni az 1C sort az 1C értékből
ValueVFile ("C: \ Saját fájl.txt", Value1C); // másik lehetőség, az 1C értékből kapunk egy fájlt egy mentett karakterlánccal
Value1C = ValueFromStringInternal (String); // vissza az 1C sorból
Value1C = ValueOfFile ("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, a való életben sokkal ritkábban használják (de használják!).

Változó = "";
String = EnterValue (változó, "Adja meg a teljes nevét");

2. Az 1C objektum attribútumának (referenciakönyv / dokumentum) vagy az űrlap attribútumának (lásd: lásd) megjelenítéséhez leggyakrabban a beviteli mezőt használják. Ez a legáltalánosabb eszköz az 1C-ben a szerkesztőmezőkkel végzett felhasználói munkához.

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ölje be a Többsoros szerkesztési módot
  • Jelölőnégyzet Speciális szerkesztés (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 űrlap OnOpening () eseménykezelőjébe függvényt kell írni (lásd:):

FormElements.ElementNameTextDocumentField.SetText (ValueString); // itt a ValueString az a szöveg, amelyet például a kellékekből nyerünk

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

ValueString = FormElements.ElementNameTextDocumentField.GetText (); // ÉrtékA karakterlánc itt a kellékek, ahol az értéket tároljuk

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


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

  • Az 1C objektumban, amelynek formáját készítjük (referenciakönyv, dokumentum, feldolgozás stb.) - adjon hozzá egy attribútumot a Tárolás típusával
  • A ReadOnServer () függvényben állítsa be a szöveget a kellékekből

    // itt a Props az 1C objektum hozzáadott tulajdonsága
    // itt a FormattedDocument a szerkeszteni kívánt mező neve az űrlapon
    &A szerveren

    FormattedDocument = CurrentObject.Props.Get ();
    Az eljárás vége

  • A BeforeWriteOnServer () függvényben vagy a gombbal írja be a szöveget a mezőből

    &A szerveren
    A ReadingOnServer (CurrentObject) eljárása
    CurrentObject.Props = NewValueStore (FormattedDocument);
    Az eljárás vége



Tetszett a cikk? Oszd meg