1s är det första tecknet i strängen. Nya strängfunktioner

1s är det första tecknet i strängen.  Nya strängfunktioner
1s är det första tecknet i strängen. Nya strängfunktioner

Information i 1C kan representeras av: en uppslagsbok, ett dokument, ett register ...

I slutändan består dock alla dessa objekt av fält, och fält är av enkla typer - nummer, sträng, datum. Och det finns alltid mer information i form av strängar. Därför måste du arbeta med strängar oftare.

Nu ska vi analysera hur du kan arbeta med strängar från 1C-språket. Parallellt, låt oss prova olika alternativ för automatisk textanalys.

Strängtyper

Strängar kan vara begränsade i längd eller obegränsade i längd. Om strängvärdet tas från ett attribut, så anges denna begränsning i attributtypen.

Om strängen angavs av användaren i formuläret kan formulärelementet ha kryssrutorna "Flerlinjeläge" och "Avancerad redigering". Det första betyder att raden kan innehålla tecknen "Lad break 1C (Enter)". Den andra är att strängen kan innehålla andra 1C-tjänsttecken, såsom TAB.

Om strängen är hämtad från en fil, till exempel med hjälp av ReadText(), så blir även kodningen viktig - när du läser filen måste du ange kodningen (UTF-8, KOI8, etc.).

Servicesymboler 1C

Att arbeta med speciella karaktärer uppräkning Symboler 1C används.

Till exempel ett strängvärde som består av två ord:
TextString = "Första raden" + Symbols.PS + "Andra raden";

Om du till exempel söker efter radbrytning 1C i texten:
Position = Find(TextString, Symbols.PS);

Du kan arbeta med följande specialtecken:

  • CR och LF
    Menar ett linjebrott 1C. Hittas ofta i textfiler.
    Teckenkoden i ASCII är 0x0D och 0x0A, i Unicode är det U+000D och U+000A.

    På 1C-språket ser de ut som Symbols.CR och Symbols.LF, eller på ryska Symbols.VK och Symbols.PS. För att överföra 1C-linjen när den skapas i 1C-koden räcker det att använda PS.

Andra symboler 1C

