Primitivní datové typy za 1 s. Použití definovaných typů

Tento článek pokračuje v sérii článků „První kroky ve vývoji 1C“. Bude mluvit o primitivních datových typech a nejčastějších funkcích při práci s nimi. Po přečtení materiálu se dozvíte:

  • Jaké datové typy jsou primitivní?
  • Jak můžete pracovat se strunami a jaké vlastnosti je třeba vzít v úvahu?
  • Jaké jsou jemnosti práce s číselnými výrazy?
  • Jak popsat datum s konkrétní hodnotou? Jak nastavit prázdné datum?
  • Jak funguje převod typů?
  • Null a Undefined – co to je a jaké jsou rozdíly?
  • Jak určit, jaký je typ objektu/proměnné?

Použitelnost

Článek byl napsán pro platformu 1C verze 8.3.4.496, informace jsou tedy relevantní i pro aktuální verzi platformy. Nutno však podotknout, že ve verzi 8.3.6.1977 byly přidány nové funkce pro práci s řetězci. Proto, až budete opakovat kroky z článku, nebuďte překvapeni, pokud v odpovídající části Syntax Assistant uvidíte některé funkce, které nejsou zobrazeny na našem snímku obrazovky. Také vám doporučujeme, abyste se seznámili s novou metodou StringWithNumber() přidanou na platformě 8.3.10.

Primitivní datové typy a některé jejich funkce

Rozlišují se následující primitivní datové typy:

Řetězcové konstanty

Primitivní datový typ Čára(řetězcová konstanta) se skládá z různých znaků. Čára je vždy ohraničeno uvozovkami. Příklad řetězcové konstanty:

Message.Text = “Jsou prázdná data”;

Tito. k atributu je přiřazen řádek „Existují prázdná data“. Text objekt Zpráva. Cokoli obklopené uvozovkami je považováno za řetězec.

Řetězec se může skládat z libovolných znaků. Řetězce mohou být víceřádkové. V tomto případě musí být každý nový řádek definován v uvozovkách. Například:

Text = „Vyplněny neplatné údaje“
„Dokument nelze odeslat“;

Středník se umísťuje až na konec posledního řádku.

Existuje ještě jeden způsob - orámovat celý text pouze jednou uvozovkou, ale každý nový řádek musí začínat svislým pruhem.

Tato syntaxe se nejčastěji používá v typických konfiguracích. Zejména v dotazovacím jazyce. Například:

Žádost.Text =
"VYBRAT
| Zaměstnanci.Jméno AS zaměstnanec,
| Zaměstnanci. Datum narození AS Datum narození
|OD
| Adresář.Zaměstnanci JAK Zaměstnanci
| KDE
| NE Zaměstnanci Toto je skupina“;

Je třeba poznamenat, že operace sčítání je definována pro řetězce. Toto není aritmetická operace, nazývá se operace zřetězení.

Tito. musíte zkombinovat například dva řádky se znaménkem „+“ mezi řádky:

Text = „Údaje jsou špatně vyplněny“ + „Doklad nelze odeslat“;

Řádky jsou tedy zřetězeny. Operace zřetězení je samozřejmě použitelná pro více řetězců. Jiné operace (odčítání, násobení, dělení) nejsou s řetězci povoleny.

Pokud slovo v řetězci potřebuje být uzavřeno v uvozovkách, pak musí být uvozovka uvnitř řetězce definována dvojitými uvozovkami. Například:

Text = “Chyba v modulu “Obecný modul1””;

V tomto příkladu první uvozovka začíná řetězec. Druhá a třetí uvozovka vedle sebe označují uvozovky.

A na konci jsou tři uvozovky: úplně poslední uvozovka uzavírá řádek, dvě předchozí označují uvozovku.

Na řetězcích jsou možné různé operace převodu řetězců, identifikace prvních několika levých znaků, identifikace několika znaků nejvíce vpravo, hledání podřetězce v řetězci atd.

Všechny tyto funkce jsou dostupné kdekoli v konfiguraci.

V asistentu syntaxe jsou v sekci Obecný popis vestavěného jazykaVestavěné funkceFunkce pro práci s hodnotami typu String.

