Dátové typy v 1c 8 2. Použitie definovaných typov

Definované typy je nový objekt metadát 1C, ktorý sa objavil v platforme verzie 8.3. Objekt je pomocného charakteru. Uvažujme, aké sú definované typy a úlohy, ktoré môže daný objekt riešiť.

Definované sú nové dátové typy, ktorých množinu definuje vývojár aplikačného riešenia. Pozostáva z niekoľkých platných typov. Tento typ údajov môže byť typom ľubovoľného konfiguračného atribútu, okrem samotného definovaného typu a objektu "".

Získajte bezplatné videonávody 267 1C:

Prispôsobenie

Pre tento objekt nie je toľko nastavení:

Tie. okrem názvu a synonyma v 1C majú definované typy iba množinu typov objektov.

Príklad použitia definovaných typov v 1C 8.3

Aplikácie pre tento objekt možno nájsť v širokej škále.

Príklady použitia:

  • v konfiguračných atribútoch môžete popísať údaje, ktoré budú definované pri vložení fragmentu do špecifickej konfigurácie;
  • priradiť jeden typ definovaných údajov k určitej množine odberov udalostí, keď sa množina typov zmení pre všetky odbery, zdroj sa bude dynamicky meniť;
  • použiť ako alternatívu k tabuľke typov charakteristík

a oveľa viac.