Strängar i 1C används "fysiskt" i Unicode-format (Unicode, http://ru.wikipedia.org/wiki/%DE%ED%E8%EA%EE%E4).

Om du inte har stött på "kodningen" av tecken tidigare, noterar vi kort:

  • När du arbetar med strängar använder datorn siffrorna på bokstäverna, inte själva bokstäverna.
  • Eftersom det finns många "mänskliga" alfabet (engelska, ryska, grekiska, kinesiska, etc., och det finns även service- och "icke-utskrivande" 1C-tecken), finns det flera varianter av datoralfabet, varav en är Unicode , som innehåller 1C-tecken på alla språk
  • Unicode-alfabetet ser ut ungefär så här:
    o Vanliga "icke-utskrivande" servicesymboler 1C
    o Skiljetecken och matematik
    o Siffror
    o Engelska alfabetet
    o Lägg till. 1C-tecken i det engelska alfabetet som används på europeiska språk (till exempel på tyska)
    o grekiska alfabetet
    o ryska alfabetet
    o...

Vid behov är det möjligt att använda alla 1C-tecken som finns i Unicode i 1C-strängar.

För det första kan du skriva dem från tangentbordet om du har en layout installerad i Windows (som standard är engelska och ryska vanligtvis inställda i Ryssland).

För det andra kan du ringa med följande metod:

För det tredje kan du arbeta från programkoden. Funktionen Symbol(Siffra) returnerar ett tecken med angivet antal, och funktionen CharacterCode(String) returnerar teckennumret för den första bokstaven i strängen. Om du behöver ytterligare en bokstav i strängen, så CharacterCode(String, LetterNumber).

Låt oss till exempel lägga till tecknet Ž på följande rad:
TextString = "God öl i stan" + Symbol(381) + "drobinek";
//Resultat: "God öl i Ždrobinek"

Strängar i 1C 8.3 i det inbyggda språket 1c är värden av 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

Det här avsnittet kommer att tillhandahålla huvudfunktionerna som låter dig ändra rader i 1:or eller analysera informationen i dem.

StrLängd

StrLängd(<Строка>) . Returnerar antalet tecken i strängen som skickas i parametern.

Exempel 2. Låt oss räkna antalet tecken i strängen "Hello world!".

String = "Hej världen!"; Antal tecken = StrLength(String); Rapport (antal tecken);

Resultatet av att köra den här koden kommer att visa antalet tecken i strängen: 11.

Förkortad

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

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

Exempel 3. Ta bort alla blanksteg från vänster sida av strängen "fred!" och lägg till strängen "Hej" till den.

String = abbr("värld!"); String = "Hej"+String; Notify(String);

Resultatet av exekveringen av denna kod kommer att vara visningen av strängen "Hello world!".

Förkortning

abbr(<Строка>) . Trimar icke-signifikanta tecken till höger om det första signifikanta tecknet i en sträng.

Exempel 4. Form från strängarna "Hello" och "world!" frasen "Hej världen!"

String = abbr("Hej")+" "+abbr("värld!"); Notify(String);

Förkortat LP

Abbrl(<Строка>) . Trimmer icke-signifikanta tecken till höger om det första signifikanta tecknet i strängen, trimmer ä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 mångsidigt.

Exempel 5. Ta bort obetydliga tecken till vänster och höger i motpartens namn.

Contractor = Directories.Contractors.FindBy Details("TIN", "0777121211"); ContractorObject = Contractor.GetObject(); ContractorObject.Description = Förkortad LP(ContractorObject.Description); ContractorObject.Write();

ett lejon

Ett lejon(<Строка>, <ЧислоСимволов>) . Hämtar de första tecknen i en sträng, antalet tecken anges i parametern Antal tecken.

Exempel 6. Låt strukturen Anställd innehålla den anställdes namn, efternamn och patronym. Få sträng med efternamn och initialer.

InitialName = Lion(Anställd.Namn, 1); Patronymisk initial = Leo(Anställd.Patronym, 1); FullName = Employee.LastName + " " + FirstName Initial + "." + Patronymisk initial + ".";

Rättigheter

Höger(<Строка>, <ЧислоСимволов>) . Hämtar de sista tecknen i en sträng, antalet tecken anges i parametern Antal tecken. Om det angivna antalet tecken överskrider längden på strängen, returneras hela strängen.

Exempel 7. Låt ett datum skrivas i slutet av en strängvariabel i formatet "ååååmmdd", hämta en sträng med ett datum och konvertera den till typ datum.

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

onsdag

onsdag (<Строка>, <НачальныйНомер>, <ЧислоСимволов>) . Får en delsträng från strängen som skickas i parametern Linje, med början från tecknet vars nummer anges i parametern Initialt nummer och längden som skickas till parametern Antal tecken. Numreringen av tecken i en sträng börjar från 1. Om parametern Initialt nummer ett värde mindre än eller lika med noll anges, då får parametern värdet 1. Om parametern Antal tecken inte anges, tecken upp till slutet av strängen väljs.

Exempel 8. Låt strängvariabeln innehålla regionkoden från den nionde positionen, du ska hämta den och skriva den på en separat rad.

String = "Region: 99 Moskva"; Region = Avg(rad, 9, 2);

PageFind

StrFind(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) . Söker efter den angivna delsträngen i en sträng, returnerar positionsnumret för det första tecknet i den hittade delsträngen. Tänk på parametrarna för denna funktion:

  • Linje. Källsträng;
  • SubstringSearch. Den önskade delsträngen;
  • DirectionSearch. Anger riktningen för att söka efter en delsträng i en sträng. Kan ta värden:
    • Sökriktning. Från början;
    • Sökriktning. Från slutet;
  • Startposition. Anger positionen i strängen där sökningen ska startas;
  • Ingångsnummer. Anger antalet förekomster av den sökta delsträngen i källlinje.

Exempel 9. I raden "Hej värld!" bestämma positionen för den senaste förekomsten av "och"-tecknet.

PositionNumber = StrFind("Hello World!", "och", SearchDirection.From End); Notify(PositionNumber);

Resultatet av exekveringen av denna kod kommer att vara visningen av numret för den senaste förekomsten av symbolen "och" på skärmen: 9.

VReg

VReg(<Строка>) . Konverterar alla tecken i den angivna strängen till 1s 8 till versaler.

Exempel 10. Konvertera strängen "hej världen!" till versaler.

StringVreg = Vreg("hej världen!"); Rapport(StringVreg);

Resultatet av exekveringen av denna kod kommer att vara visningen av strängen "HELLO WORLD!"

HReg

HReg(<Строка>) . Konverterar alla tecken i den angivna strängen till 1s 8 till gemener.

Exempel 11. Konvertera strängen "HELLO WORLD!" till gemener.

StringNreg = NReg("HEJ VÄRLDEN!"); Rapport(StringVreg);

Resultatet av exekveringen av denna kod kommer att vara visningen av strängen "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 i strängen "hej världen!".

StringTreg = TReg("hej värld!"); Report(StringTreg);

Resultatet av exekveringen av denna kod kommer att vara visningen av strängen "Hello World!"

Symbol

Symbol(<КодСимвола>) . Får ett tecken genom dess Unicode-kod.

Exempel 13. Lägg till vänster och höger på raden "Hello World!" symbol ★

StringWithStars = Character("9733")+"Hello World!"+Character("9733"); Report(StringWithStars);

Resultatet av exekveringen av denna kod kommer att vara visningen av strängen "★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 i strängen "Hello World!".

String = "Hej världen!"; CharacterCode =CharacterCode(String, StrLength(String)); Notify(CharacterCode);

Resultatet av exekveringen av denna kod kommer att vara visningen av koden för symbolen "!" — 33.

Tom linje

Tom rad(<Строка>) . Kontrollerar om strängen endast består av icke-signifikanta tecken, det vill säga om den är tom.

Exempel 15. Kontrollera om strängen är tom och består av tre mellanslag.

Empty = EmptyString(" "); Rapport (tom);

Resultatet av exekveringen av denna kod kommer att vara visningen av ordet "Ja" (stränguttryck av ett booleskt värde Sann).

StrReplace

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 "världen" med ordet "vänner".

String = StrReplace("Hej världen!", "Världen", "Vänner"); Notify(String);

Resultatet av exekveringen av denna kod kommer att vara visningen av strängen "Hej vänner!"

StrNumberRows

StrNumber of Lines(<Строка>) . Låter dig räkna antalet rader i en flerradssträng. För att flytta till en ny rad i 1s 8 används symbolen PS(radmatningskaraktär).

Exempel 17. Bestäm antalet rader i texten:
"Första linjen
Andra linjen
Tredje raden"

Number = StrNumber of Lines("Första raden"+Symbols.PS +"Andra raden"+Symbols.PS +"Tredje raden"); Rapport(nummer);

Resultatet av exekveringen av denna kod blir visningen av antalet rader i texten: 3

StrGetString

StrGetString(<Строка>, <НомерСтроки>) . Får en sträng i en flerradssträng genom dess nummer. Radnumreringen börjar från 1.

Exempel 18. Få den sista raden i texten:
"Första linjen
Andra linjen
Tredje raden"

Text = "Första raden"+Tecken.PS +"Andra raden"+Tecken.PS +"Tredje raden"; LastLine = StrGetLine(Text, StrNumber of Lines(Text)); Meddela (sista raden);

Resultatet av exekveringen av denna kod kommer att vara visningen av raden "Tredje raden".

StrNumberCurrences

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" kommer in på raden "Linjer i 1s 8.3 och 8.2", oavsett skiftläge.

String = "Lader i 1s 8.3 och 8.2"; Antal förekomster = StrNumber of Incidents(Vreg(String), "C"); rapport (antal händelser);

Resultatet av att köra den här koden visar antalet förekomster på skärmen: 2.

Sidan börjar från

StrBeginsFrom(<Строка>, <СтрокаПоиска>) . Kontrollerar om strängen som ges 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. Låt variabeln motpart Motparter.

TIN = Contractor.TIN; StartsCUnits = StrStartsC(TIN, "1"); If StartsFROM1 Then //Din kod EndIf;

Sidan slutar på

StrEndsOn(<Строка>, <СтрокаПоиска>) . 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. Låt variabeln motpart länken till katalogelementet lagras Motparter.

TIN = Contractor.TIN; Slutar med två = Str slutar med (TIN, "2"); If Slutar med två Då //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 den ursprungliga strängen, den andra parametern innehåller strängen som innehåller avgränsaren, den tredje parametern anger om man ska skriva till arrayen tomma rader(standard Sann).

Exempel 22. Anta att vi har 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 = StrSplit(String, ";"); For Count = 0 By Array.Quantity() - 1 Loop Attempt Array[Count] = Number(Ablp(Array[Count])); Undantagsmatris[W] = 0; EndTry EndCycle;

Som ett resultat av exekveringen kommer en array med nummer från 1 till 3 att erhållas.

StrConnect

StrConnect(<Строки>, <Разделитель>) . Konverterar en array av strängar från den första parametern till en sträng som innehåller alla element i arrayen med hjälp av avgränsaren som anges i den andra parametern.

Exempel 23. Med hjälp av arrayen av siffror från föregående exempel, hämta den ursprungliga strängen.

For Count = 0 By Array.Quantity() - 1 Loop Array[Count] = String(Array[Count]); EndCycle; String = StrConnect(Array, "; ");

Implementerad i version 8.3.6.1977.

Vi har utökat uppsättningen funktioner för att arbeta med strängar. Vi gjorde detta för att ge dig mer avancerade verktyg för att analysera strängdata. Nya funktioner kommer att vara bekväma och användbara i tekniska uppgifter för textanalys. I uppgifter relaterade till analys av text som innehåller data i formaterad form. Detta kan vara analysen av vissa filer som tagits emot från utrustningen, eller till exempel analysen av en teknisk logg.

Alla de åtgärder som de nya funktionerna utför kunde du utföra tidigare. Med hjälp av mer eller mindre komplexa algoritmer skrivna i ett inbäddat språk. Därför ger nya funktioner dig inga i grunden nya möjligheter. Däremot låter de dig minska mängden kod, göra koden enklare och mer begriplig. Dessutom låter de dig påskynda utförandet av åtgärder. Eftersom funktionerna som implementeras i plattformen fungerar såklart snabbare än en liknande algoritm skriven i det inbyggda språket.

Formatfunktion StrTemplate()

Denna funktion ersätter parametrar i en sträng. Behovet av en sådan konvertering uppstår ofta till exempel vid visning av varningsmeddelanden. Syntaxen för denna funktion är följande:

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

<Шаблон>är strängen där parameterrepresentationerna ska ersättas.

<Значение1> , ... <Значение10>- det här är parametrarna (max - tio), vars representationer måste ersättas i strängen.

För att ange en specifik plats i mallen som du vill utföra ersättningen till, måste du använda markörer av formen %1, ... %10. Antalet markörer som är involverade i mallen och antalet parametrar som innehåller värden måste matcha.

Till exempel resultatet av att köra en sådan operatör:

det kommer att finnas en rad:

Datafel på rad 2 (kräver datumtyp)

Strängfunktion StrCompare()

Denna funktion jämför två strängar skiftlägesokänsligt. Till exempel, så här:

Du kan utföra samma åtgärd innan du använder ValueComparison-objektet:

Men att använda den nya funktionen ser enklare ut. Och dessutom fungerar funktionen, till skillnad från Value Compare-objektet, både i den tunna klienten och i webbklienten.

Strängfunktioner StrBeginsC(), StrEndsTo()

Dessa funktioner avgör om en sträng börjar med en specificerad delsträng eller om en sträng slutar med en specificerad delsträng. Algoritmen för dessa funktioner är inte svår att implementera i ett inbyggt språk, men deras närvaro gör att du kan skriva renare och mer begriplig kod. Och de jobbar snabbare.

Till exempel är de bekväma att använda i If-satsen:

Funktioner för att arbeta med strängar StrSplit(), StrJoin()

Dessa funktioner delar upp strängen i delar enligt den angivna avgränsaren. Eller vice versa, de kombinerar flera rader till en och infogar den valda avgränsaren mellan dem. De är bekväma för att skapa eller analysera loggar, en teknisk logg. Till exempel kan du enkelt demontera en teknisk loggpost i delar som är lämpliga för vidare analys:

Funktion för att arbeta med strängar StrFind()

Istället för den gamla Find()-funktionen implementerade vi ny funktion, som har ytterligare funktioner:

  • Sök i olika riktningar (från början, från slutet);
  • Sök från den angivna positionen;
  • Sök efter en händelse med det angivna numret (andra, tredje, etc.).

I själva verket duplicerar det funktionerna i den gamla funktionen. Detta görs för att bibehålla kompatibilitet med moduler kompilerade i äldre versioner. Den gamla Find()-funktionen rekommenderas inte att användas längre.

Nedan är ett exempel med de nya sökfunktionerna. Att söka bakåt är användbart när du behöver det sista fragmentet av en formaliserad sträng, till exempel, fullständiga namn fil i URL. Och att söka från en angiven position hjälper i fall där du behöver söka i ett känt fragment, och inte i hela strängen.

String är en av de primitiva datatyperna i 1C:Enterprise 8-system. Variabler med typ linje innehålla text.

Typ variabelvärden linje omges av dubbla citattecken. Flera variabler av denna typ kan läggas till.

Per1 = "Ord 1" ;
Per2 = "Ord 2" ;
Per3 = Per1 + " " + Per2;

Så småningom Per 3 kommer att spela roll" Word 1 Word 2″.

Dessutom tillhandahåller 1C:Enterprise 8-system funktioner för att arbeta med strängar. Tänk på de viktigaste:

EnterString(<Строка>, <Подсказка>, <Длина>, <Многострочность>) — funktionen är utformad för att visa en dialogruta där användaren kan ange värdet på en variabel av typen Linje. Parameter <Строка> krävs och innehåller namnet på variabeln som den angivna strängen kommer att skrivas in i. Parameter <Подсказка> valfritt är titeln på dialogrutan. Parameter <Длина> valfritt, indikerar den maximala längden på inmatningssträngen. Standard är noll, vilket betyder obegränsad längd. Parameter <Многострочность> frivillig. Anger inmatningsläget flerradstext: Sant - ange flerradstext med radavgränsare; False - Ange en enkel sträng.

En sträng kan matas in och, med kännedom om teckenkoden i Unicode:

Symbol(<КодСимвола>) — Koden skrivs in som ett nummer.

Bokstav= Symbol(1103 ); //Jag

Det finns också en omvänd funktion som låter dig ta reda på koden för ett tecken.

SymbolCode(<Строка>, <НомерСимвола>) — Returnerar Unicode-numret för det angivna tecknet som ett tal.

Textkonverteringsfunktioner för skiftläge:

VReg(<Строка>) - Konverterar alla tecken i en sträng till versaler.

HReg(<Строка>) - Konverterar alla tecken i en sträng till gemener.

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", "öga" ); // 4

StrFind(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) — 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 från tecknet, vars nummer anges i parametern Startposition. Sökningen är möjlig från början eller från slutet av strängen. Till exempel:

Number4 Entry= StrFind( "Defensivitet", "o" , sökriktning. Först, 1, 4); // 7

StrReplace(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) Hittar alla förekomster av sökundersträngen i källsträngen och ersätter den med ersättningsdelsträngen.

StrReplace("String" , "öga" , "" ); // Sida

Tom rad(<Строка>) - kontrollerar strängen för betydande tecken. Om det inte finns några signifikanta tecken, eller inga tecken alls, returneras värdet Sann. Annars - Lögn.

StrNumberCurrences(<Строка>, <ПодстрокаПоиска>) – beräknar antalet förekomster av sökundersträngen i källsträngen.

StrNumberOccurrences ( "Studera, studera och plugga igen", "studie" , "" ) ; // 3

StrMall(<Строка>, <ЗначениеПодстановки1>…<ЗначениеПодстановкиN> — ersätter parametrarna i strängen med nummer. Strängen måste innehålla ersättningsmarkörer av formen: "%1..%N". Numrering av markörer börjar från 1. Om parametervärdet Odefinierad, den tomma strängen ersätts.

StrPattern ( "Alternativ 1 = %1, Alternativ 2 = %2", "1" , "2" ) ; // Parameter 1= 1, Parameter 2 = 2

Strängkonverteringsfunktioner:

Ett lejon(<Строка>, <ЧислоСимволов>) returnerar de första tecknen i strängen.

Höger(<Строка>, <ЧислоСимволов>) - returnerar de sista tecknen i strängen.

onsdag (<Строка>, <НачальныйНомер>, <ЧислоСимволов>) - returnerar en längdsträng<ЧислоСимволов>, som börjar med ett tecken<НачальныйНомер>.

Abbr(<Строка>) trunkerar icke-signifikanta tecken till vänster om det första signifikanta tecknet i strängen.

abbr(<Строка>) - skär av obetydliga tecken till höger om det sista signifikanta tecknet i strängen.

Abbrl(<Строка>) - skär av icke-signifikanta tecken till vänster om det första signifikanta tecknet i strängen och till höger om det sista signifikanta tecknet i strängen.

StrGetString(<Строка>, <НомерСтроки>) – får strängen av en flerradssträng efter nummer.

Andra funktioner:

StrLängd(<Строка>) - returnerar antalet tecken i en sträng.

StrNumber of Lines(<Строка>) - returnerar antalet rader i en flerradssträng. En rad anses vara ny om den skiljs från föregående rad med ett nyradstecken.

StrCompare(<Строка1>, <Строка2> ) - jämför två strängar skiftlägesokänsligt. Funktionen fungerar som ett objekt Jämföra 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ängar är lika

StrCompare("Första raden" , "Andra raden" ); // 1

Det finns få mekanismer för att arbeta med strängar i 1C-frågor. Först kan strängar läggas till. För det andra kan en delsträng tas från en sträng. För det tredje kan strängar jämföras, inklusive efter mönster. Det är ungefär allt du kan göra med strängar.

Strängtillägg

Operatorn "+" används för att lägga till strängar i en fråga. Du kan bara lägga till strängar med begränsad längd.

VÄLJ "Namn: " + Contractors.Name AS Column1 FROM Directory.Contractors AS Contractors WHERE Contractors.Reference = &Referens

Delsträngsfunktion

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

En analog till funktionen Environment() från objektmodellen. Funktionen Substring() kan tillämpas på data av strängtyp och låter dig välja ett fragment <Строки> , som börjar med ett siffertecken <НачальнаяПозиция> (tecken i en sträng är numrerade från 1) och längd <Длина> tecken. Resultatet av funktionsutvärderingen har en strängtyp med variabel längd, och längden anses vara obegränsad om <Строка> har obegränsad längd och parameter <Длина> är inte en konstant eller större än 1024.

Om stränglängden är mindre än vad som anges i den andra parametern kommer funktionen att returnera en tom sträng.

Uppmärksamhet! Att använda funktionen SUBSTRING() för att konvertera strängar med obegränsad längd till strängar med begränsad längd rekommenderas inte. Istället är det bättre att använda castoperatorn EXPRESS().

Funktion liknande

Om vi ​​behöver försäkra oss om att strängattributet uppfyller vissa kriterier jämför vi det:

SELECT Counterparties.Name AS Column1 FROM Directory.Counterparties AS Counterpartyes WHERE Counterparties.Name = "Gazprom"

Men vad händer om en mer subtil jämförelse behövs? Inte bara för jämlikhet eller ojämlikhet, utan för likhet med ett visst mönster? Det är precis vad LIKE-funktionen skapades för.

LIKE - En operatör för att kontrollera om en sträng liknar ett mönster. Analog av LIKE i SQL.

LIKE-operatorn låter dig jämföra värdet på uttrycket som anges till vänster om det med mallsträngen som anges till höger. Uttrycksvärdet måste vara av typen string. Om värdet på uttrycket matchar mallen blir resultatet av operatorn TRUE, annars blir det FALSE.

Följande tecken i mallsträngen är servicetecken och har en annan betydelse än strängtecknet:

  • % (procent): en sekvens som innehåller valfritt antal godtyckliga tecken;
  • _ (understreck): ett godtyckligt tecken;
  • […] (ett eller flera tecken inom hakparenteser): vilket enstaka tecken som helst inom hakparenteser. En uppräkning kan innehålla intervall, såsom a-z, vilket betyder vilket tecken som helst inom intervallet, inklusive ändarna av intervallet;
  • [^...] (inom hakparenteser ett negationstecken följt av ett eller flera tecken): Alla enstaka tecken utom de som anges efter negationstecknet.

Någon annan symbol betyder sig själv och bär ingen extra belastning. Om det är nödvändigt att skriva ett av de listade tecknen som sig själv, måste det föregås av<Спецсимвол>. Jag själv<Спецсимвол>(vilket lämpligt tecken som helst) definieras i samma uttalande efter nyckelord SPECIELL SYMBOL.