Internet ablakok Android

1s 8 távolítsa el a szóközt a karakterláncból. A húrok összehasonlítása egymással

Gyakran előfordul, hogy az 1C 8.2 és 8.3 adatok be- é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;
  • "szabályos" rés.

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

StringRepresentation = Karakterlánc(szám); // a rendszer a "10 000" változóba ír

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 = Karakterlánc(szám); // a rendszer az "10000" változóba fog írni

A formátum karakterláncban a csoportosítást üres értékre állítjuk (írhatunk "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 meghéjázása. Elegendő a következő függvényt végrehajtani:

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

A példa hasonló az előző módszerhez. A Symbols.npp helyett azonban egy szóközből álló karakterláncot használunk.

Ha elkezdi tanulni az 1C programozást, ajánljuk ingyenes tanfolyamunkat (ne felejtsd el iratkozz fel a youtube-ra - Rendszeresen jelennek meg új videók.

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 akik áttértek a 7.7-ről, gyakran ugyanazok a kérdések merülnek fel. Itt úgy döntöttem, hogy összegyűjtöm a leggyakoribb, véleményem szerint ...

V: 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: a szóköz helyett adja meg a Symbols.NPP-t, vagy használja a Format() függvényt.

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

V: 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ára. 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");

V: Hogyan lehet bizonyos dokumentumokat/könyvtárakat azonos konfigurációk között átvinni?
O: Ez megtehető az ITS lemezeken található UploadUploadDataXML.epf mintafeldolgozás segítségével.

V: Hogyan lehet adatokat átvinni a különböző konfigurációk között (vagy 7.7-től 8-ig)?
O: Véleményem szerint a legjobb megoldás a tipikus "Data Conversion" konfiguráció használata, amely ITS lemezeken található, és számos cikk leírja ennek a konfigurációnak a használatát.

V: 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ó.

V: Hogyan állíthatunk be egy 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");

V: Van-e analógja a 7.7 CatalogIB() függvénynek a 8-as verzióban?
O: Nem, mivel egy ilyen funkciónak nincs értelme kliens-szerver üzemmódban. A fájl üzemmódhoz azonban az infobase könyvtárat a következő konstrukció segítségével szerezheti be:

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

V: 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 /ResetMasterNode parancssori paraméterrel (az alapverzióknál nem használatos).

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

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

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

V: 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
KezeléseUserInterrupt();

EndCycle;

V: 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.

V: Hogyan kell használni az ütemezett feladatokat az infobázis fájl módban?
O: A kliens-szerver módtól eltérően fájl módban a fejlesztő felelős az ütemezett feladatok automatikus elindításának megvalósításáért. A jobok automatikus indítása érdekében 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);

V: Hogyan szerezzünk tömböt egy elválasztott karakterláncból?
O: Példaként adom 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

V: Hogyan lehet engedélyezni a konfigurátor módosításának lehetőségét egy tipikus konfigurációban?
O: Mivel a szokásos konfigurációk támogatottak (ami lehetővé teszi az automatikus frissítést), 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.

V: 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 kivá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ó). Szeretném megjegyezni, hogy jelenleg egyik módszer sem jelent megbízható védelmet a modul forráskódjának megtekintése ellen.

V: 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.

V: Az 1C 8.1-ben, ha egy már futó alkalmazáshoz kell csatlakoznia hibakereséshez (Konfigurátor > Hibakeresés > Kapcsolat), a rendelkezésre álló hibakereső elemek üresek. Mi az ok?
O: A tény az, hogy a hibakeresésre szánt alkalmazásnál kifejezetten engedélyezni kell a hibakeresést. Eszközök menü > Beállítások > Rendszer lap > Hibakeresés engedélyezve jelző.

V: Hogyan lehet rendezni egy dinamikus lista (például DirectoryList vagy DocumentList) sorait?
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.

V: Hogyan ellenőrizhető a metaadat objektumok tulajdonságértéke? 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...

V: 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 szabályoznia 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 (jelenlegi sor, érték)
A CurrentRow.Rows Loop minden oldalához
PageMark=Érték;
SetFlags(Pg,Pg.Mark);
EndCycle;
Vége eljárás

A SetForAll() függvény pedig ellenőrzi, hogy ugyanaz az érték van-e beállítva minden sorhoz az aktuális szinten:

SetForAll függvény (karakterlánc)
A Sor.Szülő.Sor hurok minden oldalához
Ha Page.MarkString.Mark Then
return false;
EndIf;
EndCycle;
return true;
EndFunctions

V: 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"-re vagy "Index kiegészítővel" értékre állítani. 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;

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. A "Hello" és a "world!" kifejezés: "Helló 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.

String = "Jelenlegi dátum: 20170910"; StringData = Jogok(karakterlánc, 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 meg van adva 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 terjedő 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!", "and", SearchDirection.From End); É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ő karaktere nagybetűvé, a szó többi karaktere kisbetűvé alakul.

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énye az "Igen" szó jelenik meg (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ényeként megjelenik a "Hello Friends!"

StrNumberRows

StrNumber of Lines(<Строка>) . Lehetővé teszi egy többsoros karakterláncban lévő sorok számának megszámlálását. Az 1s 8-ban új sorra lépéshez a szimbólumot kell használni 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, a 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.

Oldal Kezdődik

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 //Az Ön kódja 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-je 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"); Ha kettővel végződik, akkor //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 tömb összes elemét tartalmazó sztringgé alakítja a második paraméterben megadott határoló segítségével.

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 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 példákon keresztül részletesen megvizsgáljuk az 1C 8.3 és 8.2 karakterlánctípusokkal való munkavégzésének különféle módjait.

Vonal

Bármilyen típusú változó karakterláncsá alakítá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” értéket ad vissza
Karakterlánc(JelenlegiDá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 szóközök mindkét oldalon 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 sztring kiválasztásra kerül, é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 egyebeket a rendszer nem veszi figyelembe.

EmptyString("Vaszilij Ivanovics 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 karakterlánc-változók összehasonlításakor és konvertálásakor. A "Vreg()" az eredeti karakterláncot nagybetűvel, a "HReg()" kisbetűvel adja vissza, a "TReg()" pedig úgy formázza vissza, hogy minden egyes szó első karaktere nagybetűs legyen, az összes további karakter pedig 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ó hasonló a szövegszerkesztők cseréjéhez. 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 egy adott karakterlánc lekérését egy szöveges változóból.

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

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 a 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 a húrokkal való munka során

Karakterlánc összefűzése

Több karakterlánc összefűzéséhez (összefűzéséhez) 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 és így tovább, 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 a nem törő szóközöket, használja a következő konstrukciót:

StringWithoutSpaces = StrReplace(String(99999),Karakterek.NPP,"") // "99999"-et ad 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