Windows.  Virus.  Bärbara datorer.  Internet.  Kontor.  Verktyg.  Förare

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.

  • AbbrLP ("Otroligt, men sant!")
    Tar bort från linje 1C extra utrymmen. Kan också användas för att konvertera alla typer till en 1C-sträng (till exempel siffror).
  • Variabel = "Vasya" + AbbrLP(" plus") + "Olya"; //det kommer att finnas "Vasya plus Olya"
    Ett exempel på summering av flera 1C-strängvärden. Resultatet blir en rad 1C.
  • Variabel = Lev("Musik", 2); // kommer att vara "Mu"
    Variabel = Medium("Musik", 2, 2); //det kommer att finnas "hot"
    Variabel = Rights("Musik", 2); //det kommer att finnas "ka"
    Olika alternativ för att erhålla en delsträng från en 1C-sträng.
  • Variabel = Hitta("Musik", "zy"); //det kommer att bli 3
    Sök efter en delsträng i sträng 1C, med början med tecken 1.
  • Variabel = StrLength("Musik"); //det kommer att bli 6
    Returnerar antalet tecken på 1C-raden.
  • Report("Hej") //i meddelandefönstret längst ner i 1C-fönstret
    Alert("Hej") //popup-dialogruta
    Status("Hej") //på statusraden längst ner till vänster
    .

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

  • Kryssrutan Flerradsredigeringsläge
  • Kryssrutan för avancerad redigering (tillgänglig om föregående kryssruta är markerad)
  • Kryssruta Lösenordsläge (se).

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.

  • I 1C-objektet vars form vi skapar (katalog, dokument, bearbetning, etc.) - lägg till ett attribut med typen Value Storage
  • I funktionen OnReadOnServer() ställer vi in ​​texten från attributet

    //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

  • I funktionen BeforeWritingOnServer() eller med knappen, kommer vi att skriva texten från fältet

    &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!";

Funktioner för att arbeta med strängar i 1:or 8.3

I detta avsnitt Huvudfunktionerna kommer att ges som gör att du kan ändra linjer i 1c, eller analysera informationen i dem.

StrLängd

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

AbbrL(<Строка>) . Trimar icke-signifikanta tecken till vänster om det första signifikanta tecknet i strängen.
Mindre karaktärer:

  • utrymme;
  • icke-brytande utrymme;
  • tabulering;
  • vagnretur;
  • linjematning;
  • översättning av formuläret (sida).

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örkortad

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

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

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 + "."

+ Mellan 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

: 20170910"; StringDate = Rights(String, 8); Date = Date(StringDate);

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.

String = "Region: 99 Moskva"; Region = Avg(Sträng, 9, 2);

PageFind<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) StrFind(

  • Linje. Söker efter en specificerad delsträng i en sträng och returnerar positionsnumret för det första tecknet i den hittade delsträngen. Låt oss titta på parametrarna för denna funktion:
  • . Källsträng; Sök understräng
  • . Sök understräng; Sökriktning
    • Sökriktning. Från start;
    • Search.End Direction;
  • Initialposition. Anger positionen i strängen där sökningen börjar;
  • Antal Förekomster. Anger förekomstnumret för den sökta delsträngen i källsträngen.

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

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

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

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

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!★"

Symbolkod

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

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).

PageReplace

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!"

StrNumberLines

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

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".

SidnummerFörekomster

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.

Sidan Startar Med

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;

PageEndsOn

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;

Page Split

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;

EndAttemptsEndCycle;

Som ett resultat av exekveringen kommer en array med nummer från 1 till 3 att erhållas.<Строки>, <Разделитель>) PageConnect

StrConnect( . Konverterar arrayen av strängar från den första parametern till en sträng som innehåller alla element i arrayen separerade av avgränsaren som anges i den andra parametern..

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

//Jag

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.

Funktioner för att söka och ersätta tecken i en sträng:

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.

StrTemplate (

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.

— skär bort obetydliga tecken till höger om det sista signifikanta tecknet i raden.

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(

  • – jämför två strängar på ett skiftlägesokänsligt sätt. En funktion fungerar som ett objekt
  • Jämförelse av värden
  • . Returnerar:

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.

Linje

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.

SokrLP, SokrL, SokrP

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"

Leo, höger, medium

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"

StrLängd

Funktionen bestämmer antalet tecken som finns i en strängvariabel.

StrLength("Word") // resultatet av exekveringen blir siffran 5

Hitta

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

EmptyString

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

VReg, NReg, TReg

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”

PageReplace

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"

StrNumberLines

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;

StrGetString

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"

SidnummerFörekomster

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

Symbol och symbolkod

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"

Vanliga uppgifter vid arbete med strängar

Sammanfogande strängar

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”

Typkonvertering

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"

Citat i en sträng

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!"

Flerrad, radbrytning

För att skapa flerradstext, lägg bara till radbrytningar (Symbols.PS) till den.

MultilineText = "Första raden" + Symboler.PS + "Andra raden"

Hur man tar bort mellanslag

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"

Jämför strängar med varandra

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



Om du upptäcker ett fel markerar du ett textstycke och trycker på Ctrl+Enter
DELA: