De grundläggande funktionerna i ett programmeringsspråk inkluderar vanligtvis att arbeta med siffror och strängar. Vanligtvis är dessa funktioner hårdkodade i kompilatorkoden (eller så är "bas"-klasserna för programmeringsspråket implementerade).
I 1C är möjligheten att arbeta med strängar programmerad i själva plattformen. Idag kommer vi att titta på funktionerna i att arbeta med 1C-strängar i program i det inbyggda 1C-språket.
Linjevärde 1C
1. Låt oss börja med det enklaste. Att skapa en variabel och tilldela ett konstant strängvärde till den ser ut så här i 1C:
Variable = "Hej världen!";
Om du behöver ange ett citattecken i ett konstant 1C-strängvärde, måste du dubbla det ""
Variabel = "Hej världen"!;
2. Linjebrytning 1C kan anges på två sätt samtidigt. Den första använder symbolen |
Variabel = "Hej,
| värld! ";
Den andra är att använda symbolsystemets uppräkning. Det låter dig lägga till både 1C-radbrytningar och andra tecken som inte skrivs ut, till exempel TAB.
Variabel = "Hej" + Symboler.PS + "fred!";
3. Konfigurationer i 1C kan utvecklas inte bara för ett språk (ryska, engelska eller ett annat) - utan samtidigt för flera språk. I det här fallet väljs det språk som för närvarande används längst ned i 1C-fönstret.
Listan över språk finns i konfigurationsfönstret i grenen General/Languages. Varje språk har en kort identifierare som t.ex ru eller eng.
Det är tydligt att när man programmerar en sådan konfiguration kan 1C-linjer också vara flerspråkiga. För att göra detta är det möjligt att skapa en sådan 1C-linje genom att specificera genom; alternativ efter språkidentifierare:
Variable = "ru=""Hej, värld! ""; en=""Hej, värld! """;
Om du använder 1C-linjen som bildas på detta sätt som vanligt, kommer det att vara det som står i den. För att systemet ska dela upp det i två alternativ och använda det önskade, måste du använda НStr()-funktionen:
//korrigera för tvåspråkiga konfigurationer
Rapport(NSr(Variabel));
Rekvisita med lina typ 1C
Attributet är ett fält i 1C-katalogen/dokumentet. Den skiljer sig från en variabel i ett program på 1C-språket genom att för attributet dess typ anges exakt (nummer, 1C-sträng, etc.). Om du behöver fräscha upp ditt minne av vad en rekvisita är, titta på lektionen om.
Om du anger typen av attribut - rad 1C, måste du dessutom ange parametrarna.
1C-rader finns i obegränsad längd (anges som längd = 0) och begränsad längd, vilket anger det exakta antalet tecken. 1C rader av obegränsad längd lagras i en separat SQL-tabell, så deras användning är mindre produktiv än begränsad.
Det är därför användningen av 1C-strängar med obegränsad längd har sina begränsningar - det är inte möjligt att använda dem överallt. Det är till exempel inte tillåtet som dokumentnummer, referenskod eller mått.
Arbeta med 1C-strängar
Det finns flera inbyggda funktioner i 1C-plattformen för att arbeta med strängar.
Föra föremål till linje 1C
Som ni vet är det mest populära formatet för utbyte av strukturerad information för närvarande XML. Även senaste versionen MS Office Word och Excel spara filer i detta format (docx respektive xlsx, ändra tillägget till zip, öppna i ett arkiv).
1C-plattformen för datautbyte ger flera alternativ, varav det främsta är XML.
1. Den enklaste metoden är att använda funktionen Abbreviation() eller String(). Du kan använda funktionen REPRESENTATION() i förfrågan. Resultatet av deras åtgärd är detsamma - de genererar en strängrepresentation av vilket 1C-objekt som helst för användaren.
För en katalog som standard kommer detta att vara dess namn. För ett dokument – dokumentnamn, nummer och datum.
2. Alla 1C-objekt (med begränsningar) kan konverteras till XML och vice versa. Konverteringsprocessen kallas serialisering.
StringViewXml = XMLString(Value); //få XML från 1C-värde
Value1C = XMLValue(Type("DirectoryLink.Nomenclature"),TypeStringXml); //få 1C-värdet från XML-strängen måste du ange vilken 1C-typ som ska tas emot
3. Det finns 1C-plattformens eget sätt att konvertera vilket 1C-objekt som helst till en sträng. Den migrerade från version 1C 7.7. Detta format förstås inte av andra program, men andra 1C förstår det, vilket gör det enkelt att använda det för utbyte mellan 1C-databaser.
Rad = ValueInRowInt(Value1C); //få sträng 1C från värde 1C
ValueVFile("C:\MyFile.txt", Value1C); //ett annat alternativ får vi en fil med en sparad sträng från 1C-värdet
Value1C = ValueFromStringInt(String); //tillbaka från linje 1C
Value1C = ValueFile("C:\MyFile.txt"); //tillbaka från filen
Redigera 1C-rader på formuläret
Förutom att arbeta med 1C-strängar i ett program på 1C-språket vill jag såklart att användaren ska kunna redigera dem. Det finns flera möjligheter för detta:
1. Det enklaste sättet är att begära inträde av en 1C-linje på begäran. Denna metod används vid undervisning i 1C-programmering i livet, den används mycket mindre ofta (men den används!).
Variabel = "";
Row = EnterValue(Variabel, "Ange fullständigt namn");
2. För att visa detaljerna för ett 1C-objekt (katalog/dokument) eller formulärdetaljer (se), används oftast ett inmatningsfält. Detta är det vanligaste verktyget i 1C för användaren att arbeta med redigeringsfält.
3. Möjligheterna för inmatningsfältet kan utökas (se egenskaper för inmatningsfältet, högerklicka på den, mer information):
4. Om alla funktioner i inmatningsfältet inte räcker till för dig finns det en inbyggd editor. För att lägga till det i formuläret måste du lägga till Fält i kontrollmenyn Form/Infoga textdokument. I dess egenskaper kan du ange dess driftläge – egenskapen Extension.
Ett textdokumentfält kan inte associeras direkt med data. Det är nödvändigt att skriva en funktion i OnOpen()-händelsehanteraren i formuläret (se):
Form Elements.ElementNameTextDocumentField.SetText(StringValue); //här är ValueString texten som tas emot, till exempel från attributet
Och i sparahanteraren - till exempel i knappen Spara - lägg till en spara:
ValueString = FormElements.ElementNameTextDocumentField.GetText(); //Value Linjen här är attributet där vi sparar värdet
5. I 1C version 8.2.11, in kontrollerade former, dök upp ny möjlighet 1C-linjerepresentation – Formaterat dokumentfält.
I likhet med fältet för ett textdokument måste du ställa in det när du öppnar det och skriva ner det när du sparar det själv med programmet.
//här är attributet det tillagda attributet för 1C-objektet
//här FormattedDocument är namnet på fältet i formuläret för redigering
&PåServer
FormattedDocument = CurrentObject.Attributes.Get();
Slut på förfarandet
&PåServer
Procedur vid ReadingOnServer(CurrentObject)
CurrentObject.Props = NewValueStorage(FormattedDocument);
Slut på förfarandet
Rader i 1C 8.3 i det inbyggda språket 1C representerar värden av en primitiv typ Linje. Värderingar av denna typ innehålla en Unicode-sträng av godtycklig längd. Variabler av strängtyp är en uppsättning tecken som omges av citattecken.
Exempel 1. Låt oss skapa en strängvariabel med text.
StringVariable = "Hej värld!";
I detta avsnitt Huvudfunktionerna kommer att ges som gör att du kan ändra linjer i 1c, eller analysera informationen i dem.
Strängd(<Строка>) . Returnerar antalet tecken i strängen som skickas som en parameter.
Exempel 2. Låt oss räkna antalet tecken på raden "Hello world!"
String = "Hej värld!"; NumberofCharacter = StrLength(String); Rapport(Antaltecken);
Resultatet av exekvering av denna kod blir visningen av antalet tecken på raden: 11.
AbbrL(<Строка>)
. Trimar icke-signifikanta tecken till vänster om det första signifikanta tecknet i strängen.
Mindre karaktärer:
Exempel 3. Ta bort alla blanksteg från den vänstra sidan av raden "värld!" och lägg till raden "Hej" till den.
String = Förkortning("värld!"); String = "Hej"+String; Report(String);
Resultatet av att exekvera denna kod kommer att visa raden "Hello world!" på skärmen.
Förkortning(<Строка>) . Trimar icke-signifikanta tecken till höger om det första signifikanta tecknet i strängen.
Exempel 4. Form från raderna "Hej" och "fred!" frasen "Hej världen!"
Rad = Förkortning("Hej ")+" "+ Förkortning("värld!"); Report(String);
AbbrLP(<Строка>)
. Trimmar icke-signifikanta tecken till höger om det första signifikanta tecknet i strängen, och beskär även icke-signifikanta tecken till vänster om det första signifikanta tecknet i strängen. Denna funktion används oftare än de två föregående, eftersom det är mer universellt.
Exempel 5. Ta bort obetydliga tecken till vänster och höger i motpartens namn.
Motpart = Kataloger.Find By Details("TIN", "0777121211"); AccountObject = Account.GetObject(); CounterpartyObject.Name = AbbrLP(CounterpartyObject.Name); AccountObject.Write();
Lejon(<Строка>, <ЧислоСимволов>)
. Hämtar de första tecknen i strängen, antalet tecken anges i parametern Antal tecken.
Exempel 6. Släpp in strukturen Anställd innehålla den anställdes för-, efter- och patronymnamn. Skaffa en sträng med efternamn och initialer.
NameInitial = Lev(Anställd.Namn, 1); Patronymic Initial = Leo(Anställd. Patronymic, 1); FullName = Employee.LastName + " " + FirstName Initial + "."
Rätt<Строка>, <ЧислоСимволов>) Rätt( Antal tecken.. Hämtar de sista tecknen i en sträng, antalet tecken som anges i parametern
Om det angivna antalet tecken överskrider längden på strängen, returneras hela strängen. Exempel 7. Låt ett datum i formatet "ååååmmdd" skrivas i slutet av en strängvariabel, hämta en sträng med datumet och konvertera den till typ.
Datum String = " Aktuellt datum
onsdag<Строка>, <НачальныйНомер>, <ЧислоСимволов>) onsdag ( Linje. Hämtar en delsträng från strängen som skickas som en parameter , med början från tecknet vars nummer anges i parametern Initialt nummer Antal tecken. och längden som skickas in i parametern , med början från tecknet vars nummer anges i parametern Numreringen av tecken på en rad börjar från 1. Om i parametern ett värde mindre än eller lika med noll anges, då får parametern värdet 1. Om parametern Antal tecken
inte anges, väljs tecken fram till slutet av raden.
Exempel 8. Låt strängvariabeln som börjar från den nionde positionen innehålla regionkoden, du ska hämta den och skriva den på en separat rad.
PageFind<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) StrFind(
Exempel 9. I raden "Hej värld!" Bestäm positionen för den senaste förekomsten av "och"-tecknet.
PositionNumber = StrFind("Hej värld!", "och", SearchDirection.End); Rapport(Positionsnummer);
Resultatet av att exekvera denna kod blir att visa numret för den senaste förekomsten av "och"-symbolen: 9.
VReg(<Строка>) . Konverterar alla tecken i den angivna strängen i 1s8 till versaler.
Exempel 10: Konvertera strängen "hej världen!" till versaler.
StringVreg = VReg("hej värld!"); Rapport(StringVreg);
Resultatet av att exekvera denna kod kommer att visa raden "HELLO WORLD!"
NReg(<Строка>) . Konverterar alla tecken i den angivna strängen i 1s8 till gemener.
Exempel 11: Konvertera strängen "HELLO WORLD!" till gemener.
StringNreg = NReg("HEJ VÄRLDEN!"); Rapport(StringVreg);
Resultatet av att köra den här koden kommer att visa raden "hej världen!"
TReg(<Строка>) . Konverterar en sträng enligt följande: det första tecknet i varje ord konverteras till versaler, de återstående tecknen i ordet konverteras till gemener.
Exempel 12: Sätt de första bokstäverna i orden på raden "hej världen!"
StringTreg = TReg("hej värld!"); Rapport(StringTreg);
Resultatet av att exekvera denna kod kommer att visa raden "Hello World!"
Symbol(<КодСимвола>) . Får ett tecken med sin Unicod-kod.
Exempel 13. Lägg till vänster och höger på raden "Hello World!" symbol ★
StringWithStars = Symbol("9733")+"Hej världen!"+Symbol("9733"); Report(StringWithStars);
Resultatet av att exekvera denna kod kommer att visa raden "★Hello World!★"
SymbolCode(<Строка>, <НомерСимвола>) . Hämtar Unicode-teckenkoden från strängen som anges i den första parametern, placerad på den position som anges i den andra parametern.
Exempel 14. Ta reda på koden för det sista tecknet på raden "Hello World!"
String = "Hej världen!"; CharacterCode = CharacterCode(String, StrLength(String)); Notify(CharacterCode);
Resultatet av exekvering av denna kod blir att symbolkoden "!" - 33.
EmptyString(<Строка>) . Kontrollerar om strängen endast består av obetydliga tecken, det vill säga om den är tom.
Exempel 15. Kontrollera om en sträng som består av tre blanksteg är tom.
Empty = EmptyString(" "); Rapport (tom);
Resultatet av att exekvera den här koden blir visningen av ordet "Ja" (stränguttryck booleskt värde Sann).
StrReplace(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) . Hittar alla förekomster av sökundersträngen i källsträngen och ersätter den med ersättningsdelsträngen.
Exempel 16. I raden "Hello World!" ersätt ordet "Fred" med ordet "Vänner".
String = StrReplace("Hej världen!", "Världen", "Vänner"); Report(String);
Resultatet av att köra den här koden kommer att visa raden "Hej vänner!"
StrNumberRow(<Строка>) . Låter dig räkna antalet rader i en flerradssträng. Att gå till ny linje i 1s 8 används symbolen PS(nyradstecken).
Exempel 17. Bestäm antalet rader i texten:
"Första raden
Andra raden
Tredje raden"
Number = StrNumberString("Första raden"+Tecken.PS +"Andra raden"+Symboler.PS +"Tredje raden"); Rapport (nummer);
Resultatet av exekvering av denna kod blir visningen av antalet rader i texten: 3
StrGetString(<Строка>, <НомерСтроки>) . Får en rad i en flerradssträng genom dess nummer. Radnumreringen börjar från 1.
Exempel 18. Få den sista raden i texten:
"Första raden
Andra raden
Tredje raden"
Text = "Första raden" + Symboler + "Andra raden" + Symboler + "Tredje raden". LastRow = StrGetRow(Text, StrNumberLines(Text)); Rapport (Last Line);
Resultatet av exekvering av denna kod kommer att visa raden "Tredje raden".
StrNumberCurrences(<Строка>, <ПодстрокаПоиска>) . Returnerar antalet förekomster av den angivna delsträngen i en sträng. Funktionen är skiftlägeskänslig.
Exempel 19. Bestäm hur många gånger bokstaven "c" förekommer på raden "Linjer i 1s 8.3 och 8.2", oavsett skiftläge.
Line = "Lader i 1s 8.3 och 8.2"; NumberOccurrences = StrNumberOccurrences(Vreg(String), "C"); Rapport(NumberCurrences);
Resultatet av exekvering av denna kod blir visningen av antalet förekomster: 2.
StrStartsWith(<Строка>, <СтрокаПоиска>) . Kontrollerar om strängen som skickas i den första parametern börjar med strängen i den andra parametern.
Exempel 20. Bestäm om TIN för den valda motparten börjar med siffran 1. Sätt in variabeln Motpart Motparter.
TIN = Motpart.TIN; StartsUNits = StrStartsWith(TIN, "1"); If Börjar med enheter Då //Din kod EndIf;
StrEndsWith(<Строка>, <СтрокаПоиска>) . Kontrollerar om strängen som skickas i den första parametern slutar med strängen i den andra parametern.
Exempel 21. Bestäm om TIN för den valda motparten slutar med siffran 2. Sätt in variabeln Motpart en referens till ett katalogelement lagras Motparter.
TIN = Motpart.TIN; EndsWithTwo = StrEndsWith(TIN, "2"); If EndsInTwo Then //Din kod EndIf;
StrDivide(<Строка>, <Разделитель>, <ВключатьПустые>) . Delar upp en sträng i delar med de angivna avgränsningstecknen och skriver de resulterande strängarna till en array. Den första parametern lagrar källsträngen, den andra strängen som innehåller separatorn, den tredje anger om den ska skrivas till arrayen tomma rader(standard Sann).
Exempel 22. Låt oss ha en sträng som innehåller siffror åtskilda av symbolen ";", hämta en array av siffror från strängen.
String = "1; 2; 3"; Array = StrDivide(String, ";"); For Count = 0 By Array.Quantity() - 1 Cykelförsök Array[Count] = Number(AbbrLP(Array[Count]));
Exception Array[Sch] = 0;
Som ett resultat av exekveringen kommer en array med nummer från 1 till 3 att erhållas.<Строки>, <Разделитель>) PageConnect
Exempel 23. Använd arrayen av siffror från föregående exempel, get
källsträng För konto = 0 Efter Array.Quantity() - 1 cykel Array[Act] = String(Array[Act]); EndCycle; Row = StrConnect(Array, "; "); En sträng är en av de primitiva datatyperna i 1C:Enterprise 8-variabler med typen
linje För konto = 0 Efter Array.Quantity() - 1 cykel Array[Act] = String(Array[Act]); EndCycle; Row = StrConnect(Array, "; "); innehålla text. Skriv variabelvärden bestå i
dubbla citattecken
. Flera variabler av denna typ kan läggas till.
Per1 = "Ord 1" ;
Per2 = "Ord 2" ; Per3 = Per1 + " " + Per2; Till slut Per 3
kommer att betyda"
Word 1 Word 2″.<Строка>, <Подсказка>, <Длина>, <Многострочность>) — Dessutom tillhandahåller 1C:Enterprise 8-system funktioner för att arbeta med strängar. Låt oss titta på de viktigaste: Linje EnterString( <Строка> funktionen är utformad för att visa en dialogruta där användaren kan ange värdet på en variabel av typen <Подсказка> . Parameter <Длина> krävs och innehåller namnet på variabeln som den angivna strängen kommer att skrivas in i. Parameter <Многострочность> valfritt - detta är titeln på dialogrutan. Parameter
valfritt, visar den maximala längden på inmatningssträngen. Standard är noll, vilket betyder obegränsad längd. Parameter
Symbol(<КодСимвола>) — frivillig. Definierar textinmatningsläget för flera rader: True – flerradsinmatning med radavgränsare; False - ange en enkel sträng.
Du kan ange en sträng om du känner till teckenkoden i Unicode:
koden anges som ett nummer.
SymbolCode(<Строка>, <НомерСимвола>) — Bokstav= Symbol(1103) ;
VReg(<Строка>) Det finns också en omvänd funktion som låter dig ta reda på koden för en symbol.
NReg(<Строка>) returnerar Unicode-numret för det angivna tecknet som ett tal.
TReg(<Строка>) — konverterar alla tecken i strängen till skiftläge i rubriken. Det vill säga att de första bokstäverna i alla ord konverteras till versaler och de återstående bokstäverna konverteras till gemener.
Hitta(<Строка>, <ПодстрокаПоиска>) — hittar teckennumret för förekomsten av sökundersträngen. Till exempel:
Hitta ("String", "oka" );
PageFind<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) // 4 — hittar teckennumret för förekomsten av sökdelsträngen, förekomstnumret anges i motsvarande parameter. I det här fallet börjar sökningen med det tecken vars nummer anges i parametern Initialposition.
Sökning är möjlig från början eller slutet av strängen. Till exempel: Number4 Förekomster = Str Find ("Defensivitet"
StrReplace(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) , "om" ,Sökriktning. Från start, 1, 4);
// 7
EmptyString(<Строка>) – hittar alla förekomster av sökundersträngen i källsträngen och ersätter den med ersättningsdelsträngen. Sann StrReplace ("String" , "oka", "" ); // Sida.
StrNumberCurrences(<Строка>, <ПодстрокаПоиска>) – kontrollerar strängen för betydande tecken. Om det inte finns några signifikanta tecken, eller inga tecken alls, returneras värdet
. Annars - Lögn– Beräknar antalet förekomster av sökundersträngen i källsträngen.
StrNumberOccurrences (<Строка>, <ЗначениеПодстановки1>…<ЗначениеПодстановкиN> — "lära, studera och studera igen" , "studera" , "" ); // 3 StrMall(
ersätter parametrar i en sträng med nummer. Raden måste innehålla ersättningsmarkörer av formen: "%1..%N". Markörsnumrering börjar från 1. Om parametervärdet Odefinierad, "1" , "2" ) ; , en tom sträng ersätts.
Lejon(<Строка>, <ЧислоСимволов>) "Parameter 1 = %1, Parameter 2 = %2"
Rätt<Строка>, <ЧислоСимволов>) // Parameter 1= 1, Parameter 2 = 2
onsdag<Строка>, <НачальныйНомер>, <ЧислоСимволов>) Strängkonverteringsfunktioner:<ЧислоСимволов>– returnerar de första tecknen i en sträng.<НачальныйНомер>.
AbbrL(<Строка>) —– returnerar de sista tecknen i en sträng.
Förkortning(<Строка>) – returnerar en längdsträng
AbbrLP(<Строка>) , med början från symbol
StrGetString(<Строка>, <НомерСтроки>) trimmar icke-signifikanta tecken till vänster om det första signifikanta tecknet i strängen.
Strängd(<Строка>) – skär av obetydliga tecken till vänster om det första signifikanta tecknet i raden och till höger om det sista signifikanta tecknet i raden.
StrNumberRow(<Строка>) – Får en flerradssträng efter nummer.
Andra funktioner:<Строка1>, <Строка2> ) – returnerar antalet tecken i strängen. – returnerar antalet rader i en flerradssträng. En rad anses vara ny om den skiljs från den föregående med ett nyradstecken. StrCompare(
1 - om den första raden är större än den andra
-1 - om den andra raden är större än den första
0 - om strängarna är lika
Page_Add() (tillägg till höger-vänster med angivna tecken).
Page_Inverse () (inversion - tecken från höger till vänster).
Page_Codes() (teckenkoder genom ”,” och en array med koder)
Page_Characters() (en sträng med koder separerade med ”,” eller från en array med koder)
Page_ReplaceSymbols() (ersätter vissa tecken med andra).
String_FromArray() (sträng från en array av fragment separerade av en separator)
Page_FindIn() (sök efter en delsträng (inklusive till höger) med ett specificerat förekomstnummer).
Page_FindGr() (Sök efter en grupp tecken som ingår i den angivna teckenuppsättningen)
Page_FindNumber() (Sök efter ett nummer, inklusive till höger med det angivna förekomstnumret)
Page_Interpret() (i en array, enligt den etablerade syntaxen)
1.2. Derivatmetoder (12). Egentligen är detta användningen av fyra generaliserade algoritmmetoder (se del 2)
Page_Number() (från början och från slutet av raden, var inte "rädd" för icke-numeriska tecken.
Page_Find() (sök efter en delsträng (inklusive skiftlägesokänslig och till höger) med ett specificerat förekomstnummer).
Page_Replace() (sök (inklusive skiftlägesokänslig och högerhänt), och ersätt delsträngar för avgränsare).
Str_Piece() (en bit sträng mellan de angivna förekomsterna av avgränsaren (vänster eller höger)).
Page_ReplacePiece() (ersätter "chunk" i källsträngen med den angivna strängen).
Page_ВArray() (mellan de angivna förekomsterna av separatorn (inklusive de till höger och utan skiftläge).
Page_TransferBySyllables() (delad i delsträngar "Hardly", med ett bindestreck).
Page_TransferByWords() (delas upp i delsträngar "Softly")
Page_Cut() ("Klipp ut" i delsträngar med specificerade längder)
Str_Shorten() (ersätt den vänstra gruppen av "förkortade" tecken med en "ersättningssträng"
Page_Abbreviation() (ersätt den högra gruppen av "reducerade" tecken med en "ersättningssträng"
Str_ShortenS() (ersätt mitt i gruppen av "förkortade" tecken med en "ersättningssträng"
Page_Extend (expansion till en angiven längd genom att öka antalet angivna tecken)
1.3. Detaljerade metoder (3). "Dissekera" en rad med överföring till en tabell med detaljerad information.
Page_vTableIn() (in i tabellen enligt systemet med kapslade avgränsare).
Page_vTableGr (till tabellen enligt ett flernivåfilter).
Page_inTableNumbers (i en tabell med siffror och fragment mellan dem).
DEL 2. GENERALISERADE METODER-ALGORIMER (3).
Page_Occurrence() (metoderna "Sök" och "Ersätt").
Page_Fragments() (metoder "Piece",,"ReplacePiece,"InArray","inTableIn").
Page_Abcr() (metoderna "AbcrL", "AbcrP", "AbcrS", "Expandera".
Page_Split() (metoder "Flytta efter stavelser", "Flytta efter ord", "Klipp ut").
DEL 3. UNIVERSELL FUNKTION.
Det är typ konventionellt mjukvarugränssnitt tillåter
tillämpa flera metoder på en sträng samtidigt. Implementerad som
funktioner med sju parametrar ("Demo" bygger på denna funktion):
Page_(Methods, Submethods, Input, Param1, Param2, Length_Number_Position, Ytterligare utdata)
Parametrar:
- "Metoder" - flera "kombinerade" och (eller) en "exklusiv" metod
(enkelteckens koder eller namn, möjligt via ","")
- "Undermetoder" - flera "kombinerade" och (eller) "exklusiva" alternativ
"exklusiv" metod (enkelteckens koder eller namn);
- "Input" - Sträng, eller Array eller Tabell med värden;
- "Param1" - söksträng, ersättningar, separatorer, filter;
- "Param2" - ersättningssträng eller -tecken;
- "Length_Number_Position" -Number, Numbers genom en separator eller en array med Numbers;
- "Ytterligare utdata" - Antal eller sträng eller matris eller värdetabell;
Namn och/eller enteckenkoder för undermetoder, samt nummer i
(Längd_Number_Position) kan vara i alla fall och separeras
någon av följande avgränsare: ”, ::;”.
DEL 4. NÅGRA EXEMPEL.
There areNumbersInLine=(Str_FindNumber(InLine)<>Odefinierad);
Det finns siffror på raden = (String_FindGr(Inline,"+0123456789")>0);
Det finns latin = (Str_FindGr(InStr, Str_Interpret("lL"))>0);
Det finns specificerade tecken = (Str_NfindGr(VxStr, "+till rogYu.0p9")>0);
IsNotPrinted=(Str_FindGr(InxStr, Line_Interpret("-l-L-r-R-P-Z-C"))>0);
DEL 5. SLUTSATS.
Där det var möjligt nöjde jag mig med en passning längs linjen. Det andra passet är vanligtvis i fragment. Jag använde inte den inbyggda funktionen StrNumberOccurrences().
Inbyggda funktioner används: Left(), Right(), Middle(), StrLength()
- (placering och få del av linjen måste vara "snabb").
Strängtypen finns i alla programmeringsspråk. Det är primitivt, och i 1C finns det många funktioner för att arbeta med det. I den här artikeln ska vi titta närmare på olika sätt arbeta med strängtyper i 1C 8.3 och 8.2 med hjälp av exempel.
För att konvertera en variabel av vilken typ som helst till en sträng finns det en funktion med samma namn "String()". Ingångsparametern kommer att vara variabeln själv, vars strängrepresentation måste erhållas.
String(False) // returnerar "Nej"
String(12345) // returnerar "12 345"
String(CurrentDate()) //"07/21/2017 11:55:36″
Det är möjligt att konvertera inte bara primitiva typer till en sträng, utan även andra, till exempel element i kataloger och dokument.
Ingångsparametrarna för dessa funktioner är en variabel av strängtyp. Funktionerna tar bort obetydliga tecken (mellanslag, vagnretur, etc.): från vänster och höger sida, endast från vänster sida, respektive endast från höger.
Abbreviation(" Mellanslag kommer att tas bort på båda sidor ") // "Blanksteg kommer att tas bort på båda sidor"
Abbreviation(" Mellanslag på båda sidor kommer att tas bort ") // " Mellanslag till vänster kommer att tas bort "
Abbreviation(" Mellanslag på båda sidor kommer att tas bort ") // " Mellanslag till höger kommer att tas bort"
Dessa funktioner låter dig trimma en del av en sträng. Funktionen "Left()" returnerar delen av en sträng från dess vänstra sida av den angivna längden. Funktionen "Right()" är liknande, men beskärs från höger. Funktionen "Avg()" låter dig ange numret på tecknet från vilket raden ska väljas och dess längd.
Lev("Strängvariabel", 4) // returnerar "Str"
Right("Strängvariabel", 7) // returnerar "variabel"
Medium("Strängvariabel", 2, 5) // returnerar "troko"
Funktionen bestämmer antalet tecken som finns i en strängvariabel.
StrLength("Word") // resultatet av exekveringen blir siffran 5
Funktionen gör det möjligt att söka efter en del av en sträng i en strängvariabel. Returvärdet kommer att vara ett tal som visar positionen för början av den hittade strängen. Om ingen matchning hittas returneras noll.
Observera att sökningen är skiftlägeskänslig. Om det finns mer än en förekomst av sökundersträngen i den ursprungliga strängen, returnerar funktionen början av den första förekomsten.
Find("ett, två, ett, två, tre", "två") //-funktionen returnerar siffran 6
Genom att använda den här funktionen kan du avgöra om en sträng är tom. Mindre tecken som blanksteg, vagnretur och andra tas inte med i beräkningen.
EmptyString("Pupkin Vasily Ivanovich") //-funktionen returnerar värdet False
EmptyString(" ") //-funktionen returnerar värdet True
Dessa funktioner är mycket användbara när du jämför och konverterar strängvariabler. "Vreg()" kommer att returnera den ursprungliga strängen in versal, "HPreg()" längst ner och "TReg()" kommer att formatera det så att det första tecknet i varje enda ord kommer att aktiveras med stora bokstäver och alla efterföljande versaler.
VReg("GENERAL DIRECTOR") // returvärde - "GENERAL DIRECTOR"
NReg(”VD”) // returvärde – ”VD”
TREG(“VD”) // returvärde – “General Director”
Denna funktion är analog med ersättning i textredigerare. Det låter dig ersätta ett tecken eller en uppsättning tecken med en annan i strängvariabler.
StrReplace("röd, vit, gul", ","", ";") // returnerar "röd; vit; gul"
Funktionen låter dig bestämma antalet rader åtskilda av vagnretur i en textvariabel.
Slingan i exemplet nedan kommer att gå igenom tre omgångar eftersom funktionen LineNumberRow returnerar värdet 3:
För ind = 1 av StrNumber of Strings("Line1" + Symbols.PS + "Line2" + Symbols.PS + "Line3") Cykel
<тело цикла>
EndCycle;
Denna funktion fungerar med flerradstext på samma sätt som den föregående. Det låter dig hämta en specifik sträng från en textvariabel.
StrGetString("String1" + Characters.PS + "String2" + Characters.PS + "String3", 2) // returnera "String2"
Funktionen räknar antalet förekomster av ett tecken eller delsträng i söksträngen.
StrNumberAttachments("a;b;c;d; ", ";") //-funktionen returnerar siffran 4
Dessa funktioner låter dig erhålla ett tecken genom dess kod i Unicode-kodningen, samt bestämma denna kod genom själva tecknet.
SymbolCode("A") //-funktionen returnerar talet 1 040
CharacterCode(1040) //-funktionen returnerar "A"
För att kombinera flera strängar (för att utföra sammanlänkning) räcker det att använda additionsoperatorn.
“Linje 1″ + “Linje 2″ //resultatet av att lägga till två rader blir “Linje 1 Rad 2”
För att konvertera en typ till en sträng, till exempel en länk till ett katalogelement, ett nummer, etc., räcker det med att använda funktionen "String()". Funktioner som "ScrLP()" kommer också att konvertera variabler till en sträng, men omedelbart med att klippa bort obetydliga tecken.
String(1000) // returnerar "1 000"
Observera att när du konverterar ett tal till en sträng, lade programmet automatiskt till ett mellanslag som skiljer tusentalet åt. För att undvika detta kan du använda följande konstruktioner:
StrReplace(String(1000),Characters.NPP,"") // returnerar "1000"
String(Format(1000,"HG=")) // returnerar "1000"
Ganska ofta kommer du att behöva hantera behovet av att ange citattecken i en strängvariabel. Detta kan antingen vara förfrågningstexten skriven i konfiguratorn, eller bara en variabel. För att lösa detta problem behöver du bara sätta två citattecken.
Header = String("Horns and Hooves LLC - det är vi!") // kommer att returnera "Horns and Hooves LLC - det är vi!"
För att skapa flerradstext, lägg bara till radbrytningar (Symbols.PS) till den.
MultilineText = "Första raden" + Symboler.PS + "Andra raden"
För att ta bort mellanslag till höger eller vänster kan du använda funktionen “ScrAP()” (liksom “ScrL()” och “ScrP()”):
StringNoSpaces = Abbreviation(" Många bokstäver ") // funktionen returnerar värdet "Många bokstäver"
Om du efter att ha konverterat ett nummer till en sträng måste ta bort icke-brytande utrymmen, använd följande konstruktion:
StringNoSpaces = StrReplace(String(99999),Characters.NPP,"") // returnerar "99999"
Programmerare använder också ofta följande konstruktion, som gör att du kan ta bort eller ersätta alla mellanslag i en textvariabel med ett annat tecken:
StringNoSpaces = StrReplace("hej","") // returnerar "hej"
Du kan jämföra termer med det vanliga likhetstecknet. Jämförelsen är skiftlägeskänslig.
"Hej" = "hej" // returnerar Falskt
"Hello" = "Hej" // returnerar True
"Hello" = "Adjö" // kommer att returnera False