Ak sa začínate učiť programovanie 1C, odporúčame náš bezplatný kurz (nezabudnite

Typy údajov v 1C: Enterprise 8.x

Predtým, ako sa ponoríme do konštrukcií vloženého jazyka, musíme sa oboznámiť so základnými dátovými typmi. Našťastie,:

Začiatočníci, ktorí sa učia platformu 1C, sú niekedy zmätení z definície typov údajov a akýchkoľvek jazykových nuancií, ktoré sa objavia. Tento prvý článok je úvodný a venuje sa primitívnym dátovým typom 1C, nie je ich až tak veľa.

číslo. Čísla v 1C znamenajú celé čísla aj hodnoty s pohyblivou rádovou čiarkou. Maximálna dĺžka slova pre hodnotu typu „číslo“ môže byť 32 znakov vrátane desatinnej čiarky. Treba si uvedomiť aj to, že limit 32 znakov sa vzťahuje na čísla, ktoré sa budú zapisovať do databázy. Je možné deklarovať premennú a priradiť jej hodnotu väčšiu ako 32 znakov. Pre číselné hodnoty, ktoré sú uložené v pamäti, toto obmedzenie neplatí. Po deklarovaní premennej typu „Číslo“ bude jej hodnota 0.

Linka. Ako v každom inom programovacom jazyku, 1C implementuje všetky potrebné funkcie na manipuláciu s reťazcami. Hodnoty tohto typu sú reprezentované v Unicode. Dĺžka premenných typu string nie je obmedzená.

Dátum. Hodnoty tohto typu obsahujú okrem samotného dátumu aj čas. Čas sa vzťahuje na hodiny, minúty a sekundy. Ihneď po inicializácii premennej typu „Dátum“ jej bude pridelená hodnota (dátum) „01 Január 0001 00 hodín 00 minút 00 sekúnd.“ To je niekedy otravné, ale časom si na to zvyknete.

Boolean. Je pochopiteľné, že premenné tohto typu môžu nadobúdať iba dve hodnoty: True, False.

Nedefinované. Hodnoty typu "undefined" sa používajú, keď potrebujete zadať prázdnu hodnotu, ktorá nepatrí žiadnemu inému typu údajov. Napríklad musíte deklarovať premennú, ktorá sa potom niekde použije. Môžete mu priradiť hodnotu ako 0 alebo "" (čiže prázdny reťazec), ale tým mu okamžite nastavíme vhodný typ (číslo alebo reťazec). Čo ak však neskoršia inštalácia jedného z týchto typov môže prekážať? V takýchto prípadoch môžete použiť hodnotu typu "undefined". Za zmienku tiež stojí, že mnohé funkcie zabudovaného jazyka v prípade neúspešného vykonania vrátia hodnotu tohto typu. Pri popise jeho funkcií sa odporúča dodržiavať rovnaké pravidlo.

Nulový. Všeobecný význam nuly je takmer rovnaký ako význam „nedefinované“. Hodnoty tohto typu sa používajú na označenie chýbajúcej hodnoty v databáze. Hodnoty tohto typu môžete najčastejšie získať pomocou jazyka dotazu. Napríklad dotaz, ktorý používa zreťazenie tabuľky. Predpokladajme, že jedna z tabuliek neobsahuje hodnotu, ktorá spĺňa podmienku. V tomto prípade bude chýbajúca hodnota nahradená hodnotou Null.

S hodnotou typu Null sa možno stretnúť nielen pri práci s dotazmi. Napríklad hodnota Null akceptuje atribúty, ktoré objekt nepoužíva. Predstavme si, že máme hierarchický adresár s atribútom „quantity“. Pri vytváraní tohto atribútu bola vlastnosť "Usage" nastavená na hodnotu "For the element". Ak sa pokúsite odkázať na tento atribút pre prvok slovníka typu „skupina“, jeho hodnota bude len Null.

Typ. Tento typ sa používa na určenie dostupných typov. Znie to trochu mätúce? Dobre, skúsim to vysvetliť na príklade. Predstavte si, že stojíte pred úlohou porovnať typy dvoch premenných. V kóde to bude vyzerať asi takto:

Premenná1 = 123; // Keďže sme priradili číslo, typ premennej bude "číslo".
Premenná2 = "reťazec"; // Tu sme priradili reťazec, takže typ premennej bude reťazec.

Teraz sa musíte na 100% uistiť, že premenná1 je číselná. Tu príde vhod Type "type" (znie to vtipne), ako aj pár pomocných funkcií. Zatiaľ nebudem zachádzať do podrobností. Stačí sa pozrieť a pokúsiť sa pochopiť príklad nižšie:

If (TypeZnch (Premenná1) = Typ ("Číslo")) Potom

Správa ("Premenná1 je číselná!");

Inak

Správa ("Premenná1 NIE JE číselná :(");

Koniec Ak;

V tomto malom kúsku kódu najskôr získam typ premennej pomocou funkcie „TypeVal ()“. Táto funkcia berie ako parameter hodnotu typu, ktorý chcete získať. V našom prípade je to „Premenná1“. Potom potrebujem získať hodnotu typu „Typ“, ktorá charakterizuje typ „Číslo“. Na tento účel poskytuje vstavaný jazyk funkciu „Typ ()“. Vyžaduje len jeden argument, reťazecovú reprezentáciu názvu typu. Keďže potrebujeme porovnať s typom "Číslo", parameter pre funkciu bude "Číslo".

Ďakujeme za pomoc pri písaní tohto článku od Igora Antonova.

Pokračujeme v oboznamovaní sa s novou funkcionalitou 1C: Enterprise, ktorú sme začali v predchádzajúcom článku série. Po preštudovaní materiálov v tomto článku sa dozviete:

  • Aké sú definované typy a ako ich môžem použiť?
  • Na čo sa používa konfiguračná vlastnosť primárnych rolí?
  • Ako môžem použiť Pomocníka obsluhy udalostí Form Client?
  • Ako a prečo sa používa dumping konfigurácie do súborov XML?

Použiteľnosť

Článok pojednáva o platforme „1C: Enterprise“ verzie 8.3.4.437, ale jej materiály môžu byť užitočné pre tých, ktorí pracujú na starších vydaniach.

Ako uľahčiť vývoj v "1C: Enterprise 8.3"

Naďalej zvažujeme inovácie v platforme 1C: Enterprise 8 zamerané na uľahčenie konfigurácie.

Definované typy

Do platformy 8.3 bol pridaný nový objekt v konfiguračnej vetve „Všeobecné“ - Definované typy.

Ide o špeciálny konfiguračný objekt, ktorý je určený na definovanie dátového typu, ktorý popisuje často používanú entitu alebo sa s vysokou pravdepodobnosťou môže meniť počas implementácie aplikačného riešenia.

Zvážte napríklad zložený typ, ktorý obsahuje prepojenie na adresáre „Dodávatelia“ a „Jednotlivci“.

A tento typ v niektorých rozvinutých konfiguráciách sa často používa ako meranie v informačnom registri popisujúci kontaktné informácie, ako atribút v dokumente „Peňažný príkaz“ atď.

Počas implementácie takejto konfigurácie sa môže zloženie tohto typu meniť – možno doň pridávať nové objekty a tiež naopak – nadbytočné typy je možné vylúčiť.

Ak namiesto nášho nového „definovaného typu“ použijeme kompozitný typ na každom mieste, kde sa takáto entita používa, potom budeme musieť zmeniť zloženie typov všade. Je to dlhé, ťažké, prácne, je tu možnosť zabudnúť na niektoré rekvizity.

Ak používate definovaný typ, v procese finalizácie aplikovaného riešenia bude potrebné zmeniť iba definíciu tohto typu (a programový kód, ktorý takéto polia spracováva).

Všetky detaily, pre ktoré je definovaný typ špecifikovaný ako typ, sa automaticky zmenia.

Tu je ďalší príklad použitia definovaného typu.

Pre niektoré detaily je v konfigurácii štandard pre písanie. Napríklad definujeme množstvo ako číslo dĺžky 15 s presnosťou 3 a súčet ako číslo dĺžky 15 s presnosťou 2.

Predpokladajme, že spoločnosť potrebuje viesť záznamy o tovare vysokej hodnoty s vysokou presnosťou jeho hmotnosti.

V súlade s tým sme potrebovali zvýšiť presnosť podrobností, aby sme započítali množstvo na 4 desatinné miesta. Tieto zmeny musia byť vykonané súčasne na všetkých detailoch dokumentov, registra zdrojov.

Ide o jednoduchú úlohu, ale časovo veľmi náročnú a vyžaduje si veľkú starostlivosť a vytrvalosť vývojára.

Pri vytváraní nového definovaného typu stačí určiť jeho typ. Potom pri vytváraní detailov dokladov, evidencie zdrojov, môžete vybrať prepojenie na vytvorený definovaný typ.

Tento prístup vám umožňuje zaručiť rovnaký typ údajov (rovnaká dĺžka, presnosť, rovnaké zloženie pre polia komplexného typu atď.) na všetkých miestach, kde sa používa.

Potom, ak je potrebné zmeniť typ údajov pre všetky podrobnosti, nie je potrebné manuálne opravovať každý atribút samostatne, stačí vykonať zmeny zodpovedajúceho definovaného typu.

Definovaný typ môže byť zložený. Existujú však obmedzenia na používanie tohto konfiguračného objektu. Definovaný typ teda nemôže byť súčasťou hodnotového typu tabuľky typov charakteristík a tiež nemôže byť súčasťou zloženého dátového typu inej premennej.

Všimnite si, že na platforme edície 8.3.5 sa rozšírili možnosti používania definovaných typov rozšírením množiny typov, ktoré môžu byť súčasťou definovaného typu.

V práci s definovaným typom až po aktuálne verzie platformy 8.3.10 / 8.3.11 neboli vykonané žiadne ďalšie zmeny.

Vlastnosť konfigurácie hlavných rolí

V platforme 8.2 mal koreňový konfiguračný prvok vlastnosť „Hlavná rola“, v ktorej vývojár definoval rolu, ktorá sa použije, ak v infobáze nebudú vytvorení žiadni používatelia.

V platforme 8.3 bolo možné špecifikovať niekoľko rolí, ktoré sa použijú pri určovaní prístupových práv s prázdnym zoznamom používateľov. V súlade s tým bola nehnuteľnosť premenovaná na "Hlavné úlohy".

Pre zväčšenie kliknite na obrázok.

Vytváranie vlastných obslužných programov klientskych formulárov

Pri konfigurácii riadenej aplikácie musí vývojár pozorne sledovať kontext vykonávania programového kódu pomocou príslušných direktív preprocesora.

Keďže na klientovi je k dispozícii obmedzená množina typov údajov a metód, vývojár často potrebuje vytvoriť procedúru klienta, z ktorej prenesie riadenie na server.

Platforma 8.3 predstavuje sprievodcu vytváraním obslužných programov udalostí klientskych formulárov.

Pre zväčšenie kliknite na obrázok.

Teraz vývojár nemusí manuálne vytvárať serverovú metódu a indikovať jej volanie v klientskej procedúre, ale môže sa plne sústrediť na implementáciu aplikovanej logiky systému.

Nahrávanie konfigurácie do súborov

Ďalšou novinkou platformy 8.3 je možnosť vyložiť celú konfiguráciu na disk ako súbor súborov určitej štruktúry.

Konfigurácia sa vždy vyloží len celá, bez možnosti filtrovania vyložených objektov.

Pre nahratie konfigurácie do súborov zvoľte v menu položku Konfigurácia - Nahrať konfiguráciu do súborov, v otvorenom dialógovom okne vyberte adresár, kam sa budú súbory ukladať.

Konfiguračné objekty sa nahrávajú ako množina súborov XML. Moduly a textové rozloženia sa ukladajú ako súbory TXT. Obrázky z konfigurácie sa ukladajú ako obrazové súbory (BMP, PNG atď.). Informácie pomocníka sú uložené v súboroch HTML.

Pre zväčšenie kliknite na obrázok.

Ako vidíte, výsledné súbory majú bežné univerzálne formáty. Na ich úpravu existuje veľké množstvo rôznych softvérových produktov.

Môžete tiež použiť systémy kontroly verzií tretích strán. Umožňujú vám uložiť viacero verzií toho istého dokumentu, v prípade potreby sa vrátiť k starším verziám a určiť, kto a kedy vykonal zmenu.

Upravené súbory je možné načítať späť do konfigurácie pomocou položky menu Konfigurácia - Načítať konfiguráciu zo súborov.

Práca s novou funkciou načítania/vyloženia je dostupná aj pomocou parametrov príkazového riadka LoadConfigFromFiles a DumpConfigToFiles. Napríklad takto:

„C: \ Program Files (x86) \ 1cv8 \ 8.3.4.437 \ bin \ 1cv8.exe“ DESIGNER / F „X: \ Platform8Demo“ / N „Administrator“ / DumpConfigToFiles „X: \ 1 \“

Predtým, späť na platforme 8.2, existoval mechanizmus na vykladanie / načítanie konfiguračných súborov, ktorý umožňoval selektívne vykladanie / načítanie niektorých vlastností konfiguračných objektov (modulov, rozložení a referenčných informácií).

Všimli sme si, že príkazy “Unload configuration files” a “Load configuration files” boli štandardne vylúčené z konfigurátora na platforme 8.3.

Prispôsobením hlavnej ponuky však môžete tieto príkazy zobraziť a používať v ponuke.

Nový mechanizmus na vyloženie konfigurácie do súborov vždy uvoľní celé dáta pre celú konfiguráciu, nie je zabezpečená možnosť konfigurovať objekty na vyloženie, čím sa zabezpečí integrita konfigurácie.

Bežné formuláre a rozhrania sa nahrávajú v binárnej forme (interné) a nie je možné ich upravovať. Konfiguráciu poskytovateľa tiež nie je možné upravovať.

Zvyšok objektov sa nahráva do súborov univerzálnych formátov. V podstate sa motor zameriava na spravovanú aplikáciu.

Nový mechanizmus poskytuje vývojárovi možnosť automaticky spracovať konfiguráciu spustením konfigurátora v dávkovom režime.

Teraz je možné konfiguráciu upravovať aj pomocou externého softvéru, napríklad vo formáte XML.

Pri vyložení sa vykoná dodatočné spracovanie konfigurácie: zaseknuté odkazy sa odstránia, nevyužité informácie sa tiež neodložia (napríklad nápoveda pre neexistujúci jazyk).

A pri načítavaní konfigurácie sa kontroluje jej integrita, nie je dovolené načítať súbory s nejedinečnými identifikátormi, objekty metadát, nesprávne názvy dátových typov atď.

Upozorňujeme, že od verzie 8.3.7 sa objavil nový formát nahrávania, ktorý sa nazýva „hierarchický“. Starý formát sa stal známym ako „lineárny“. Voľba formátu je dostupná v okne exportu do súborov:

Od verzie 8.3.11 sa „hierarchický“ formát stal jediným dostupným na výber počas interaktívneho nahrávania:

Ak budete používať túto funkciu, odporúčame:

  • najprv použite "hierarchický" formát nahrávania;
  • po druhé, použite platformu, ktorá nie je nižšia ako verzia 8.3.8+, pretože počnúc ním sa výrazne zvýšila rýchlosť načítavania/vykladania do XML súborov.

Vo verzii 8.3.10 je podporované čiastočné uvoľnenie konfigurácie do XML súborov. V dôsledku toho bolo možné použiť dumping konfigurácie XML v spojení s Git.

Typový systém je špeciálny systém, pomocou ktorého sú organizované dáta používané aplikačnými riešeniami. Typový systém vám umožňuje reprezentovať informácie v reálnom svete v termínoch „zrozumiteľných“ pre 1C: Enterprise 8.

Typový systém poskytuje široké možnosti ako na priamy popis obchodnej logiky aplikovaných riešení, tak aj na vykonávanie medziľahlých úloh spracovania dát.

Typový systém je popísaný v pomocníkovi syntaxe, online pomoci a dokumentácii.

Hlavnou črtou typového systému je, že existujú typy, ktoré existujú v akomkoľvek aplikačnom riešení. Samotné tieto typy sú definované na úrovni platformy a sú vždy prítomné bez ohľadu na kroky vývojára. Spolu s nimi môžu byť v konkrétnom aplikačnom riešení rôzne typy údajov obsiahnuté v tomto špecifickom aplikačnom riešení. Pre takéto dátové typy na úrovni platformy sú definované len všeobecné pravidlá pre ich tvorbu, šablóny. A konkrétne dátové typy vytvára platforma na základe toho, ako vývojár formuje a upravuje štruktúru aplikovaného riešenia.

Dátové typy definované na úrovni platformy

Súbor typov, s ktorými môžu aplikačné riešenia fungovať, je pomerne rôznorodý. Umožňuje riešiť úlohy spracovania dát, ako aj úlohy prezentácie týchto dát užívateľovi a interaktívnu prácu s nimi. Existuje niekoľko hlavných kategórií dátových typov.

Primitívne typy

Primitívne dátové typy sú typy ako napr Linka, číslo, dátum, Boolean iné. Tieto typy nie sú pre 1C: Enterprise 8 ničím výnimočným. Takéto dátové typy spravidla existujú aj v iných softvérových systémoch.

Hodnoty primitívnych typov sú jednoduché, nedeliteľné hodnoty, ktoré nemožno odlíšiť od ich jednotlivých komponentov. Napríklad hodnoty ako číslo môže byť 1, 8, 15 atď. Ak chcete vytvoriť hodnotu primitívneho typu, musíte ju zadať v texte programu doslovný- symbolický identifikátor hodnoty.

Generické zbierky hodnôt

Existujú aj komplexnejšie typy údajov. Platforma napríklad podporuje množstvo typov, ktoré sú generickými kolekciami hodnôt: Pole, Štruktúra, Zoznam hodnôt iné.

Bežné typy

Okrem toho platforma implementuje špecifické typy údajov, ktoré implementujú jednu alebo druhú funkcionalitu aplikovaných riešení: Textový dokument, TabularDocument, StorageValues, Zostavovač dopytov iné.

Bežné typy sú tiež tzv spoločné zariadenia... Hodnoty týchto typov, na rozdiel od hodnôt primitívnych typov, sú súborom hodnôt jednotlivých vlastností objektu. Preto sú tzv inštancie objektu.

Inštancie objektov sa vytvárajú pomocou špeciálneho operátora vloženého jazyka - Nový.

Typy rozhraní

Typy rozhraní umožňujú organizovať vizuálnu interakciu aplikovaného riešenia s používateľom. V podstate ide o typy súvisiace s fungovaním formulárov a ich prvkov.

Dátové typy generované v aplikačnom riešení

Okrem dátových typov, ktoré sú definované na úrovni platformy, však špecifické aplikačné riešenie môže využívať jedinečné dátové typy, ktoré existujú iba v tomto špecifickom aplikačnom riešení. Platforma navyše bude plne podporovať prácu s týmito typmi údajov rovnako ako s typmi, ktoré sú definované na úrovni samotnej platformy.

Výskyt nových dátových typov v aplikačnom riešení je spravidla spojený s použitím aplikačných konfiguračných objektov. Preto sa tieto typy nazývajú aj aplikované typy alebo aplikované predmety.

Na úrovni platformy je podporovaných niekoľko tried (šablón) aplikačných objektov, ktoré samy osebe nie je možné použiť v konkrétnom aplikačnom riešení. Môžete napríklad vymenovať triedy objektov aplikácie ako napr Adresáre, Dokumentácia, Informačné registre, Tabuľky charakteristických typov atď.

Pre každú triedu aplikovaných objektov je definovaná zodpovedajúca základná funkcionalita: typy databázových tabuliek, ktoré je potrebné vytvoriť na ukladanie údajov, štandardné formuláre, objekty štandardného jazyka, sady práv atď.

Vývojár, ktorý vytvára aplikačné riešenie, nemôže tieto triedy priamo použiť, môže však do svojho aplikačného riešenia pridať nový konfiguračný objekt, ktorý zdedí všetky funkcie konkrétnej triedy:

Napríklad vývojár môže pridať novú referenciu do svojho aplikačného riešenia Nomenklatúra Adresáre alebo nový dokument Pokladničný prehľad ktorý zdedí funkčnosť triedy Dokumentácia.

Bezprostredne po takomto pridaní sa vývojárovi sprístupnia nové dátové typy, ktorých zloženie je určené príslušnosťou konfiguračného objektu k tej či onej triede aplikovaných objektov.

Napríklad po vytvorení nového adresára Nomenklatúra budú k dispozícii nasledujúce typy údajov:

  • DirectoryManager.Nomenklatúra,
  • DirectoryRef.Nomenclature,
  • DirectoryObject.Nomenclature,
  • DirectorySample.Nomenclature,
  • DirectoryList.Nomenklatúra.

Typový systém popisuje iba všeobecnú „štruktúru“ tohto typu, pravidlá, podľa ktorých budú objekty tohto typu tvorené. Konkrétny názov typu, skladba vlastností a metód objektu bude závisieť od toho, ako vývojár pomenuje konfiguračný objekt a aké napríklad atribúty, tabuľkové sekcie doň pridá.

Zároveň po vytvorení nového registra akumulácie Predajná spoločnosť, zloženie nových typov údajov sa bude líšiť:

  • Akumulačný registerSales ManagerCompanies
  • Akumulačný registerVzor.PredajSpoločnosti
  • Akumulácia RegisterList.SalesCompanies
  • Akumulačný registerRecordSetSalesCompanies
  • Akumulácia RegisterRecord.SalesCompanies
  • Akumulácia RegisterKeyRecord.SalesCompany.

Opätovne treba poznamenať, že tieto dátové typy nie sú natívne podporované platformou a existujú len v konkrétnom aplikačnom riešení.

Ďalším bodom, ktorý treba zdôrazniť, je najjednoduchší spôsob demonštrácie na príklade.

Povedzme, že v aplikovanom riešení boli vytvorené dva nové adresáre: Nomenklatúra a Ceny... Napriek tomu, že oba tieto objekty zdedili funkčnosť zodpovedajúcej triedy Adresáre a pre nich v aplikovanom riešení bola vytvorená rovnaká množina dátových typov, „podobné“ dátové typy budú rôzne dátové typy. napr. ReferenceObject.Nomenclature Typ údajov.

Tento článok pokračuje v sérii článkov „Prvé kroky vo vývoji na 1C“. Bude hovoriť o primitívnych dátových typoch a najbežnejších funkciách pri práci s nimi. Po prečítaní materiálu sa dozviete:

  • Aké dátové typy sú primitívne?
  • Ako sa dá pracovať so strunami a aké vlastnosti treba brať do úvahy?
  • Aké sú jemnosti práce s číselnými výrazmi?
  • Ako opíšete dátum s konkrétnym významom? Ako nastavím prázdny dátum?
  • Ako funguje konverzia typov?
  • Null a Uncertain - čo sú a aké sú rozdiely?
  • Ako určiť, o aký typ objektu / premennej ide?

Použiteľnosť

Článok bol napísaný pre platformu 1C verzie 8.3.4.496, takže informácie sú relevantné pre aktuálnu verziu platformy. Treba však poznamenať, že vo verzii 8.3.6.1977 boli pridané nové funkcie pre prácu s reťazcami. Preto, keď zopakujete kroky z článku, nebuďte prekvapení, ak v príslušnej časti Asistenta syntaxe uvidíte niektoré funkcie, ktoré nie sú zobrazené na našej snímke obrazovky. Odporúčame tiež, aby ste sa oboznámili s novou metódou StringCNumber () pridanou na platforme 8.3.10.

Primitívne dátové typy a niektoré ich funkcie

Rozlišujú sa tieto primitívne dátové typy:

Reťazcové konštanty

Primitívny dátový typ Linka(reťazcová konštanta) pozostáva z rôznych znakov. Linka vždy obklopený úvodzovkami. Príklad reťazcovej konštanty:

Message.Text = “Sú prázdne údaje”;

Tie. k premennej je priradený riadok „Sú prázdne údaje“. Text objekt Správa... Čokoľvek obklopené úvodzovkami sa považuje za reťazec.

Reťazec môže obsahovať ľubovoľné znaky. Čiary môžu byť viacriadkové. V tomto prípade musí byť každý nový riadok uvedený v úvodzovkách. Napríklad:

Text = "Atribút je vyplnený nesprávne"
„Uverejnenie dokumentov nie je možné“;

Bodkočiarka sa umiestňuje až na koniec posledného riadku.

Existuje aj iný spôsob - všetok text by mal byť obklopený iba jednými úvodzovkami, ale každý nový riadok musí začínať zvislou čiarou.

Táto syntax sa najčastejšie používa v typických konfiguráciách. Najmä v jazyku dopytov. Napríklad:

Žiadosť.Text =
"VYBERTE
| Zamestnanci. Meno AS zamestnanec,
| Zamestnanci.DÁTUM NARODENIA AKO Dátum narodenia
| OD
| Adresár.Zamestnanci AS Zamestnanci
| KDE
| NIE zamestnanci. Toto je skupina “;

Treba poznamenať, že operácia sčítania je definovaná pre reťazce. Toto nie je aritmetická operácia, nazýva sa to operácia zreťazenia.

Tie. musíte skombinovať napríklad dva riadky so znamienkom sčítania „+“ medzi riadkami:

Text = „Požiadavka je vyplnená nesprávne“ + „Doklad nie je možné zaúčtovať“;

Takto sú šnúrky zlepené dohromady. Operácia zreťazenia je samozrejme použiteľná aj pre viac reťazcov. Iné operácie (odčítanie, násobenie, delenie) nie sú pre reťazce povolené.

Ak je potrebné slovo vložiť do úvodzoviek v reťazci, potom musí byť úvodzovka vo vnútri reťazca uvedená v dvojitých úvodzovkách. Napríklad:

Text = “Chyba v module“ ”Spoločný modul1” ””;

V tomto príklade prvá úvodzovka otvára reťazec. Priľahlé druhé a tretie úvodzovky označujú úvodzovky.

A na konci sa získajú tri úvodzovky: úplne posledný citát uzatvára reťazec, dva predchádzajúce označujú úvodzovky.

Nad reťazcami sú možné rôzne operácie konverzie reťazcov, určovanie prvých niekoľkých ľavých znakov, určovanie niekoľkých krajných pravých znakov, hľadanie podreťazca v reťazci atď.

Všetky tieto funkcie sú dostupné kdekoľvek v konfigurácii.

V pomocníkovi syntaxe sú v sekcii Všeobecný popis vloženého jazykaVstavané funkcieFunkcie na prácu s hodnotami typu String.

Funkcií je pomerne veľa a na prácu s reťazcovými konštantami väčšinou stačia.

Pozrime sa na príklad riešenia problému pomocou reťazcových funkcií.

Úloha:

Chcete vyvinúť funkciu. Ako parameter sa funkcii odovzdá ľubovoľný reťazec. Znaky v reťazci môžu obsahovať čísla.

Postupnosť číslic (z jedného alebo viacerých), oddelených od ostatných znakov medzerami, je kladné celé číslo.

Napríklad reťazec „72 ABC 6AP 31 54f -22“ obsahuje dve kladné celé čísla: 72 a 31. Okrem medzier sa nepoužívajú iné nepodstatné znaky (napríklad tabuľka, návrat vozíka). Funkcia by mala vrátiť počet kladných celých čísel.

Musí sa nachádzať v module riadenej aplikácie. Je potrebné zabezpečiť, aby bol volaný pri štarte systému. Definujte reťazec pomocou premennej.

Otvorme si teda modul spravovanej aplikácie a v paneli konfigurátora vyberieme vo výberovom poli zo zoznamu modulštandardný manipulátor Na StartSystem ().

Vo vnútri handlera definujte premennú Linka, Napríklad:

Riadok = "72 ABC 6AP 31 54f -22";

Množstvo = QuantityIntegerNumbers (reťazec);

Pošlime správu o počte celých čísel:

Správa ("Reťazec obsahuje" + Čiastka + "celé čísla");

V tomto prípade premenná množstvo budú implicitne prevedené na typ Konštanta reťazca... Potom sa vykoná operácia zreťazenia pre tri reťazce a správa sa odošle.

Definujte začiatok a koniec (t. j. šablónu) funkcie Počet celých čísel (reťazec).

Teraz zvážime jednu z možných možností vývoja funkcie. Počet celých čísel (reťazec)... Pritom sa zoznámime s niektorými vstavanými funkciami pre prácu s reťazcami.

V prvom rade by ste sa mali zoznámiť s funkciou Kód symbolu... Táto funkcia získa kód znaku nachádzajúceho sa v odovzdanom reťazci na pozícii so zadaným číslom.

Syntax:

znakový kód (,)

Parametre:

(požadovaný)

(voliteľné) je číslo znaku v reťazci, ktorého kód chcete získať. Číslovanie znakov v riadku začína od 1.

Vrátená hodnota:
Prenesený symbolový kód. Kód sa vráti podľa kódovania Unicode.

Všimnite si, že parameter predvolená hodnota je 1.

Reťazec môže byť aj jeden znak. Je teda možné určiť kód 0 a kód 9 a kódy všetkých ostatných číslic sú, ako viete, v intervale medzi nimi.

Definujme zodpovedajúce premenné a ich hodnoty:

Kód0 = Kód znaku („0“);
Code9 = CharacterCode (“9”);

Na vyriešenie problému zvolíme nasledujúcu schému:

  1. Ak je v reťazci ľubovoľný počet medzier na začiatku alebo na konci, zbavíme sa ich špeciálnou funkciou. Ďalej nás budú zaujímať skupiny znakov medzi vnútornými medzerami. Ak skupinu tvoria iba čísla, potom ide o celé číslo. Existuje špeciálna funkcia, pomocou ktorej môžete určiť polohu prvého priestoru.
  2. Vzhľadom na polohu prvej medzery môže iná funkcia dostať skupinu znakov (podreťazec) naľavo od medzery.
  3. Poďme analyzovať symboly, ktoré tvoria skupinu a určiť, či ide o celé číslo. Odhalené celé čísla budú zhrnuté do špeciálnej premennej.
  4. Počiatočný riadok skrátime tak, že pomocou ďalšej funkcie vyberieme všetky znaky teraz napravo od medzery. Táto medzera môže byť nie jedna, ale celá séria medzier za sebou, preto v zostávajúcom riadku sa špeciálnou funkciou zbavíme všetkých medzier vľavo (v rade) a vrátime sa k bodu 2. Zopakujeme kroky z bodu 2 do bodu 4, kým nedosiahneme stavy, že v riadku nezostanú žiadne medzery. V tomto prípade bude skrátený reťazec tvoriť poslednú skupinu analyzovaných znakov.

Teraz sa pozrime na funkcie, ktoré potrebujeme na vyriešenie problému.

SokrLP
Syntax: skratka ()
Parametre: (požadovaný).
Orezáva medzery (nepodstatné znaky) naľavo od prvého významného znaku v reťazci a napravo od posledného významného znaku v reťazci.

Nájsť
Syntax: Nájsť (,)
Parametre: (požadovaný), (požadovaný).
Vráti pozíciu prvého znaku nájdeného podreťazca.
Číslovanie znakov v reťazci začína od 1. Ak reťazec neobsahuje zadaný podreťazec, vráti sa 0. V našom prípade použijeme ako podreťazec medzeru ("").

Lev
Syntax: lev (,)
Parametre: (požadovaný), (požadovaný).
Vyberie prvé znaky zľava v reťazci. Pomocou tejto funkcie zadefinujeme skupiny znakov na analýzu (zľava po prvú medzeru).

Dĺžka str
Syntax: StrLength ()
Parametre: (požadovaný).
Získa počet znakov v reťazci. Pomocou nej určíme dĺžku šnúrky.
Funkcia Kód symbolu, ktorý použijeme na identifikáciu skupín znakov, ktoré sú celými číslami, bol popísaný skôr.

Správny
Syntax: Right (,)
Parametre: (požadovaný), (požadovaný).
Vyberie znaky úplne vpravo v reťazci. Pomocou tejto funkcie vyberieme ešte nespracovanú časť reťazca.

Skratka
Syntax: skrátená ()
Parametre: (požadovaný).
Orezáva medzery (nepodstatné znaky) naľavo od prvého významného znaku v reťazci. Túto funkciu používame na odstránenie možných medzier z ľavej časti zvyšku reťazca.

Nižšie je uvedený možný funkčný algoritmus s komentármi.

Číselné výrazy

Premenné modulov a atribútov databázových objektov môžu byť číselné.
Počet je trochu obmedzený. V prípade číselnej premennej nesmie dĺžka celej časti presiahnuť 32 znakov.

Presnosť zlomkovej časti nemôže presiahnuť 10 číslic. Keď je premenná opísaná a je jej priradená číselná hodnota, jej bitová hĺbka nie je nikde pevne stanovená. Existujú však obmedzenia aj pre premenné.

Pomocník syntaxe hovorí, že maximálny počet číslic je 38 znakov. Takéto obmedzenie nebráni riešeniu prípadných ekonomických problémov, t.j. pomocou týchto čísel možno opísať akúkoľvek peňažnú hodnotu.

Ak však stále potrebujete opísať veľké množstvá na vyriešenie niektorých matematických problémov, potom v teórii programovania existujú algoritmy, ktoré vám umožňujú opísať čísla s ľubovoľným rozmerom na základe existujúcich obmedzení.

Operácie platné pre čísla:

  • bežné aritmetické operácie (-, +, *, /). Násobenie a delenie má prednosť pred sčítaním a odčítaním. Zátvorky majú najvyššiu prioritu. Existujú aj unárne operácie + a -, ktoré majú prednosť bezprostredne mimo zátvoriek;
  • operácia „zvyšok divízie“ (%). Napríklad 12 % 5 = 2;
  • matematické funkcie, ktoré možno použiť pre čísla (trigonometrické funkcie, umocňovanie, extrakcia druhej odmocniny, zaokrúhľovanie na zadanú bitovú hĺbku, výber celej časti čísla)

Ak hovoríme o presnosti číselných hodnôt, pokiaľ ide o detaily databázy, existujú prirodzené obmedzenia.

Ale pokiaľ ide o premenné, je tu jedna zvláštnosť. V skutočnosti môžete pracovať s veľmi veľkými číslami v premenných, ale informačná báza bude uchovávať hodnoty s dĺžkou celého čísla maximálne 32 znakov.

Booleovské hodnoty

Pokiaľ ide o typ údajov Boolean, existujú iba dve hodnoty True a False, ktoré možno získať rôznymi spôsobmi.

Môžete napríklad použiť porovnávacie operácie pre čísla alebo dátumy. V dôsledku toho sa získa určitá boolovská hodnota, ktorá sa potom najčastejšie používa v podmienených príkazoch a v príkazoch cyklu.

Dátumové literály

Existujú dva spôsoby, ako opísať dátum. Jedným z nich je použitie doslovného. Doslov je napísaný v jednoduchých úvodzovkách.

Najprv sa píše rok, potom mesiac a potom deň.

V prípade potreby môžete určiť aj čas, pretože v systéme 1C: Enterprise 8 každý dátum obsahuje dátum aj čas. Napríklad:

Dátum dokumentu = „20140315121020“;

Ak čas nie je špecifikovaný, potom sa štandardne rovná nule. V popise dátumu je možné použiť ľubovoľný oddeľovač. Napríklad:

Dátum dokumentu = '2014.03.15';

Druhým spôsobom definovania dátumu je použitie funkcie globálneho kontextu Dátum()... V tomto prípade tejto funkcii odovzdávame to isté ako parametre: rok, mesiac, deň oddelené čiarkami.

Môžete tiež určiť čas. Ak nie je zadané, predvolene sa použije začiatok dňa.

V systéme 1C: Enterprise 8 je prázdny dátum úplný začiatok kalendára. Možnosti nahrávania:

EmptyDate = '00010101';
EmptyDate = Dátum (1,1,1);

Oba záznamy vrátia rovnaký výsledok a tento dátum sa bude považovať za prázdny.

Pohodlie funkcie Dátum() v tom, že do nej môžeme odovzdať nie konkrétne hodnoty, ale nejaké premenné. To znamená, že niekedy zostavujeme dátum zhromažďovaním rôznych premenných.

Pre dátum platí operácia sčítania. Operácia pridávania pridá k dátumu zadaný počet sekúnd.

Primitívne konverzie dátových typov

V príkaze priradenia, kde sa sčítavajú viaceré premenné (napr. Premenná = A + B + C), je možné konvertovať primitívne dátové typy. Konverzia typu údajov sa vykonáva na hodnote prvého typu údajov.

Ak je teda prvým dátovým typom reťazec, potom sa systém pokúsi vytvoriť reťazec z celého tohto výrazu. Ak je prvým dátovým typom číslo, potom sa systém pokúsi získať číselný dátový typ.

A tak reťazec + číslo = reťazec. Niekedy je možné do reťazca pridať číslo, ak je možné z reťazca extrahovať nejakú číselnú hodnotu (napríklad 123 + „456“).

Pre boolovský typ údajov platia nasledujúce výrazy:

Pravda a 1 = pravda;
Pravda A 0 = Nepravda.

Akékoľvek číslo väčšie ako nula sa skonvertuje na True, 0 sa skonvertuje na False.

Ako už bolo uvedené, k číslu možno pridať dátum. Dátum možno pridať aj k typu údajov typu boolean.

V tomto prípade sa True prevedie na 1 a False na 0.

Okrem konverzie typu v operátoroch je možná konverzia explicitného typu pomocou príslušných funkcií: Reťazec (), číslo (), dátum (), logická hodnota ().

TO Linka konvertuje sa akýkoľvek typ údajov.

Číslo možno získať z reťazca alebo z booleovskej hodnoty. Booleovský prevod: Pravda na 1, Nepravda na 0.

Reťazec možno previesť na dátum, ak obsahuje hodnotu dátumu. Napríklad Dátum („20140315“). Ako už bolo uvedené, konverzia podľa pozície je možná:

Dátum(,).

Na boolovskú hodnotu môžete previesť číslo a samotnú hodnotu na boolovskú hodnotu.

Tieto funkcie možno použiť v kóde na vykonávanie explicitných konverzií typu.

Primitívne dátové typy Number, String, Date a Boolean môžu fungovať ako databázové polia.

Nulové a nedefinované hodnoty

NULL je doslovný. Používa sa spravidla v databázových dotazoch, keď sú spojené dve alebo viac tabuliek.

Práve chýbajúce záznamy v druhej tabuľke sú vyplnené hodnotou NULL. Tie. je to nejaký druh chýbajúceho významu.

V budúcnosti pri spracovaní výsledného výsledku to treba brať do úvahy, keďže NULL nie je nula, ale zodpovedajúci dátový typ.

Ak chcete spracovať hodnotu, musíte pretypovať NULL na nejaký bežný dátový typ, ktorý možno zobraziť alebo použiť v aritmetických operáciách.

Hodnotu NULL je možné získať aj vo vloženom jazyku. Môžete definovať nejakú premennú a priradiť jej práve túto hodnotu NULL. Takéto priradenie sa však v programovom kóde takmer vôbec nepoužíva.

Tie. NULL je skutočne typ údajov, ktoré sa získavajú pri práci s dotazmi. S hodnotou NULL v dopytovacom jazyku sa musí zaobchádzať špeciálnym spôsobom.

Totiž porovnanie A = NULL nebude fungovať na úrovni dotazu, budete musieť použiť špecializované funkcie. V zabudovanom jazyku však porovnanie s hodnotou NULL bude fungovať správne.

Typ údajov Nedefinované – toto nie je prázdna hodnota pre žiadny atribút.

Napríklad, ak referenčný atribút má prepojenie na nejaký iný odkaz ako dátový typ, potom sa prázdna hodnota tohto atribútu nebude rovnať Nedefinované.

Tento typ (Undefined) sa objaví po prvé, ak máme určitú premennú a nie je inicializovaná (údajový typ nie je definovaný).

Druhý príklad: typ údajov Nedefinovaný, mnohé funkcie vstavaného jazyka sa vrátia, keď nie je možné vykonať akciu.

Napríklad vyhľadávanie prvku referenčnej knihy podľa názvu v prípade, že žiadna referenčná kniha takýto názov prvku nemá. Metóda FindByDesign vráti hodnotu Nedefinované.

V čom Nedefinované je kľúčové slovo, je zvýraznené červenou farbou. To je tiež doslovné, na písanie Nedefinované nemusíte používať žiadne úvodzovky, čiarky, zátvorky atď.

Ak existuje zoznam dokumentov a tento zoznam je prázdny (nie sú v ňom žiadne riadky), aktuálny riadok nadobudne hodnotu Nedefinované.

Ak infobáza obsahuje premennú so zloženým dátovým typom, potom sa prázdna hodnota tejto premennej bude rovnať Nedefinované.

Ak však typ údajov nie je zložený, potom bude prázdna hodnota zodpovedať prázdnej hodnote tohto typu (pre dátum je to prvá sekunda prvej hodiny prvého dňa prvého mesiaca prvého roka).

NULL a Undefined sú typy údajov aj hodnoty v týchto typoch a existuje iba jeden. Pre NULL je to NULL, pre Nedefinované je Nedefinované.

Typ údajov Typ

Hlavným využitím tohto dátového typu je porovnanie hodnoty premennej alebo databázovej vlastnosti s konkrétnym typom.

Tie. v algoritme musíte pochopiť, aký typ daného objektu.

Je pozoruhodné, že tento typ údajov nemá doslovný. Nemôžeme to napísať ako NULL alebo Undefined, ale môžeme získať hodnotu tohto typu pomocou dvoch funkcií Typ a TypeZnch.

Ak chcete získať typ nejakého objektu (môže to byť premenná alebo atribút databázy alebo atribút formulára), použite funkciu TypeZnch.

Táto funkcia sa odovzdá objektu, pre ktorý chcete získať typ údajov.

Ako návratovú hodnotu táto funkcia vracia presne ten typ typu typu.

V budúcnosti by sa mal porovnávať s akýmkoľvek typom úrokov. Napríklad:

IfTypeVal (Element) = Typ ("DirectoryRef.Nomenclature") Potom
Správa („Toto je produkt“);
Koniec Ak;

Na záver si zhrňme všetok preberaný materiál.

Preskúmali sme základné konštrukcie vstavaného jazyka 1C, naučili sme sa používať premenné a operátory, prišli sme na to, čo a ako používať procedúry a funkcie. Všimnite si, že v podstate celý náš programový kód bol až do tohto bodu sebestačný – všetko sme si napísali sami od začiatku a použili sme aspoň niektoré konfiguračné objekty alebo vstavaný jazyk.

Tieto objekty preskúmame podrobnejšie v nasledujúcom článku, takže neprepínajte! ;)