itthon / Windows oktatóanyagok / 1c, hogyan lehet eltávolítani a felesleges szóközöket egy karakterláncon belül. A húrok összehasonlítása egymással

1c, hogyan lehet eltávolítani a felesleges szóközöket egy karakterláncon belül. A húrok összehasonlítása egymással

GYIK vagy 8-as platform próbabábukhoz.

Az 1C-nek szentelt fórumok alapján a programozóknak, akik először találkoztak az 1C v8 platformmal vagy a 7.7-ről áttérve, gyakran ugyanazok a kérdések merülnek fel. Itt úgy döntöttem, hogy összegyűjtöm a leggyakoribb, véleményem szerint ...

NÁL NÉL: Hogyan lehet eltávolítani egy szóközt a 12 600.00 számból?
O: Fontos megérteni, hogy itt nem a szóköz karaktert használjuk, hanem az úgynevezett „nem megtörő szóközt”, ezért például a következő konstrukciót:

StrReplace(VáltozóSzám," ","");

nem fog működni. A probléma megoldására két lehetőség kínálkozik: szóköz helyett adja meg a Symbols.NPP-t a cseréhez, vagy használja a Formátum () funkciót.

StrReplace(VáltozóSzám, Szimbólumok.NPP,""); // 1. lehetőség
Formátum(VáltozóSzám,"CH="); // 2. lehetőség

NÁL NÉL: Hogyan lehet egy lekérdezésben feltételt beállítani úgy, hogy csak egy bizonyos típusú dokumentum kerüljön be a kapott kijelölésbe?
O: Ezt a REFERENCE lekérdezési nyelvi operátor segítségével lehet megtenni, amely lehetővé teszi annak ellenőrzését, hogy a tőle balra megadott kifejezés értéke hivatkozás a jobb oldalon megadott táblázatra. Vegyünk egy példát, válasszuk ki a Szolgáltatások realizálása gyűjtőnyilvántartásból csak azokat a rekordokat, amelyek nyilvántartója az Áruk és szolgáltatások realizálása dokumentum:

Request=New Request("
|VÁLASZTÁS
| Szolgáltatások megvalósítása. Jegyző,
| Szolgáltatások megvalósítása Összeg
| FROM
| Felhalmozási nyilvántartás Szolgáltatások megvalósítása AS Szolgáltatások megvalósítása
|HOL
| Regisztrátor LINK dokumentum. Áruk és szolgáltatások értékesítése");

NÁL NÉL: Hogyan lehet bizonyos dokumentumokat/könyvtárakat azonos konfigurációk között átvinni?
O: Ezt meg lehet tenni tipikus feldolgozás Az UploadUploadDataXML.epf fájl ITS lemezeken található.

NÁL NÉL: Hogyan lehet adatokat átvinni a különböző konfigurációk között (vagy 7.7-től 8-ig)?
O: A legjobb lehetőség véleményem szerint a tipikus "Data Conversion" konfiguráció használata, amelyet ITS lemezeken szállítanak, számos cikk is leírja ennek a konfigurációnak a használatát.

NÁL NÉL: Hogyan adjunk hozzá egy bizonyos karakterláncot egy nem karakterlánc típusú mezőhöz egy lekérdezésben, például: SELECT A Goods of Services megvalósítása. Összeg + "dörzsölje".
O: Semmiképpen. Lekérdezésben nem lehetséges a típuskonverzió. Az EXPRESS lekérdezési nyelvi konstrukció egyesek számára félrevezető, de csak egy összetett típus értéket ad az adott érték valamelyik összetevőtípusához, és semmilyen módon nem konvertálja a típust, így ebben a helyzetben nem alkalmazható.

NÁL NÉL: Hogyan állíthatunk be feltételt egy lekérdezésben egy korlátlan hosszúságú karakterlánc típusú mezőben, például kijelöljük az összes dokumentumot egy bizonyos megjegyzéssel?
O: Ehhez korlátozni kell a mező hosszát az EXPRESS lekérdezési nyelv operátorával. Például:

Request=New Request("
|VÁLASZTÁS
| Áruk és szolgáltatások megvalósítása Link
| FROM
| Dokumentum.Áruk/Szolgáltatások értékesítése HOGYAN Az áruk/szolgáltatások realizálása
|HOL
| EXPRESS(ImplementationProductsServices.Comment AS STRING(100)) = &Megjegyzés");

NÁL NÉL: Van-e analógja a 7.7 CatalogIB() függvénynek a 8-as verzióban?
O: Nem, mivel egy ilyen funkciónak nem lenne értelme kliens-szerver üzemmódban. A fájl üzemmódhoz azonban beszerezheti a könyvtárat információs bázis a következő felépítéssel:

DirectoryIB=NSstr(InfobaseConnectionString(),"Fájl");

NÁL NÉL: Hogyan lehet leválasztani egy csomópontot egy elosztott információs bázisról?
O: A következő konstrukcióval:

Exchange Plans.SetMainNode(Undefined);

Vagy futtassa a konfigurátort a paraméterrel parancs sor/ResetMasterNode (for alap verziók nem használt).

NÁL NÉL: Hogyan kaphatom meg a dokumentum nevét (a 7.7 View() metódushoz hasonlóan)?
O: A metaadatok segítségével. Például:

NÁL NÉL: Hogyan lehet mindenféle dokumentumot kiválasztani egy lekérdezéssel?
O: A metaadatok használata és a lekérdezések kombinálásának lehetősége NÁL NÉL:

Request=Új kérés;
szöveg="";
Minden dokumentumhoz a Metadata.Documents Loopból
Szöveg=Szöveg+"Hivatkozás VÁLASZTÁSA A dokumentumból."+Dokumentum.Név+"JOIN";
EndCycle;
Query.Text=Lev(Szöveg, StrLength(Szöveg)-Erősség(" UNITE "));
Selection=Query.Execute().Select();

NÁL NÉL: Hogyan lehet megszakítani a jelentés/feldolgozás végrehajtását?
O: A UserInterruptHandle() operátorral javasolt a ciklusokon belüli használata. Amikor a felhasználó megnyomja a Ctrl+Break billentyűkombinációt, a végrehajtás megszakad, és megjelenik egy megfelelő üzenet. Például:

While Selection.Next() Loop
HandlingUserInterrupt();

EndCycle;

NÁL NÉL: Az űrlapnak van egy TableField értéke ValueTree típussal és a Fa tulajdonságkészlettel. Miért nem jelenik meg az értékfa?
O: Az egyik oszlophoz be kell állítani a DisplayHierarchy tulajdonságot is.

NÁL NÉL: Az ütemezett feladatok használata a fájl mód az infobázis munkája?
O: Ellentétben a kliens-szerverrel, fájl módban az automatikus indítás végrehajtásának felelőssége rutinfeladatokat a fejlesztő feladata. A jobok automatikus indításához szükség van egy várakozási kezelőre, amely időszakonként ellenőrzi a „késett” feladatokat, és elindítja azokat. Erősen ajánlott külön munkamenetet használni ehhez. Példa:

Task Check() eljárás
ExecuteProcessingJobs();
Vége eljárás
ConnectWaitingHandler("CheckingTasks",3);

NÁL NÉL: Hogyan szerezzünk tömböt egy elválasztott karakterláncból?
O: Példaként felhozom egy függvény saját verzióját, amely "mindkét irányban" működik, pl. határolt karakterlánc átadásakor tömböt, tömb átadásakor pedig elhatárolt karakterláncot alkot belőle.

Függvény StringArray (érték érték, elválasztó)
Ha TypeValue(Value)=Típus("String") Akkor
MnStr=StrReplace(érték, elválasztó, szimbólumok.PS);
Array=Új tömb;
n=1 esetén a Sorok StrNumber (MnStr) ciklusa szerint
Array.Add(StrGetString(MnStr,n));
EndCycle;
Return Array;
ElseIf TypeValue(Value)=Típus("Tömb") Akkor
String="";
Minden elemhez az értékhurokból
String=String+?(String"",Elválasztó,"")+Elem;
EndCycle;
Return String;
Másképp
Return Undefined;
EndIf;
EndFunctions

NÁL NÉL: Hogyan lehet engedélyezni a konfigurátor módosításának lehetőségét egy tipikus konfigurációban?
O: Mivel a tipikus konfigurációk támogatottak (ami lehetővé teszi, hogy automatikus üzemmód frissítés), akkor alapértelmezés szerint a konfiguráció módosításának lehetősége le van tiltva. A funkció engedélyezéséhez válassza ki a konfigurátorban a "Konfiguráció > Támogatás > Támogatási beállítások" menüpontot, majd a megnyíló ablakban kattintson a "Módosítási lehetőség engedélyezése" gombra.

NÁL NÉL: Hogyan állíthatok be jelszót a feldolgozáshoz/konfiguráláshoz?
O: Az 1C v8-ban a jelszavak csak az objektummodulokon állíthatók be. A jelszó beállításához meg kell nyitni az objektummodult, és ki kell választani a "Szöveg > Jelszó beállítása" menüpontot. Lehetőség van a konfiguráció megadására az objektummodulok forráskódja nélkül is ("Konfiguráció > Konfiguráció kézbesítés > Szállítási beállítások" konfiguráció). Ezt szeretném megjegyezni Ebben a pillanatban, ezen módszerek egyike sem jelent megbízható védelmet a modul forráskódjának megtekintése ellen.

NÁL NÉL: Miért nem működik egy dokumentum keresése a FindByNumber(<Номер документа>)?
O: Emlékeztetni kell arra, hogy ha a konfigurátorban időszakos számozás van beállítva az ilyen típusú dokumentumokhoz, akkor a bizonylatszámon kívül második paraméterként meg kell adni az intervallum dátumát. Ellenkező esetben egy üres dátummal rendelkező dokumentumot keres a rendszer, ami nyilvánvalóan nem vezet a kívánt eredményhez.

NÁL NÉL: Az 1C 8.1-ben, ha szükséges, csatlakozzon már futó alkalmazás a hibakereséshez (Konfigurátor > Hibakeresés > Kapcsolat) az elérhető hibakereső elemek között üres. Mi az ok?
O: A tény az, hogy a hibakeresésre szánt alkalmazáshoz kifejezetten engedélyeznie kell a hibakeresést. Eszközök menü > Beállítások > Rendszer lap > Hibakeresés engedélyezve jelző.

NÁL NÉL: Hogyan szervezzük meg a sorok iterációját dinamikus lista(például DirectoryList vagy DocumentList)?
O: Ezt megteheti például a Jelentéskészítővel:

Builder=Új jelentéskészítő;
Builder.DataSource=NewDataSourceDescription(Dokumentumlista);
Selection=Builder.Result.Select();
While Selection.Next() Loop
Jelentés(Kiválasztás. Link);
EndCycle;

Megjegyzés: a kijelölés az aktuálisan beállított kijelölésnek megfelelő sorokat fog tartalmazni.

NÁL NÉL: Hogyan lehet ellenőrizni a metaadat objektumok tulajdonságértékeit? Például a címtárhierarchia típusa vagy a nyilvántartási beviteli mód, vagy a bizonylatszám gyakorisága?
O: Mindezek a tulajdonságok a metaadat objektumok felsorolt ​​tulajdonságai. Az ilyen típusú értékeket metaadatokon keresztül is megkaphatja. Példák:

// 1. példa: Keresési hierarchia nézet
Ha Metadata.Catalogs[CatalogName].HierarchyView = Metadata.ObjectProperties.HierarchyView.HierarchyGroupsAndItems Akkor...
// Példa 2. RegisterWriteMode
Ha Metadata.InformationRegisters[RegisterName].RegisterWriteMode = Metadata.ObjectProperties.RegisterWriteMode.RegisterSubordinate Akkor...
// Példa 3. Időszakos bizonylatszám
If Metadata.Documents[DocumentName].Number Periodicity = Metadata.ObjectProperties.DocumentNumber Periodicity.Non-Periodic Then...

NÁL NÉL: Hogyan valósíthatunk meg három állapotú jelölőnégyzetet az értékfában?
O: Tekintsük részletesebben a problémafelvetést. Az űrlapnak van egy táblamezője, amelynek adatforrása egy értékfa. Az egyik oszlop egy jelölőnégyzetet tartalmaz. Szükséges, hogy három „Be”, „Ki” és „Nem definiált” állapotot vegyen fel. Ebben az esetben az állapot "Undefined" vagy az úgynevezett "szürke zászló", azaz. részlegesen kijelölve, akkor állítsa be, ha nem minden alárendelt sornak ugyanaz a zászlóállapota. Továbbá, ha egy sornak vannak alárendelt sorai, akkor a jelzőjének megváltoztatásakor az összes alárendelt sor jelzőjét ennek megfelelően módosítani kell.
Először adjuk hozzá a jelölőnégyzet oszlopunkat az értékfához:

Tree.Columns.Add("Mark",NewTypeDescription("Szám"));
FormElements.Tree.CreateColumns();
TreeColumns=FormElements.Tree.Columns;
TreeColumns.Mark.FlagData="Jelölés";
TreeColumns.Mark.SetControlItem(Type("Checkbox"));
TreeColumns.Mark.EditMode=EditModeColumns.Immediate
enno;
TreeColumns.Tag.ThreeFlagStates=Igaz;

Másodszor, a zászló megváltoztatásakor be kell állítania a megfelelő értékeket az alárendelt sorokban, és ellenőriznie kell a zászló értékét a „szülősorban”:

Eljárásfa a zászló megváltoztatásáról (elem, oszlop)
CurrentRow=Element.CurrentRow;
Ha CurrentLine.Mark=2 Akkor
CurrentLine.Mark=0;
EndIf;
Zászlók beállítása (aktuális sor, aktuális sor. jel);
Míg CurrentRow.ParentUndefined Loop
CurrentRow.Parent.Label=?(SetForAll(Current Row),CurrentRow.Label,2);
CurrentRow=Aktuális sor.szülő;
EndCycle;
Vége eljárás

Itt a SetFlags() eljárás rekurzív módon beállítja a jelzőket az alsorokban:

Eljárás SetFlags (aktuális sor, érték)
A CurrentRow.Rows Loop minden oldalához
PageMark=Érték;
SetFlags(Pg,Pg.Mark);
EndCycle;
Vége eljárás

Az InstalledForAll() függvény pedig ellenőrzi, hogy a ugyanaz az érték az aktuális szinten lévő összes sorhoz:

Funkció SetForAll(karakterlánc)
A sor.szülő.sorhurok minden oldalához
Ha Page.MarkString.Mark Then
return false;
EndIf;
EndCycle;
return true;
EndFunctions

NÁL NÉL: Hogyan valósítsuk meg az attribútum szerinti rendezést lista formában?
O: Ha az attribútum primitív típusú, akkor elegendő az „Index” attribútum tulajdonságát „Index” vagy „Index with extra ordering” (nem érhető el a ValueStorage típusú attribútumokhoz). Ha az attribútum referencia típusú, akkor kifejezetten engedélyezni kell a rendezést. Például:

ElementUE=Űrlapelemek.DirectoryList.Order Settings.Find("Attribútum1");
Ha az ElementUE értéke Undefined, akkor
ItemUE.Availability=true;
EndIf;

Gyakran előfordul, hogy az 1C 8.2 és 8.3 adatok betöltésekor és kirakodásakor a számokban szóközök vannak, amelyek megakadályozzák az adatok normális feldolgozását. A probléma megoldása nagyon egyszerű.

Fontolja meg, milyen típusú rések vannak.

A terek kétféleek lehetnek:

  • nem törő tér;
  • "rendes" tér.

Nem törhető szóközök eltávolítása

StringRepresentation = String(szám); // a rendszer a "10 000" változóba fog írni

Az ilyen szóközök eltávolítása az 1C-ben nagyon egyszerű a számformátum funkcióval:

Szám = Formátum(10000, "CH=");

StringRepresentation = String(szám); // a rendszer az "10000" változóba fog írni

Beállítottuk a csoportosítást formátum karakterláncÜres érték (írhat "0"-t is).

Ha az adattípus már "string", akkor a következő módszer használható:

StringRepresentation = StrCsere(String(StringRepresentation), Karakterek.NPP, ""); // A StringRepresentation változó "10 000" volt, ebből "10000" lett

Ez azt jelenti, hogy a karakterláncban a nem törő szóközt (Symbols.NPP) egyszerűen helyettesítettük egy üres értékkel.

Szabályos terek

A szabályos szóköz eltávolítása a zsinórból ugyanolyan egyszerű, mint a körte héja. Elegendő a következő függvényt végrehajtani:

StringRepresentation = StrReplace(String(StringRepresentation), " ", ""); // "10 000" lett "10 000"

A példa hasonló korábbi módszer. A Symbols.npp helyett azonban egy szóközből álló karakterláncot használunk.

Ha elkezdi megtanulni az 1C programozást, javasoljuk a mi ingyenes tanfolyam(ne felejtsd el iratkozz fel a youtube-ra - Rendszeresen jelennek meg új videók.

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"

Nem csak primitív típusokat, hanem másokat is, például könyvtárak és dokumentumok elemeit lehet karakterláncsá konvertálni.

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ó összes 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

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

Ez a rész tartalmazza azokat a fő funkciókat, 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, és a nem jelentős 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űsre.

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.

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

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, "; ");