Funkcí je poměrně velké množství a pro práci s řetězcovými konstantami většinou postačí.

Podívejme se na příklad řešení problému pomocí řetězcových funkcí.

Úkol:

Je třeba vyvinout funkci. Funkci je předán jako parametr libovolný řetězec. Znaky v řádku mohou být také číslice.

Posloupnost číslic (jedna nebo více), oddělených od ostatních znaků mezerami, představuje kladné celé číslo.

Například řetězec „72 ABC 6AP 31 54f -22“ obsahuje dvě kladná celá čísla: 72 a 31. Kromě mezer se nepoužívají jiné nepodstatné znaky (jako jsou tabulátory, návraty na začátek řádku). Funkce musí vrátit počet kladných celých čísel.

Musí být umístěn v modulu spravované aplikace. Je nutné zajistit, aby byl vyvolán při startu systému. Definujte řetězec pomocí proměnné.

Otevřeme tedy modul spravované aplikace a vybereme ze seznamu ve výběrovém poli na panelu konfigurátoru Modul standardní manipulátor AtSystemStart().

Uvnitř handleru definujeme proměnnou Čára, Například:

Řádek = „72 ABC 6AP 31 54f -22“;

Množství = Počet IntegerNumbers(String);

Pošleme zprávu o počtu celých čísel:

Report("Řádek obsahuje " + Číslo + " celá čísla");

V tomto případě proměnná Množství budou implicitně převedeny na typ Řetězcová konstanta. Poté se na třech řetězcích provede operace zřetězení a zpráva se přenese.

Definujme začátek a konec (tedy šablonu) funkce Počet celých čísel (řetězec).

Nyní se podíváme na jednu z možných možností vývoje funkce Počet celých čísel (řetězec). Zároveň se seznámíme s některými vestavěnými funkcemi určenými pro práci s řetězci.

Nejprve byste se měli seznámit s funkcí Kód symbolu. Tato funkce získá kód znaku umístěného v předávaném řetězci na pozici se zadaným číslem.

Syntax:

CharacterCode(,)

Možnosti:

(Požadované)

(nepovinné) – jedná se o číslo znaku v řádku, jehož kód chcete získat. Číslování znaků v řádku začíná od 1.

Návratová hodnota:
Kód přenášeného znaku. Kód je vrácen podle kódování Unicode.

Vezměte prosím na vědomí, že parametr Výchozí hodnota je 1.

Řetězec se může skládat i z jednoho znaku. Je tedy možné určit kód 0 a kód 9 a kódy všech ostatních číslic jsou, jak známo, v intervalu mezi nimi.

Pojďme definovat odpovídající proměnné a jejich hodnoty:

Code0 = CharacterCode(“0”);
Code9 = CharacterCode(“9”);

K vyřešení problému zvolíme následující schéma:

  1. Pokud řádek obsahuje úvodní nebo koncové mezery v libovolném množství, pak se jich zbavíme speciální funkcí. Dále nás budou zajímat skupiny znaků mezi vnitřními mezerami. Pokud se skupina skládá pouze z číslic, pak je to celé číslo. Existuje speciální funkce, kterou lze použít k určení polohy první mezery.
  2. Jakmile máte pozici první mezery, můžete pomocí jiné funkce dostat skupinu znaků (podřetězec) nalevo od mezery.
  3. Pojďme analyzovat znaky, které tvoří skupinu, a určit, zda se jedná o celé číslo. Identifikovaná celá čísla budou sečtena ve speciální proměnné.
  4. Zkrátíme počáteční řádek tak, že pomocí jiné funkce vybereme všechny znaky nyní vpravo od mezery. Tato mezera by mohla být nejen jedna, ale celá řada mezer v řadě, takže ve zbývajícím řádku se speciální funkcí zbavte všech mezer zcela vlevo (v řadě) a vraťte se k bodu 2. Zopakujeme kroky z bodu 2 do bodu 4, dokud nedosáhneme podmínky, že v řádku nezůstanou žádné mezery. V tomto případě bude zkrácený řetězec tvořit poslední skupinu analyzovaných znaků.

Nyní se podívejme na funkce, které potřebujeme k vyřešení problému.

