1s 8.2 pořadové číslo znaku v řádku. Nové funkce pro práci s řetězci. Funkce formátování StrTemplate()

ČÁST 1. METODY (26).

1.1. Základní metody (10). Nezávislé, postavené na vlastních jednoduchých algoritmech.

Page_Add() (pravo-levé přidání se zadanými znaky).

Page_Inverse () (inverze - znaky zprava doleva).

Page_Codes() (kódy znaků přes „,“ a pole s kódy)

Page_Characters() (řetězec kódů oddělený ”,” nebo z pole s kódy)

Page_ReplaceSymbols() (nahrazení některých znaků jinými).

String_FromArray() (řetězec z pole fragmentů oddělených oddělovačem)

Page_FindIn() (hledá podřetězec (včetně vpravo) se zadaným číslem výskytu).

Page_FindGr() (Vyhledání skupiny znaků obsažených v zadané znakové sadě)

Page_FindNumber() (vyhledá číslo, včetně čísla vpravo s zadané číslo výskyty)

Page_Interpret() (do pole, podle zavedené syntaxe)

1.2. Odvozovací metody (12). Ve skutečnosti se jedná o použití čtyř metod zobecněných algoritmů (viz část 2)

Page_Number() (od začátku a od konce řádku se „nebojte“ nečíselných znaků.

Page_Find() (hledá podřetězec (včetně rozlišení velkých a malých písmen a vpravo) se zadaným číslem výskytu).

Page_Replace() (vyhledávání (včetně rozlišování velkých a malých písmen a pravotočivých) a nahrazení podřetězců oddělovače.

String_Piece() (část řetězce mezi zadanými výskyty oddělovače (vlevo nebo vpravo)).

Page_ReplacePiece() (nahradí „kus“ ve zdrojovém řetězci zadaným řetězcem).

Page_ВArray() (mezi určenými výskyty oddělovače (včetně těch vpravo a bez velkých a malých písmen).

Page_TransferBySyllables() (rozděleno na podřetězce „Stěží“, se spojovníkem).

Page_MoveByWords() (rozděleno na podřetězce „Měkce“)

Page_Cut() („Vystřihnout“ na podřetězce zadaných délek)

Str_Shorten() (nahraďte levou skupinu „zkrácených“ znaků „náhradním řetězcem“

Page_Abbreviation() (nahraďte pravou skupinu „redukovaných“ znaků „náhradním řetězcem“

Str_ShortenS() (uprostřed skupiny „zkrácených“ znaků nahraďte „náhradním řetězcem“

Page_Extend (rozšíření na zadanou délku zvýšením počtu zadaných znaků)

1.3. Podrobné metody (3). "Rozřezání" řádku s přenosem do tabulky s podrobnými informacemi.

Page_vTableIn() (do tabulky podle systému vnořených oddělovačů).

Page_vTableGr (do tabulky podle víceúrovňového filtru).

Page_inTableNumbers (v tabulce s čísly a fragmenty mezi nimi).

ČÁST 2. OBECNÉ METODY-ALGORIMY (3).

Page_Occurrence() (metody „Najít“ a „Nahradit“).

Page_Fragments() (metody "Piece", "ReplacePiece", InArray","inTableIn").

Page_Abcr() (metody "AbcrL", "AbcrP", "AbcrS", "Rozbalit".

Page_Split() (metody „Posunout po slabikách“, „Posunout podle slov“, „Vyjmout“).

ČÁST 3. UNIVERZÁLNÍ FUNKCE.

Jedná se o druh podmíněného programovacího rozhraní, které umožňuje

aplikovat několik metod na řetězec najednou. Realizováno jako

funkce se sedmi parametry ("Demo" je postaveno na této funkci):

Stránka_(Metody, Dílčí metody, Vstup, Param1, Param2, Délka_Číslo_Pozice, Další výstup)

Možnosti:

- „Metody“ – několik „kombinovaných“ a (nebo) jedna „exkluzivní“ metoda

(jednoznakové kódy nebo názvy, možné pomocí ",")

- "Podmetody" - několik "kombinovaných" a (nebo) "exkluzivních" možností

„výhradní“ metoda (jednoznakové kódy nebo názvy);

- „Vstup“ - Řetězec, pole nebo tabulka hodnot;

- “Param1” - vyhledávací řetězec, substituce, oddělovače, filtry;

- „Param2“ - náhradní řetězec nebo znaky;

- “Length_Number_Position” -Číslo, čísla přes oddělovač nebo pole s čísly;

- „Další výstup“ - Číslo nebo řetězec nebo pole nebo tabulka hodnot;

Názvy a/nebo jednoznakové kódy dílčích metod, stejně jako čísla v

(Length_Number_Position) lze v každém případě oddělit

některý z následujících oddělovačů: “, :;”.

ČÁST 4. NĚKTERÉ PŘÍKLADY.

There areNumbersInLine=(Str_FindNumber(InLine)<>Nedefinováno);

V řádku jsou čísla = (String_FindGr(Inline,"+0123456789")>0);

Existuje latinka = (Str_FindGr(InStr, Str_Interpret("lL"))>0);

Existují specifikované znaky = (Str_NfindGr(VxStr, "+to rogYu.0p9")>0);

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

ČÁST 5. ZÁVĚR.

Kde to bylo možné, vystačil jsem si s jedním přejezdem po čáře. Druhý průchod je obvykle ve fragmentech. Nepoužil jsem vestavěnou funkci StrNumberOccurrences().

Používají se vestavěné funkce: Left(), Right(), Middle(), StrLength()

- (umístění a získání části linky musí být „rychlé“).

Existuje několik mechanismů pro práci s řetězci v dotazech 1C. Nejprve lze přidat řádky. Za druhé, můžete vzít podřetězec z řetězce. Za třetí, řetězce lze porovnávat, a to i podle vzoru. To je asi vše, co se dá se strunami dělat.

Doplnění řetězce

K přidání řádků do dotazu se používá operace „+“. Můžete přidat pouze řetězce omezené délky.

SELECT "Název: " + Protistrany. Název AS Sloupec 1 FROM Adresář. Protistrany AS Protistrany WHERE Protistrany. Odkaz = &Odkaz

Funkce podřetězec

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

Analoga funkce Environment() z objektového modelu. Funkci Substring() lze použít na data řetězce a umožňuje vybrat fragment <Строки> , počínaje číslem znaku <НачальнаяПозиция> (znaky v řádku jsou číslovány od 1) a délka <Длина> postavy. Výsledek výpočtu funkce má typ řetězce proměnné délky a délka bude považována za neomezenou, jestliže <Строка> má neomezenou délku a parametry <Длина> není konstantní nebo větší než 1024.

Pokud je délka řetězce menší než zadaná v druhém parametru, funkce vrátí prázdný řetězec.

Pozornost! Použití funkce SUBSTRING() k převodu řetězců neomezené délky na řetězce omezené délky se nedoporučuje. Místo toho je lepší použít operátor přetypování EXPRESS().

Funkce podobná

Pokud se potřebujeme ujistit, že atribut řetězce splňuje určitá kritéria, porovnáme jej:

VYBERTE protistrany. Název AS Sloupec 1 FROM Adresář. Protistrany AS Protistrany WHERE Protistrany. Název = "Gazprom"

Ale co když potřebujete jemnější srovnání? Nejen rovnost nebo nerovnost, ale podobnost s určitým vzorem? Přesně k tomu byla vytvořena funkce PODOBNÁ.

LIKE — Operátor pro kontrolu podobnosti řetězce se vzorem. Analog LIKE v SQL.

Operátor SIMILAR umožňuje porovnat hodnotu výrazu zadaného vlevo od něj s řetězcem vzoru zadaným vpravo. Hodnota výrazu musí být typu string. Pokud se hodnota výrazu shoduje se vzorem, výsledek operátoru bude TRUE, jinak bude FALSE.

Následující znaky v řetězci šablony jsou servisní znaky a mají jiný význam než znak řetězce:

  • % (procenta): sekvence obsahující libovolný počet libovolných znaků;
  • _ (podtržítko): jeden libovolný znak;
  • […] (V hranaté závorky jeden nebo více znaků): jakýkoli jednotlivý znak uvedený v hranatých závorkách. Výčet může obsahovat rozsahy, například a-z, což znamená libovolný znak zahrnutý v rozsahu, včetně konců rozsahu;
  • [^...] (v hranatých závorkách znaménko negace následované jedním nebo více znaky): jakýkoli jednotlivý znak jiný než ty, které jsou uvedeny za znaménkem negace.

Jakýkoli jiný symbol znamená sám sebe a nenese žádnou další zátěž. Pokud je třeba jeden z uvedených znaků zapsat jako samotný, pak mu musí předcházet<Спецсимвол>. Moje maličkost<Спецсимвол>(jakýkoli vhodný symbol) je definován ve stejném příkazu za klíčové slovo SPECIÁLNÍ SYMBOL.

Typ String se nachází ve všech programovacích jazycích. Je primitivní a v 1C je pro práci s ním mnoho funkcí. V tomto článku se na to podíváme blíže různé cesty práce s typy řetězců v 1C 8.3 a 8.2 pomocí příkladů.

Čára

Aby bylo možné převést proměnnou jakéhokoli typu na řetězec, existuje funkce se stejným názvem „String()“. Vstupním parametrem bude samotná proměnná, jejíž řetězcovou reprezentaci je třeba získat.

String(False) // vrátí "Ne"
String(12345) // vrátí "12,345"
String(CurrentDate()) //"07/21/2017 11:55:36″

Na řetězec je možné převádět nejen primitivní typy, ale i další, například prvky adresářů a dokumentů.

SokrLP, SokrL, SokrP

Vstupními parametry těchto funkcí jsou proměnná typu string. Funkce odstraňují nepodstatné znaky (mezery, konce řádku atd.): z levé a pravé strany, pouze z levé strany a pouze zprava.

Zkratka(" Mezery budou odstraněny na obou stranách ") // "Mezery budou odstraněny na obou stranách"
Zkratka(" Mezery na obou stranách budou odstraněny ") // " Mezery na levé straně budou odstraněny "
Zkratka(" Mezery na obou stranách budou odstraněny ") // "Mezery na pravé straně budou odstraněny"

Lev, správně, střední

Tyto funkce umožňují oříznout část řetězce. Funkce "Left()" vrátí část řetězce z levé strany zadané délky. Funkce "Right()" je podobná, ale ořezává se zprava. Funkce „Avg()“ umožňuje zadat číslo znaku, ze kterého bude řádek vybrán, a jeho délku.

Lev("String variable", 4) // vrátí "Str"
Right("String variable", 7) // vrátí "variable"
Medium("String variable", 2, 5) // vrátí "troco"

StrLength

Funkce určuje počet znaků, které jsou obsaženy v řetězcové proměnné.

StrLength("Word") // výsledkem provedení bude číslo 5

Nalézt

Funkce umožňuje vyhledat část řetězce v řetězcové proměnné. Návratovou hodnotou bude číslo, které ukazuje pozici začátku nalezeného řetězce. Pokud není nalezena žádná shoda, vrátí se nula.

Upozorňujeme, že vyhledávání rozlišuje malá a velká písmena. Pokud je v původním řetězci více než jeden výskyt hledaného podřetězce, funkce vrátí začátek prvního výskytu.

Funkce Find("jeden, dva, jedna, dva, tři", "dva") // vrátí číslo 6

Prázdný řádek

Pomocí této funkce můžete určit, zda je řetězec prázdný. Drobné znaky, jako je mezera, návrat vozíku a další, se neberou v úvahu.

EmptyString("Pupkin Vasilij Ivanovič") // funkce vrátí hodnotu False
EmptyString(" ") // funkce vrátí hodnotu True

VReg, NReg, TReg

Tyto funkce jsou velmi užitečné při porovnávání a převodu řetězcových proměnných. "Vreg()" vrátí původní řetězec velkými písmeny, "HPreg()" malými písmeny a "TReg()" jej naformátuje tak, že první znak každého jednotlivého slova bude velký a všechny následující znaky budou velké.

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

PageReplace

Tato funkce je analogická k nahrazení v textové editory. Umožňuje vám nahradit jeden znak nebo sadu znaků jiným v řetězcových proměnných.

StrReplace("red, white, yellow", ","", ";") // vrátí "red; bílý; žlutá"

StrNumberLines

Funkce umožňuje určit počet řádků oddělených znaky konce řádku v textové proměnné.

Smyčka v příkladu níže projde třemi cykly, protože funkce LineNumberRow vrátí hodnotu 3:

Pro ind = 1 podle StrNumber of Strings ("Řádek1" + Symboly.PS + "Řádek2" + Symboly.PS + "Řádek3")
<тело цикла>
EndCycle;

StrGetString

Tato funkce pracuje s víceřádkovým textem stejným způsobem jako předchozí. Umožňuje vám získat konkrétní řetězec z textové proměnné.

StrGetString("String1" + Characters.PS + "String2" + Characters.PS + "String3", 2) // návrat "String2"

PageNumberOccurrences

Funkce počítá počet výskytů znaku nebo podřetězce ve hledaném řetězci.

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

Symbol a kód symbolu

Tyto funkce umožňují získat znak podle jeho kódu v kódování Unicode, stejně jako určit tento kód podle samotného znaku.

Funkce SymbolCode("A") // vrátí číslo 1 040
CharacterCode(1040) // funkce vrátí „A“

Běžné úkoly při práci s řetězci

Zřetězení řetězců

Pro spojení několika řetězců (pro provedení zřetězení) stačí použít operátor sčítání.

„Řádek 1“ + „Řádek 2“ //výsledkem přidání dvou řádků bude „Řádek 1 řádek 2“

Převod typu

Aby bylo možné převést typ na řetězec, například odkaz na prvek adresáře, číslo atd., stačí použít funkci „String()“. Funkce jako „ScrLP()“ také převedou proměnné na řetězec, ale okamžitě s ořezáním nepodstatných znaků.

String(1000) // vrátí "1 000"

Upozorňujeme, že při převodu čísla na řetězec program automaticky přidal mezeru oddělující tisíc. Abyste tomu zabránili, můžete použít následující konstrukce:

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

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

Citáty v řetězci

Poměrně často se budete muset vypořádat s nutností zadat uvozovky v řetězcové proměnné. Může to být buď text požadavku zapsaný v konfigurátoru, nebo jen proměnná. Chcete-li tento problém vyřešit, stačí nastavit dvě uvozovky.

Header = String("Horns and Hooves LLC - to jsme my!") // vrátí "Horns and Hooves LLC - to jsme my!"

Víceřádkový, zalomení řádku

Aby bylo možné vytvořit víceřádkový text Stačí do něj přidat zalomení řádků (Symbols.PS).

Víceřádkový text = „První řádek“ + Symboly.PS + „Druhý řádek“

Jak odstranit mezery

Chcete-li odstranit mezery vpravo nebo vlevo, můžete použít funkci „ScrAP()“ (stejně jako „ScrL()“ a „ScrP()“):

StringNoSpaces = Abbreviation(" Mnoho písmen ") // funkce vrátí hodnotu "Mnoho písmen"

Pokud po převodu čísla na řetězec potřebujete odstranit pevné mezery, použijte následující konstrukci:

StringNoSpaces = StrReplace(String(99999),Characters.NPP,"") // vrátí "99999"

Programátoři také často používají následující konstrukci, která umožňuje odstranit nebo nahradit jiným znakem všechny mezery v textové proměnné:

StringNoSpaces = StrReplace("ahoj","") // vrátí "ahoj"

Porovnání řetězců mezi sebou

Termíny můžete porovnat s obvyklým rovnítkem. Při srovnání se rozlišují velká a malá písmena.

"Ahoj" = "ahoj" // vrátí hodnotu False
"Ahoj" = "Ahoj" // vrátí hodnotu True
"Ahoj" = "Sbohem" // vrátí hodnotu False

Implementováno ve verzi 8.3.6.1977.

Rozšířili jsme sadu funkcí určených pro práci s řetězci. Udělali jsme to proto, abychom vám poskytli pokročilejší nástroje pro analýzu řetězcových dat. Nové funkce budou pohodlné a užitečné v technologických úlohách analýzy textu. V úlohách souvisejících s analýzou textu, který obsahuje data ve formátované podobě. Může se jednat o analýzu některých souborů přijatých ze zařízení, nebo například analýzu technologického deníku.

Dříve jste mohli provádět všechny akce, které provádějí nové funkce. Použití více či méně složitých algoritmů napsaných ve vestavěném jazyce. Nové funkce vám tedy neposkytnou žádné zásadně nové schopnosti. Umožňují vám však snížit množství kódu a učinit kód jednodušším a srozumitelnějším. Navíc umožňují zrychlit provádění akcí. Protože funkce implementované v platformě fungují samozřejmě rychleji než podobný algoritmus napsaný ve vestavěném jazyce.

Funkce formátování StrTemplate()

Tato funkce nahradí parametry do řetězce. Potřeba takové konverze často vyvstává například při zobrazování varovných zpráv. Syntaxe této funkce je následující:

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

<Шаблон>- toto je řetězec, do kterého musíte nahradit reprezentace parametrů.

<Значение1> , ... <Значение10>- jedná se o parametry (maximálně deset), jejichž reprezentace je nutné do řetězce dosadit.

Chcete-li označit konkrétní místo v šabloně, kde chcete provést náhradu, musíte použít značky jako %1, ... %10. Počet značek zapojených do šablony a počet parametrů obsahujících hodnoty se musí shodovat.

Například výsledek provedení takového operátoru:

bude tam řádek:

Chyba dat na řádku 2 (vyžadován typ data)

Funkce pro práci s řetězci StrCompare()

Tato funkce porovnává dva řetězce bez ohledu na velikost písmen. Například takto:

Stejnou akci můžete provést dříve pomocí objektu Porovnání hodnot:

Použití nové funkce však vypadá snadněji. A kromě toho funkce na rozdíl od objektu Value Comparison funguje jak v tenkém, tak ve webovém klientovi.

Funkce pro práci s řetězci StrStartsWith(), StrEndsAt()

Tyto funkce určují, zda řetězec začíná zadaným podřetězcem nebo zda řetězec končí zadaným podřetězcem. Algoritmus pro tyto funkce není obtížné implementovat ve vestavěném jazyce, ale jejich přítomnost vám umožňuje psát čistší a srozumitelnější kód. A pracují rychleji.

Například je vhodné je použít v příkazu If:

Funkce pro práci s řetězci StrDivide(), StrConnect()

Tyto funkce rozdělují řetězec na části pomocí zadaného oddělovače. Nebo naopak, spojí několik řádků do jednoho a vloží mezi ně vybraný oddělovač. Jsou vhodné pro vytváření nebo analýzu logů a technologických deníků. Záznam technologického protokolu můžete například snadno analyzovat na části vhodné pro další analýzu:

Funkce pro práci s řetězci StrFind()

Místo staré funkce Find() jsme implementovali nová vlastnost, který má další funkce:

  • Hledat v různých směrech (od začátku, od konce);
  • Vyhledávání ze zadané pozice;
  • Vyhledejte výskyt se zadaným číslem (druhý, třetí atd.).

Ve skutečnosti duplikuje schopnosti staré funkce. To se provádí za účelem zachování kompatibility s moduly zkompilovanými ve starších verzích. Doporučuje se, abyste již nepoužívali starou funkci Find().

Níže je uveden příklad použití nových možností vyhledávání. Zpětné vyhledávání je užitečné, když potřebujete poslední fragment formalizovaného řetězce, např. celé jméno soubor v URL. A vyhledávání ze zadané pozice pomáhá v případech, kdy potřebujete hledat ve známém fragmentu, a ne v celém řádku.

NA základní schopnosti Programovací jazyky obvykle zahrnují práci s čísly a řetězci. Obvykle jsou tyto funkce pevně zakódovány do kódu kompilátoru (nebo jsou implementovány „základní“ třídy programovacího jazyka).

V 1C je schopnost práce s řetězci naprogramována v samotné platformě. Dnes se podíváme na funkce práce s řetězci 1C v programech ve vestavěném jazyce 1C.

Hodnota řádku 1C

1. Začneme tím nejjednodušším. Vytvoření proměnné a přiřazení konstantní hodnoty řetězce vypadá takto v 1C:

Proměnná = "Ahoj světe!";

Pokud potřebujete zadat znak citace v konstantní hodnotě řetězce 1C, musíte jej zdvojnásobit „“

Proměnná = "Ahoj světe"!;

2. Zalomení řádku 1C lze zadat dvěma způsoby najednou. První je použití symbolu |

Proměnná = "Dobrý den,
| svět! ";

Druhým je použití systémového výčtu Symbols. Umožňuje přidat zalomení řádků 1C a další netisknutelné znaky, jako je TAB.

Proměnná = "Ahoj" + Symboly.PS + "mír!";

3. Konfigurace v 1C lze vyvíjet nejen pro jeden jazyk (ruštinu, angličtinu nebo jiný) - ale současně pro několik jazyků. V tomto případě je aktuálně používaný jazyk vybrán ve spodní části okna 1C.

Seznam jazyků se nachází v konfiguračním okně ve větvi Obecné/Jazyky. Každý jazyk má krátký identifikátor jako např ru nebo Ing.

Je jasné, že při programování takové konfigurace mohou být 1C linky i vícejazyčné. K tomu je možné vytvořit takový 1C řádek zadáním skrz; možnosti podle identifikátoru jazyka:

Proměnná = "ru=""Ahoj světe! ""; en=""Ahoj světe! """;

Pokud použijete takto vytvořenou čáru 1C jako obvykle, bude to, co je v ní napsáno. Aby jej systém rozdělil na dvě možnosti a použil požadovanou, musíte použít funkci НStr():

//správné pro dvojjazyčné konfigurace
Report(NStr(Proměnná));

Rekvizity s vedením typu 1C

Atribut je pole v adresáři/dokumentu 1C. Od proměnné v programu v jazyce 1C se liší tím, že u atributu je přesně uveden její typ (číslo, řetězec 1C atd.). Pokud si potřebujete osvěžit paměť, co je to rekvizita, podívejte se na lekci.

Pokud zadáte typ atributu - řádek 1C, musíte dodatečně zadat parametry.

1C řádky mají neomezenou délku (označuje se jako délka = 0) a omezenou délku, udávající přesný počet znaků. 1C řádky neomezené délky jsou uloženy v samostatném SQL tabulka, takže jejich použití je méně produktivní než omezené.

Proto má použití 1C strun neomezené délky svá omezení – není možné je použít všude. Není například povoleno jako číslo dokumentu, referenční kód nebo měření.

Práce se strunami 1C

Platforma 1C má několik vestavěných funkcí pro práci se strunami.

  • AbbrLP („Neuvěřitelné, ale pravdivé!“)
    Odstraní nadbytečné mezery z řádku 1C. Lze také použít k převodu libovolných typů na řetězec 1C (například čísla).
  • Proměnná = "Vasya" + AbbrLP(" plus") + "Olya"; //bude "Vasya plus Olya"
    Příklad sečtení několika hodnot řetězce 1C. Výsledkem bude jeden řádek 1C.
  • Proměnná = Lev("Hudba", 2); //bude "Mu"
    Proměnná = Medium("Hudba", 2, 2); //bude tam "hrozba"
    Proměnná = Rights("Hudba", 2); //bude "ka"
    Různé možnosti pro získání podřetězce z řetězce 1C.
  • Proměnná = Najít("Hudba", "zy"); //budou 3
    Vyhledejte podřetězec v řetězci 1C počínaje znakem 1.
  • Proměnná = StrLength("Hudba"); //bude 6
    Vrátí počet znaků na řádku 1C.
  • Report("Ahoj") //v okně zpráv v dolní části okna 1C
    Alert("Ahoj") //vyskakovací dialogové okno
    Status("Ahoj") //v řádku zobrazení stavu vlevo dole
    .

Přiveďte objekty na řádek 1C

Jak víte, v současnosti je nejpopulárnějším formátem pro výměnu strukturovaných informací XML. Dokonce Nejnovější verze SLEČNA Office Word a Excel ukládají soubory v tomto formátu (docx a xlsx změňte příponu na zip, otevřete v archivátoru).

Platforma 1C pro výměnu dat poskytuje několik možností, z nichž hlavní je také XML.

1. Nejjednodušší metodou je použití funkce Abbreviation() nebo String(). V těle požadavku můžete použít funkci REPRESENTATION(). Výsledek jejich akce je stejný – vygenerují pro uživatele řetězcovou reprezentaci libovolného 1C objektu.

U adresáře to bude ve výchozím nastavení jeho název. U dokumentu – název dokumentu, číslo a datum.

2. Jakýkoli objekt 1C (s omezeními) lze převést do XML a naopak. Proces převodu se nazývá serializace.

StringViewXml = XMLString(Value); //získání XML z hodnoty 1C
Hodnota1C = XMLValue(Type("DirectoryLink.Nomenclature"),TypStringXml); //získáte hodnotu 1C z řetězce XML, musíte zadat typ 1C, který má být přijat

3. Existuje vlastní způsob platformy 1C, jak převést jakýkoli objekt 1C na řetězec. To migrovalo z verze 1C 7.7. Tomuto formátu nerozumí jiné programy, ale ostatní 1C mu rozumí, což usnadňuje jeho použití pro výměnu mezi databázemi 1C.

Řádek = ValueInRowInt(Value1C); //získáme řetězec 1C z hodnoty 1C
ValueVFile("C:\MyFile.txt", Hodnota1C); //další možnost, z hodnoty 1C získáme soubor s uloženým řetězcem
Hodnota1C = ValueFromStringInt(String); //zpět z řádku 1C
Hodnota1C = ValueFile("C:\MyFile.txt"); //zpět ze souboru

Úprava 1C řádků na formuláři

Kromě práce s 1C řetězci v programu v jazyce 1C bych si samozřejmě přál, aby je uživatel mohl upravovat. K tomu existuje několik možností:

1. Nejjednodušší způsob je požádat o vstup linky 1C na vyžádání. Tato metoda se používá při výuce programování 1C, v životě se používá mnohem méně často (ale používá se!).

Proměnná = "";
Řádek = EnterValue(Proměnná, "Zadejte celé jméno");

2. Pro zobrazení detailů objektu 1C (adresář/dokument) nebo detailů formuláře (viz) se nejčastěji používá vstupní pole. Toto je nejběžnější nástroj v 1C pro uživatele pro práci s editačními poli.

3. Možnosti vstupního pole lze rozšířit (viz vlastnosti vstupního pole, klikněte pravým tlačítkem myši na něm, další podrobnosti):

  • Zaškrtávací políčko Režim víceřádkových úprav
  • Zaškrtávací políčko Pokročilé úpravy (dostupné, pokud je zaškrtnuté předchozí políčko)
  • Zaškrtávací políčko Režim hesla (viz).

4. Pokud by vám nestačily všechny možnosti vstupního pole, je zde vestavěný editor. Chcete-li jej přidat do formuláře, musíte přidat pole do ovládací nabídky Formulář/Vložit textový dokument. V jeho vlastnostech můžete určit jeho provozní režim – vlastnost Extension.

Pole textového dokumentu nelze přímo přiřadit k datům. Je nutné napsat funkci do obsluhy události OnOpen() formuláře (viz):

Form Elements.ElementNameTextDocumentField.SetText(StringValue); //zde ValueString je text přijatý například z atributu

A v obslužné rutině ukládání - například v tlačítku Uložit - přidejte uložení:

ValueString = FormElements.ElementNameTextDocumentField.GetText(); //ValueŘádek zde je atribut, kam uložíme hodnotu

5. Ve verzi 1C 8.2.11, in kontrolované formy, objevil se novou příležitost 1C čárová reprezentace – Formátované pole dokumentu.


Podobně jako pole textového dokumentu si jej musíte nastavit při jeho otevření a zapsat si jej při ukládání sami pomocí programu.

  • V objektu 1C, jehož formulář vytváříme (adresář, dokument, zpracování atd.) - přidejte atribut s typem Value Storage
  • Ve funkci OnReadOnServer() nastavíme text z atributu

    //zde Atribut je přidaný atribut objektu 1C
    //zde FormattedDocument je název pole ve formuláři pro úpravy
    &Na serveru

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

  • Ve funkci BeforeWritingOnServer() nebo pomocí tlačítka napíšeme text z pole

    &Na serveru
    Postup při ReadingOnServer(CurrentObject)
    CurrentObject.Props = NewValueStorage(FormattedDocument);
    Konec procedury