1c 8.2 serienumret för tecknet i strängen. Nya funktioner för att arbeta med strängar. Formatfunktion StrTemplate()

DEL 1. METODER (26).

1.1. Grundläggande metoder (10). Oberoende, byggda på deras enkla algoritmer.

Str_Complete() (höger-vänster utfyllnad med angivna symboler).

Str_Inverse () (inversion - tecken från höger till vänster).

Str_Codes() (teckenkoder genom ”,” och en array med koder)

Str_Symbols() (sträng från koder separerade med ”,” eller från en array med koder)

Str_ReplaceCharacters() (ersätter ett tecken med ett annat).

Str_FromArray() (sträng från arrayen av fragment separerade av en separator)

Str_FindIn() (sök efter en delsträng (inklusive till höger) med det angivna postnumret).

Str_FindGr() (Sök efter en grupp tecken som ingår i den angivna teckenuppsättningen)

Str_FindNumber() (Sök efter ett nummer, inklusive till höger med det angivna förekomstnumret)

Str_Interpret() (till en array, enligt den etablerade syntaxen)

1.2. Härledda metoder (12). Egentligen är detta användningen av fyra generaliserade metoder-algoritmer (se del 2)

Str_Number() (från början och från slutet av strängen, var inte "rädd" för icke-siffriga tecken.

Str_Find() (sök efter en delsträng (inklusive skiftlägesokänslig och till höger) med det angivna postnumret).

Str_Replace() (sök (inklusive skiftlägesokänslig och till höger), och ersätt delsträngar med avgränsare).

Str_Piece() (en bit sträng mellan de angivna förekomsterna av avgränsaren (vänster eller höger)).

Str_ReplacePiece() (ersättning i källsträngen "piece" med den angivna strängen).

Str_VArray() (mellan de angivna förekomsterna av avgränsaren (inklusive till höger och utan skiftläge).

Str_MoveBySyllables() (delad i delsträngar "Hard", med ett bindestreck).

Str_MoveWords() (delas upp i delsträngar "Mjukt")

Str_Cut() ("Klipp ut" i delsträngar med specificerade längder)

Str_Short() (ersätt den vänstra gruppen av "reducerade" tecken med en "ersättningssträng"

Str_Short() (ersätt den högra gruppen av "reducerade" tecken med en "ersättningssträng"

Str_Short() (ersätt mitt i en grupp av "reducerade" tecken med en "ersättningssträng"

Str_Expand (expansion till angiven längd genom att öka antalet specificerade tecken)

1.3. Detaljerade metoder (3). "Förberedelse" av en linje med överföring till en tabell med detaljerad information.

Str_inTableIn() (till tabellen enligt systemet med kapslade avgränsare).

Str_inTableGroup (till tabellen enligt flernivåfiltret).

Str_inTableNumbers (till en tabell med siffror och fragment mellan dem).

DEL 2. GENERALISERADE METODER-ALGORIMER (3).

Str_Entry() (metoderna ”Sök” och ”Ersätt”).

Str_Fragments() (metoder "Piece", "ReplacePiece", "ToArray", "ToTableIn").

Str_Short() (metoder "Short", "ShortP", "Short", "Expand".

Str_Split() (metoder "Flytta efter stavelser", "Flytta efter ord", "Klipp ut").

DEL 3. UNIVERSELL FUNKTION.

Det är ett slags villkorligt programmeringsgränssnitt som tillåter

tillämpa flera metoder på en sträng samtidigt. Implementerad som

funktioner med sju parametrar ("Demo" bygger på denna funktion):

Str_(Methods, Submethods, Input, Param1, Param2, Length_Position_Number, AdditionalOutput)

Alternativ:

- "Metoder" - flera "kombinerade" och (eller) en "exklusiv" metod

(enkelteckens koder eller namn, möjliga via ","")

- "Undermetoder" - flera "kombinerbara" 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, avgränsare, filter;

- "Param2" - ersättningssträng eller -symboler;

- "Längd_Number_Position" -Number, siffror genom en avgränsare eller en array med siffror;

- "Avsluta" - nummer eller sträng eller matris eller värdetabell;

Namn och (eller) enteckenkoder för metoder-undermetoder, såväl som nummer i

(Length_Position_Number) kan vara i alla fall och separeras

någon av följande avgränsare: ”, ::;”.

DEL 4. NÅGRA EXEMPEL.

HaveNumbersINSstring=(Str_FindNumbers(InString)<>Odefinierad);

HaveDigitsINString=(Str_FindGr(InString,"+0123456789")>0);

ThereLatin=(Str_FindGr(VxStr, Str_Interpret("lL"))>0);

HaveSpecifiedSigns=(Str_NfindGr(VxStr, "+ till hornYu.0p9")>0);

IsUnprintable=(Str_FindGr(VxStr, Str_Interpret("-l-L-r-R-P-Z-C"))>0);

DEL 5. SLUTSATS.

Om möjligt, klaras med en passning längs linjen. Det andra passet - vanligtvis redan i fragment. Använde inte den inbyggda StrNumberOccurrences()-funktionen.

Inbyggda funktioner som används: Left(),Right()Mid(),StrLength()

- (placering och hämtning av en del av en sträng -bör vara "snabb").

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.

String-typen 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 exempel.

Linje

För att konvertera en variabel av vilken typ som helst till en sträng finns funktionen "String ()" med samma namn. Ingångsparametern kommer att vara variabeln själv, vars strängrepresentation ska erhållas.

String(False) // returnerar "Nej"
String(12345) // returnerar "12 345"
String(CurrentDate()) //"21.07.2017 11:55:36"

Det är möjligt att konvertera till en sträng inte bara primitiva typer, utan även andra, till exempel element i kataloger och dokument.

Förkortad LP, Förkortad L, Förkortad P

Ingångsparametrarna för dessa funktioner är en strängtypsvariabel. 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.

abbrl("mellanslag på båda sidor kommer att tas bort") // "mellanslag på båda sidor kommer att tas bort"
abbr("mellanslag på båda sidor kommer att tas bort") // "mellanslag till vänster kommer att tas bort"
abbr(" Mellanslag på båda sidor kommer att tas bort ") // " Mellanslag till höger kommer att tas bort"

Leo, höger, mitten

Dessa funktioner låter dig klippa av en del av ett snöre. Lion()-funktionen returnerar delen av strängen på dess vänstra sida av den angivna längden. Funktionen "Right()" är liknande, men beskärning görs till höger. Funktionen "Wed()" låter dig ange teckennumret från vilket strängen ska väljas och dess längd.

Lion("Strängvariabel", 4) // returnerar "Stro"
Right("Strängvariabel", 7) // returnerar "variabel"
avg("Strängvariabel", 2, 5)// returnerar "troco"

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 anger positionen för början av den hittade strängen. Om inga matchningar 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

Tom linje

Genom att använda denna funktion kan du avgöra om en sträng är tom. Obetydliga tecken, som mellanslag, vagnretur och andra, tas inte med i beräkningen.

EmptyString("Vasily Ivanovich Pupkin") // funktionen returnerar False
EmptyString(" ") // funktionen returnerar True

VReg, NReg, TReg

Dessa funktioner är mycket användbara när du jämför och konverterar strängvariabler. "Vreg()" returnerar den ursprungliga strängen med versaler, "HReg()" med gemener och "TReg()" kommer att formatera den så att det första tecknet i varje enskilt ord är versaler och alla efterföljande tecken är gemener.

VReg("GENERAL DIRECTOR") // returvärde - "GENERAL DIRECTOR"
HReg("GENERAL DIRECTOR") // returvärde - "VD"
TReg("GENERAL DIRECTOR") // returvärde - "General Director"

StrReplace

Denna funktion är analog med ersättningen 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"

StrNumberRows

Funktionen låter dig bestämma antalet rader åtskilda av en vagnretur i en textvariabel.

Slingan i exemplet nedan kommer att gå genom tre cirklar eftersom StrNumberRows-funktionen returnerar värdet 3:

För ind \u003d 1 av StrNumber of Lines ("Line1" + Symbols.PS + "String2" + Symbols.PS + "Line3") Loop
<тело цикла>
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" + Symbols.PS + "String2" + Symbols.PS + "String3", 2) // returnerar "Linje2"

StrNumberCurrences

Funktionen räknar antalet förekomster av ett tecken eller delsträng i den sökta strängen.

StrNumberInstallations("a;b;c;d; ", ";") // funktionen returnerar siffran 4

Symbol och SymbolCode

Dessa funktioner låter dig få ett tecken genom dess Unicode-kod, samt bestämma denna kod genom själva tecknet.

SymbolCode("A") // funktionen returnerar talet 1 040
SymbolCode(1040) // funktionen returnerar "A"

Frekventa uppgifter när du arbetar med strängar

Strängsammansättning

För att sammanfoga flera strängar (sammanfoga) använd bara 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 referens till ett ordbokselement, ett nummer och så vidare, räcker det med att använda funktionen "String ()". Funktioner som "ShortLP()" kommer också att konvertera variabler till en sträng, men omedelbart med att klippa bort obetydliga tecken.

String(1000) // returnerar "1000"

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

StrReplace(String(1000),Characters.NPP,"") // returnerar "1000"

String(Format(1000,"CH=")) // returnerar "1000"

Citat i en sträng

Ganska ofta kommer du att behöva ta itu med behovet av att sätta citattecken i en strängvariabel. Det kan antingen vara en förfrågningstext skriven i konfiguratorn, eller bara en variabel. För att lösa detta problem behöver du bara ställa in två citattecken.

Header = String("Horns and Hooves LLC är oss!") // returnerar "Roga and Hooves LLC är oss!"

Flerlinje, radbrytning

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

MultilineText = "Första raden" + Tecken.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 "Stretch()" (liksom "Scrpt()" och "ScreenP()"):

StringWithoutSpaces = ShortLP(" Många bokstäver ") // funktionen returnerar värdet "Många bokstäver"

Om du, efter att ha konverterat ett tal till en sträng, behöver ta bort icke-avbrytande mellanslag, använd följande konstruktion:

StringWithoutSpaces = StrReplace(String(99999),Characters.NPP,"") // returnerar "99999"

Dessutom använder programmerare ofta följande konstruktion, som låter dig ta bort eller ersätta alla mellanslag i en textvariabel med ett annat tecken:

StringWithoutSpaces = 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.

"hello" = "hej" // kommer att returnera false
"Hello" = "Hej" // kommer att returnera True
"Hello" = "Adjö" // kommer att returnera False

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.

Till grundläggande förmågor programmeringsspråk inkluderar vanligtvis arbete med siffror och strängar. Vanligtvis är dessa funktioner kopplade till kompilatorkoden (eller "basklasser" i programmeringsspråket implementeras).

I 1C är möjligheterna att arbeta med strängar programmerade i själva plattformen. Idag kommer vi att överväga 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 strängkonstantvärde till den ser ut så här i 1C:

Variabel = "Hej värld!";

Om du vill ange ett citattecken i ett konstant strängvärde 1C, måste du dubbla det ""

Variable = "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 använder symbolsystemets uppräkning. Det låter dig lägga till både en radbrytning 1C och andra tecken som inte skrivs ut, till exempel TAB.

Variabel = "Hej" + Symbols.ps + "fred!";

3. Konfigurationer i 1C kan utvecklas inte bara för ett språk (ryska, engelska eller annat) - utan samtidigt för flera språk. I det här fallet väljs det språk som används för tillfället 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 sv 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åk-ID:

Variable = "ru=""Hej, värld!""; en=""Hej, värld! """;

Om du använder 1C-linjen som bildas på det här sättet 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 funktionen NStr():

//korrigera för tvåspråkiga konfigurationer
Rapport(NSt(Variabel));

Rekvisita med lina typ 1C

Det nödvändiga är ett fält i katalogen / dokumentet 1C. Den skiljer sig från en variabel i ett program på 1C-språket genom att dess typ är exakt angiven för attributet (nummer, sträng 1C, etc.). Om du behöver fräscha upp vad rekvisita är, kolla in handledningen på .

Om du anger attributtypen - rad 1C, måste du dessutom ange parametrarna.

1C-strängar är av obegränsad längd (anges som längd = 0) och begränsad längd, vilket anger det exakta antalet tecken. 1C-strängar med obegränsad längd lagras i en separat SQL-tabell, så deras användning är mindre produktiv än begränsade.

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 möjligt som dokumentnummer, katalogkod, mått.

Arbeta med 1C-linjer

För att arbeta med strängar finns det flera inbyggda funktioner i 1C-plattformen.

  • AbbrLP("Otroligt, men sant!")
    Tar bort extra mellanslag från sträng 1C. Den kan också användas för att konvertera vilken typ som helst till en 1C-sträng (till exempel siffror).
  • Variabel = "Vasya" + Abbrl("plus") + "Olya"; //kommer att vara "Vasya plus Olya"
    Ett exempel på att summera flera strängvärden 1C. Resultatet är en rad 1C.
  • Variabel = Lion("Musik", 2); // kommer att vara "Mu"
    Variabel = Avg("Musik", 2, 2); // kommer att vara "ps"
    Variabel = Rights("Musik", 2); // kommer att vara "ka"
    Olika alternativ för att erhålla en delsträng från en sträng 1C.
  • Variabel = Hitta("Musik", "ps"); //blir 3
    Sök efter en delsträng i sträng 1C, med början med tecken 1.
  • Variabel = StrLength("Musik"); //blir 6
    Returnerar antalet tecken i en sträng 1C.
  • Notify("Hej") //i meddelanderutan 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 för närvarande mest populära formatet för utbyte av strukturerad information XML. Även senaste versionen FRÖKEN Office Word och Excel spara filer i detta format (docx respektive xlsx, ändra tillägget till zip, öppna i en arkivering).

1C-plattformen för datautbyte ger flera alternativ, varav den främsta är XML.

1. Den enklaste metoden är att använda funktionen ShortLP() eller String(). Du kan använda funktionen REPRESENTATION() i frågetexten. Resultatet av deras åtgärd är detsamma - de genererar en strängrepresentation av vilket 1C-objekt som helst för användaren.

För standardkatalogen kommer detta att vara dess namn. För ett dokument, dokumentets namn, nummer och datum.

2. Alla 1C-objekt (med begränsningar) kan konverteras till XML och vice versa. Konverteringsprocessen kallas serialisering.

ViewStringXml = XMLString(Value); //få XML från värde 1C
Value1С = XMLValue(Type("CatalogReference.Nomenclature"),ViewStringXml); //få 1C-värdet från XML-strängen, du måste ange vilken typ av 1C som ska tas emot

3. Det finns ett inbyggt sätt för 1C-plattformen 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 förstår en annan 1C, vilket gör det enkelt att använda det för att utbyta mellan 1C-databaser.

String = ValueInStringInt(Value1S); //få sträng 1C från värde 1C
ValueToFile("C:\MyFile.txt", Value1C); //ett annat alternativ får vi en fil med en sparad sträng från värdet 1C
Value1C = ValueFromStringInt(String); //tillbaka från linje 1C
Value1C = ValueFromFile("C:\MyFile.txt"); //tillbaka från fil

Redigera rad 1C på formuläret

Förutom att arbeta med 1C-strängar i ett 1C-program 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 inmatning av 1C-linjen på begäran. Denna metod används vid undervisning i 1C-programmering, i livet används den mycket mindre ofta (men den används!).

Variabel = "";
String = EnterValue(Variable, "Ange fullständigt namn");

2. För att visa detaljerna för 1C-objektet (katalog / dokument) eller detaljerna i formuläret (se), används oftast inmatningsfältet. Detta är det vanligaste verktyget i 1C för användaren att arbeta med redigeringsfält.

3. Inmatningsfältets möjligheter kan utökas (se inmatningsfältets egenskaper, Högerklicka på den, för 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 möjligheter i inmatningsfältet inte räcker för dig finns det en inbyggd editor. För att lägga till det i formuläret måste du lägga till ett fält i menyn Formulär / Infoga kontroll textdokument. I dess egenskaper kan du ange läget för dess funktion - egenskapen Extension.

Ett textdokumentfält kan inte kopplas direkt till data. Det är nödvändigt att skriva följande funktion i händelsehanteraren för OnOpening()-formuläret (se ):

FormElements.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(); //ValueString här är rekvisita där vi sparar värdet

5. I 1C version 8.2.11, in hanterade formulär, dök upp ny möjlighet linjerepresentation 1C - Formaterat dokumentfält.


I likhet med fältet för ett textdokument är det nödvändigt att ställa in när du öppnar och skriver när du sparar texten själv med hjälp av programmet.

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

    //här Requisite är det tillagda attributet för 1C-objektet
    //här FormattedDocument är namnet på fältet i redigeringsformuläret
    &På server

    FormattedDocument = CurrentObject.Attributes.Get();
    Slutprocedur

  • I BeforeWriteOnServer()-funktionen eller genom att trycka på knappen, skriv texten från fältet

    &På server
    Procedur OnReadingOnServer(CurrentObject)
    CurrentObject.Attributes = NewValueStorage(FormattedDocument);
    Slutprocedur