AbbrLP
Syntaxe: AbbrLP()
Možnosti: (Požadované).
Ořízne mezery (nevýznamné znaky) nalevo od prvního významného znaku v řetězci a napravo od posledního významného znaku v řetězci.

Nalézt
Syntaxe: Find(,)
Možnosti: (Požadované), (Požadované).
Vrátí pozici prvního znaku nalezeného podřetězce.
Číslování znaků v řetězci začíná od 1. Pokud řetězec neobsahuje zadaný podřetězec, vrátí se 0. V našem případě použijeme jako podřetězec mezeru (“ ”).

Lev
Syntaxe: Lev(,)
Možnosti: (Požadované), (Požadované).
Vybere první levé znaky řetězce. Pomocí této funkce určíme skupiny znaků pro analýzu (zleva do první mezery).

StrLength
Syntaxe: StrLength()
Možnosti: (Požadované).
Získá počet znaků v řetězci. Použijeme ho k určení délky řetězce.
Funkce Kód symbolu, který budeme používat k identifikaci skupin znaků, které jsou celá čísla, byl popsán dříve.

Že jo
Syntaxe: Right(,)
Možnosti: (Požadované), (Požadované).
Vybere znaky nejvíce vpravo v řetězci. Pomocí této funkce vybereme dosud nezpracovanou část řetězce.

AbbrL
Syntaxe: zkratka()
Možnosti: (Požadované).
Ořízne mezery (nevýznamné znaky) vlevo od prvního významného znaku v řetězci. Tuto funkci používáme k odstranění případných mezer na levé straně zbytku řetězce.

Níže je uveden možný algoritmus funkce s komentáři.

Číselné výrazy

Proměnné modulů a detaily databázových objektů mohou být číselné.
Pro číslo je omezen počet číslic. U číselných podrobností nesmí délka celé části přesáhnout 32 znaků.

Přesnost zlomkové části nesmí přesáhnout 10 číslic. Když je proměnná popsána a je jí přiřazena číselná hodnota, její bitová hloubka se nikde nezaznamenává. Existují však také omezení pro proměnné.

Pomocník syntaxe říká, že maximální povolená bitová hloubka pro číslo je 38 znaků. Takové omezení nebrání řešení případných ekonomických problémů, tzn. Pomocí těchto čísel lze popsat jakoukoli peněžní hodnotu.

Pokud však stále potřebujete popsat velké množství k vyřešení některých matematických problémů, pak v teorii programování existují algoritmy, které vám umožňují popsat čísla s libovolnou dimenzí na základě existujících omezení.

Operace použitelné pro čísla:

  • běžné aritmetické operace (-, +, *, /). Násobení a dělení má přednost před sčítáním a odčítáním. Závorky mají nejvyšší prioritu. Existují také unární operátory + a -, jejichž přednost je bezprostředně za závorkou;
  • operace „zbytek divize“ (%). Například 12%5=2;
  • matematické funkce, které lze použít pro čísla (gonometrické funkce, umocňování, odmocnina, zaokrouhlení na zadanou hodnotu místa, výběr celé části čísla)

Pokud mluvíme o přesnosti číselných hodnot, pokud jde o databázové detaily, pak existují přirozená omezení.

Ale co se proměnných týče, je zde jedna zvláštnost. Ve skutečnosti můžete pracovat s velmi velkými čísly v proměnných, ale hodnoty s délkou celé části nepřesahující 32 znaků budou uloženy v informační základně.

Booleovské hodnoty

Pokud jde o datový typ Boolean, existují pouze dvě hodnoty, True a False, které lze získat různými způsoby.

Můžete například použít porovnávací operace mezi čísly nebo daty. V důsledku toho bude získána určitá booleovská hodnota, která se v budoucnu nejčastěji používá v podmíněných příkazech a operátorech smyček.

Literály typu Datum

Existují dva způsoby, jak popsat datum. Jedním z nich je použití doslovného. Doslov je psán v jednoduchých uvozovkách.

Nejprve se píše rok, pak měsíc a pak den.

V případě potřeby můžete určit i čas, protože v systému 1C:Enterprise 8 každé datum obsahuje datum i čas. Například:

Datum dokumentu = '20140315121020';

