1c 8 som strengoperasjoner. Nye funksjoner for arbeid med strenger. Formateringsfunksjon StrPattern ()

"String"-typen finnes i alle programmeringsspråk. Den er primitiv, og i 1C er det mange funksjoner for å jobbe med den. I denne artikkelen skal vi se nærmere på ulike måter å jobbe med strengtyper i 1C 8.3 og 8.2 ved hjelp av eksempler.

Linje

For å konvertere en variabel av en hvilken som helst type til en streng, er det en funksjon med samme navn "String ()". Inndataparameteren vil være selve variabelen, som strengrepresentasjonen skal oppnås.

String (False) // returnerer "Nei"
String (12345) // returnerer "12 345"
String (CurrentDate ()) // 07/21/2017 11:55:36 ″

Det er mulig å konvertere ikke bare primitive typer til en streng, men også andre, for eksempel elementer av referansebøker, dokumenter.

SocrLP, SocrL, SocrP

Inndataparametrene til disse funksjonene er en strengtypevariabel. Funksjoner fjerner ubetydelige tegn (mellomrom, vognretur og andre): fra henholdsvis venstre og høyre side, bare fra venstre side og bare fra høyre.

AbbrLP ("mellomrom på begge sider vil bli fjernet") // "mellomrom på begge sider vil bli fjernet"
Forkortet ("Mellomrom på begge sider vil bli fjernet") // "Mellemrom til venstre vil bli fjernet"
Forkortelse ("mellomrom på begge sider vil bli fjernet") // "mellomrom på høyre side vil bli fjernet"

Leo, riktig, onsdag

Disse funksjonene lar deg trimme deler av en streng. "Lion ()"-funksjonen vil returnere delen av strengen fra venstre side av den angitte lengden. "Høyre ()"-funksjonen er den samme, men beskjæringen gjøres til høyre. Funksjonen "Avg ()" lar deg spesifisere nummeret på tegnet som strengen skal velges fra og lengden på den.

Lion ("strengvariabel", 4) // returnerer "Stro"
Høyre ("strengvariabel", 7) // returnerer "variabel"
Wed ("strengvariabel", 2, 5) // returnerer "troco"

Str Lengde

Funksjonen bestemmer antall tegn som er inneholdt i strengvariabelen.

StrLength ("Word") // utførelsesresultat vil være nummer 5

Finne

Funksjonen gjør det mulig å søke etter en del av en streng i en hvilken som helst strengvariabel. Returverdien vil være et tall som viser posisjonen til begynnelsen av den funnet strengen. Hvis ingen samsvar blir funnet, returneres null.

Vær oppmerksom på at søk skiller mellom store og små bokstaver. Hvis den opprinnelige strengen inneholder mer enn én forekomst av søkedelstrengen, vil funksjonen returnere begynnelsen av den første forekomsten.

Finn ("en, to, en, to, tre", "to") // funksjonen vil returnere tallet 6

Tom linje

Ved å bruke denne funksjonen kan du finne ut om en streng er tom. Ubetydelige tegn som mellomrom, vognretur og andre ignoreres.

EmptyString ("Pupkin Vasily Ivanovich") // funksjonen vil returnere verdien False
EmptyString ("") //-funksjonen vil returnere True

VReg, NReg, Treg

Disse funksjonene er svært nyttige for å sammenligne og konvertere strengvariabler. Breg () vil returnere den opprinnelige strengen med store bokstaver, HPreg () med små bokstaver, og TPreg () vil formatere den slik at det første tegnet i hvert enkelt ord vil skrives med stor bokstav og alle etterfølgende vil være små bokstaver.

Vreg ("GENERAL DIRECTOR") // returverdi - "GENERAL DIRECTOR"
НReg ("GENERAL DIRECTOR") // returverdi - "general director"
TREG ("GENERAL DIRECTOR") // returverdi - "General Director"

Sideerstatt

Denne funksjonen er analog med erstatning i tekstredigerere. Den lar deg erstatte ett tegn eller sett med tegn med et annet i strengvariabler.

StrReplace ("rød, hvit, gul", ",", ";") // vil returnere "red; Hvit; gul"

StrNumberStrings

Funksjonen lar deg bestemme antall linjer atskilt med vognretur i en tekstvariabel.

Løkken i eksemplet nedenfor vil gå gjennom tre sirkler fordi RowNumber of Rows-funksjonen vil returnere en verdi på 3:

For ind = 1 av StrNumberStrings ("String1" + Symbols.PS + "String2" + Symbols.PS + "String3") løkke
<тело цикла>
Slutt på syklus;

StrGetString

Denne funksjonen fungerer med flerlinjers tekst på samme måte som den forrige. Den lar deg hente en bestemt streng fra en tekstvariabel.

StrGetString ("String1" + Symbols.PS + "String2" + Symbols.PS + "String3", 2) // vil returnere "String2"

StrAntall forekomster

Funksjonen teller antall forekomster av et tegn eller delstreng i søkestrengen.

Rad med vedlegg ("a; b; c; d;","";") // funksjonen vil returnere tallet 4

Symbol og symbolkode

Disse funksjonene lar deg hente et tegn etter Unicode-koden, samt bestemme denne koden ved hjelp av tegnet selv.

SymbolCode ("A") // funksjonen vil returnere tallet 1 040
SymbolCode (1040) // funksjonen vil returnere "A"

Hyppige oppgaver når du arbeider med strenger

Sammenknytte strenger

For å sette sammen flere strenger (for å utføre sammenkobling), er det tilstrekkelig å bruke addisjonsoperatoren.

"Linje 1 ″ +" Linje 2 ″ // resultatet av å legge til to linjer vil være "Linje 1 Linje 2"

Typekonvertering

For å konvertere en type til en streng, for eksempel en referanse til et ordbokelement, et tall osv., er det nok å bruke funksjonen "String ()". Funksjoner som "Abbreviation ()" vil også konvertere variabler til en streng, men umiddelbart med trunkering av ubetydelige tegn.

String (1000) // vil returnere "1000"

Vær oppmerksom på at når du konverterer et tall til en streng, la programmet automatisk til et mellomrom som skiller tusen. For å unngå dette kan du bruke følgende konstruksjoner:

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

String (Format (1000, "CHG =")) // returnerer "1000"

Sitater i en streng

Ganske ofte vil du måtte forholde deg til behovet for å spesifisere anførselstegn i en strengvariabel. Det kan enten være en forespørselstekst skrevet i konfiguratoren, eller bare en variabel. For å løse dette problemet trenger du bare å sette to anførselstegn.

Tittel = String ("Horns and Hooves LLC" - det er oss! ") // returnerer" Horns and Hooves LLC - det er oss!"

Flere linjer, linjeskift

For å lage tekst med flere linjer er det nok å legge til linjeskifttegn (Symbols.PS) til den.

MultilineText = "Første linje" + Symboler.PS + "Andre linje"

Hvordan fjerne mellomrom

For å fjerne mellomrom til høyre eller venstre, kan du bruke funksjonen "Abbreviation ()" (samt "Abbreviation ()" og "Abbreviation ()"):

StringNoSpaces = AbbreviatedLP ("Mange bokstaver") // funksjonen vil returnere verdien "Mange bokstaver"

Hvis du, etter å ha konvertert et tall til en streng, må fjerne ikke-brytende mellomrom, bruk følgende konstruksjon:

StringNoSpaces = StrReplace (String (99999), Characters.NPP, "") // returnerer "99999"

Også programmerere bruker ofte følgende konstruksjon, som lar deg fjerne eller erstatte alle mellomrom i en tekstvariabel med et annet tegn:

StringNoSpaces = StrReplace ("velkommen", "", "") // returnerer "hei"

Sammenligning av strenger med hverandre

Begrepene kan sammenlignes med det vanlige likhetstegnet. Sammenligningen skiller mellom store og små bokstaver.

"Hello" = "hei" // vil returnere False
"Hello" = "Hei" // vil returnere True
"Hei" = "Farvel" // vil returnere False

Implementert i versjon 8.3.6.1977.

Vi har utvidet settet med funksjoner for arbeid med strenger. Vi gjorde dette for å gi deg mer avanserte verktøy for å analysere strengdata. De nye funksjonene vil være praktiske og nyttige i teknologiske oppgaver med tekstanalyse. I oppgaver relatert til å analysere tekst som inneholder formaterte data. Dette kan være analysen av noen filer mottatt fra utstyret, eller for eksempel analysen av en teknologisk logg.

Alle handlinger som utfører nye funksjoner, kunne du ha utført før. Ved hjelp av mer eller mindre komplekse algoritmer skrevet i et innebygd språk. Derfor gir de nye funksjonene deg ingen fundamentalt nye muligheter. De kan imidlertid redusere kodemengden, gjøre koden enklere og lettere å forstå. Og foruten det lar de deg fremskynde utførelsen av handlinger. Fordi funksjonene implementert i plattformen fungerer, selvfølgelig, raskere enn en lignende algoritme skrevet i et innebygd språk.

Formateringsfunksjon StrPattern ()

Denne funksjonen erstatter parametere i en streng. Behovet for en slik konvertering oppstår ofte for eksempel ved visning av advarselsmeldinger. Syntaksen for denne funksjonen er som følger:

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

<Шаблон>er en streng som skal erstatte parameterrepresentasjoner.

<Значение1> , ... <Значение10>- dette er parametere (maksimalt - ti), hvis representasjoner må erstattes i strengen.

For å indikere et spesifikt sted i malen der du vil utføre substitusjon, må du bruke tokens av formen% 1, ...% 10. Antallet markører som brukes i malen og antall parametere som inneholder verdier må være det samme.

For eksempel resultatet av å utføre en slik uttalelse:

det vil være en linje:

Datafeil på linje 2 (datotype kreves)

Funksjon for arbeid med strenger StrCompare ()

Denne funksjonen sammenligner to strenger på en måte som ikke skiller mellom store og små bokstaver. For eksempel slik:

Du kunne ha utført den samme handlingen tidligere ved å bruke verdisammenligningsobjektet:

Men å bruke den nye funksjonen ser enklere ut. Dessuten fungerer funksjonen, i motsetning til Comparison of Values-objektet, både i tynnklienten og i webklienten.

Funksjoner for arbeid med strenger RowStart With (), RREend With ()

Disse funksjonene bestemmer om en streng begynner med en spesifisert delstreng eller slutter med en spesifisert delstreng. Algoritmen til disse funksjonene er ikke vanskelig å implementere i det innebygde språket, men deres tilstedeværelse lar deg skrive renere og mer forståelig kode. Og de jobber raskere.

For eksempel er det praktisk å bruke dem i operatøren hvis:

Funksjoner for arbeid med strenger StrSplit (), StrConnect ()

Disse funksjonene deler strengen i deler i henhold til den angitte skilletegn. Eller omvendt, de kombinerer flere linjer til én, og setter inn den valgte skillelinjen mellom dem. De er praktiske for å lage eller analysere logger, teknologiske logger. For eksempel kan du enkelt demontere en registrering av en teknologisk logg i deler som er egnet for videre analyse:

Funksjon for arbeid med strenger StrFind ()

I stedet for den gamle Finn-funksjonen () har vi implementert en ny funksjon som har flere funksjoner:

  • Søk i forskjellige retninger (fra begynnelsen, fra slutten);
  • Søk fra en spesifisert posisjon;
  • Søk etter en forekomst med det angitte nummeret (andre, tredje osv.).

Faktisk dupliserer den egenskapene til den gamle funksjonen. Dette gjøres for å opprettholde kompatibilitet med moduler kompilert i eldre versjoner. Vi anbefaler at du ikke lenger bruker den gamle Finn ()-funksjonen.

Nedenfor er et eksempel som bruker de nye søkemulighetene. Bakoversøk er nyttige når du trenger den siste delen av en formalisert streng, for eksempel det fullstendige filnavnet i en URL. Og å søke fra en spesifisert posisjon hjelper i tilfeller der du trenger å søke i et kjent fragment, og ikke i hele strengen.

DEL 1. METODER (26).

1.1. Grunnleggende metoder (10). Uavhengig, bygget på sine egne enkle algoritmer.

Str_Complete () (høyre-venstre komplement med de angitte tegnene).

Str_Inverse () (inversjon - tegn fra høyre til venstre).

Str_Codes () (tegnkoder gjennom "," og en matrise med koder)

Str_Symbols () (en streng fra koder til "," eller fra en matrise med koder)

Str_ReplaceCharacters () (erstatt noen tegn med andre).

String_FromArray () (streng fra en rekke fragmenter atskilt med en separator)

Str_FindVx () (søk etter en understreng (inkludert til høyre) med det angitte oppføringsnummeret).

Str_FindGr () (Søk etter en gruppe tegn inkludert i det angitte tegnsettet)

Str_FindNumber () (Søk etter et nummer, inkludert til høyre med det angitte oppføringsnummeret)

Str_Interpret () (i en matrise, i henhold til den etablerte syntaksen)

1.2. Deriverte metoder (12). Faktisk er dette bruken av fire generaliserte metoder-algoritmer (se del 2)

Str_Number () (fra begynnelsen og slutten av linjen, ikke "vær redd" for ikke-numeriske tegn.

Str_Find () (søk etter en understreng (inkludert ufølsom for store og små bokstaver og til høyre) med det angitte oppføringsnummeret).

Str_Replace () (søk (inkludert ufølsom for store og små bokstaver og til høyre), og erstatt separator-delstrenger).

Str_Part () (et stykke streng mellom de angitte forekomstene av skilletegnet (venstre eller høyre)).

Str_ReplacePiece () (erstatter "stykket" i den originale strengen med den angitte strengen).

Str_BArray () (mellom de spesifiserte forekomstene av separatoren (inkludert til høyre og uten store og små bokstaver).

Str_WrapBySyllables () (delt i understrenger "Hard", med bindestrek).

Str_WrapByWords () (delt i understrenger "Softly")

Str_Cut () ("Kutt" i delstrenger med spesifiserte lengder)

Str_SokrL () (erstatt den venstre gruppen av "forkortede" tegn med "erstatningsstreng"

Str_Screw () (erstatt den høyre gruppen av "forkortede" tegn med "erstatningsstreng"

Str_CarS () (erstatt i midten av gruppen av "forkortede" tegn med "erstatningsstreng"

Str_Expand (utvid til spesifisert lengde ved å øke antall spesifiserte tegn)

1.3. Detaljerte metoder (3). "Disseksjon" av en rad med overføring til en tabell med detaljert informasjon.

Str_vTableIn () (inn i tabellen i henhold til systemet med nestede skilletegn).

Page_inTableGr (inn i en tabell i henhold til et flernivåfilter).

Page_inTableNumbers (i en tabell med tall og fragmenter mellom dem).

DEL 2. GENERALISEREDE ALGORITMMETODER (3).

Str_Entry () ("Finn" og "Erstatt"-metoder).

Str_Fragments () (metoder "Piece", "ReplacePiece", "BArray", "inTableVx").

Str_Socr () (metoder "Forkortet", "Forkortet", "Forkortet", "Utvid".

Str_Split () (metoder "MoveBySyllables", "MoveByWords", "Cut").

DEL 3. UNIVERSELL FUNKSJON.

Det er et slags betinget programmeringsgrensesnitt som tillater

bruke flere metoder på en streng samtidig. Implementert som

funksjoner med syv parametere ("Demo" er bygget på denne funksjonen):

Side_ (Methods, Submethods, Input, Param1, Param2, Length_Number_Position, AdditionalOutput)

Alternativer:

- "Metoder" - flere "kombinert" og (eller) én "eksklusiv" metode

(koder eller navn på ett tegn, du kan bruke ","")

- "Undermetoder" - flere "kombinert" og (eller) "eksklusive" alternativer

"Eksklusiv" metode (koder eller navn på ett tegn);

- "Input" - streng, eller matrise eller tabell med verdier;

- "Param1" - søkestreng, erstatninger, separatorer, filtre;

- "Param2" - erstatningsstreng eller -symboler;

- "Lengths_Numbers_Positions" -Tall, tall gjennom en skilletegn eller en matrise med tall;

- "Ekstra utgang" - Tall eller streng eller matrise eller verditabell;

Navn og (eller) etttegnskoder for metoder-undermetoder, samt tall i

(Length_Number_Position) kan være i et hvilket som helst register og separert

noen av følgende skilletegn: ",:;".

DEL 4. NOEN EKSEMPLER.

YesNumberInString = (String_FindNumber (InString)<>Udefinert);

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

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

There areSpecifiedSigns = (Str_NnaytGr (VxStr, "+ til rogYu.0p9")> 0);

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

DEL 5. KONKLUSJON.

Der det var mulig klarte jeg meg med ett pass langs linjen. Den andre passeringen - vanligvis allerede i fragmenter. Brukte ikke den innebygde funksjonen StrNumber of Occurrences ().

Innebygde funksjoner som brukes: Løve (), Høyre () Gjennomsnittlig (), StrLength ()

- (plassering og få en del av strengen - må være "rask").

Det er få mekanismer for å jobbe med strenger i 1C-spørringer. Først kan linjene legges til. For det andre kan du ta en delstreng fra en streng. For det tredje kan strenger sammenlignes, inkludert etter mønster. Det er sannsynligvis alt du kan gjøre med strenger.

Sammenkobling av strenger

For å legge til strenger i en spørring, brukes "+"-operasjonen. Kun linjer med begrenset lengde kan brettes.

VELG "Navn:" + Motparter. Navn AS Column1 FRA Directory. Motparter AS Motparter WHERE Motparter. Link = & Link

Substring funksjon

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

Analog av funksjonen Environment () fra objektmodellen. Substring ()-funksjonen kan brukes på data av en strengtype og lar deg velge et fragment <Строки> starter med tegnnummeret <НачальнаяПозиция> (tegn i strengen er nummerert fra 1) og lengde <Длина> tegn. Resultatet av å evaluere funksjonen har en strengtype med variabel lengde, og lengden vil anses som ubegrenset hvis <Строка> har ubegrenset lengde og parameter <Длина> er ikke konstant eller overstiger 1024.

Hvis lengden på strengen er mindre enn den som er spesifisert i den andre parameteren, vil funksjonen returnere en tom streng.

Merk følgende! Det anbefales ikke å bruke SUBSTRING ()-funksjonen til å konvertere strenger med ubegrenset lengde til strenger med begrenset lengde. Det er bedre å bruke en cast-operasjon som EXPRESS () i stedet.

Funksjon som

Hvis vi må sørge for at et strengattributt oppfyller visse kriterier, sammenligner vi det:

VELG Motparter. Navn AS Kolonne1 FRA Katalog Motparter AS Motparter HVOR Motparter Navn = "Gazprom"

Men hva om du vil ha en vanskeligere sammenligning? Ikke bare likhet eller ulikhet, men som et bestemt mønster? Det er nettopp dette funksjonen LIKE er laget for.

LIKE - Operator for å sjekke en streng som et mønster. Analog av LIKE i SQL.

LIKE-operatoren lar deg sammenligne verdien av uttrykket som er spesifisert til venstre for det med malstrengen som er spesifisert til høyre. Uttrykksverdien må være av typen streng. Hvis uttrykksverdien samsvarer med mønsteret, vil operatoren resultere i TRUE, ellers - FALSE.

Følgende tegn i malstrengen er tjenestetegn og har en annen betydning enn strengtegnet:

  • % (prosent): en sekvens som inneholder et hvilket som helst antall vilkårlige tegn;
  • _ (understrek): ett vilkårlig tegn;
  • […] (Ett eller flere tegn i hakeparenteser): ethvert enkelt tegn oppført i hakeparenteser. Oppregningen kan inneholde områder, for eksempel a-z, som betyr et vilkårlig tegn inkludert i området, inkludert endene av området;
  • [^...] (i hakeparentes et negasjonstegn etterfulgt av ett eller flere tegn): ethvert enkelt tegn annet enn de som er oppført etter negasjonstegnet.

Ethvert annet symbol betyr seg selv og har ingen ekstra betydning. Hvis det er nødvendig å skrive et av de oppførte tegnene som seg selv, må det innledes med<Спецсимвол>... Meg selv<Спецсимвол>(hvilket som helst passende tegn) er definert i den samme setningen etter nøkkelordet SPECIAL CHARACTER.

De grunnleggende funksjonene til et programmeringsspråk inkluderer vanligvis arbeid med tall og strenger. Vanligvis er disse funksjonene hardkodet inn i kompilatorkoden (eller "base"-klassene til programmeringsspråket er implementert).

I 1C er muligheten til å jobbe med strenger programmert i selve plattformen. I dag vil vi vurdere funksjonene ved å jobbe med 1C-strenger i programmer i det innebygde 1C-språket.

Verdien av linje 1C

1. La oss starte med det enkleste. Å lage en variabel og tilordne en konstant strengverdi til den ser slik ut i 1C:

Variabel = "Hei verden!";

Hvis du trenger å spesifisere et anførselstegn i en konstant strengverdi 1C, må du doble det ""

Variable = "Hei," "verden" "!";

2. Linjeskift 1C kan angis på to måter samtidig. Den første bruker symbolet |

Variabel = "Hei,
| fred! ";

Den andre er å bruke symbolsystemet. Den lar deg legge til både 1C-linjeskift og andre tegn som ikke kan skrives ut, for eksempel TAB.

Variabel = "Hei" + Symboler.PS + "verden!";

3. Konfigurasjoner i 1C kan utvikles ikke bare for ett språk (russisk, engelsk eller et annet) - men samtidig for flere språk. I dette tilfellet velges språket som brukes for øyeblikket nederst i 1C-vinduet.

Listen over språk er i konfigurasjonsvinduet i General / Languages-grenen. Hvert språk har en kort identifikator som f.eks ru eller eng.

Det er klart at når man programmerer en slik konfigurasjon, kan 1C-linjer også være flerspråklige. For å gjøre dette er det mulig å lage en slik 1C-linje ved å spesifisere gjennom; alternativer etter språkidentifikator:

Variable = "ru =" "Hei, verden!" "; En =" "Hei, verden!" "";

Hvis du bruker 1C-linjen dannet på denne måten som vanlig, vil det være det som er skrevet i den. For at systemet skal dele det opp i to alternativer og bruke ønsket, må du bruke HStr () funksjonen:

// korrigere for tospråklige konfigurasjoner
Rapport (НStr (variabel));

Rekvisitter med line type 1C

Et krav er et 1C-referanse-/dokumentfelt. Den skiller seg fra en variabel i et 1C-program ved at dens type (nummer, 1C-streng, etc.) er presist angitt for et attributt. Hvis du trenger å friske opp hva rekvisitter er - se leksjonen om.

Hvis du spesifiserer typen attributt - linje 1C, må du i tillegg spesifisere parametrene.

1C-strenger har ubegrenset lengde (spesifisert som lengde = 0) og begrenset lengde, noe som indikerer nøyaktig antall tegn. 1C-rader med ubegrenset lengde lagres i en separat SQL-tabell, så bruken av dem er mindre produktiv enn begrenset.

Det er derfor bruken av 1C-strenger med ubegrenset lengde har sine egne begrensninger - det er ikke mulig å bruke dem overalt. Den kan for eksempel ikke brukes som dokumentnummer, katalogkode, dimensjon.

Arbeid med 1C-strenger

Det er flere innebygde funksjoner i 1C-plattformen for arbeid med strenger.

  • SocrLP ("Utrolig, men sant!")
    Fjerner ekstra mellomrom fra linje 1C. Den kan også brukes til å konvertere alle typer til 1C-strenger (for eksempel tall).
  • Variabel = "Vasya" + SokrLP ("pluss") + "Olya"; // vil være "Vasya pluss Olya"
    Et eksempel på summering av flere 1C-strengverdier. Resultatet blir en linje med 1C.
  • Variabel = Leo ("Musikk", 2); // vil være "Mu"
    Variabel = onsdag ("Musikk", 2, 2); // vil være "shl"
    Variabel = Høyre ("Musikk", 2); // vil være "ka"
    Ulike alternativer for å hente en delstreng fra en 1C-streng.
  • Variabel = Finn ("Musikk", "Shl"); // blir 3
    Søk etter en understreng i streng 1C, med start fra tegn 1.
  • Variabel = StrLength ("Musikk"); // blir 6
    Returnerer antall tegn i linje 1C.
  • Rapporter ("Hei") // i meldingsvinduet nederst i 1C-vinduet
    Advarsel ("Hei") // popup-dialog
    Oppgi ("Hei") // i statusvisningslinjen nederst til venstre
    .

Støpe gjenstander til linje 1C

Som du vet, er det mest populære formatet for utveksling av strukturert informasjon for øyeblikket XML. Selv den nyeste versjonen av MS Office Word og Excel lagrer filer i dette formatet (henholdsvis docx og xlsx, endre utvidelsen til zip, åpne i arkivet).

1C-plattformen for datautveksling gir flere alternativer, hvorav den viktigste også er XML.

1. Den enkleste metoden er å bruke funksjonen Abbreviation () eller String (). I spørringsteksten kan du bruke REPRESENTATION ()-funksjonen. Resultatet av handlingen deres er det samme - de genererer en strengrepresentasjon av et hvilket som helst 1C-objekt for brukeren.

For en oppslagsbok vil dette være navnet som standard. For et dokument - navnet på dokumentet, nummer og dato.

2. Ethvert 1C-objekt (med restriksjoner) kan konverteres til XML og omvendt. Konverteringsprosessen kalles serialisering.

ViewStringXml = XMLString (Verdi); // få XML fra 1C-verdi
Value1C = XMLValue (Type ("ReferenceLink.Nomenclature"), ViewStringXml); // få 1C-verdien fra XML-strengen, må du spesifisere 1C-typen som skal mottas

3. Det er en måte for 1C-plattformen å konvertere et hvilket som helst 1C-objekt til en streng. Han migrerte fra versjon 1C 7.7. Dette formatet forstås ikke av andre programmer, men det forstås av en annen 1C, noe som gjør det enkelt å bruke det for utveksling mellom 1C-baser.

String = ValueVSStringInter (Value1C); // få linje 1C fra verdi 1C
ValueVFile ("C: \ MyFile.txt", Verdi1C); // et annet alternativ, vi får en fil med en lagret streng fra 1C-verdien
Value1C = ValueFromStringInternal (String); // tilbake fra linje 1C
Value1C = ValueOfFile ("C: \ MyFile.txt"); // tilbake fra fil

Redigering av 1C-linjer på skjemaet

I tillegg til å jobbe med 1C-strenger i et 1C-program, vil jeg selvfølgelig at brukeren skal kunne redigere dem. Det er flere muligheter for dette:

1. Den enkleste måten er å be om inndata av 1C-linjen på forespørsel. Denne metoden brukes når du lærer 1C-programmering, i det virkelige liv brukes den mye sjeldnere (men den brukes!).

Variabel = "";
String = EnterValue (Variabel, "Skriv inn ditt fulle navn");

2. For å vise attributtet til 1C-objektet (referansebok / dokument) eller attributtet til skjemaet (se), brukes inntastingsfeltet oftest. Dette er det vanligste verktøyet i 1C for brukerarbeid med redigeringsfelt.

3. Mulighetene for inndatafeltet kan utvides (se egenskapene til inndatafeltet, høyreklikk på det, for mer detaljer):

  • Merk av for redigeringsmodus for flere linjer
  • Avmerkingsboks Avansert redigering (tilgjengelig hvis forrige avmerkingsboks er merket av)
  • Avmerkingsboks Passordmodus (se).

4. Hvis alle mulighetene i inntastingsfeltet ikke er nok for deg, er det en innebygd editor. For å legge det til i skjemaet, må du legge til et tekstdokumentfelt i Skjema / Sett inn kontroll-menyen. I egenskapene kan du spesifisere driftsmodusen - utvidelsesegenskapen.

Et tekstdokumentfelt kan ikke kobles direkte til data. Det er nødvendig å skrive en funksjon i OnOpening () hendelsesbehandler av skjemaet (se):

FormElements.ElementNameTextDocumentField.SetText (ValueString); // her er ValueString teksten hentet for eksempel fra rekvisittene

Og i lagrebehandleren - for eksempel i Lagre-knappen - legg til en lagring:

ValueString = FormElements.ElementNameTextDocumentField.GetText (); // Verdi Strengen her er rekvisittene der vi lagrer verdien

5. I 1C versjon 8.2.11, i administrerte skjemaer, er det en ny mulighet til å representere 1C-linjen - Formatert dokument-feltet.


I likhet med feltet til et tekstdokument, er det nødvendig å stille inn når du åpner og skriver når du lagrer teksten selv ved hjelp av programmet.

  • I 1C-objektet, formen vi lager (referansebok, dokument, behandling, etc.) - legg til et attributt med lagringstypen
  • I funksjonen ReadOnServer () setter du teksten fra rekvisittene

    // her er Props egenskapen til 1C-objektet
    // her FormattedDocument er navnet på feltet på skjemaet som skal redigeres
    &På server

    FormattedDocument = CurrentObject.Props.Get ();
    Slutt på prosedyre

  • I funksjonen BeforeWriteOnServer () eller ved knappen skriver du teksten fra feltet

    &På server
    Prosedyre for ReadingOnServer (CurrentObject)
    CurrentObject.Props = NewValueStore (FormattedDocument);
    Slutt på prosedyre