1c 8.2 poradové číslo znaku v reťazci. Nové funkcie pre prácu s reťazcami. Funkcia formátovania StrTemplate()

ČASŤ 1. METÓDY (26).

1.1. Základné metódy (10). Nezávislé, postavené na ich jednoduchých algoritmoch.

Str_Complete() (pravo-ľavý výplň so špecifikovanými znakmi).

Str_Inverse () (inverzia - znaky sprava doľava).

Str_Codes() (kódy znakov cez „,“ a pole s kódmi)

Str_Symbols() (reťazec z kódov oddelených ”,” alebo z poľa s kódmi)

Str_ReplaceCharacters() (nahradenie jedného znaku iným).

Str_FromArray() (reťazec z poľa fragmentov oddelených oddeľovačom)

Str_FindIn() (hľadá podreťazec (aj vpravo) so zadaným číslom položky).

Str_FindGr() (Vyhľadanie skupiny znakov zahrnutých v zadanej znakovej sade)

Str_FindNumber() (Vyhľadajte číslo, vrátane čísla vpravo so zadaným číslom výskytu)

Str_Interpret() (do poľa podľa zavedenej syntaxe)

1.2. Odvodené metódy (12). V skutočnosti ide o použitie štyroch zovšeobecnených metód-algoritmov (pozri časť 2)