Není-li čas zadán, výchozí je nula. V popisu data můžete použít libovolný oddělovač. Například:

Datum dokumentu = '2014.03.15';

Druhým způsobem, jak určit datum, je použít funkci globálního kontextu Datum(). V tomto případě této funkci předáme totéž jako parametry: rok, měsíc, den oddělené čárkami.

Můžete také určit čas. Pokud jej nezadáte, použije se jako výchozí začátek dne.

V systému 1C:Enterprise 8 je prázdným datem úplný začátek kalendáře. Možnosti nahrávání:

EmptyDate = '00010101';
EmptyDate = Datum(1,1,1);

Oba záznamy vrátí stejný výsledek a toto datum bude považováno za prázdné.

Pohodlí funkce Datum() Jde o to, že do něj můžeme přenést ne konkrétní hodnoty, ale nějaké proměnné. To znamená, že někdy vytváříme datum sběrem různých proměnných.

Operace přidání platí pro data. Operace přidání přidá k datu zadaný počet sekund.

Primitivní převody datových typů

V příkazu přiřazení, kde se sčítá více proměnných (např. Proměnná = A + B + C), převod primitivních datových typů je možný. Konverze datového typu se provádí na hodnotě prvního datového typu.

Pokud je tedy prvním datovým typem řetězec, pak se systém pokusí vytvořit řetězec z celého výrazu. Pokud je prvním datovým typem číslo, pak se systém pokusí získat číselný datový typ.

A tak řetězec + číslo = řetězec. Někdy lze k řetězci přidat číslo, pokud lze z řetězce získat nějakou číselnou hodnotu (například 123 + „456“).

Pro logický datový typ platí následující výrazy:

Pravda AND 1 = Pravda;
Pravda A 0 = Nepravda.

Jakékoli číslo větší než nula je převedeno na True, 0 je převedeno na False.

K číslu lze, jak již bylo uvedeno výše, přidat datum. K datovému typu Boolean lze také přidat data.

V tomto případě se True převede na 1 a False na 0.

Kromě převodu typu v operátorech je možná převod explicitního typu pomocí příslušných funkcí: String(), Number(), Date(), Boolean().

NA Čára převede se jakýkoli datový typ.

Číslo lze získat z řetězce nebo z booleanu. Booleovské konverze: True na 1, False na 0.

Můžete přetypovat řetězec do Date, pokud obsahuje hodnotu data. Například Datum(“20140315”). Jak již bylo uvedeno výše, je možné převádět podle pozice:

Datum(,).

Číslo a samotnou logickou hodnotu můžete převést na logickou hodnotu.

Tyto funkce lze použít v kódu programu k provedení explicitní konverze typu.

Primitivní datové typy Number, String, Date a Boolean mohou fungovat jako databázová pole.

Hodnoty Null a Undefined

NULL je doslovný. Obvykle se používá v databázových dotazech, když jsou spojeny dvě nebo více tabulek.

Právě chybějící záznamy ve druhé tabulce jsou vyplněny hodnotou NULL. Tito. je to jakási chybějící hodnota.

V budoucnu při zpracování výsledného výsledku je třeba s tím počítat, protože NULL není nula, ale odpovídající datový typ.

Aby mohla být hodnota zpracována, musí být NULL přetypována na nějaký běžný datový typ, který lze odeslat nebo použít v aritmetických operacích.

Hodnotu typu NULL lze získat také ve vestavěném jazyce. Můžete definovat proměnnou a přiřadit jí stejnou hodnotu NULL. Takové přiřazení se však v programovém kódu téměř nikdy nepoužívá.

Tito. NULL je ve skutečnosti datový typ, který se získává při práci s dotazy. S hodnotou NULL v dotazovacím jazyce je třeba zacházet zvláštním způsobem.

Konkrétně, porovnání A=NULL nebude fungovat na úrovni dotazu, bude potřeba použít specializované funkce. Ve vestavěném jazyce však bude porovnání s hodnotou NULL zpracováno správně.

Datový typ Nedefinováno je neprázdná hodnota nějakého atributu.

Pokud má například atribut adresáře jako datový typ odkaz na jiný adresář, pak se prázdná hodnota tohoto atributu nebude rovnat hodnotě Nedefinováno.

