1s pridanie strún. Nové funkcie pre prácu s reťazcami

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

Pridávanie reťazcov

Na pridanie riadkov do dotazu sa používa operácia „+“. Môžete pridať iba reťazce obmedzenej dĺžky.

SELECT "Názov: " + Protistrany Názov AS Stĺpec 1 Z adresára Protistrany AS Protistrany WHERE Protistrany

Funkcia podreťazca

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

Analóg funkcie Environment() z objektového modelu. Funkciu Substring() možno použiť na údaje reťazca a umožňuje vám vybrať fragment <Строки> , začínajúc číslom znaku <НачальнаяПозиция> (znaky v riadku sú číslované od 1) a dĺžku <Длина> postavy. Výsledok výpočtu funkcie má typ reťazca 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 reťazca spĺňa určité kritériá, porovnáme ho:

VYBERTE protistrany Názov AS Stĺpec 1 Z adresára Protistrany AS Protistrany WHERE Protistrany.

Ale čo ak potrebujete jemnejšie porovnanie? Nielen rovnosť alebo nerovnosť, ale podobnosť s určitým vzorom? Presne na to bola vytvorená funkcia PODOBNÉ.

LIKE — Operátor na kontrolu podobnosti reťazca so vzorom. Analóg LIKE v SQL.

Operátor PODOBNÉ vám umožňuje porovnať hodnotu výrazu zadaného naľavo od neho s reťazcom vzoru zadaným napravo. Hodnota výrazu musí byť typu string. Ak sa hodnota výrazu zhoduje so vzorom, 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): akýkoľvek jednotlivý znak uvedený v hranatých zátvorkách. Enumerácia môže obsahovať rozsahy, napríklad a-z, čo znamená ľubovoľný znak zahrnutý v rozsahu, vrátane koncov rozsahu;
  • [^...] (v hranatých zátvorkách znak záporu, za ktorým nasleduje jeden alebo viacero znakov): každý jeden 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 jeden z uvedených znakov musí byť napísaný ako samotný, potom mu musí predchádzať<Спецсимвол>. Ja sám<Спецсимвол>(akýkoľvek vhodný symbol) je definovaný v tom istom vyhlásení za kľúčové slovoŠPECIÁLNY SYMBOL.

Poznámky cez zrkadlo

18.08.2014 Nové funkcie pre prácu s reťazcami

Realizované vo verzii 8.3.6.1977.

Rozšírili sme sadu funkcií určených na 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é pri 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 analýzu technologického denníka.

Predtým ste mohli vykonávať všetky akcie, ktoré vykonávajú nové funkcie. Používanie viac či menej zložitých algoritmov napísaných v zabudovanom jazyku. Nové funkcie vám teda neposkytnú žiadne zásadne nové schopnosti. Umožňujú vám však znížiť množstvo kódu a 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>)

<Шаблон>- toto je reťazec, do ktorého musíte nahradiť reprezentácie parametrov.

<Значение1> , ... <Значение10>- ide o parametre (maximálne desať), ktorých reprezentácie musia byť dosadené do reťazca.

Na označenie konkrétneho miesta v šablóne, kde chcete vykonať nahradenie, musíte použiť značky ako %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 na riadku 2 (vyžaduje sa typ dátumu)

Funkcia na prácu s reťazcami StrCompare()

Táto funkcia porovnáva dva reťazce bez ohľadu na veľkosť písmen. Napríklad takto:

Rovnakú akciu môžete vykonať skôr pomocou objektu Porovnanie hodnôt:

Používanie novej funkcie však vyzerá jednoduchšie. A okrem toho funkcia, na rozdiel od objektu Porovnanie hodnôt, pracuje v tenký klient a vo webovom klientovi.

Funkcie na prácu s reťazcami StrStartsWith(), StrEndsAt()

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 pre tieto funkcie nie je ťažké implementovať vo vstavanom jazyku, 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 operátorovi Ak:

Funkcie na prácu s reťazcami StrDivide(), StrConnect()

Tieto funkcie rozdeľujú reťazec na časti pomocou určené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 denníkov a technologických denníkov. Napríklad môžete jednoducho analyzovať záznam technologického denníka na časti vhodné na ďalšiu analýzu:

Funkcia na prácu s reťazcami StrFind()

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

  • Hľadať v rôznych smeroch (od začiatku, od konca);
  • Hľadať zo zadanej pozície;
  • Hľadanie výskytu s určené číslo(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á funkcia Nájsť() Odporúča sa 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ú časť formalizovaného reťazca, ako je napríklad úplný názov súboru v adrese 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 riadku.

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ácu s typmi reťazcov v 1C 8.3 a 8.2 pomocou príkladov.

Linka

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

String(False) // vráti "Nie"
String(12345) // vráti "12,345"
String(CurrentDate()) //"07/21/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.

SokrLP, SokrL, SokrP

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.

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

Lev, vpravo, stredný

Tieto funkcie vám umožňujú orezať časť reťazca. Funkcia "Left()" vráti časť reťazca z jeho ľavej strany zadanej dĺžky. Funkcia „Right()“ je podobná, ale orezáva sprava. Funkcia „Avg()“ vám umožňuje určiť číslo znaku, z ktorého bude riadok vybraný, a jeho dĺžku.

Lev("String variable", 4) // vráti "Str"
Right("String variable", 7) // vráti "variable"
Medium("String variable", 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é ukazuje pozíciu začiatku nájdeného reťazca. Ak sa nenájde žiadna zhoda, vráti sa nula.

Upozorňujeme, že vyhľadávanie rozlišuje malé a veľké 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. Vedľajšie znaky ako medzera, návrat vozíka a iné sa neberú do úvahy.

EmptyString("Pupkin Vasily Ivanovich") // 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, "HPreg()" 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ú veľké.

VReg("GENERAL DIRECTOR") // návratová hodnota - "GENERAL DIRECTOR"
NReg(“CEO DIRECTOR”) // návratová hodnota – “CEO”
TREG(“CEO DIRECTOR”) // návratová hodnota – “General Director”

PageReplace

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á"

StrNumberLines

Funkcia vám umožňuje určiť počet riadkov oddelených znakmi konca riadku v textovej premennej.

Slučka v nižšie uvedenom príklade prejde tromi cyklami, pretože funkcia LineNumberRow vráti hodnotu 3:

Pre ind = 1 podľa StrNumber of Strings ("Riadok1" + Symboly.PS + "Riadok2" + Symboly.PS + "Riadok3")
<тело цикла>
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("String1" + Characters.PS + "Reťazec2" + Characters.PS + "Reťazec3", 2) // návrat "String2"

PageNumberOccurrences

Funkcia počíta počet výskytov znaku alebo podreťazca vo vyhľadávanom reťazci.

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

Symbol a kód symbolu

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

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

Bežné úlohy pri práci so strunami

Reťazové struny

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

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

Typ Konverzia

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

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

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 konštrukcie:

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

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

Citácie v reťazci

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

Hlavička = String("Rohy and Hooves LLC - to sme my!") // vráti "Horns and Hooves LLC - to sme my!"

Viacriadok, zalomenie riadku

Ak chcete vytvoriť viacriadkový text, stačí k nemu pridať zlomy riadkov (Symbols.PS).

Viacriadkový text = „Prvý riadok“ + Symboly.PS + „Druhý riadok“

Ako odstrániť medzery

Na odstránenie medzier vpravo alebo vľavo môžete použiť funkciu „ScrAP()“ (rovnako ako „ScrL()“ a „ScrP()“):

StringNoSpaces = Skratka(" 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:

StringNoSpaces = 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ť iným znakom všetky medzery v textovej premennej:

StringNoSpaces = 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

Reťazec je jedným z primitívnych dátových typov v systémoch 1C:Enterprise 8 s premennými riadok obsahovať text.

Zadajte hodnoty premenných riadok sú uvedené v úvodzovkách. Viaceré premenné tohto typu dá sa zložiť.

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

Nakoniec Per3 bude znamenať" Slovo 1 Slovo 2″.

Systémy 1C:Enterprise 8 navyše poskytujú funkcie pre prácu s reťazcami. Pozrime sa na tie hlavné:

EnterString(<Строка>, <Подсказка>, <Длина>, <Многострочность>) — funkcia je navrhnutá tak, aby zobrazila dialógové okno, v ktorom môže používateľ zadať hodnotu premennej typu Linka. Parameter <Строка> je povinný a obsahuje názov premennej, do ktorej sa zadaný reťazec zapíše. Parameter <Подсказка> voliteľné – toto je názov dialógového okna. Parameter <Длина> voliteľné, zobrazuje maximálnu dĺžku vstupného reťazca. Predvolená hodnota je nula, čo znamená neobmedzenú dĺžku. Parameter <Многострочность> voliteľné. Definuje režim viacriadkového zadávania textu: True—viacriadkový textový vstup s oddeľovačmi riadkov; False - zadajte jednoduchý reťazec.

Môžete zadať reťazec, ak poznáte kód znaku v Unicode:

Symbol(<КодСимвола>) — kód sa zadáva ako číslo.

Letter= Symbol(1103) ; // Ja

Je tu tiež inverzná funkcia, čo vám umožní zistiť kód znaku.

Kód symbolu(<Строка>, <НомерСимвола>) — vráti číslo Unicode zadaného znaku ako číslo.

Funkcie prevodu malých a veľkých písmen:

VReg(<Строка>) — Prevedie všetky znaky v reťazci na veľké písmená.

NReg(<Строка>) — Prevedie všetky znaky v reťazci na malé písmená.

TReg(<Строка>) — prevedie všetky znaky v reťazci na veľké a malé písmená. To znamená, že prvé písmená všetkých slov sa skonvertujú na veľké písmená a zvyšné písmená sa skonvertujú na malé.

Funkcie na vyhľadávanie a nahradenie znakov v reťazci:

Nájsť(<Строка>, <ПодстрокаПоиска>) — nájde číslo znaku výskytu hľadaného podreťazca. Napríklad:

Nájsť ("String" , "oka" ) ; // 4

StrFind(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) — nájde číslo znaku výskytu hľadaného podreťazca, číslo výskytu je uvedené v príslušnom parametri. V tomto prípade vyhľadávanie začína znakom, ktorého číslo je uvedené v parametri Počiatočná poloha. Vyhľadávanie je možné od začiatku alebo od konca reťazca. Napríklad:

Počet4 výskytov = Str Nájsť ( "obrana", "o" ,Smer hľadania. Od začiatku, 1, 4); // 7

StrReplace(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) – nájde všetky výskyty hľadaného podreťazca v zdrojovom reťazci a nahradí ho náhradným podreťazcom.

StrReplace ("String" , "oka" , "" ); // Stránka

Prázdny riadok (<Строка>) – skontroluje, či reťazec neobsahuje významné znaky. Ak neexistujú žiadne alebo žiadne významné znaky, vráti sa hodnota Pravda. Inak - Klamať.

StrNumberOccurrences(<Строка>, <ПодстрокаПоиска>) – Vypočíta počet výskytov hľadaného podreťazca v zdrojovom reťazci.

StrNumberOccurrences ( "Študovať, študovať a ešte raz študovať", "študovať" , "" );

StrTemplate(<Строка>, <ЗначениеПодстановки1>…<ЗначениеПодстановкиN> — // 3 nahradí parametre do reťazca číslom. Riadok musí obsahovať substitučné značky v tvare: “%1..%N”. Číslovanie značiek začína od 1. Ak je hodnota parametra Nedefinované

, je nahradený prázdny reťazec. StrTemplate (, "1" , "2" ) ; "Parameter 1 = %1, Parameter 2 = %2"

// Parameter 1= 1, Parameter 2 = 2

Funkcie konverzie reťazcov:<Строка>, <ЧислоСимволов>) Lev(

– vráti prvé znaky reťazca.<Строка>, <ЧислоСимволов>) Správny(

– vráti posledné znaky reťazca.<Строка>, <НачальныйНомер>, <ЧислоСимволов>) streda(<ЧислоСимволов>– vráti reťazec dĺžky<НачальныйНомер>.

, počnúc symbolom<Строка>) AbbrL(

orezáva nevýznamné znaky vľavo od prvého významného znaku v reťazci.<Строка>) Abbr(

— odreže nepodstatné znaky napravo od posledného významného znaku v riadku.<Строка>) – odreže nepodstatné znaky naľavo od prvého významného znaku v riadku a napravo od posledného významného znaku v riadku.

StrGetString(<Строка>, <НомерСтроки>) – Získa viacriadkový reťazec podľa čísla.

Ďalšie vlastnosti:

StrLength(<Строка>) – vráti počet znakov v reťazci.

StrNumberRow(<Строка>) – vráti počet riadkov vo viacriadkovom reťazci. Riadok sa považuje za nový, ak je od predchádzajúceho oddelený znakom nového riadku.

StrCompare(<Строка1>, <Строка2> ) – porovnáva dva reťazce bez ohľadu na veľkosť písmen. Funkcia funguje podobne ako objekt Porovnanie hodnôt. Vrátenie:

  • 1 - ak je prvý riadok väčší ako druhý
  • -1 - ak je druhý riadok väčší ako prvý
  • 0 - ak sú reťazce rovnaké

StrCompare("Prvý riadok" , "Druhý riadok" ) ; // 1

Medzi základné možnosti programovacieho jazyka zvyčajne patrí práca s číslami a reťazcami. Zvyčajne sú tieto vlastnosti pevne zakódované do kódu kompilátora (alebo sú implementované „základné“ triedy programovacieho jazyka).

V 1C je možnosť práce s reťazcami naprogramovaná v samotnej platforme. Dnes sa pozrieme na funkcie práce s 1C reťazcami 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 potrebujete 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émovej enumerácie Symbols. Umožňuje vám pridať zalomenia riadkov 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 ru 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 identifikátora jazyka:

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

Ak použijete čiaru 1C vytvorenú týmto spôsobom 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 НStr():

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

Rekvizity s líniou typu 1C

Atribút je pole v adresári/dokumente 1C. Od premennej v programe v jazyku 1C sa líši tým, že pre atribút je presne uvedený jej typ (číslo, reťazec 1C atď.). Ak si potrebujete osviežiť pamäť, čo je to rekvizita, pozrite si lekciu ďalej.

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

1C riadky majú neobmedzenú dĺžku (označuje sa ako dĺžka = 0) a obmedzenú dĺžku s uvedením presného počtu znakov. 1C riadky 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. Nie je napríklad povolené ako číslo dokumentu, referenčný kód alebo meranie.

Práca so strunami 1C

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

  • AbbrLP („Neuveriteľné, ale pravdivé!“)
    Odstráni sa z riadku 1C extra priestory. Môže sa tiež použiť na konverziu akýchkoľvek typov na reťazec 1C (napríklad čísla).
  • Premenná = "Vasya" + AbbrLP(" plus") + "Olya"; //bude "Vasya plus Olya"
    Príklad sčítania niekoľkých hodnôt reťazca 1C. Výsledkom bude jeden riadok 1C.
  • Premenná = Lev("Hudba", 2); //bude "Mu"
    Premenná = Medium("Hudba", 2, 2); //bude tam "hrozba"
    Premenná = Práva("Hudba", 2); //bude "ka"
    Rôzne možnosti získania podreťazca z reťazca 1C.
  • Premenná = Nájsť ("Hudba", "zy"); //budú 3
    Vyhľadajte podreťazec v reťazci 1C, začínajúci znakom 1.
  • Premenná = StrLength("Hudba"); //bude ich 6
    Vráti počet znakov v riadku 1C.
  • Report("Ahoj") //v okne správy 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 zmenia príponu na zip, otvoria sa v archivátore).

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

1. Najjednoduchšou metódou je použitie funkcie Abbreviation() alebo String(). V tele žiadosti 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.

V prípade adresára to bude štandardne jeho názov. Pre dokument - 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.

StringViewXml = XMLString(Hodnota); //získanie XML z hodnoty 1C
Value1C = XMLValue(Type("DirectoryLink.Nomenclature"),TypStringXml); //získajte hodnotu 1C z reťazca XML, musíte zadať typ 1C, ktorý sa má prijať

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

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

Úprava riadkov 1C vo formulári

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

1. Najjednoduchším spôsobom je požiadať o 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á = "";
Riadok = 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ť (pozrite si vlastnosti vstupného poľa, kliknite pravým tlačidlom myši na ňom, ďalšie podrobnosti):

  • Začiarkavacie políčko Režim viacriadkovej úpravy
  • 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. Ak ho chcete pridať do formulára, musíte pridať pole do ovládacieho menu Formulár/Vložiť textový dokument. V jeho vlastnostiach môžete určiť jeho prevádzkový režim – vlastnosť Rozšírenie.

Pole textového dokumentu nemožno priamo priradiť k údajom. Je potrebné napísať funkciu do obsluhy udalosti OnOpen() formulára (pozri):

Form Elements.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(); //HodnotaRiadok je atribút, do ktorého uložíme hodnotu

5. Vo verzii 1C 8.2.11, in kontrolované formuláre, objavilo sa nová príležitosť 1C čiarová reprezentácia – Formátované pole dokumentu.


Podobne ako pole textového dokumentu si ho musíte nastaviť pri jeho otváraní a zapísať si ho pri ukladaní sami pomocou programu.

  • V objekte 1C, ktorého formulár vytvárame (adresár, dokument, spracovanie atď.) - pridajte atribút s typom Uloženie hodnoty
  • Vo funkcii OnReadOnServer() nastavíme text z atribútu

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

    FormattedDocument = CurrentObject.Attributes.Get();
    EndProcedure

  • Vo funkcii BeforeWritingOnServer() alebo pomocou tlačidla napíšeme text z poľa

    &Na serveri
    Postup pri ReadingOnServer(CurrentObject)
    CurrentObject.Props = NewValueStorage(FormattedDocument);
    EndProcedure



Načítava...
Hore