1s 8.2 zaporedna številka znaka v vrstici. Nove funkcije za delo z nizi. Funkcija oblikovanja StrTemplate()

1. DEL. METODE (26).

1.1. Osnovne metode (10). Neodvisni, zgrajeni na lastnih preprostih algoritmih.

Page_Add() (seštevanje desno-levo z določenimi znaki).

Page_Inverse () (inverzija - znaki od desne proti levi).

Page_Codes() (kode znakov do ”,” in niz s kodami)

Page_Characters() (niz kod, ločenih z »,« ali iz niza s kodami)

Page_ReplaceSymbols() (zamenjava nekaterih znakov z drugimi).

String_FromArray() (niz iz niza fragmentov, ločenih z ločilom)

Page_FindIn() (iskanje podniza (tudi na desni) z določeno številko pojavitve).

Page_FindGr() (iskanje skupine znakov, vključenih v podani nabor znakov)

Page_FindNumber() (Poiščite številko, vključno z desno z določeno številko dogodki)

Page_Interpret() (v matriko, v skladu z ustaljeno sintakso)

1.2. Metode izpeljave (12). Pravzaprav je to uporaba štirih generaliziranih metod algoritmov (glej 2. del)

Page_Number() (od začetka in od konca vrstice, ne bojte se neštevilskih znakov.

Page_Find() (iskanje podniza (vključno z velikimi in malimi črkami in desno) z določeno številko pojavitve).

Page_Replace() (iskanje (vključno z velikimi in malimi črkami in desničarji) in zamenjava podnizov ločil).

String_Piece() (delček niza med podanimi pojavitvami ločila (levo ali desno)).

Page_ReplacePiece() (zamenja »kos« v izvornem nizu z navedenim nizom).

Page_ВArray() (med podanimi pojavitvami ločila (vključno s tistimi na desni in brez velikih in malih črk).

Page_TransferBySyllables() (razdeljeno na podnize “Hardly”, z vezajem).

Page_MoveByWords() (razdeljen na podnize »mehko«)

Page_Cut() (»Razreži« v podnize določenih dolžin)

Str_Shorten() (zamenjaj levo skupino "skrajšanih" znakov z "nadomestnim nizom"

Page_Abbreviation() (zamenjajte desno skupino "zmanjšanih" znakov z "nadomestnim nizom"

Str_ShortenS() (zamenjaj na sredini skupine "skrajšanih" znakov z "nadomestnim nizom"

Page_Extend (razširitev na določeno dolžino s povečanjem števila določenih znakov)

1.3. Podrobne metode (3). "Seciranje" črte s prenosom v tabelo s podrobnimi informacijami.

Page_vTableIn() (v tabelo po sistemu ugnezdenih ločil).

Page_vTableGr (v tabelo glede na večnivojski filter).

Page_inTableNumbers (v tabeli s številkami in fragmenti med njimi).

2. DEL. POSPLOŠČENE METODE-ALGORIMI (3).

Page_Occurrence() (metodi »Najdi« in »Zamenjaj«).

Page_Fragments() (metode »Piece«, »ReplacePiece«, »InArray«, »inTableIn«).

Page_Abcr() (metode "AbcrL", "AbcrP", "AbcrS", "Razširi".

Page_Split() (metode »Premakni po zlogih«, »Premakni po besedah«, »Izreži«).

3. DEL. UNIVERZALNA FUNKCIJA.

To je nekakšen pogojni programski vmesnik, ki omogoča

uporabite več metod za niz hkrati. Izvaja se kot

funkcije s sedmimi parametri ("Demo" je zgrajen na tej funkciji):

Stran_(Metode, Podmetode, Vnos, Param1, Param2, Length_Number_Position, Dodatni izhod)

Opcije:

- "Metode" - več "kombiniranih" in (ali) ena "izključna" metoda

(enomestne kode ali imena, možno prek ",")

- "Podmetode" - več "kombiniranih" in (ali) "ekskluzivnih" možnosti

»ekskluzivna« metoda (enomestne kode ali imena);

- “Vnos” - Niz ali Matrika ali Tabela vrednosti;

- “Param1” - iskalni niz, zamenjave, ločila, filtri;

- “Param2” - nadomestni niz ali znaki;

- “Length_Number_Position” - Število, Številke skozi ločilo ali niz s Številkami;

- “Dodatni izhod” - število ali niz ali niz ali tabela vrednosti;

Imena in/ali enomestne kode podmetod ter številke v

(Length_Number_Position) je lahko v vsakem primeru in ločeno

katerega koli od naslednjih ločil: ”, :;”.

4. DEL NEKAJ PRIMEROV.

There areNumbersInLine=(Str_FindNumber(InLine)<>Nedoločeno);

V vrstici so številke = (String_FindGr(Inline,"+0123456789")>0);

Obstaja latinica = (Str_FindGr(InStr, Str_Interpret("lL"))>0);

Obstajajo določeni znaki = (Str_NfindGr(VxStr, "+to rogYu.0p9")>0);

IsNotPrinted=(Str_FindGr(InxStr, Line_Interpret("-l-L-r-R-P-Z-C"))>0);

DEL 5. ZAKLJUČEK.

Kjer je bilo mogoče, sem se zadovoljil z enim prehodom ob črti. Drugi prehod je običajno v fragmentih. Nisem uporabil vgrajene funkcije StrNumberOccurrences().

Uporabljajo se vgrajene funkcije: Left(), Right(), Middle(), StrLength()

- (pozicioniranje in pridobivanje dela črte mora biti “hitro”).

Obstaja nekaj mehanizmov za delo z nizi v poizvedbah 1C. Najprej je mogoče dodati vrstice. Drugič, lahko vzamete podniz iz niza. Tretjič, strune je mogoče primerjati, tudi po vzorcu. To je verjetno vse, kar je mogoče narediti s strunami.

Dodajanje nizov

Za dodajanje vrstic v poizvedbo se uporablja operacija “+”. Dodate lahko samo nize omejene dolžine.

IZBERITE "Ime: " + Nasprotne stranke. Ime AS Stolpec 1 FROM Imenik. Nasprotne stranke AS Nasprotne stranke WHERE Nasprotne stranke. Povezava = &Povezava

Funkcija podniza

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

Analog funkcije Environment() iz objektnega modela. Funkcijo Substring() je mogoče uporabiti za podatke niza in omogoča izbiro fragmenta <Строки> , začenši s številko znaka <НачальнаяПозиция> (znaki v vrstici so oštevilčeni od 1) in dolžino <Длина> znakov. Rezultat izračuna funkcije ima vrsto niza spremenljive dolžine in dolžina se bo štela za neomejeno, če <Строка> ima neomejeno dolžino in parameter <Длина> ni konstanta ali večja od 1024.

Če je dolžina niza manjša od podane v drugem parametru, bo funkcija vrnila prazen niz.

Pozor! Uporaba funkcije SUBSTRING() za pretvorbo nizov neomejene dolžine v nize omejene dolžine ni priporočljiva. Namesto tega je bolje uporabiti cast operator EXPRESS().

Funkcija Podobna

Če se moramo prepričati, da atribut niza izpolnjuje določene kriterije, ga primerjamo:

IZBERITE Nasprotne stranke. Ime AS Stolpec 1 FROM Imenik. Nasprotne stranke AS Nasprotne stranke WHERE Nasprotne stranke. Ime = "Gazprom"

Kaj pa, če potrebujete bolj subtilno primerjavo? Ne samo enakost ali neenakost, ampak podobnost z določenim vzorcem? Prav za to je bila ustvarjena funkcija SIMILAR.

LIKE — Operator za preverjanje podobnosti niza z vzorcem. Analog LIKE v SQL.

Operator SIMILAR vam omogoča, da primerjate vrednost izraza, podanega levo od njega, z vzorčnim nizom, podanim desno. Vrednost izraza mora biti vrste niz. Če se vrednost izraza ujema z vzorcem, bo rezultat operatorja TRUE, sicer pa FALSE.

Naslednji znaki v nizu predloge so službeni znaki in imajo drugačen pomen od znaka niza:

  • % (odstotki): zaporedje, ki vsebuje poljubno število poljubnih znakov;
  • _ (podčrtaj): en poljuben znak;
  • […] (V oglati oklepaji en ali več znakov): vsak posamezen znak, naveden v oglatih oklepajih. Naštevanje lahko vsebuje obsege, na primer a-z, kar pomeni poljuben znak, vključen v obseg, vključno s konci obsega;
  • [^...] (v oglatih oklepajih znak za zanikanje, ki mu sledi en ali več znakov): kateri koli posamezen znak, razen tistih, navedenih za znakom za zanikanje.

Vsak drug simbol pomeni samega sebe in ne nosi nobene dodatne obremenitve. Če je treba enega od navedenih znakov zapisati kot samega sebe, mora biti pred njim znak<Спецсимвол>. sebe<Спецсимвол>(poljubni ustrezen simbol) je definiran v istem stavku po ključna beseda POSEBNI SIMBOL.

Vrsto String najdemo v vseh programskih jezikih. Je primitiven in v 1C obstaja veliko funkcij za delo z njim. V tem članku si bomo podrobneje ogledali različne načine delo s tipi nizov v 1C 8.3 in 8.2 z uporabo primerov.

Linija

Za pretvorbo spremenljivke katere koli vrste v niz obstaja funkcija z istim imenom "String()". Vhodni parameter bo sama spremenljivka, katere predstavitev niza je treba pridobiti.

String(False) // vrne "Ne"
String(12345) // vrne "12.345"
Niz(TrenutniDatum()) //"21.7.2017 11:55:36"

V niz je mogoče pretvoriti ne samo primitivne vrste, ampak tudi druge, na primer elemente imenikov in dokumentov.

SokrLP, SokrL, SokrP

Vhodni parametri teh funkcij so spremenljivke vrste niz. Funkcije odstranijo nepomembne znake (presledke, vrnitev v prvi vrstico itd.): z leve in desne strani, samo z leve strani in samo z desne.

Okrajšava(" Presledki bodo odstranjeni na obeh straneh ") // "Presledki bodo odstranjeni na obeh straneh"
Okrajšava (" Presledki na obeh straneh bodo odstranjeni ") // " Presledki na levi bodo odstranjeni "
Okrajšava (" Presledki na obeh straneh bodo odstranjeni ") // " Presledki na desni bodo odstranjeni "

Leo, desno, srednje

Te funkcije vam omogočajo, da obrežete del niza. Funkcija "Left()" bo vrnila del niza z njegove leve strani podane dolžine. Funkcija "Right()" je podobna, vendar obrezuje z desne. Funkcija “Avg()” vam omogoča, da določite število znakov, iz katerih bo izbrana vrstica, in njeno dolžino.

Lev("Spremenljivka niza", 4) // vrne "Str"
Right("Spremenljivka niza", 7) // vrne "spremenljivko"
Medium("Spremenljivka niza", 2, 5) // vrne "troco"

StrLength

Funkcija določa število znakov, ki jih vsebuje spremenljivka niza.

StrLength("Word") // rezultat izvedbe bo številka 5

Najti

Funkcija omogoča iskanje dela niza v spremenljivki niza. Povratna vrednost bo številka, ki prikazuje položaj začetka najdenega niza. Če ni ujemanja, se vrne nič.

Upoštevajte, da iskanje razlikuje med velikimi in malimi črkami. Če je v izvirnem nizu več kot ena pojavitev iskalnega podniza, bo funkcija vrnila začetek prve pojavitve.

Find("en, dva, ena, dva, tri", "dva") // funkcija bo vrnila številko 6

Prazna vrstica

Z uporabo te funkcije lahko ugotovite, ali je niz prazen. Manjši znaki, kot so presledek, povratni znak in drugi, se ne upoštevajo.

EmptyString("Pupkin Vasily Ivanovich") // funkcija bo vrnila vrednost False
EmptyString(" ") // funkcija bo vrnila vrednost True

VReg, NReg, TReg

Te funkcije so zelo uporabne pri primerjavi in ​​pretvorbi nizovnih spremenljivk. »Vreg()« bo vrnil prvotni niz z velikimi črkami, »HPreg()« z malimi črkami, »TReg()« pa ga bo oblikoval tako, da bo prvi znak vsake posamezne besede napisan z veliko začetnico, vsi naslednji znaki pa z veliko začetnico.

VReg("GENERALNI DIREKTOR") // vrnjena vrednost - "GENERALNI DIREKTOR"
NReg(“CEO DIREKTOR”) // vrnjena vrednost – “CEO”
TREG(“CEO DIRECTOR”) // vrnjena vrednost – “Generalni direktor”

PageReplace

Ta funkcija je analogna zamenjavi v urejevalniki besedil. Omogoča vam zamenjavo enega znaka ali niza znakov z drugim v spremenljivkah niza.

StrReplace("rdeča, bela, rumena", ","", ";") // vrne "rdeča; bela; rumen"

StrNumberLines

Funkcija vam omogoča, da določite število vrstic, ločenih z vrnitvami v prvi red v besedilni spremenljivki.

Zanka v spodnjem primeru bo šla skozi tri kroge, ker bo funkcija LineNumberRow vrnila vrednost 3:

Za ind = 1 po StrNumber nizov ("Line1" + Symbols.PS + "Line2" + Symbols.PS + "Line3") Cikel
<тело цикла>
EndCycle;

StrGetString

Ta funkcija deluje z večvrstičnim besedilom na enak način kot prejšnja. Omogoča vam, da iz besedilne spremenljivke pridobite določen niz.

StrGetString("Niz1" + Znaki.PS + "Niz2" + Znaki.PS + "Niz3", 2) // vrni "String2"

PageNumberOccurrences

Funkcija prešteje število pojavitev znaka ali podniza v iskalnem nizu.

StrNumberAttachments("a;b;c;d; ", ";") // funkcija bo vrnila številko 4

Simbol in koda simbola

Te funkcije vam omogočajo, da pridobite znak po njegovi kodi v kodiranju Unicode, kot tudi določite to kodo po samem znaku.

SymbolCode("A") // funkcija vrne število 1040
CharacterCode(1040) // funkcija bo vrnila "A"

Pogoste naloge pri delu z nizi

Združevanje nizov

Za združevanje več nizov (za izvedbo veriženja) zadostuje uporaba operatorja dodajanja.

“Vrstica 1″ + “Vrstica 2” //rezultat dodajanja dveh vrstic bo “Vrstica 1 Vrstica 2”

Pretvorba vrste

Za pretvorbo vrste v niz, na primer povezavo do elementa imenika, številko itd., Dovolj je, da uporabite funkcijo "String()". Funkcije, kot je »ScrLP()«, bodo prav tako pretvorile spremenljivke v niz, vendar takoj z odrezavanjem nepomembnih znakov.

String(1000) // vrne "1000"

Upoštevajte, da je program pri pretvorbi števila v niz samodejno dodal presledek med tisočicami. Da bi se temu izognili, lahko uporabite naslednje konstrukcije:

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

String(Format(1000,"HG=")) // vrne "1000"

Narekovaji v nizu

Precej pogosto se boste morali ukvarjati s potrebo po podajanju narekovajev v spremenljivki niza. To je lahko besedilo zahteve, zapisano v konfiguratorju, ali pa samo spremenljivka. Če želite rešiti to težavo, morate le postaviti dva narekovaja.

Header = String("Horns and Hooves LLC - to smo mi!") // vrne "Horns and Hooves LLC - to smo mi!"

Več vrstic, prelom vrstice

Da bi ustvarili večvrstično besedilo Dovolj je, da mu dodate prelome vrstic (Symbols.PS).

MultilineText = “Prva vrstica” + Simboli.PS + “Druga vrstica”

Kako odstraniti presledke

Če želite odstraniti presledke na desni ali levi strani, lahko uporabite funkcijo »ScrAP()« (kot tudi »ScrL()« in »ScrP()«):

StringNoSpaces = Abbreviation(" Mnogo črk ") // funkcija bo vrnila vrednost "Veliko črk"

Če morate po pretvorbi števila v niz odstraniti nelomljive presledke, uporabite naslednjo konstrukcijo:

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

Programerji pogosto uporabljajo tudi naslednjo konstrukcijo, ki vam omogoča, da odstranite ali zamenjate z drugim znakom vse presledke v besedilni spremenljivki:

StringNoSpaces = StrReplace("zdravo","") // vrne "zdravo"

Primerjava nizov med seboj

Izraze lahko primerjate z običajnim znakom enačaja. Primerjava je občutljiva na velike in male črke.

"Hello" = "hello" // vrne False
"Hello" = "Hello" // vrne True
"Pozdravljeni" = "Adijo" // bo vrnil False

Izvedeno v različici 8.3.6.1977.

Razširili smo nabor funkcij, zasnovanih za delo z nizi. To smo storili, da bi vam ponudili naprednejša orodja za razčlenjevanje podatkov nizov. Nove funkcije bodo priročne in uporabne pri tehnoloških nalogah analize besedil. Pri nalogah, povezanih z razčlenjevanjem besedila, ki vsebuje podatke v oblikovani obliki. To je lahko analiza nekaterih datotek, prejetih iz opreme, ali na primer analiza tehnološkega dnevnika.

Prej bi lahko izvajali vsa dejanja, ki izvajajo nove funkcije. Uporaba bolj ali manj zapletenih algoritmov, napisanih v vgrajenem jeziku. Zato vam nove funkcije ne dajejo bistveno novih zmogljivosti. Vendar vam omogočajo, da zmanjšate količino kode in naredite kodo enostavnejšo in bolj razumljivo. Poleg tega vam omogočajo, da pospešite izvajanje dejanj. Ker funkcije, implementirane v platformo, delujejo seveda hitreje kot podoben algoritem, napisan v vgrajenem jeziku.

Funkcija oblikovanja StrTemplate()

Ta funkcija nadomešča parametre v niz. Potreba po takšni pretvorbi se pogosto pojavi na primer pri prikazovanju opozorilnih sporočil. Sintaksa te funkcije je naslednja:

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

<Шаблон>- to je niz, v katerega morate nadomestiti predstavitve parametrov.

<Значение1> , ... <Значение10>- to so parametri (največ deset), katerih prikaze je treba vstaviti v niz.

Če želite označiti določeno mesto v predlogi, kjer želite izvesti zamenjavo, morate uporabiti oznake, kot so %1, ... %10. Število označevalcev, vključenih v predlogo, in število parametrov, ki vsebujejo vrednosti, se morata ujemati.

Na primer, rezultat izvajanja takega operatorja:

tam bo vrstica:

Podatkovna napaka v vrstici 2 (zahtevan je tip datuma)

Funkcija za delo z nizi StrCompare()

Ta funkcija primerja dva niza na način, ki ne razlikuje med velikimi in malimi črkami. Na primer takole:

Enako dejanje bi lahko izvedli prej z uporabo predmeta Primerjava vrednosti:

Vendar je uporaba nove funkcije videti lažja. In poleg tega funkcija, za razliko od objekta primerjave vrednosti, deluje tako v tankem odjemalcu kot v spletnem odjemalcu.

Funkcije za delo z nizi StrStartsWith(), StrEndsAt()

Te funkcije določajo, ali se niz začne z določenim podnizom ali ali se niz konča z navedenim podnizom. Algoritma za te funkcije ni težko implementirati v vgrajenem jeziku, vendar njihova prisotnost omogoča pisanje čistejše in bolj razumljive kode. In delujejo hitreje.

Primerni so na primer za uporabo v stavku If:

Funkcije za delo z nizi StrDivide(), StrConnect()

Te funkcije razdelijo niz na dele z uporabo določenega ločila. Ali obratno, združijo več vrstic v eno in mednje vstavijo izbrano ločilo. Primerni so za ustvarjanje ali analizo dnevnikov in tehnoloških dnevnikov. Na primer, lahko preprosto razčlenite vnos tehnološkega dnevnika na dele, primerne za nadaljnjo analizo:

Funkcija za delo z nizi StrFind()

Namesto stare funkcije Find() smo implementirali nova funkcija, ki ima dodatne funkcije:

  • Iskanje v različnih smereh (od začetka, od konca);
  • Iskanje z določenega položaja;
  • Poiščite pojav z določeno številko (drugi, tretji itd.).

Pravzaprav podvaja zmogljivosti stare funkcije. To se naredi, da se ohrani združljivost z moduli, prevedenimi v starejših različicah. Priporočljivo je, da ne uporabljate več stare funkcije Find().

Spodaj je primer uporabe novih zmožnosti iskanja. Povratno iskanje je uporabno, ko potrebujete zadnji fragment formaliziranega niza, na primer, polno ime datoteko v URL. In iskanje z določenega položaja pomaga v primerih, ko morate iskati v znanem fragmentu in ne v celotni vrstici.

TO osnovne zmogljivosti Programski jeziki običajno vključujejo delo s številkami in nizi. Običajno so te funkcije trdo kodirane v kodo prevajalnika (ali pa so implementirani »osnovni« razredi programskega jezika).

V 1C je sposobnost dela z nizi programirana v sami platformi. Danes si bomo ogledali značilnosti dela z nizi 1C v programih v vgrajenem jeziku 1C.

Vrednost vrstice 1C

1. Začnimo z najpreprostejšim. Ustvarjanje spremenljivke in ji dodelitev konstantne vrednosti niza izgleda v 1C takole:

Spremenljivka = "Pozdravljen, svet!";

Če morate podati znak narekovaja v konstantni vrednosti niza 1C, ga morate podvojiti ""

Spremenljivka = "Pozdravljen, svet"!;

2. Prelom vrstice 1C lahko določite na dva načina hkrati. Prvi je uporaba simbola |

Spremenljivka = "Pozdravljeni,
| svet! ";

Drugi je uporaba sistemskega oštevilčenja simbolov. Omogoča dodajanje prelomov vrstic 1C in drugih nenatisljivih znakov, kot je TAB.

Spremenljivka = "Pozdravljeni" + Simboli.PS + "mir!";

3. Konfiguracije v 1C je mogoče razviti ne samo za en jezik (ruski, angleški ali drug) - ampak hkrati za več jezikov. V tem primeru je trenutno uporabljeni jezik izbran na dnu okna 1C.

Seznam jezikov se nahaja v konfiguracijskem oknu v veji Splošno/Jeziki. Vsak jezik ima kratek identifikator, kot je npr ru oz inž.

Jasno je, da so lahko pri programiranju takšne konfiguracije linije 1C tudi večjezične. Če želite to narediti, je mogoče ustvariti takšno linijo 1C z določitvijo skozi; možnosti glede na jezikovni identifikator:

Spremenljivka = "ru=""Pozdravljen, svet! ""; en=""Pozdravljen, svet! """;

Če tako oblikovano linijo 1C uporabljate kot običajno, bo to tisto, kar je zapisano v njej. Da ga sistem razdeli na dve možnosti in uporabi želeno, morate uporabiti funkcijo НStr():

//pravilno za dvojezične konfiguracije
Poročilo(NSr(Spremenljivka));

Rekviziti z vrvico tipa 1C

Atribut je polje v imeniku/dokumentu 1C. Od spremenljivke v programu v jeziku 1C se razlikuje po tem, da je za atribut natančno označen njegov tip (število, niz 1C itd.). Če si morate osvežiti spomin na to, kaj je rekvizit, si oglejte lekcijo naprej.

Če določite vrsto atributa - vrstica 1C, morate dodatno določiti parametre.

Vrstice 1C so na voljo v neomejeni dolžini (označeno kot dolžina = 0) in omejeni dolžini, ki označuje natančno število znakov. Vrstice 1C neomejene dolžine so shranjene ločeno tabela SQL, zato je njihova uporaba manj produktivna kot omejena.

Zato ima uporaba nizov 1C neomejene dolžine svoje omejitve - ni jih mogoče uporabiti povsod. Na primer, ni dovoljeno kot številka dokumenta, referenčna koda ali mera.

Delo z nizi 1C

Obstaja več vgrajenih funkcij platforme 1C za delo z nizi.

  • AbbrLP ("Neverjetno, a resnično!")
    Odstrani dodatne presledke iz vrstice 1C. Lahko se uporablja tudi za pretvorbo katere koli vrste v niz 1C (na primer številke).
  • Spremenljivka = "Vasya" + AbbrLP(" plus") + "Olya"; // tam bo "Vasya plus Olya"
    Primer seštevanja več vrednosti niza 1C. Rezultat bo ena vrstica 1C.
  • Spremenljivka = Lev("Glasba", 2); //bo "Mu"
    Spremenljivka = Medium("Glasba", 2, 2); //prišlo bo do "grožnje"
    Spremenljivka = Pravice ("Glasba", 2); //bo "ka"
    Različne možnosti za pridobitev podniza iz niza 1C.
  • Spremenljivka = Find("Glasba", "zy"); // bodo 3
    Poiščite podniz v nizu 1C, začenši z znakom 1.
  • Spremenljivka = StrLength("Glasba"); // bo 6
    Vrne število znakov v vrstici 1C.
  • Poročilo("Pozdravljeni") //v oknu za sporočila na dnu okna 1C
    Opozorilo("Pozdravljeni") //pojavno pogovorno okno
    Status("Pozdravljeni") //v vrstici prikaza stanja spodaj levo
    .

Prinašanje predmetov v linijo 1C

Kot veste, je trenutno najbolj priljubljen format za izmenjavo strukturiranih informacij XML. celo Najnovejša različica GOSPA Office Word in Excel shranite datoteke v tem formatu (docx oziroma xlsx spremenite pripono v zip, odprite v arhiverju).

Platforma 1C za izmenjavo podatkov ponuja več možnosti, med katerimi je glavna tudi XML.

1. Najenostavnejša metoda je uporaba funkcije Abbreviation() ali String(). V telesu zahteve lahko uporabite funkcijo REPRESENTATION(). Rezultat njihovega delovanja je enak - za uporabnika ustvarijo predstavitev niza katerega koli predmeta 1C.

Za imenik bo to privzeto ime. Za dokument - ime dokumenta, številka in datum.

2. Vsak predmet 1C (z omejitvami) je mogoče pretvoriti v XML in obratno. Postopek pretvorbe se imenuje serializacija.

StringViewXml = XMLString(Vrednost); //pridobi XML iz vrednosti 1C
Value1C = XMLValue(Type("DirectoryLink.Nomenclature"),TypeStringXml); //pridobite vrednost 1C iz niza XML, določiti morate vrsto 1C, ki naj bo prejeta

3. Obstaja lasten način platforme 1C za pretvorbo katerega koli predmeta 1C v niz. Preselil se je iz različice 1C 7.7. Tega formata drugi programi ne razumejo, drugi 1C pa ga razumejo, kar olajša njegovo uporabo za izmenjavo med bazami podatkov 1C.

Vrstica = ValueInRowInt(Value1C); //dobi niz 1C iz vrednosti 1C
ValueVFile("C:\MyFile.txt", Value1C); //druga možnost, dobimo datoteko s shranjenim nizom iz vrednosti 1C
Value1C = ValueFromStringInt(String); //nazaj iz vrstice 1C
Value1C = ValueFile("C:\MyFile.txt"); //nazaj iz datoteke

Urejanje vrstic 1C na obrazcu

Poleg dela z nizi 1C v programu v jeziku 1C bi seveda želel, da jih uporabnik lahko ureja. Za to obstaja več možnosti:

1. Najlažji način je zahtevati vnos linije 1C na zahtevo. Ta metoda se uporablja pri poučevanju programiranja 1C, v življenju se uporablja veliko manj pogosto (vendar se uporablja!).

Spremenljivka = "";
Vrstica = EnterValue(Spremenljivka, "Vnesite polno ime");

2. Za prikaz podrobnosti predmeta 1C (imenik/dokument) ali podrobnosti obrazca (glej) se najpogosteje uporablja vnosno polje. To je najpogostejše orodje v 1C za uporabnika za delo s polji za urejanje.

3. Zmogljivosti vnosnega polja lahko razširite (glejte lastnosti vnosnega polja, desni klik na njem, več podrobnosti):

  • Potrditveno polje Večvrstični način urejanja
  • Potrditveno polje za napredno urejanje (na voljo, če je potrjeno prejšnje potrditveno polje)
  • Potrditveno polje Način gesla (glejte).

4. Če vam vse zmožnosti vnosnega polja ne zadoščajo, je na voljo vgrajeni urejevalnik. Če ga želite dodati v obrazec, morate polje dodati v kontrolni meni Obrazec/Vstavi besedilni dokument. V njegovih lastnostih lahko določite način delovanja – lastnost Razširitev.

Polja besedilnega dokumenta ni mogoče neposredno povezati s podatki. V obrazcu za obravnavo dogodkov OnOpen() je treba napisati funkcijo (glejte):

Elementi obrazca.ElementNameTextDocumentField.SetText(StringValue); //tukaj je ValueString besedilo, prejeto na primer iz atributa

In v upravljalniku shranjevanja - na primer v gumbu Shrani - dodajte shranjevanje:

ValueString = FormElements.ElementNameTextDocumentField.GetText(); //VrednostTukajšnja vrstica je atribut, kamor shranimo vrednost

5. V različici 1C 8.2.11, v kontrolirane oblike, pojavil nova priložnost Predstavitev črte 1C – Formatirano polje dokumenta.


Podobno kot polje besedilnega dokumenta ga morate nastaviti ob odpiranju in zapisati, ko ga sami shranjujete s programom.

  • V objektu 1C, katerega obrazec ustvarjamo (imenik, dokument, obdelava itd.) - dodajte atribut s tipom Shranjevanje vrednosti
  • V funkciji OnReadOnServer() nastavimo besedilo iz atributa

    //tukaj je atribut dodan atribut predmeta 1C
    //tukaj je FormattedDocument ime polja na obrazcu za urejanje
    &Na strežniku

    FormattedDocument = CurrentObject.Attributes.Get();
    Konec postopka

  • V funkciji BeforeWritingOnServer() ali z gumbom bomo napisali besedilo iz polja

    &Na strežniku
    Postopek pri branju na strežniku (trenutni objekt)
    CurrentObject.Props = NewValueStorage(FormattedDocument);
    Konec postopka