Tento typ (Undefined) se objeví za prvé, pokud máme určitou proměnnou a není inicializována (datový typ není definován).

Druhý příklad: Datový typ Undefined je vrácen mnoha vestavěnými jazykovými funkcemi, pokud nelze akci provést.

Například hledání prvku adresáře podle názvu, pokud některý adresář takový název prvku nemá. Metoda FindByName vrátí hodnotu Nedefinováno.

V čem Nedefinováno je klíčové slovo, je zvýrazněno červeně. To je také doslovné, pro psaní Nedefinováno není třeba používat žádné uvozovky, čárky, závorky atd.

Pokud existuje seznam dokumentů a tento seznam je prázdný (nejsou v něm tedy žádné řádky), aktuální řádek bude mít hodnotu Nedefinováno.

Pokud má infobáze atribut se složeným datovým typem, pak se prázdná hodnota tohoto atributu bude rovnat Nedefinováno.

Pokud však datový typ není složený, pak bude prázdná hodnota odpovídat prázdné hodnotě tohoto typu (pro datum je to první sekunda první hodiny prvního dne prvního měsíce prvního roku).

NULL a Undefined jsou datové typy a hodnoty v těchto typech a jedna a pouze jedna. Pro NULL je to hodnota NULL, pro Undefined je to Nedefinováno.

Typ dat Typ

Hlavním využitím tohoto datového typu je porovnání hodnoty určité proměnné nebo databázového atributu s konkrétním typem.

Tito. V algoritmu musíte pochopit, jaký je typ daného objektu.

Je pozoruhodné, že tento datový typ nemá literál. Nemůžeme to zapsat jako NULL nebo Undefined, ale můžeme získat hodnotu tohoto typu pomocí dvou funkcí Typ A TypeValue.

Abychom získali typ nějakého objektu (může to být proměnná, databázový atribut nebo formulářový atribut), použije se funkce TypeValue.

Této funkci je předán objekt, pro který chcete získat datový typ.

Tato funkce vrací typ typu jako návratovou hodnotu.

V budoucnu by se měl porovnávat s jakýmkoliv typem úroku. Například:

If TypeValue(Element) = Type (“DirectoryLink.Nomenclature”) Then
Report("Toto je produkt");
endIf;

Na závěr si shrňme veškerý probraný materiál.

Podívali jsme se na základní struktury vestavěného jazyka 1C, naučili jsme se používat proměnné a operátory a přišli jsme na to, proč a jak používat procedury a funkce. Všimněte si, že v podstatě veškerý náš programový kód byl až do tohoto bodu soběstačný – vše jsme si psali sami od začátku a některé konfigurační objekty nebo vestavěný jazyk jsme používali na minimum.

Tyto objekty prozkoumáme podrobněji v příštím článku, takže zůstaňte naladěni! ;)

/
Vytváření a úpravy objektů metadat

Použití definovaných typů

Rozsah aplikace: řízená aplikace, normální aplikace.

1. Definované typy jsou určeny k definování datových typů, které popisují často používané entity nebo se s vysokou mírou pravděpodobnosti mohou změnit při implementaci aplikačního řešení. Umožňují znovu použít popsaný typ nebo sadu typů bez uvedení kompozice na různých místech v konfiguraci (v detailech, vlastnostech objektů, formulářů atd.).

Viz také článek o ITS: „Objekty konfigurace – definované typy“

2.1. Chcete-li definovat jednoduchý typ a jeho kvalifikátory, které mají aplikovaný význam, který se používá v různých atributech, zdrojích, atributech formuláře, rozložení atd. v rámci jakéhokoli subsystému nebo v celém aplikačním řešení. To zajišťuje, že data budou mít stejnou délku a přesnost na všech místech použití, a zjednoduší úpravu, pokud se požadavky změní.
Například:

  • Číslo faktury- Řetězec, délka 30. Upravuje formát čísla faktury v různých dokumentech: Příjem zboží a služeb, EntryBooksNakupování, Vrácení zboží od zákazníka atd.
  • Doručovací adresa- Řetězec, 500. Textová reprezentace doručovací adresy v dokumentech Objednávka dodavateli, Doručovací adresaDopravce, ve zpracování Prodavač, v rekvizitách Doručovací adresaDopravce dokument Žádost o vrácení zboží od zákazníka atd.