Str_Number() (od začiatku a od konca reťazca, "nebojte sa" nečíslicových znakov.

Str_Find() (hľadá podreťazec (vrátane nerozlišovania veľkých a malých písmen a vpravo) so zadaným číslom položky).

Str_Replace() (vyhľadávanie (vrátane bez rozlišovania malých a veľkých písmen a vpravo) a nahradenie podreťazcov oddeľovačov).

Str_Piece() (kúsok reťazca medzi určenými výskytmi oddeľovača (vľavo alebo vpravo)).

Str_ReplacePiece() (náhrada v zdrojovom reťazci "kus" za zadaný reťazec).

Str_VArray() (medzi určenými výskytmi oddeľovača (vrátane vpravo a bez malých a veľkých písmen).

Str_MoveBySyllables() (rozdelené na podreťazce „Hard“ so spojovníkom).

Str_MoveWords() (rozdelené na podreťazce „jemne“)

Str_Cut() („Vystrihnúť“ na podreťazce špecifikovaných dĺžok)

Str_Short() (nahradiť ľavú skupinu „redukovaných“ znakov „náhradným reťazcom“

Str_Short() (nahradiť pravú skupinu „redukovaných“ znakov „náhradným reťazcom“

Str_Short() (nahradiť uprostred skupiny „redukovaných“ znakov „náhradným reťazcom“

Str_Expand (rozšírenie na špecifikovanú dĺžku zvýšením počtu špecifikovaných znakov)

1.3. Podrobné metódy (3). "Príprava" linky s prenosom na tabuľku s podrobnými informáciami.

Str_inTableIn() (do tabuľky podľa systému vnorených oddeľovačov).

Str_inTableGroup (do tabuľky podľa viacúrovňového filtra).

Str_inTableNumbers (do tabuľky s číslami a fragmentmi medzi nimi).

ČASŤ 2. VŠEOBECNÉ METÓDY-ALGORIMY (3).

Str_Entry() (metódy „Nájsť“ a „Nahradiť“).

Str_Fragments() (metódy „Piece“, „ReplacePiece“, „ToArray“, „ToTableIn“).

Str_Short() (metódy "Short", "ShortP", "Short", "Expand".

Str_Split() (metódy „Posunúť po slabikách“, „Posunúť podľa slov“, „Vystrihnúť“).

ČASŤ 3. UNIVERZÁLNA FUNKCIA.

Je to druh podmieneného programovacieho rozhrania, ktoré umožňuje

použiť niekoľko metód na reťazec naraz. Realizované ako

funkcie so siedmimi parametrami ("Demo" je postavené na tejto funkcii):

Str_(Metódy, Podmetódy, Vstup, Param1, Param2, Dĺžka_číslo_pozície, ĎalšíOutput)

Možnosti:

- „Metódy“ - niekoľko „kombinovaných“ a (alebo) jedna „exkluzívna“ metóda

(jednoznakové kódy alebo mená, možné cez ",")

- "Podmetódy" - niekoľko "kombinovateľných" a (alebo) "exkluzívnych" možností

„výlučná“ metóda (jednoznakové kódy alebo názvy);

- „Vstup“ - Reťazec, pole alebo tabuľka hodnôt;

- „Param1“ - vyhľadávací reťazec, substitúcie, oddeľovače, filtre;

- „Param2“ - náhradný reťazec alebo symboly;

- "Dĺžka_číslo_pozícia" -Číslo, čísla cez oddeľovač alebo pole s číslami;

- „Exit“ – číslo alebo reťazec alebo pole alebo tabuľka hodnôt;

Názvy a (alebo) jednoznakové kódy metód-podmetód, ako aj čísla v

(Length_Position_Number) môže byť v každom prípade oddelené

ktorýkoľvek z týchto oddeľovačov: “, :;”.

ČASŤ 4. NIEKOĽKO PRÍKLADOV.

HaveNumbersINString=(Str_FindNumbers(InString)<>Nedefinované);

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

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

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

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

ČASŤ 5. ZÁVER.

Ak je to možné, zvládnuté jedným prejazdom pozdĺž čiary. Druhý prechod - zvyčajne už v fragmentoch. Nepoužili ste vstavanú funkciu StrNumberOccurrences().

Použité vstavané funkcie: Left(),Right()Mid(),StrLength()

- (umiestnenie a načítanie časti reťazca - by malo byť "rýchle").

Existuje niekoľko mechanizmov na prácu s reťazcami v dopytoch 1C. Najprv je možné pridať reťazce. Po druhé, podreťazec môže byť prevzatý z reťazca. Po tretie, reťazce možno porovnávať, a to aj podľa vzoru. To je asi tak všetko, čo môžete so šnúrkami robiť.

Pridávanie reťazcov

Operátor „+“ sa používa na pridávanie reťazcov do dotazu. Môžete pridať iba reťazce obmedzenej dĺžky.

SELECT "Názov: " + Dodávatelia.Názov AS Stĺpec 1 FROM Adresár.Dodávatelia AKO Dodávatelia WHERE Dodávatelia.Odkaz = &Odkaz

Funkcia podreťazca

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

Analóg funkcie Environment() z objektového modelu. Funkciu Substring() možno použiť na údaje typu reťazec a umožňuje vám vybrať fragment <Строки> , začínajúc číselným znakom <НачальнаяПозиция> (znaky v reťazci sú číslované od 1) a dĺžku <Длина> postavy. Výsledok vyhodnotenia funkcie má reťazec typu s premenlivou dĺžkou a dĺžka sa bude považovať za neobmedzenú, ak <Строка> má neobmedzenú dĺžku a parametre <Длина> nie je konštantná alebo väčšia ako 1024.

Ak je dĺžka reťazca menšia ako špecifikovaná v druhom parametri, funkcia vráti prázdny reťazec.

Pozor! Použitie funkcie SUBSTRING() na konverziu reťazcov neobmedzenej dĺžky na reťazce obmedzenej dĺžky sa neodporúča. Namiesto toho je lepšie použiť operátor obsadenia EXPRESS().

Funkcia podobná

Ak sa potrebujeme uistiť, že atribút string spĺňa určité kritériá, porovnáme ho:

SELECT Counterparties.Name AS Stĺpec 1 FROM Directory.Counterparties AS Counterparties WHERE Counterparties.Name = "Gazprom"

Ale čo ak je potrebné jemnejšie porovnanie? Nielen pre rovnosť alebo nerovnosť, ale pre podobnosť s určitým vzorom? Presne na to bola vytvorená funkcia LIKE.

LIKE – Operátor na kontrolu, či je reťazec podobný vzoru. Analóg LIKE v SQL.

Operátor LIKE vám umožňuje porovnať hodnotu výrazu zadaného naľavo od neho s reťazcom šablóny zadaným napravo. Hodnota výrazu musí byť typu string. Ak sa hodnota výrazu zhoduje so šablónou, výsledok operátora bude TRUE, inak bude FALSE.

Nasledujúce znaky v reťazci šablóny sú servisné znaky a majú iný význam ako znak reťazca:

  • % (percento): sekvencia obsahujúca ľubovoľný počet ľubovoľných znakov;
  • _ (podčiarkovník): jeden ľubovoľný znak;
  • […] (jeden alebo viac znakov v hranatých zátvorkách): každý jeden znak uvedený v hranatých zátvorkách. Enumerácia môže obsahovať rozsahy, ako napríklad a-z, čo znamená akýkoľvek znak v rozsahu, vrátane koncov rozsahu;
  • [^…] (v hranatých zátvorkách znak záporu, za ktorým nasleduje jeden alebo viacero znakov): Akýkoľvek jednotlivý znak okrem tých, ktoré sú uvedené za znakom záporu.

Akýkoľvek iný symbol znamená sám seba a nenesie žiadnu dodatočnú záťaž. Ak je potrebné napísať jeden z uvedených znakov ako samotný, potom mu musí predchádzať<Спецсимвол>. Ja sám<Спецсимвол>(akýkoľvek vhodný znak) je definovaný v tom istom príkaze za kľúčové slovoŠPECIÁLNY SYMBOL.

Typ String sa nachádza vo všetkých programovacích jazykoch. Je to primitívne a v 1C je veľa funkcií na prácu s ním. V tomto článku sa na to pozrieme bližšie rôznymi spôsobmi práca s typmi reťazcov v 1C 8.3 a 8.2 s príkladmi.

Linka

Na konverziu premennej akéhokoľvek typu na reťazec existuje funkcia "String ()" s rovnakým názvom. Vstupným parametrom bude samotná premenná, ktorej reťazcová reprezentácia sa má získať.

String(False) // vráti "Nie"
String(12345) // vráti "12 345"
String(CurrentDate()) //"21.07.2017 11:55:36"

Na reťazec je možné previesť nielen primitívne typy, ale aj iné, napríklad prvky adresárov a dokumentov.

Skrátené LP, Skrátené L, Skrátené P

Vstupnými parametrami týchto funkcií sú premenná typu reťazec. Funkcie odstraňujú nepodstatné znaky (medzery, návraty vozíka atď.): z ľavej a pravej strany, iba z ľavej strany a iba z pravej, resp.

abbrl("Medzery na oboch stranách budú odstránené") // "Medzery na oboch stranách budú odstránené"
abbr("Medzery na oboch stranách budú odstránené") // "Medzery na ľavej strane budú odstránené"
abbr(" Medzery na oboch stranách budú odstránené ") // "Medzery na pravej strane budú odstránené"

Leo, vpravo, uprostred

Tieto funkcie vám umožňujú odrezať časť reťazca. Funkcia Lion() vráti časť reťazca na jeho ľavej strane zadanej dĺžky. Funkcia "Right()" je podobná, ale orezanie sa vykonáva vpravo. Funkcia "St()" umožňuje určiť číslo znaku, z ktorého sa reťazec vyberie, a jeho dĺžku.

Lion("String variable", 4) // vráti "Stro"
Right("String variable", 7) // vráti "variable"
avg("Premenná reťazca", 2, 5)// vráti "troco"

StrLength

Funkcia určuje počet znakov, ktoré sú obsiahnuté v reťazcovej premennej.

StrLength("Word") // výsledkom vykonania bude číslo 5

Nájsť

Funkcia umožňuje vyhľadať časť reťazca v reťazcovej premennej. Návratová hodnota bude číslo, ktoré označuje pozíciu začiatku nájdeného reťazca. Ak sa nenájdu žiadne zhody, vráti sa nula.

Upozorňujeme, že vyhľadávanie rozlišuje veľké a malé písmená. Ak je v pôvodnom reťazci viac ako jeden výskyt hľadaného podreťazca, funkcia vráti začiatok prvého výskytu.

Find("jeden, dva, jeden, dva, tri", "dva") // funkcia vráti číslo 6

Prázdny riadok

Pomocou tejto funkcie môžete určiť, či je reťazec prázdny. Nepodstatné znaky, ako je medzera, návrat vozíka a iné, sa neberú do úvahy.

EmptyString("Vasily Ivanovič Pupkin") // funkcia vráti hodnotu False
EmptyString(" ") // funkcia vráti hodnotu True

VReg, NReg, TReg

Tieto funkcie sú veľmi užitočné pri porovnávaní a konverzii reťazcových premenných. "Vreg()" vráti pôvodný reťazec veľkými písmenami, "HReg()" malými písmenami a "TReg()" ho naformátuje tak, že prvý znak každého jednotlivého slova bude veľký a všetky nasledujúce znaky budú malé.

VReg("GENERAL DIRECTOR") // návratová hodnota - "GENERAL DIRECTOR"
HReg("GENERAL DIRECTOR") // návratová hodnota - "CEO"
TReg("GENERAL DIRECTOR") // návratová hodnota - "Generálny riaditeľ"

StrReplace

Táto funkcia je analogická s výmenou v textové editory. Umožňuje vám nahradiť jeden znak alebo sadu znakov iným v reťazcových premenných.

StrReplace("red, white, yellow", ",", ";") // vráti "red; biely; žltá"

StrNumberRows

Funkcia vám umožňuje určiť počet riadkov oddelených znakom návratu vozíka v textovej premennej.

Slučka v príklade nižšie prejde cez tri kruhy, pretože funkcia StrNumberRows vráti hodnotu 3:

Pre ind \u003d 1 podľa StrNumber of Lines ("Line1" + Symbols.PS + "String2" + Symbols.PS + "Line3") slučka
<тело цикла>
EndCycle;

StrGetString

Táto funkcia pracuje s viacriadkovým textom rovnakým spôsobom ako predchádzajúca. Umožňuje vám získať konkrétny reťazec z textovej premennej.

StrGetString("Reťazec1" + Symboly.PS + "Reťazec2" + Symboly.PS + "Reťazec3", 2) // vráti "Riadok2"

StrNumberOccurrences

Funkcia počíta počet výskytov znaku alebo podreťazca v hľadanom reťazci.

StrNumberInstallations("a;b;c;d; ", ";") // funkcia vráti číslo 4

Symbol a SymbolCode

Tieto funkcie vám umožňujú získať znak podľa jeho kódu Unicode, ako aj určiť tento kód podľa samotného znaku.

SymbolCode("A") // funkcia vráti číslo 1 040
SymbolCode(1040) // funkcia vráti "A"

Časté úlohy pri práci so strunami

Spájanie reťazcov

Na zreťazenie viacerých reťazcov (reťazenie) stačí použiť operátor sčítania.

"Riadok 1" + "Riadok 2" //výsledkom pridania dvoch riadkov bude "Riadok 1 Riadok 2"

Konverzia typu

Na konverziu typu na reťazec, napríklad odkaz na prvok slovníka, číslo atď., stačí použiť funkciu "String ()". Funkcie ako "ShortLP()" tiež konvertujú premenné na reťazec, ale okamžite s odrezaním nepodstatných znakov.

String(1000) // vráti "1000"

Upozorňujeme, že pri prevode čísla na reťazec program automaticky pridal medzeru oddeľujúcu tisícku. Aby ste tomu zabránili, môžete použiť nasledujúce štruktúry:

StrReplace(String(1000),Characters.NPP,"") // vráti "1000"

String(Format(1000,"CH=")) // vráti "1000"

Citácie v reťazci

Pomerne často sa budete musieť vysporiadať s potrebou vkladať úvodzovky do premennej reťazca. Môže to byť buď text požiadavky napísaný v konfigurátore, alebo len premenná. Na vyriešenie tohto problému stačí nastaviť dva znaky úvodzoviek.

Header = String("Roga and Hooves LLC sme my!") // vráti "Roga and Hooves LLC sme my!"

Viacriadok, zalomenie riadku

S cieľom vytvoriť viacriadkový text stačí doň pridať znaky zalomenia riadkov (Symbols.PS).

ViacriadkovýText = "Prvý riadok" + Znaky.PS + "Druhý riadok"

Ako odstrániť medzery

Ak chcete odstrániť medzery vpravo alebo vľavo, môžete použiť funkciu „Stretch()“ (rovnako ako „Scrpt()“ a „ScreenP()“):

StringWithoutSpaces = ShortLP(" Veľa písmen ") // funkcia vráti hodnotu "Veľa písmen"

Ak po prevode čísla na reťazec potrebujete odstrániť pevné medzery, použite nasledujúcu konštrukciu:

StringWithoutSpaces = StrReplace(String(99999),Characters.NPP,"") // vráti "99999"

Programátori tiež často používajú nasledujúcu konštrukciu, ktorá vám umožňuje odstrániť alebo nahradiť všetky medzery textovej premennej iným znakom:

StringWithoutSpaces = StrReplace(" ahoj", " ","") // vráti "ahoj"

Porovnávanie reťazcov medzi sebou

Výrazy môžete porovnať s obvyklým znakom rovnosti. Pri porovnaní sa rozlišujú malé a veľké písmená.

"ahoj" = "ahoj" // vráti hodnotu false
"Ahoj" = "Ahoj" // vráti hodnotu True
"Ahoj" = "Dovidenia" // vráti hodnotu False

Realizované vo verzii 8.3.6.1977.

Rozšírili sme sadu funkcií pre prácu s reťazcami. Urobili sme to preto, aby sme vám poskytli pokročilejšie nástroje na analýzu údajov reťazca. Nové funkcie budú pohodlné a užitočné v technologických úlohách analýzy textu. V úlohách súvisiacich s analýzou textu, ktorý obsahuje údaje vo formátovanej forme. Môže ísť o analýzu niektorých súborov prijatých zo zariadenia, alebo napríklad o analýzu technologického denníka.

Všetky akcie, ktoré nové funkcie vykonávajú, ste mohli vykonávať predtým. S pomocou viac či menej zložitých algoritmov napísaných vo vstavanom jazyku. Nové funkcie vám teda nedávajú zásadne nové príležitosti. Umožňujú vám však znížiť množstvo kódu, urobiť kód jednoduchším a zrozumiteľnejším. Okrem toho vám umožňujú urýchliť vykonávanie akcií. Pretože funkcie implementované v platforme fungujú, samozrejme, rýchlejšie ako podobný algoritmus napísaný vo vstavanom jazyku.

Funkcia formátovania StrTemplate()

Táto funkcia nahrádza parametre do reťazca. Potreba takejto konverzie často vzniká napríklad pri zobrazovaní varovných správ. Syntax tejto funkcie je nasledovná:

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

<Шаблон>je reťazec, v ktorom sa majú nahradiť reprezentácie parametrov.

<Значение1> , ... <Значение10>- to sú parametre (maximum - desať), ktorých reprezentácie musia byť dosadené do reťazca.

Ak chcete zadať konkrétne miesto v šablóne, na ktorom chcete vykonať nahradenie, musíte použiť značky v tvare %1, ... %10. Počet značiek zahrnutých v šablóne a počet parametrov obsahujúcich hodnoty sa musia zhodovať.

Napríklad výsledok vykonania takéhoto operátora:

bude tam riadok:

Chyba údajov v riadku 2 (vyžaduje typ dátumu)

Funkcia reťazca StrCompare()

Táto funkcia necitlivo porovnáva veľkosť dvoch reťazcov. Napríklad takto:

Pred použitím objektu ValueComparison môžete vykonať rovnakú akciu:

Používanie novej funkcie však vyzerá jednoduchšie. A okrem toho funkcia na rozdiel od objektu Value Compare funguje ako v tenkom, tak aj vo webovom klientovi.

Funkcie reťazcov StrBeginsC(), StrEndsTo()

Tieto funkcie určujú, či reťazec začína určeným podreťazcom, alebo či reťazec končí určeným podreťazcom. Algoritmus týchto funkcií nie je ťažké implementovať do vstavaného jazyka, ale ich prítomnosť vám umožňuje písať čistejší a zrozumiteľnejší kód. A pracujú rýchlejšie.

Napríklad je vhodné ich použiť v príkaze If:

Funkcie na prácu s reťazcami StrSplit(), StrJoin()

Tieto funkcie rozdelia reťazec na časti podľa zadaného oddeľovača. Alebo naopak, spoja niekoľko riadkov do jedného, ​​pričom medzi ne vložia vybraný oddeľovač. Sú vhodné na vytváranie alebo analýzu protokolov, technologického denníka. Napríklad záznam technologického denníka môžete jednoducho rozložiť na časti vhodné pre ďalšiu analýzu:

Funkcia práce s reťazcami StrFind()

Namiesto starej funkcie Find() sme implementovali Nová funkcia, ktorý má ďalšie funkcie:

  • Hľadať v rôznych smeroch (od začiatku, od konca);
  • Vyhľadajte zo zadanej pozície;
  • Vyhľadajte výskyt so zadaným číslom (druhý, tretí atď.).

V skutočnosti duplikuje schopnosti starej funkcie. Deje sa tak s cieľom zachovať kompatibilitu s modulmi zostavenými v starších verziách. Starú funkciu Find() sa odporúča už nepoužívať.

Nižšie je uvedený príklad použitia nových možností vyhľadávania. Spätné vyhľadávanie je užitočné, keď potrebujete posledný fragment formalizovaného reťazca, napr. celé meno súbor v URL. A vyhľadávanie zo zadanej pozície pomáha v prípadoch, keď potrebujete hľadať v známom fragmente, a nie v celom reťazci.

Komu základné schopnosti programovacie jazyky zvyčajne zahŕňajú prácu s číslami a reťazcami. Zvyčajne sú tieto funkcie pevne zapojené do kódu kompilátora (alebo sú implementované „základné“ triedy programovacieho jazyka).

V 1C sú možnosti práce s reťazcami naprogramované v samotnej platforme. Dnes zvážime funkcie práce s reťazcami 1C v programoch vo vstavanom jazyku 1C.

Hodnota riadku 1C

1. Začnime tým najjednoduchším. Vytvorenie premennej a priradenie konštantnej hodnoty reťazca v 1C vyzerá takto:

Premenná = "Ahoj svet!";

Ak chcete zadať znak úvodzovky v konštantnej hodnote reťazca 1C, musíte ho zdvojnásobiť ""

Premenná = "Ahoj, "svet""!";

2. Zalomenie riadku 1C môže byť špecifikované dvoma spôsobmi naraz. Prvým je použitie symbolu |

Premenná = "Dobrý deň,
| svet! ";

Druhým je použitie systémového enum Symbols. Umožňuje vám pridať zalomenie riadku 1C a ďalšie netlačiteľné znaky, ako napríklad TAB.

Premenná = "Ahoj" + Symboly.ps + "mier!";

3. Konfigurácie v 1C môžu byť vyvinuté nielen pre jeden jazyk (ruština, angličtina alebo iný) - ale súčasne pre niekoľko jazykov. V tomto prípade sa aktuálne používaný jazyk vyberie v spodnej časti okna 1C.

Zoznam jazykov sa nachádza v konfiguračnom okne vo vetve Všeobecné/Jazyky. Každý jazyk má krátky identifikátor ako napr en alebo Ing.

Je jasné, že pri programovaní takejto konfigurácie môžu byť linky 1C aj viacjazyčné. Na tento účel je možné vytvoriť takýto riadok 1C zadaním cez; možnosti podľa ID jazyka:

Premenná = "ru=""Ahoj, svet!""; en=""Ahoj svet! """;

Ak použijete takto vytvorenú čiaru 1C ako obvykle, bude to, čo je v nej napísané. Aby ho systém rozdelil na dve možnosti a použil požadovanú, musíte použiť funkciu NStr():

//správne pre dvojjazyčné konfigurácie
Správa(NStr(Premenná));

Rekvizity s líniou typu 1C

Nevyhnutnou podmienkou je pole adresára / dokumentu 1C. Od premennej v programe v jazyku 1C sa líši tým, že jej typ je presne uvedený pri atribúte (číslo, reťazec 1C atď.). Ak si potrebujete oprášiť, čo sú to rekvizity, pozrite si návod na .

Ak zadáte typ atribútu - riadok 1C, musíte dodatočne zadať parametre.

Reťazce 1C majú neobmedzenú dĺžku (označuje sa ako dĺžka = 0) a obmedzenú dĺžku s uvedením presného počtu znakov. 1C reťazce neobmedzenej dĺžky sú uložené v samostatnej SQL tabuľke, takže ich použitie je menej produktívne ako obmedzené.

Preto má použitie 1C strún neobmedzenej dĺžky svoje obmedzenia - nie je možné ich použiť všade. Napríklad nie je možné ako číslo dokladu, kód adresára, meranie.

Práca s čiarami 1C

Pre prácu so strunami je v platforme 1C zabudovaných niekoľko funkcií.

  • AbbrLP("Neuveriteľné, ale pravdivé!")
    Odstraňuje nadbytočné medzery z reťazca 1C. Môže sa tiež použiť na prevod akéhokoľvek typu na reťazec 1C (napríklad čísla).
  • Premenná = "Vasya" + Abbrl("plus") + "Olya"; //bude "Vasya plus Olya"
    Príklad sčítania niekoľkých hodnôt reťazca 1C. Výsledkom je jeden riadok 1C.
  • Premenná = Lev("Hudba", 2); // bude "Mu"
    Premenná = Avg("Hudba", 2, 2); // bude "ps"
    Premenná = Práva("Hudba", 2); // bude "ka"
    Rôzne možnosti získania podreťazca z reťazca 1C.
  • Premenná = Nájsť ("Hudba", "ps"); //bude 3
    Vyhľadajte podreťazec v reťazci 1C, začínajúci znakom 1.
  • Premenná = StrLength("Hudba"); //bude 6
    Vráti počet znakov v reťazci 1C.
  • Upozorniť("Ahoj") //v okne so správou v spodnej časti okna 1C
    alert("ahoj") //vyskakovacie dialógové okno
    Status("Ahoj") //v riadku zobrazenia stavu vľavo dole
    .

Prineste predmety na riadok 1C

Ako viete, v súčasnosti je najpopulárnejším formátom na výmenu štruktúrovaných informácií XML. Dokonca Najnovšia verzia PANI Office Word a Excel ukladajú súbory v tomto formáte (docx a xlsx, zmeňte príponu na zip, otvorte v archivátore).

Platforma 1C na výmenu údajov poskytuje niekoľko možností, z ktorých hlavnou je tiež XML.

1. Najjednoduchším spôsobom je použitie funkcie ShortLP() alebo String(). V texte dopytu môžete použiť funkciu REPRESENTATION(). Výsledok ich akcie je rovnaký – používateľovi vygenerujú reťazcovú reprezentáciu ľubovoľného objektu 1C.

Pre predvolený adresár to bude jeho názov. V prípade dokumentu názov dokumentu, číslo a dátum.

2. Akýkoľvek objekt 1C (s obmedzeniami) je možné previesť do XML a naopak. Proces konverzie sa nazýva serializácia.

ViewStringXml = XMLString(Hodnota); //získať XML z hodnoty 1C
Hodnota1С = XMLValue(Typ("Katalógová referencia.Nomenklatúra"),ViewStringXml); //získajte hodnotu 1C z reťazca XML, musíte zadať typ 1C, ktorý sa má prijať

3. Existuje natívny spôsob platformy 1C na konverziu akéhokoľvek objektu 1C na reťazec. Prešiel z verzie 1C 7.7. Tomuto formátu iné programy nerozumejú, ale rozumie inému 1C, čo uľahčuje jeho používanie na výmenu medzi databázami 1C.

Reťazec = ValueInStringInt(Value1S); //získame reťazec 1C z hodnoty 1C
ValueToFile("C:\MyFile.txt", Hodnota1C); //ďalšia možnosť, dostaneme súbor s uloženým reťazcom od hodnoty 1C
Hodnota1C = ValueFromStringInt(String); //späť z riadku 1C
Value1C = ValueFromFile("C:\MyFile.txt"); //späť zo súboru

Úprava riadkov 1C vo formulári

Okrem práce s 1C reťazcami v programe 1C by som samozrejme chcel, aby ich používateľ mohol upravovať. Existuje na to niekoľko možností:

1. Najjednoduchším spôsobom je vyžiadať si vstup linky 1C na požiadanie. Táto metóda sa používa pri výučbe programovania 1C, v živote sa používa oveľa menej často (ale používa sa!).

Premenná = "";
String = EnterValue(Premenná, "Zadajte celé meno");

2. Na zobrazenie detailov objektu 1C (adresár / dokument) alebo detailov formulára (pozri) sa najčastejšie používa vstupné pole. Toto je najbežnejší nástroj v 1C pre používateľa na prácu s poľami úprav.

3. Možnosti vstupného poľa je možné rozšíriť (pozri vlastnosti vstupného poľa, kliknite pravým tlačidlom myši na ňom, ďalšie podrobnosti):

  • Začiarkavacie políčko Režim úpravy viacerých riadkov
  • Začiarkavacie políčko Rozšírené úpravy (dostupné, ak je začiarknuté predchádzajúce políčko)
  • Zaškrtávacie políčko Režim hesla (pozri ).

4. Ak by vám nestačili všetky možnosti vstupného poľa, je tu zabudovaný editor. Pre pridanie do formulára je potrebné pridať Pole v menu Formulár / Vložiť ovládací prvok textový dokument. V jeho vlastnostiach môžete určiť režim jeho fungovania - vlastnosť Extension.

Pole textového dokumentu nemožno prepojiť priamo s údajmi. Do obsluhy udalosti formulára OnOpening() je potrebné napísať nasledujúcu funkciu (pozri ):

FormElements.ElementNameTextDocumentField.SetText(StringValue); //tu, ValueString je text prijatý napríklad z atribútu

A v obslužnom programe uloženia - napríklad v tlačidle Uložiť - pridajte uloženie:

ValueString = FormElements.ElementNameTextDocumentField.GetText(); //ValueString tu sú rekvizity, kde uložíme hodnotu

5. Vo verzii 1C 8.2.11, in riadené formuláre, objavilo sa nová príležitosť riadková reprezentácia 1C - Pole formátovaného dokumentu.


Podobne ako pole textového dokumentu je potrebné nastaviť pri otváraní a zapisovať pri ukladaní textu sami pomocou programu.

  • V objekte 1C, ktorého formu vytvárame (referenčná kniha, dokument, spracovanie atď.) - pridajte atribút s typom Uloženie hodnoty
  • Vo funkcii OnReadOnServer() nastavte text z atribútu

    //tu Requisite je pridaný atribút objektu 1C
    //tu FormattedDocument je názov poľa vo formulári úprav
    &Na serveri

    FormattedDocument = CurrentObject.Attributes.Get();
    EndProcedure

  • Vo funkcii BeforeWriteOnServer() alebo stlačením tlačidla napíšte text z poľa

    &Na serveri
    Procedúra OnReadingOnServer(CurrentObject)
    CurrentObject.Attributes = NewValueStorage(FormattedDocument);
    EndProcedure