2.2. Definovat složený typ, který je široce používán v objektech subsystému nebo v celém aplikačním řešení. Definovaný typ zaručuje stejnou skladbu (typ) dat na všech místech použití a také zjednodušuje úpravu a implementaci subsystémů v konfiguracích aplikací.

Konfigurace například zahrnuje subsystém Interakce, který je určen pro vedení emailové korespondence, nahrávání hovorů a jednání. Při implementaci tohoto subsystému se vývojář rozhodl pro složení objektů metadat, které mohou fungovat jako „interakční kontakty“ - jedná se o prvky adresářů Jednotlivci, Partneři, Kontaktní osobyPartneři, a specifikoval tuto skladbu typů v definovaném typu Kontakt Interakce poskytované v subsystému. Definovaný typ je zase široce používán v detailech objektu a formulářích subsystému (v dokumentech Setkání, PlannedInteraction- tabulková část Účastníci, v dokumentu ZprávaSMS– tabulková část Adresáti, v dokumentu Telefonát- rekvizity Předplatitel Kontakt, v obecných formách Adresář, Vyberte možnost Kontakt- náležitosti KontaktyO předmětu,v parametru rozložení Hierarchie interakcíKontakt deník dokumentů Interakce atd.) Jinak bez použití definovaného typu Kontakt Interakce bylo by nutné odstranit objekty subsystému z podpory a specifikovat požadovanou skladbu typů na všech uvedených místech.

2.3. Při vývoji implementovaného subsystému - předefinovat typ aplikace, který bude specifikován při implementaci.
Například typ subsystému Dodavatelé během implementace lze nahradit typem konfigurace aplikace Protistrany.

3. Je nesprávné používat definované typy k definování „synonyma“ pro existující typ, „nahrazovat“ entity, pro lokální (nikoli hromadné) použití v rámci jednoho subsystému (konfigurace) bez nutnosti implementace v jiných konfiguracích, pouze z důvodů snadné úpravy. Zpravidla to ukazuje na konstrukční chybu nebo metodicky nesprávnou volbu názvu původního typu.

Přihlaste se na stránku jako student

Pro přístup ke školním materiálům se přihlaste jako student

Interní programovací jazyk 1C 8.3 pro začínající programátory: datové typy v 1C

Nyní víme, jak donutit počítač, aby provedl naše příkazy (použijeme jako příklad příkaz „Report“) a jak příkazům předat určité parametry (text zprávy, která následuje v závorkách za „Report“). Také jsme si uvědomili, že všechny příkazy jsou odděleny středníky.

Typy dat

Jedním z hlavních programovacích úkolů je zpracování dat, pojďme tedy zjistit, jaké jsou hlavní datové typy v jazyce 1C:

  • Čára. Vynikajícím příkladem takových údajů je citát z básně "Bouřka pokrývá nebe temnotou,". Upozorňujeme, že data typu String jsou vždy uzavřena dvojité uvozovky.
  • Číslo. Všichni známe datový typ. Často to řešíme v reálném životě: v práci v den výplaty a pak v obchodě. Čísla, jak samozřejmě víte, mohou být Celý A zlomkové. Příklad celého čísla: 1000000 a zlomku: 3,14. Dílčí část je oddělena od celé části tečka. Čísla mají také znak: Plus nebo mínus.
  • datum. Příkladem tohoto typu údajů je vaše datum narození. Zahrnuje rok, měsíc a den. Například první pilotovaný let do vesmíru se uskutečnil 12. dubna 1961. V počítačovém jazyce budou tato data vypadat takto: " 19610412 ". Zkuste sami přijít na to, proč tomu tak je. Datum je vždy." jednoduché uvozovky ().

Úkol č. 6. Zapište si v počítačovém formátu (pomocí vhodného datového typu) odpovědi na následující otázky:

  1. Kdy byla vypuštěna první umělá družice?
  2. Jak se jmenoval první kosmonaut?
  3. Kolik planet je ve sluneční soustavě?

Zkontroluj se

Na základě výsledků úlohy č. 7 lze vyvodit zajímavý závěr: příkazu Report lze jako parametr předat nejen řetězce, ale i data jakéhokoli jiného typu.

Zpracování dat

Nyní konečně zpracujeme tato data! Jaké operace můžeme s daty provádět? Záleží na jejich typu.

Například můžeme spojit řetězce jeden s druhým pomocí znaku sčítání:

Pro složitější aritmetické výrazy použijte závorky:

Úkol č. 8. Postupujte podle těchto příkladů v počítači.

Typový systém je speciální systém, pomocí kterého jsou organizována data využívaná aplikačními řešeními. Typový systém vám umožňuje prezentovat informace ze skutečného světa termíny, které jsou pro 1C:Enterprise 8 „srozumitelné“.

Typový systém poskytuje široké možnosti jak pro přímý popis obchodní logiky aplikačních řešení, tak pro provádění mezilehlých úloh zpracování dat.

Popis typového systému je obsažen v asistentu syntaxe, ve vestavěné nápovědě a v dokumentaci.

Hlavním rysem typového systému je, že existují typy, které existují v jakémkoli aplikačním řešení. Tyto typy samy o sobě jsou definovány na úrovni platformy a jsou vždy přítomny bez ohledu na akce vývojáře. Spolu s nimi mohou v konkrétním aplikačním řešení existovat různé typy dat obsažených v tomto konkrétním aplikačním řešení. Pro takové typy dat jsou na úrovni platformy definována pouze obecná pravidla pro jejich tvorbu a šablony. A konkrétní typy dat vytváří platforma na základě toho, jak vývojář vytváří a upravuje strukturu aplikačního řešení.

Datové typy definované na úrovni platformy

Sada typů, se kterými mohou aplikační řešení fungovat, je poměrně různorodá. Umožňuje řešit jak problémy se zpracováním dat, tak úkoly prezentace těchto dat uživateli a interaktivní práce s nimi. Existuje několik hlavních kategorií datových typů.

Primitivní typy

Primitivní datové typy jsou typy jako např Čára, Číslo, datum, Boolean a další. Tyto typy nejsou pro 1C:Enterprise 8 něčím zvláštním. Takové datové typy zpravidla existují v jiných softwarových systémech.

Hodnoty primitivních typů jsou jednoduché nedělitelné hodnoty, ve kterých nelze rozlišit jednotlivé komponenty. Například hodnoty jako Číslo může být 1, 8, 15 atd. Chcete-li vytvořit hodnotu primitivního typu, musíte ji zadat v textu programu doslovný- symbolický identifikátor hodnoty.

Kolekce obecných hodnot

Existují i ​​složitější datové typy. Platforma například podporuje řadu typů, které jsou obecnými kolekcemi hodnot: Pole, Struktura, ListValues a další.

Běžné typy

Kromě toho platforma implementuje specifické datové typy, které implementují jednu nebo druhou funkci aplikačního řešení: Textový dokument, Tabulkový dokument, StorageValues, Tvůrce dotazů a další.

Obecné typy se také nazývají běžné předměty. Hodnoty těchto typů, na rozdíl od hodnot primitivních typů, jsou souborem hodnot jednotlivých vlastností objektu. Proto se jim říká instance objektů.

Instance objektů jsou vytvářeny pomocí speciálního vestavěného jazykového operátoru - Nový.

Typy rozhraní

Typy rozhraní umožňují organizovat vizuální interakci aplikačního řešení s uživatelem. Jedná se především o typy související s provozem formulářů a jejich prvků.

Typy dat generovaných v aplikačním řešení

Kromě datových typů, které jsou definovány na úrovni platformy, však může konkrétní aplikační řešení používat jedinečné datové typy, které existují pouze v tomto konkrétním aplikačním řešení. Platforma navíc bude plně podporovat práci s těmito datovými typy stejně jako s typy, které jsou definovány na úrovni samotné platformy.

Vznik nových datových typů v aplikačním řešení je zpravidla spojen s použitím aplikačních konfiguračních objektů. Proto se těmto typům také říká typy aplikací nebo aplikované objekty.

Na úrovni platformy je podporováno několik tříd (šablon) aplikačních objektů, které samy o sobě nemohou být použity v konkrétním aplikačním řešení. Můžete například uvést třídy objektů aplikace jako např Adresáře, Dokumentace, Informační registry, Charakteristické typové plány atd.

Pro každou třídu aplikačních objektů je definována základní funkcionalita jí odpovídající: typy databázových tabulek, které je nutné vytvořit pro ukládání dat, standardní formuláře, objekty standardního jazyka, sady práv atd.

Vývojář při vytváření aplikačního řešení nemá možnost používat tyto třídy přímo, ale může do svého aplikačního řešení přidat nový konfigurační objekt, který zdědí všechny funkce konkrétní třídy:

Vývojář může například do svého aplikačního řešení přidat novou referenční knihu Nomenklatura Adresáře nebo nový dokument Pokladní zpráva, který zdědí funkčnost třídy Dokumentace.

Bezprostředně po takovém přidání jsou vývojáři k dispozici nové datové typy, jejichž složení je určeno příslušností konfiguračního objektu k určité třídě aplikačních objektů.

Například po vytvoření nového adresáře Nomenklatura, budou k dispozici následující typy dat:

  • DirectoryManager.Nomenklatura,
  • DirectoryLink.Nomenklatura,
  • DirectoryObject.Nomenclature,
  • DirectorySelection.Nomenklatura,
  • DirectoryList.Nomenklatura.

Typový systém popisuje pouze obecnou „strukturu“ tohoto typu, pravidla, podle kterých budou objekty tohoto typu tvořeny. Konkrétní název typu, skladba vlastností a metod objektu bude záviset na tom, jak vývojář konfigurační objekt pojmenuje a jaké například detaily a části tabulky do něj přidá.

Zároveň po vytvoření nového registru akumulace Prodejní společnost, složení nových datových typů se bude lišit:

  • Registr akumulace Vedoucí prodeje společnosti,
  • RegisterAccumulationSelection.SalesCompany,
  • RegisterAccumulationList.SalesCompany,
  • RegisterAccumulationSetRecords.SalesCompany,
  • Akumulace RegisterRecord.Company Sales,
  • Akumulační registrRecord Key.Company Sales.

Je třeba znovu poznamenat, že tyto datové typy nejsou platformou nativně podporovány a existují pouze v konkrétním aplikačním řešení.

Další bod, který je třeba zdůraznit, je nejjednodušší demonstrovat na příkladu.

Řekněme, že v aplikačním řešení byly vytvořeny dva nové adresáře: Nomenklatura A Ceny. I když oba tyto objekty dědí funkčnost odpovídající třídy Adresáře a pro ně byla v aplikačním řešení vytvořena stejná sada datových typů, „stejné“ datové typy budou různé datové typy. Například, DirectoryObject.Nomenclature Typ dat.

Definované typy jsou novým objektem metadat 1C, který se objevil v platformě verze 8.3. Objekt je pomocného charakteru. Podívejme se, jaké jsou definované typy a úkoly, které tento objekt může řešit.

Definovány jsou nové datové typy, jejichž množinu určuje vývojář aplikačního řešení. Skládá se z několika platných typů. Tento datový typ může být typem libovolného konfiguračního atributu, kromě samotného definovaného typu a objektu „ “.

Získejte 267 videolekcí na 1C zdarma:

Nastavení

Pro tento objekt není tolik nastavení:

Tito. kromě názvu a synonyma v 1C mají definované typy pouze sadu typů objektů.

Příklad použití definovaných typů v 1C 8.3

Pro tento objekt lze nalézt velké množství aplikací.

Příklady použití:

  • v konfiguračních podrobnostech můžete popsat údaje, které budou definovány, když je fragment vložen do konkrétní konfigurace;
  • přiřadit jeden typ definovaných dat k určité sadě odběrů událostí, když se sada typů změní, zdroj se bude dynamicky měnit pro všechny odběry;
  • použít jako alternativu k plánu typů charakteristik

a mnohem víc.

Pokud se začínáte učit programování 1C, doporučujeme náš bezplatný kurz (nezapomeňte



Související články: