Postup pro práci s vestavěným objektem požadavku jazyka. Jaký je účel konfiguračního objektu "Language"?

Vývoj aplikačního řešení v systému 1C: Enterprise se skládá ze dvou hlavních akcí: vizuálního návrhu konfiguračních objektů a popisu specifického chování systému pomocí vestavěného jazyka a dotazovacího jazyka.

Vestavěný jazyk systému 1C: Enterprise má mnoho podobností s jinými programovacími jazyky, ale není přímým analogem žádného z nich. Jeho nejvýznamnější vlastnosti:

· měkké psaní (typ proměnné je určen typem hodnoty, kterou obsahuje a může se během provozu měnit);

· nedostatek softwarového popisu typů aplikací (vytvářejí se při přidávání konfiguračních objektů);

· vestavěný jazyk orientovaný na události;

· všechny operátory mají ruský i anglický pravopis, který lze používat současně.

Konfigurační moduly

Moduly aplikačního řešení jsou navrženy tak, aby umisťovaly text programu do vestavěného jazyka. Tyto moduly jsou umístěny na různých místech v konfiguraci a mají různé účely. Většina modulů je „vázána“ na určité konfigurační objekty nebo na samotné aplikační řešení.

Rozlišují se následující typy softwarových modulů:

· Společné moduly. Konfigurace může mít libovolný počet modulů, včetně žádného. Samotné běžné moduly nejsou během procesu konfigurace volány. Slouží pouze k tomu, aby obsahovaly texty postupů a funkcí, které lze volat z jiných modulů aplikačního řešení. Chybí jim proto variabilní popisová sekce a hlavní programová sekce. Že. Běžné moduly obsahují pouze procedury a funkce.

· Aplikační modul. V konfiguraci je vždy jeden aplikační modul. Provádí se, když se systém spustí v režimu 1C: Enterprise a je určen k vypracování akcí souvisejících s pracovní relací koncového uživatele. Hlavní události, které lze zpracovat v modulu aplikace, jsou události spuštění a ukončení aplikace. Zobrazí se sekvence z hovoru rýže. 1. událost Před spuštěním systému Vyskytuje se, když se systém spustí před otevřením hlavního okna. Vyřízením této události má vývojář například možnost odmítnout běh při nesplnění jakýchkoli podmínek. událost Při spouštění systému dojde po otevření hlavního okna. V handleru této události můžete například zobrazit informace o narozeninách atp.

· Externí připojovací modul. V konfiguraci je vždy jeden externí připojovací modul. Spustí se, když se k aplikaci přistupuje jako k serveru COM (v režimu externího připojení). V režimu externího připojení není spuštěna plnohodnotná aplikace 1C: Enterprise, ale „odlehčená verze“, ve které nejsou k dispozici všechny funkce, které tak či onak souvisí s organizací uživatelského rozhraní.

· Moduly aplikačních objektů. Každý konfigurační objekt aplikace (například softwarový dokument nebo adresář), jehož data lze upravovat v režimu 1C: Enterprise, má svůj vlastní modul. Kromě popisu proměnných a hlavního programu může objektový modul obsahovat popis procedur - obsluhy událostí spojených s daným konfiguračním objektem. Pro všechny objekty jsou vyvolány dvě události – Před nahráváním A Při nahrávání.

· Moduly formulářů. Každý formulář má svůj modul, který definuje chování formuláře a akce z něj prováděné, například otevírání dalších formulářů. Události jsou pořádány pro všechny formy Před otevřením, během otevření, před zavřením A Při zavření.

Kontext

V systému 1C: Enterprise kontext označuje prostředí modulu, tj. proměnné, objekty, vlastnosti, metody a události, které má k dispozici. Můžeme rozlišovat následující typy kontextů a podle toho i pravidla pro viditelnost exportovaných proměnných, procedur a funkcí:

· Globální kontext, dostupný ve všech ostatních kontextech, se skládá z následujících částí:

§ vlastnosti, metody a události globálního kontextu (například vlastnost Pracovní datum);

§ systémové výčty a sady systémových hodnot (např. Return CodeDialog A Symboly).

· Společný kontext modulu tvořený globálním kontextem a lokálním kontextem samotného obecného modulu (tj. procedurami a funkcemi definovanými v rámci obecného modulu). V kontextu společného modulu jsou k dispozici exportované procedury a funkce jiných společných modulů. Exportované proměnné, procedury a funkce aplikačního modulu nejsou dostupné.

· V kontextu aplikačního modulu nebo externího připojovacího modulu K dispozici jsou exportované procedury a funkce běžných modulů.

· V kontextu modulu aplikačního objektu je zde přístup k detailům a tabulkovým částem objektu, stejně jako k jeho metodám a událostem. Zde jsou k dispozici exportované proměnné, procedury a funkce aplikačního modulu (modul externího připojení) a společné moduly.

· V kontextu modulu formuláře Podrobnosti formuláře jsou k dispozici, stejně jako vlastnosti formuláře, metody a události. Pokud má formulář přiřazený hlavní atribut, pak se v modulu formuláře zpřístupní vlastnosti a metody objektu aplikace použitého jako hlavní atribut.

Vztah mezi kontexty je schematicky znázorněn v rýže. 2. Na rýže. 3 znázorňuje možnou interakci modulu formuláře deníku a modulu dokladu.


Procedury a funkce

Procedury a funkce jsou programové bloky, které lze volat jménem z jiného místa, například z jiné procedury. Funkce se od procedur liší pouze tím, že mají návratovou hodnotu. Ve verzi 8 není pořadí procedur a funkcí důležité. To znamená, že procedura může být umístěna níže, kde je volána.

Procedury a funkce mohou mít parametry, které definují, jaké akce by měly dělat s jakými objekty. Parametry procedury nebo funkce jsou standardně předávány odkazem. To znamená, že změna formálního parametru v rámci procedury nebo funkce změní skutečný parametr v bodě, kde je volán. Chcete-li zaručit, že parametr bude předán hodnotou, musíte před název parametru vložit klíčové slovo Význam.

Příklad 1:

Postup vypočítat()

Částka=cena*množství;

Konec procedury

Výpočet(); // Volání procedury

Příklad 2:

Perem Glob;

// Popis procedury

Výpočet procedury(Par1, Par2, ParZ) Export

Glob = Glob + Par1 + Par2 + ParZ;

Konec procedury

Výpočet(5, 6, 7); // Volání procedury

Příklad 3:

Perem Glob;

// Popis funkce

Funkce Výpočet(Par1, Par2, ParZ) Export

Lok = Glob + Par1 + Par2 + ParZ;

Zpětný zámek;

EndFunction

Res = Calc(5, 6, 7); // Volání funkce

Typy dat

Číslo, Řetězec, Datum, Boolean, Nedefinováno, Null (pro nespecifikované hodnoty v databázových tabulkách)

Typ. Hodnoty speciálního typu „Typ“ jsou potřebné k reprezentaci a porovnání datových typů, například:

Deklarace proměnných

Proměnné se v programu objevují v následujících případech:

· poté, co jsou deklarovány pomocí operátoru Variable.

Perem<Имя_переменной>[Vývozní];

proměnná A, B;

· po prvním umístění názvu proměnné na levé straně operátoru přiřazení.

Příklad:

· při určování názvů identifikátorů editovaných prvků dialogu;

· při nastavování formálních parametrů postupů.

Obsazení

Přetypování může být explicitní nebo implicitní.

Pro explicitní přetypování existují následující funkce: Number, String, Date, Boolean. Implicitní přetypování provádí systém automaticky při vyhodnocování výrazů.

Příklad: Hodnota číselné proměnné MonthNumber je implicitně převedena na řetězec a připojena k jinému řetězci:

A = „Měsíc“ + Číslo měsíce;

Adresáře

Práce s adresáři se provádí pomocí následujících objektů:

· DirectoriesManager. Poskytuje přístup ke všem konfiguračním referenčním knihám. Vlastnosti tohoto objektu se shodují s názvy adresářů a obsahují objekty typu DirectoryManager.

· DirectoryManager. Poskytuje přístup k operacím v adresáři jako sadě prvků. Pomocí metod tohoto objektu můžete vyhledávat, získávat výběr, vytvářet nové prvky a přistupovat k adresářovým formulářům a rozvržením.

· DirectoryLink. Jednoznačně identifikuje prvek (skupinu) adresáře a umožňuje vám k němu přistupovat v režimu pouze pro čtení. Prostřednictvím vlastností a metod tohoto objektu můžete číst podrobnosti o prvku (skupině) a přistupovat k jeho tabulkovým částem. Hodnota tohoto typu je uložena v atributech, které odkazují na prvky tohoto adresáře, například v atributu Zaměstnanec dokument Nábor je uložen odkaz na určitý prvek adresáře Zaměstnanci.

· DirectoryObject. Poskytuje zapisovatelný přístup k prvku. Tento objekt obsahuje metody, které ovlivňují prvek v databázi, například metody Zapsat A Vymazat.

· DirectorySelection. Poskytuje možnost iterovat prvky adresáře. Vzorkování může být přímé nebo hierarchické.

· DirectoryList. Objekt pro správu seznamu prvků v poli tabulky. Umožňuje spravovat sloupce, výběr a řazení v seznamu.

V systému 1C:Enterprise?

1. Konfigurační a databázové texty jsou uloženy ve formátuUNICODE

3. Neexistuje správná odpověď

6.75 K jakému účelu jsou ve formátu uloženy konfigurační a databázové textyUNICODE?

1. Formát UNICODE zajišťuje neměnnost (nezávislost na softwarové platformě operačního systému) prezentace informací

2. FormátUNICODE umožňuje podporovat různé jazyky v systému 1C:Enterprise

3. Neexistuje správná odpověď

6.76 Stanoveny mechanismy internacionalizace. ..

1. technologická platforma 1C:Enterprise

2. aplikované roztoky

3. Odpovědi 1 a 2 jsou správné

4. neexistuje správná odpověď

6.77 Co je to lokalizační kód?

1. Řetězec skládající se z kódu jazyka a kódu země, který identifikuje určitou oblast světa

2. Kód softwarového produktu (uvedený v registračním formuláři, dokumentace je součástí dodávky)

3. Možnost formátování řetězce pro převod

4. Její odpověď je správná

6.78 Je pravda, že v 1C:Enterprise 8 může jakákoli textová informace současně obsahovat znaky z různých jazyků?

1. Ano, protože všechny konfigurační a databázové texty jsou uloženy ve formátuUNICODE

2. V závislosti na nastavení zadaném při vytváření infobáze

3. Pouze pokud to konfigurace umožňuje

6.79 Jaký je účel konfiguračního objektu "Jazyk"?

1. Chcete-li vytvořit rozhraní programu v různých jazycích

2. Chcete-li vytvářet textové dokumenty v různých jazycích

3. Takový objekt v 1C: Enterprise 8 neexistuje

6.80 Jak mohu změnit jazyk pro prohlížení (úpravu) konfigurace?

1. Pomocí tlačítka pro výběr jazyka umístěného ve stavovém řádku napravo od tlačítka „NUM“.

2. Prostřednictvím položky nabídky "Konfigurace - Jazyk úprav konfigurace"

3. V 1 C: Enterprise tato možnost neexistuje

4. Verpa odpovídá 1 a 2

6.81 Jaký je pravopis vestavěných jazykových operátorů?

1. Pouze ruské psaní

3.

6.82 Je možné použít vestavěné jazykové operátory v ruštině a angličtině psaní v jednom zdrojovém textu?

1. Pouze se speciálním nastavením konfigurátoru

2. Ano, toto nevyžaduje změnu nastavení konfigurátoru

3. Ne, protože ve vlastnostech konfigurace je nastavena možnost vestavěného jazyka

6.83 Jaký je účel vestavěného jazyka?

1. Určení výchozího rozhraní programu

2. Popsat (ve fázi vývoje konfigurace) algoritmy pro fungování aplikované úlohy

3. Neexistuje správná odpověď

6.84 Jaký je pravopis vestavěných jazykových funkcí?

1. Pouze ruské psaní

2. Pouze anglický pravopis

3. Ruské a anglické psaní

4. V závislosti na nastavení konfigurátoru

6.85 Co znamená parametr L?(L) ve formátovacím řetězci funkce formátování NumberInWriting()?

1. Podepište „vypište zlomkovou část čísly/slovy“

2. Počet desetinných míst

3. Lokalizační kód

7. Tabulkový model aplikačního řešení

7.1 Při nastavování omezení přístupu k datům můžete nastavit několik omezení (podle počtu polí):

1. Pro právo "Číst".

2. Pro správnou "Změnu"

3. Pro právo "Přidat".

4. Pro právo "Smazat".

5. Pro všechna výše uvedená práva

6. Za všechna možná práva

7.2 Při nastavování omezení přístupu k datům lze jako hodnoty, kterými se provádí omezení přístupu k datům, použít následující:

1. Pouze hodnoty parametrů relace

2. Pouze data z tabulek (dotazy)

3. Hodnoty parametrů relace a data z tabulek (dotazy)

4. Pouze hodnoty s typy: Number, String, Boolean, Date

7.3 Kterou z výše uvedených metod lze použít, aby se kód a název adresáře objevily v části „Pole“ návrháře dotazů?

1. Nejprve vyplňte sekci „Tabulky“ a poté výběrem požadovaných objektů z této sekce je přesuňte do sekce „Pole“ dvojitým kliknutím levým tlačítkem myši.

2. Aniž byste vyplnili sekci „Tabulky“, okamžitě vyberte potřebné objekty z tabulek - zdrojů dat sekce „Databáze“ a přeneste je do sekce „Pole“ pomocí technologie Drag & Drop. Sekce "Tabulky" se vyplňuje automaticky

3. Nejprve vyplňte sekci "Tabulky" a poté výběrem potřebných objektů z této sekce je přeneste do sekce "Pole" pomocí tlačítek ve formuláři ">" """

4. Odpovědi I a 3 jsou správné

5. Odpovědi I, 2 a 3 jsou správné

7.4 Chcete-li zvýšit rychlost provádění požadavku, musíte:

1. Nastavte parametry pro většinu reálných tabulek

2. Nastavte parametry pro většinu virtuálních tabulek

3. Místo zadávání parametrů pro skutečnou nebo virtuální tabulku použijte výběr určený konstrukcí dotazovacího jazyka „WHERE“

4. Odpovědi I a 2 jsou správné

7.5 Je možné jí přiřadit nový název (alias) při výběru zdrojové tabulky v části „Tabulky“ návrháře dotazů?

1. Ano můžeš

2. Ano, můžete, ale pouze pokud je zdrojem dat vnořený dotaz

3. Ano, můžete, ale pouze pokud je zdrojem dat virtuální tabulka

4. Odpovědi 1 a 2 jsou správné

5. Odpovědi 1 a 3 jsou správné

7.6 Lze použít vnořený dotaz:

1. Jako tabulka zdroje dat

2. Jako operand srovnávacích operací „B“ nebo „NOT B“ při nastavování parametrů virtuální tabulky

3. Jako operand srovnávacích operací „B“ nebo „NOT B“ při specifikaci konstrukce dotazovacího jazyka „WHERE“

4. Verpa odpovídá 1, 2 a 3

7.7 Je možné získat součty podle hierarchie pomocí návrháře dotazů?

1. Je to možné, pokud pro pole seskupení zadáte celkový typ „Prvky a hierarchie“.

2. Je to možné, pokud pro pole seskupení zadáte celkový typ „Pouze hierarchie“.

3. Verpa odpovídá 1 a 2

7.8 Na kartě „Podmínky“ návrháře dotazů lze vygenerovat samostatný řádek seznamu podmínek:

1. Dvakrát klikněte levým tlačítkem myši na požadované pole v seznamu dostupných polí

2. Přesunutím požadovaného pole do seznamu pomocí technologie Drag & Drop

3. Klikněte na tlačítko "Přidat". Pokud je podmínka libovolná, lze text podmínky zadat „ručně“

4. Vyvolejte kontextovou nabídku a vyberte z ní „Přidat“. Je možné použít libovolný výraz

5. Všechny výše uvedené odpovědi jsou správné

7.9 Na kartě „Odkazy“ v návrháři dotazů můžete definovat:

1. Propojování tabulek zdrojů dat a vztahy mezi nimi

2. Kombinování tabulek zdrojů dat a propojení mezi nimi

3. Vztahy mezi poli tabulky získané jako výsledek dotazu

4. Vztahy mezi poli tabulky zdroje dat a tabulkou získanou jako výsledek dotazu

7.10 Při spojování tabulek zdrojů dat v návrháři dotazů můžete:

1. Přiřaďte připojení bez zadání podmínky připojení

2. Přiřaďte připojení označující podmínku připojení a tato podmínka může být pouze jedna

3. Přiřaďte připojení označující stav připojení a tento stav může být pouze jednoduchý

4. Přiřaďte požadovaný počet spojení s uvedením požadovaného počtu komunikačních podmínek, přičemž tyto podmínky mohou být jednoduché nebo libovolné

7.11 Vytvoření spojení mezi tabulkami zdrojů dat v návrháři dotazů umožňuje:

1. Spojení pouze dvou tabulek zdrojů dat

2. Připojení požadovaného počtu tabulek zdrojů dat

3. Propojování pouze dvou tabulek zdrojů dat a u alespoň jedné tabulky musí být zaškrtnuto políčko „Vše“.

Základní, což usnadňuje začínajícím vývojářům učení. Nejedná se však o přímou obdobu žádného z uvedených jazyků.

Zde jsou jen některé z nejvýznamnějších funkcí vestavěného jazyka:

  • předkompilace; před spuštěním jsou moduly obsahující text ve vestavěném jazyce převedeny do interního kódu;
  • ukládání kompilovaných modulů do mezipaměti;
  • měkké psaní - typ proměnné je určen typem hodnoty, kterou obsahuje a může se během provozu měnit;
  • nedostatek softwarového popisu konfiguračních objektů; vývojář může použít buď objekty zabudované do platformy, nebo objekty vytvořené systémem jako výsledek vizuálního návrhu aplikačního řešení.

Vestavěný jazyk orientovaný na události. Účel vestavěného jazyka v systému 1C:Enterprise je určen ideologií vytváření aplikačních řešení. Aplikační řešení v 1C:Enterprise 8.0 nejsou plně kódovaná. Většinu aplikačního řešení vytváří vývojář prostřednictvím vizuálního návrhu – vytváření nových konfiguračních objektů, nastavení jejich vlastností, prezentačních forem, vztahů atd. Vestavěný jazyk slouží pouze k určení chování objektů aplikačního řešení, které se liší od standardní a vytvořit si vlastní algoritmy pro zpracování dat.

Z tohoto důvodu jsou moduly obsahující text ve vestavěném jazyce systémem využívány ve specifických, dříve známých situacích, které mohou při provozu aplikačního řešení nastat. Takovým situacím se říká události. Události mohou být spojeny s fungováním objektů řešení aplikace nebo se samotným řešením aplikace jako takovým.

Například s fungováním objektu řešení aplikace Directory je spojena řada událostí, mezi nimiž je událost BeforeWrite. K této události dochází těsně předtím, než mají být data položky adresáře zapsána do databáze. Vývojář může pomocí vestavěného jazyka popsat algoritmus, který bude například kontrolovat správnost dat zadaných uživatelem. Umístěním tohoto algoritmu do příslušného modulu vývojář zajistí, že pokaždé, když uživatel zaznamená položku adresáře, systém spustí algoritmus vytvořený vývojářem a zkontroluje, zda uživatel nezapomněl vyplnit požadované údaje v adresáři.

Můžeme tedy říci, že vestavěný jazyk je skriptovací jazyk pro programování obchodní logiky a použití modulů ve vestavěném jazyce je závislé na události, tzn. moduly se spouštějí, když během provozu aplikačního řešení nastanou určité události.

Předdefinované datové typy

Platforma 1C:Enterprise 8.0 umožňuje vývojářům používat různé typy dat.

Existuje velké množství datových typů, které jsou definovány na úrovni samotné platformy. Například toto primitivní datové typy, jako je řetězec, číslo, datum atd.


Popis primitivní datové typy:

  • NULA- chybějící hodnota. Používá se například v dotazech.
  • Nedefinováno- prázdná, nedefinovaná hodnota. Používá se například při vyhodnocování předávání parametrů, pokud je tento parametr vynechán při volání procedury nebo funkce. Podrobnosti, které mají složený datový typ, jsou ve výchozím nastavení typu "Nedefinováno".
  • Boolean- obsahuje dvě hodnoty: True nebo False. Používá se např. v logických výrazech – logický výraz je typu „Boolean“.
  • datum- obsahuje datum a čas. Výchozí hodnota je 01/01/01 00:00:00 datum začátku naší éry. Čas se měří od začátku dne. Výraz, který má doslovný typ "datum", se zapisuje následovně - "00010101000000". Nejprve se zapíše rok, pak měsíc, pak datum a pak čas. Je možný následující záznam: "20041031". Výchozí čas je začátek dne.
  • Čára- může být variabilní, pevná nebo neomezená délka. Obecně se doporučuje používat řetězce s proměnnou délkou.
  • Číslo- bitová hloubka čísla byla zvýšena na 38 bitů.
  • Typ- slouží k určení typů hodnot. Používá se například k porovnání datových typů. Nemá žádné literály a je vrácena funkcemi Type(<Имя типа>) nebo TypeValue(<Значение>).

Navíc je jich víc komplexní datové typy. Platforma například podporuje řadu typů, které jsou univerzálními kolekcemi hodnot: pole, struktura, seznam hodnot, strom hodnot atd.


Datové typy "Univerzální kolekce" - seznam (množina) datových objektů libovolného typu, k jejichž hodnotám lze přistupovat hrubou silou nebo zadaným indexem (klíčem). Číslování prvků kolekce začíná od 0. Všechny zadané datové typy jsou vytvářeny pouze programově.

Pole. Představuje očíslovanou kolekci hodnot libovolného typu. K prvku pole lze přistupovat pomocí jeho indexu. Prvky pole mohou být zejména jiná pole. To vám umožní vytvářet vícerozměrná pole.

Struktura. Představuje pojmenovanou kolekci sestávající z párů klíč–hodnota. Klíčem může být pouze řetězec, hodnota může být libovolného typu. K prvku struktury lze přistupovat pomocí hodnoty jeho klíče, tzn. podle jména. Obvykle se používá k uložení malého počtu hodnot, z nichž každá má jedinečný název.

Korespondence. Stejně jako Struktura je sbírkou párů Klíč - Hodnota. Na rozdíl od struktury však může být klíč téměř jakéhokoli typu.

Seznam hodnot. Obvykle se používá k řešení problémů s rozhraním. Umožňuje vytvářet dynamické sady hodnot a manipulovat s nimi (přidávat, upravovat, odstraňovat prvky, třídit). Může obsahovat hodnoty libovolného typu, navíc typy uložených hodnot v jednom seznamu se mohou lišit.

Tabulka hodnot. Tabulka hodnot vám umožňuje vytvářet dynamické sady hodnot a manipulovat s nimi. Může být naplněn hodnotami libovolného typu a v jedné tabulce se mohou typy uložených hodnot lišit.

Strom hodnot. Strom hodnot je dynamicky generovaná sada hodnot libovolného typu, podobná tabulce hodnot. Na rozdíl od tabulky hodnot mohou řádky stromu hodnot tvořit hierarchické struktury: každý řádek ve stromu může mít sadu podřízených řádků, každý z podřízených řádků zase může mít také sadu podřízených řádků a tak dále. V tomto případě lze vyhledávání hodnot, řazení a získávání výsledků provádět buď podle aktuální úrovně hierarchie, nebo včetně všech podřízených.

COMSafeArray. Představuje obal objektu přes vícerozměrné pole SAFEARRAY

Procedure SelectFromFileClick(Element) // Výběr souboru pomocí viewingFileSelectionDialog = NewFileSelectionDialog(FileSelectionDialogMode.Open); FileSelectionDialog.Directory = ""; FileSelectDialog.Preview = True; FileSelectionDialog.FilterIndex = 0; If FileSelectDialog.Select() Then File = New File(FileSelectDialog.FullFileName); Obrázek = NewValueStorage(NewImage(FileSelectionDialog.FullFileName)); DisplayImage(); endIf; Konec procedury

THIS_KEYWORD
<Это конструкция языка>,
<Это конструкция языка>
THIS_FUNCTION(<Это конструкция языка>)

V pravidlech popisujících dotazovací jazyk jsou jazykové konstrukce uvedeny v lomených závorkách. Klíčová slova a názvy funkcí jsou popsány velkými písmeny.

Jazykové konstrukce mohou obsahovat volitelné prvky – klíčová slova atp. V pravidlech popisujících dotazovací jazyk jsou volitelné prvky uzavřeny v hranatých závorkách "[" a "]":

[TO JE VOLITELNÉ SLOVO] [<Это необязательная конструкция>]

V některých případech může jazykový design používat jeden z několika alternativních prvků. Tyto prvky v pravidlech jsou uvedeny pomocí svislého pruhu „|“:

EITHER_THIS_WORD | NEBO THIS_WORD
<Либо эта конструкция> | <Либо эта конструкция>

Popisy všech konstrukcí jsou doprovázeny příklady, které vysvětlují, jak se používají v dotazovacím jazyce.

Komentáře v dotazovacím jazyce

Orgán žádosti může obsahovat připomínky. Komentář je považován za část řádku, která začíná posloupností znaků // a pokračuje až do konce řádku:

// Toto je komentář.

Při provedení požadavku jsou komentáře ignorovány.

Dvojjazyčná reprezentace klíčových slov

Jednou z významných vlastností dotazovacího jazyka 1C: Enterprise je to, že stejně jako ve vestavěném jazyce mají všechna klíčová slova dva pravopisy: v ruštině a angličtině. Dále v této kapitole jsou uvedeny ruské hláskování klíčových slov. Níže je tabulka znázorňující korespondenci mezi ruštinou a angličtinou a možnosti pravopisu pro klíčová slova v dotazovacím jazyce...... (vynecháno)

Hlavní části textu požadavku

Text požadavku lze popsat následujícím pravidlem:

<Описание запроса>
[<Объединение запросов>]
[<Упорядочивание результатов>]
[AUTO OBJEDNÁVKA]
[<Описание итогов>]

Jak je z tohoto pravidla patrné, text požadavku se skládá z několika částí nebo částí:

V sekci<Упорядочивание результатов>Můžete definovat podmínky řazení pro řádky ve výsledku dotazu. Uspořádání výsledku dotazu je popsáno na straně 324.

AUTO ORDER umožňuje povolit automatické řazení řádků ve výsledku dotazu. Tento režim je popsán na straně 331.

V sekci<Описание итогов>V dotazu můžete určit, které součty se mají vypočítat. Tato část je popsána na straně 332.

Popis požadavku

Jak již bylo zmíněno, text požadavku musí nutně obsahovat sekci popisu požadavku, která definuje:

Pole, která budou obsažena ve výsledku požadavku;

Dotazové zdroje dat - zdrojové tabulky;

Podmínky ovlivňující výběr dat v žádosti;

Pořadí, ve kterém jsou seskupeny výsledky dotazu.

Sekce popisu požadavku se skládá z několika vzájemně souvisejících vět:

VYBERTE [JINAK] [PRVNÍ<Количество>]
<Список полей выборки>
[Z<Список источников>]
[KDE<Условие отбора>]
[SKUPINA VYTVOŘENÁ<Поля группировки>]
[MÍT<Условие отбора>]
[PRO ZMĚNU [<Список таблиц верхнего уровня>]]

Popis požadavku začíná požadovaným klíčovým slovem VYBRAT.

Nabídka KDE<Условие отбора> umožňuje filtrovat výsledek dotazu. Výsledek zahrnuje pouze ty záznamy, pro které platí zadaná podmínka. Pravidla pro popis podmínek výběru jsou popsána na straně 315.

Nabídka PRO ZMĚNU je určen k označení potřeby blokovat data čtená v transakci.

Nabídka SKUPINA umožňuje popsat pořadí, ve kterém jsou seskupeny výsledky dotazu. Seskupování je podrobně popsáno na straně 316.

Nabídka MÍT umožňuje stanovit podmínky pro výsledky seskupování. Popsáno na straně 318.

Všechny příklady dotazů v této kapitole poskytují text dotazu a výsledek dotazu. Předpokládá se, že text požadavku je předán jako parametr metodě Execute objektu Request.

Uveďme příklad docela jednoduchého dotazu sestávajícího z jednoho příkazu SELECT a seznamu výběrových polí.

//V sestavě je potřeba zobrazit seznam faktur.

Výsledek dotazu:

Použití slova JINÝ

V mnoha situacích je žádoucí, aby se stejné řádky v sestavě neopakovaly.

// Je třeba zjistit, které protistrany obecně
// zboží bylo odesláno za období.
Vyberte Document.Invoice.Counterparty

Výsledek dotazu:

Je vidět, že výsledek dotazu obsahuje mnoho opakovaných řádků, což snižuje jeho přehlednost. Aby se předešlo opakování, mělo by být v popisu dotazu uvedeno klíčové slovo DIFFERENT.

Vyberte Různé Document.Invoice.Counterparty

Výsledek dotazu:

Použití slova PRVNÍ

V některých případech je nutné v sestavě zobrazit omezený počet řádků. Chcete-li to provést, v popisu dotazu byste měli zadat klíčové slovo FIRST a po něm - požadovaný počet řádků.

// Je nutné vybrat pět nejdražších zboží.
// Výběr by měl být proveden v sestupném pořadí podle ceny produktu.
Vyberte Prvních 5
Directory.Nomenclature.Name,
Adresář.Nomenklatura.Nákupní cena
Seřadit podle Directory.Nomenclature.PurchasePrice sestupně

Výsledek dotazu:

Popis výběrových polí

Po povinném klíčovém slově SELECT (a opravňujících slovech DIFFERENT a FIRST) je v textu požadavku uveden seznam výběrových polí. Tato pole budou zpracována při získávání dat v požadavku. Výsledek dotazu bude mít také sadu polí definovaných v tomto seznamu. Pole výběru jsou popsána podle následujících pravidel:

<Описание поля>[ [JAK]<Псевдоним поля>]

<Выражение>[.<Группа полей>]

Seznam polí výběru se skládá z jednoho nebo více prvků oddělených čárkami. Každý<Поле выборки>sestává z popisu výběrového pole a volitelného aliasu pole.

Místo vypisování polí ve výběrovém seznamu můžete zadat hvězdičku „*“. To bude znamenat, že výsledek dotazu musí obsahovat všechna pole, která jsou ve zdrojových tabulkách – zdroje dat dotazu popsané v seznamu zdrojů.

Komentář! Při zadání hvězdičky „*“ v seznamu polí výběru nejsou virtuální pole zdrojových tabulek zahrnuta do výsledku.

<Описание поля>definuje, jak mají být generovány hodnoty pole. V nejjednodušším případě je pole výběru odkazem na pole ve zdrojové tabulce. Odkaz lze zadat zadáním tabulky obsahující toto pole nebo bez zadání tabulky samotné. Dereferencování pole je diskutováno na.

Obecně platí, že pole výběru může být nejen odkazem na pole ve zdrojové tabulce, ale i nějaké<Выражение>. Výrazy jsou podrobně popsány na straně 344.

Výsledky dotazů lze seskupit pomocí agregačních funkcí určených jako výrazy ve vybraných polích. Seskupování výsledků dotazů je popsáno na stránce 316. Agregační funkce jsou popsány na straně 345.

Každému výběrovému poli lze přiřadit alias. V budoucnu jej lze využít pro pohodlnější přístup do tohoto pole. Použití aliasů polí je diskutováno níže.

<Группа полей>lze zadat pouze tehdy, když výběrové pole ukazuje na vnořenou tabulku. V tomto případě můžete určit, která pole mají být zpracována ve výběru vnořené tabulky. Pokud není zadaná skupina polí, budou ve výběru zpracována všechna pole vnořené tabulky. Přístup k vnořeným tabulkám je popsán v .

Aliasy polí ve výběrovém seznamu

Pokud k poli výběru přiřadíte alias, můžete se na toto pole později odkazovat pomocí jeho aliasu v klauzulích ORDER BY a TOTAL, stejně jako při práci s výsledkem dotazu. Taková léčba může být pohodlnější a vizuální a v některých případech jediná možná.

Klíčové slovo HOW může předcházet alias pole. Toto slovo nemusí být uvedeno vůbec, ale pokud je uvedeno, zvyšuje se viditelnost a čitelnost textu požadavku.

Aliasy polí se nastavují v souladu s pravidly pro přidělování identifikátorů proměnných. Aliasy v požadavku nemohou být stejné.

Přiřazení aliasů polím samo o sobě neovlivňuje výběr dat v dotazu.

// Musí být vybráno z adresáře produktu
// názvy zboží a názvy skupin.
Vybrat
Adresář. Nomenklatura. Název jako produkt,
Adresář. Nomenclature.Parent.Name As Group
z
Adresář.Nomenklatura

Výsledek dotazu:

Všimněte si, že pole ve výsledku dotazu na pole jsou pojmenována "Položka" a "Skupina". Pokud by aliasy polí nebyly zadány, pole ve výsledku dotazu by se jmenovala „Název“ a „Název1“ (názvy polí ve výsledku dotazu se nemohou shodovat, takže k názvu druhého pole se automaticky přidá „1“). což je mnohem méně jasné.

Vnořené tabulky v seznamu polí výběru

Pole ve výběrovém seznamu může odkazovat na vnořenou tabulku ve zdroji dat dotazu. V tomto případě bude pole výsledku dotazu typu Výsledek dotazu, to znamená, že bude obsahovat vnořený výsledek dotazu vygenerovaný na základě vnořené zdrojové tabulky.

Ve výchozím nastavení jsou do vnořeného výsledku zahrnuta všechna pole vnořené tabulky – zdroje dat. Je možné explicitně definovat skupinu polí, která by měla být obsažena ve vnořeném výsledku dotazu. Skupina vnořených výsledkových polí je popsána podle následujícího pravidla:

(<Список вложенных полей>) | *

<Вложенное поле [, <Вложенное поле>[, ...] ]

<Список вложенных полей>sestává z jednoho nebo více prvků oddělených čárkami. Pokud se seznam skládá z jednoho prvku, není nutné jej uzavírat do závorek.

Místo výpisu vnořených polí můžete zadat hvězdičku „*“; to bude znamenat, že výsledek vnořeného dotazu musí obsahovat všechna pole, která jsou ve vnořené tabulce.

<Выражение>[[JAK]<Псевдоним поля>]

<Вложенное поле>může představovat nějaký výraz. V nejjednodušším případě<Выражение>je odkaz na pole ve vnořené tabulce. Výrazy jsou podrobně popsány na straně 344.

Každému vnořenému poli lze přiřadit alias. Dále<Псевдоним поля>lze použít pro pohodlnější přístup k tomuto poli, podobně jako aliasy pro pole ve výběrovém seznamu - viz část „Aliasy pro pole ve výběrovém seznamu“ na

Aliasy lze přiřadit vnořeným polím bez ohledu na to, zda je alias přiřazen k samotné vnořené tabulce.

//V sestavě je nutné zobrazit specifikaci faktur,
// samotný dokument, nomenklatura a množství.
Vybrat

Document.Invoice.Composition. (Nomenklatura jako produkt, množství)

Výsledek dotazu:

Odkaz Sloučenina
Produkt Množství
Džíny pro ženy 4
Džíny pro ženy 5
Košile "Cowgirl" 5
Faktura 00005 ze dne 24.02.2002 0:00:00 Džíny pro ženy 1
Džíny pro ženy 1
Moydodyr "akvárium" 5
Umyvadlo "Lily" 8
Mixér "Ultra" 10

Upozorňujeme, že pole „Složení“ ve výsledku dotazu je vnořená tabulka, která obsahuje pole „Nomenklatura“ a „Množství“.

//Zobrazení všech polí tabulkové části faktury do sestavy.
Vybrat
Document.Invoice.Link,
Dokument.Faktura.Složení.*

Účelem klauzule IZ je určit seznam zdrojových tabulek – zdrojů dat použitých v daném příkazu SELECT.

Je třeba poznamenat, že klauzule IZ v dotazovacím jazyce je volitelná. Může být vynecháno, pokud jsou zdroje dat plně kvalifikovány v popisu seznamu výběrových polí obsaženém v klauzuli SELECT. Vezměte prosím na vědomí, že řada příkladů v předchozích částech neobsahovala doložku IZ.

Za klíčovým slovem IZ je uveden seznam zdrojů. Obecně je seznam zdrojů popsán následujícím souborem pravidel:

<Источник>[, <Источник>[, ...]]

Zdroje dat dotazu jsou uvedeny v seznamu zdrojů oddělené čárkami. Každý<Источник>seznam zdrojů musí obsahovat popis zdroje; navíc lze specifikovat<Перечень соединений>- pravidla pro připojení zdroje k jiným zdrojům. Specifikace připojení jsou popsány.

<Описание источника> [ <Перечень соединений> ]

Pokud je zdrojem dat tabulka databáze,<Описание источника>obsahuje<Имя таблицы>.

<Таблица>[ [JAK]<Псевдоним источника>]

Pokud je zdrojová tabulka virtuální, můžete určit<Параметры>jeho formování. Parametry virtuální tabulky jsou podrobně popsány v části „Zdroje dat dotazů“.

<Имя таблицы> [(<Параметры>)] | <Описание запроса>

Poddotaz může také fungovat jako zdroj dat dotazu; v tomto případě obsahuje popis zdroje<Описание запроса>. Použití vnořených dotazů je popsáno na.

Popis zdroje dat může také přiřadit jeho alias. Dále<Псевдоним источника>lze použít pro pohodlnější přístup k tomuto zdroji. Použití aliasů datových zdrojů je diskutováno na.

Specifikace připojení

Při definování více zdrojů ve zdrojovém seznamu se pro každý záznam z první zdrojové tabulky provede výběr z druhé zdrojové tabulky a tak dále. Výsledkem dotazu jsou tedy všechny možné kombinace všech záznamů ze všech zadaných zdrojů.

Výsledek dotazu:

Protistrana banka
Dodavatelé JSCB InvestBank
Dodavatelé JSCB PromStroyBank
Pletená továrna "Zarya" JSCB InvestBank
Pletená továrna "Zarya" JSCB PromStroyBank
Továrna na džínové oblečení JSCB InvestBank
Továrna na džínové oblečení JSCB PromStroyBank
kupující JSCB InvestBank
kupující JSCB PromStroyBank
Veletrh oblečení JSCB InvestBank
Veletrh oblečení JSCB PromStroyBank
Obchodní dům "Budenovský" JSCB InvestBank
Obchodní dům "Budenovský" JSCB PromStroyBank
Pavilon 45 na velkoobchodním trhu JSCB InvestBank
Pavilon 45 na velkoobchodním trhu JSCB PromStroyBank
Bavorsko - porcelán JSCB InvestBank
Bavorsko - porcelán JSCB PromStroyBank
Továrna na džínové oblečení JSCB InvestBank
Továrna na džínové oblečení JSCB PromStroyBank
JSCB PromStroyBank JSCB InvestBank
JSCB PromStroyBank JSCB PromStroyBank

Výsledek dotazu obsahuje kombinace všech protistran se všemi bankami. Takový výsledek sám o sobě zpravidla nedává smysl. Obvykle musí být kombinace záznamů z různých zdrojových tabulek omezeny některými podmínkami. V dotazovacím jazyce je možné popsat takovou kombinaci zdrojů uvedením zdrojů samotných a definováním podmínek, za kterých je třeba do výsledku dotazu zahrnout kombinace záznamů z těchto zdrojů.

Existuje několik typů připojení, které jsou popsány následujícími pravidly:

<Соединение> [<Перечень соединений>]

Obecně<Перечень соединений>může obsahovat a popisovat nejen jedno spojení (dvou zdrojů), ale i několik spojení více zdrojů najednou.

[INTERNÍ] PŘIPOJTE SE<Описание источника>PODLE<Условие отбора> |

PŘIPOJTE SE VLEVO [VNĚJŠÍ]<Описание источника>PODLE<Условие отбора> |

PRAVÉ [VNĚJŠÍ] PŘIPOJTE SE<Описание источника>PODLE<Условие отбора> |

FULL (VNĚJŠÍ] PŘIPOJTE SE<Описание источника>PODLE<Условие отбора>

<Условие отбора>obsahuje podmínky, podle kterých musí výběr kombinovat data z původních tabulek – zdrojů dotazu. Pravidla pro popis podmínek v dotazovacím jazyce jsou popsána na stránce 357.

Klíčová slova LEFT, RIGHT a FULL objasňují povahu spojení. Slova INTERNAL nebo EXTERNAL nemusí být uvedena vůbec, zvyšují přehlednost a čitelnost textu požadavku.

Připojované zdroje nejsou navzájem ekvivalentní a v některých případech závisí výsledek na tom, která tabulka je uvedena jako první před klíčovým slovem JOIN (vlevo od něj) a která tabulka je uvedena jako druhá (vpravo).

[INTERNAL] JOIN znamená, že z obou zdrojových tabulek - zdrojů dat musí být do výsledku dotazu zahrnuty pouze ty kombinace záznamů, které splňují zadanou podmínku. Zbývající záznamy nejsou zahrnuty do výsledku.

// Potřebuji zjistit, které banky jsou zároveň
// protistrany (jsou přítomny stejné názvy
//jak v adresáři Protistrany, tak v adresáři Banky).
Vybrat

Banks.Link How to Bank
Z

Vnitřní spojení
Adresář.Banky Jak banky
Podle

Výsledek dotazu:

Protistrana banka
JSCB PromStroyBank JSCB PromStroyBank

LEFT [OUTER] JOIN znamená, že výsledek dotazu musí obsahovat kombinace záznamů z obou zdrojových tabulek, které splňují zadanou podmínku. Ale na rozdíl od interního spojení musí výsledek dotazu obsahovat také záznamy z prvního zdroje (označené vlevo od slova JOIN), pro které nebyly nalezeny žádné záznamy z druhého zdroje, které by odpovídaly podmínce.

Tímto způsobem bude výsledek dotazu zahrnovat všechny záznamy z prvního zdroje; budou sloučeny se záznamy z druhého zdroje, pokud bude splněna zadaná podmínka. Řádky výsledků dotazu, pro které nebyly nalezeny žádné záznamy z druhého zdroje vyhovující podmínce, budou obsahovat NULL v polích vygenerovaných na základě záznamů z tohoto zdroje.

//V sestavě je nutné zobrazit všechny protistrany a pro ty
// kdo je také banka - uveďte odkaz na banku.
Vybrat
Counterparties.Link As Counterparty,
Banks.Link How to Bank
Z
Adresář Protistrany Jak Protistrany
Levý vnější spoj
Adresář.Banky Jak banky
Podle
Protistrany.Název = Banky.Název

Výsledek dotazu:

RIGHT [OUTER] JOIN znamená, že výsledek dotazu musí obsahovat kombinace záznamů z obou zdrojových tabulek, které splňují zadanou podmínku. Kromě toho musí výsledek dotazu obsahovat také záznamy z druhého zdroje (uvedeno napravo od slova PŘIPOJENÍ), pro které nebyly nalezeny žádné záznamy z prvního zdroje vyhovující podmínce.

Výsledek dotazu tedy bude zahrnovat všechny záznamy z druhého zdroje; budou sloučeny se záznamy z prvního zdroje, pokud je splněna zadaná podmínka. Řádky výsledků dotazu, pro které nebyly nalezeny žádné záznamy z prvního zdroje vyhovující podmínce, budou obsahovat NULL v polích vygenerovaných na základě záznamů z tohoto zdroje.

//V sestavě je nutné zobrazit všechny banky a pro ty
// kdo je zároveň protistranou - uveďte odkaz na protistranu.
VYBRAT
Counterparties.Link As Counterparty,
Banks.Link Like Bank
Z
Adresář Protistrany Jak Protistrany
Pravé vnější spojení
Adresář.Banky Jak banky
Podle
Protistrany.Název = Banky.Název

Výsledek dotazu:

Protistrana banka
NULA JSCB InvestBank
JSCB PromStroyBank JSCB PromStroyBank

FULL [OUTER] JOIN znamená, že výsledek dotazu musí obsahovat kombinace záznamů z obou zdrojových tabulek, které splňují zadanou podmínku. Kromě toho musí výsledek dotazu obsahovat i ty záznamy z obou zdrojů, pro které nebyly nalezeny žádné shody.

Tímto způsobem bude výsledek dotazu zahrnovat všechny záznamy z obou zdrojů; při splnění zadané podmínky budou vzájemně propojeny. Řádky výsledků dotazu, pro které nebyly nalezeny žádné záznamy z žádného zdroje vyhovující podmínce, budou obsahovat NULL v polích vygenerovaných na základě záznamů z tohoto zdroje.

// V přehledu je nutné zobrazit všechny protistrany a všechny banky,
// a ti, kteří jsou oba - tisk na jeden řádek.
Vybrat
Counterparties.Link As Counterparty,
Banks.Link How to Bank
Z
Adresář Protistrany Jak Protistrany
Úplné vnější spojení
Adresář.Banky Jak banky
Podle
Protistrany.Název = Banky.Název

Výsledek dotazu:

Aliasy zdroje dat

Pokud zdroji dat přiřadíte alias, v budoucnu bude možné k tomuto zdroji přistupovat pomocí tohoto aliasu (a již k němu nebude možné přistupovat zadáním názvu tabulky). Taková léčba může být pohodlnější a vizuální a v některých případech jediná možná.

Alias ​​je nastaven v souladu s pravidly pro přidělování identifikátorů proměnných. Aliasy v požadavku nemohou být stejné.

Klíčové slovo JAK může předcházet zdrojový alias. Toto slovo nemusí být uvedeno vůbec, ale pokud je uvedeno, zvyšuje se viditelnost a čitelnost textu požadavku.

Přiřazení aliasů ke zdrojům samo o sobě neovlivňuje výběr dat v dotazu.

// Tento příklad ukazuje použití
// v seznamu polí výběru aliasu Produkt,
// přiřazené zdrojové tabulce Directory.Nomenclature
Vybrat
Jméno výrobku,
Produkt.Rodič
Z
Adresář.Nomenklatura.Produkt

Vnořené tabulky ve zdrojovém seznamu

Seznam zdrojů může obsahovat i vnořené tabulky - tabulkové části příruček a dokumentů.

//V sestavě je nutné zobrazit specifikaci faktur -
// zobrazí samotný dokument, nomenklaturu a množství.
//Seznam zdrojů obsahuje vnořenou tabulku “Composition” -
// tabulková část faktury.
// Výběr je omezen na osm záznamů, aby nedošlo k přetížení příkladu.
Vyberte Prvních 8
Odkaz, nomenklatura, množství
Z
Dokument.Faktura.Složení

Výsledek dotazu:

Odkaz Nomenklatura Množství
Faktura 00007 ze dne 25.02.2002 21:03:21 Džíny pro ženy 4
Faktura 00006 ze dne 25.02.2002 0:00:00 Džíny pro ženy 5
Faktura 00006 ze dne 25.02.2002 0:00:00 Košile "Cowgirl" 5
Faktura 00005 ze dne 3. 1. 2002 20:58:28 Džíny pro ženy 1
Faktura 00004 ze dne 03.01.2002 20:50:40 Džíny pro ženy 1
Faktura 00003 ze dne 23. 2. 2002 0:00:00 Moydodyr "akvárium" 5
Faktura 00003 ze dne 23. 2. 2002 0:00:00 Umyvadlo "Lily" 8
Faktura 00003 ze dne 23. 2. 2002 0:00:00 Mixér "Ultra" 10

Upozorňujeme, že při zadávání vnořené tabulky v seznamu zdrojů je možné přistupovat jak k polím samotné vnořené tabulky, tak k polím tabulky nejvyšší úrovně (ta, která obsahuje vnořenou tabulku). V tomto případě se zpřístupní pole „Odkaz“ samotného dokumentu.

Dílčí dotazy ve zdrojovém seznamu

V seznamu zdrojů dotazů lze jako zdrojovou tabulku použít poddotaz. V tomto případě popis zdroje obsahuje popis poddotazu. Popis vnořeného dotazu se sestavuje úplně stejně jako běžný dotaz: viz

Použití vnořeného dotazu jako zdroje dat se neliší od použití tabulky databáze. Všechna pole popsaná v seznamu polí výběru poddotazu jsou dostupná jako pole takového zdroje.

Výsledek bude úplně stejný jako v předchozím příkladu.

Generování reportů

Práce s požadavky

Pro práci s dotazy se používá vestavěný jazykový objekt Žádost . Umožňuje získat informace uložené v databázových polích ve formě vzorku vytvořeného podle zadaných pravidel.

Dotaz na zdroje dat

Dotaz přijímá počáteční informace ze sady tabulek. Tyto tabulky představují data ze skutečných databázových tabulek ve snadno analyzovatelné podobě. Lze je rozdělit do dvou velkých skupin: skutečné a virtuální.

Reálné tabulky zase mohou být objektové (referenční) nebo neobjektové (nereferenční):

Charakteristickým rysem skutečných tabulek je, že obsahují data z jediné reálné tabulky uložené v databázi. Například skutečné tabulky jsou tabulka „Directory.Clients“ odpovídající adresáři „Clients“ nebo tabulka „Accumulation Register. Material Remaining“ odpovídající registru akumulace „Material Remaining“.

Virtuální tabulky jsou tvořeny primárně z dat z více databázových tabulek. Virtuální tabulkou je například tabulka „Registr akumulace. Zbytky materiálu. Zůstatky a obraty“, vytvořená z několika tabulek registru akumulace „Zbytky materiálu“. Někdy mohou být virtuální tabulky vytvořeny z jedné skutečné tabulky (například virtuální tabulka „Prices.SliceLast“ je vytvořena na základě tabulky informačního registru „Prices“). Všechny virtuální tabulky však mají společné to, že jim lze přidělit řadu parametrů, které určí, jaká data budou v těchto virtuálních tabulkách zahrnuta. Sada takových parametrů se může pro různé virtuální tabulky lišit a je určena daty uloženými ve zdrojových databázových tabulkách.

Reálné tabulky se dělí na objektové (referenční) a neobjektové (nereferenční) tabulky.

Objektové (referenční) tabulky poskytují informace o referenčních datových typech (adresáře, dokumenty, plány typů charakteristik atd.). A v neobjektové (nereferenční) - všechny ostatní datové typy (konstanty, registry atd.).

Charakteristickým rysem objektových (referenčních) tabulek je, že obsahují pole „Link“ obsahující odkaz na aktuální záznam. Navíc pro takové tabulky je možné získat vlastní reprezentaci objektu, tyto tabulky mohou být hierarchické a pole takových tabulek mohou obsahovat vnořené tabulky (části tabulek).

Jazyk dotazu

Algoritmus, kterým budou vybírána data ze zdrojových tabulek požadavku, je popsán v textu požadavku ve speciálním jazyce - dotazovací jazyk. Text žádosti se skládá z několika částí:

    popis požadavku,

    slučování dotazů

    objednání výsledků,

    automatické objednávání,

    popis výsledků.

Jedinou povinnou součástí žádosti je první - popis žádosti. Všechny ostatní jsou přítomny podle potřeby.

Popis požadavku definuje zdroje dat, výběrová pole, seskupení atd.

Slučování dotazů určuje, jak budou kombinovány výsledky více dotazů.

Organizování výsledků definuje podmínky řazení pro řádky výsledků dotazu.

Automatická objednávka umožňuje povolit automatické řazení řádků výsledků dotazu.

Popis výsledků určuje, které součty by se měly v dotazu vypočítat a jak seskupit výsledky.

Zpráva Registr dokumentů Poskytování služeb

První sestavou, na jejímž základě se začneme seznamovat s dotazovacím jazykem, bude sestava „Evidence dokumentů pro poskytování služeb“. Tato zpráva jednoduše zobrazí seznam dokumentů „Poskytování služeb“ existujících v databázi v pořadí podle jejich dat a čísel.

V konfigurátoru vytvoříme nový konfigurační objekt: Sestava „Registr dokumentů Poskytování služeb“. Přejdeme na kartu „Rozvržení“ a spustíme návrháře výstupního formuláře.

Jako zdroj dat pro požadavek vybereme objektovou (referenční) tabulku dokumentů „Poskytování služeb“. Z této tabulky vybereme následující pole:

  • "Mistr",

    "Klient":

Vezměte prosím na vědomí, že když vyberete pole „Sklad“, „Master“ a „Zákazník“, budou v seznamu vybraných polí vybrána také pole „Zobrazení skladu“, „Hlavní zobrazení“ a „Zobrazení zákazníka“. Faktem je, že v obecném případě se předpokládá, že tato pole budou zobrazena v buňkách dokumentu tabulky. Protože odpovídající pole „Sklad“, „Master“ a „Zákazník“ jsou referenční pole, pokud je referenční hodnota předána jako hodnota parametru pro výstup, systém provede dodatečný požadavek na získání reprezentace tohoto pole (která bude zobrazeny v dokumentu), což má za následek pomalejší výstup zprávy. Proto při výběru referenčních polí systém nabízí okamžité zařazení reprezentací referenčních polí do seznamu vybraných polí v očekávání, že budou použita pro výstup do dokumentu.

Poté přejděte na kartu „Objednávka“ a uveďte, že výsledek požadavku by měl být nejprve seřazen podle hodnoty pole „Datum“ a poté podle hodnoty pole „Provoz služby. Odkaz“:

Přejdeme na kartu „Přehled“ a resetujeme příznak „Použít nástroj pro tvorbu přehledů“:

Pojďme resetovat příznak "Použít nástroj pro tvorbu sestav"...

Klikněte na "OK". Návrhář vygeneruje formulář sestavy a rozvržení. Otevřeme formulářový modul a najdeme v něm postup „Evidence dokumentů Poskytování služeb“. V tomto postupu bude vygenerován text požadavku, který bude použit k získání údajů, které nás zajímají:

Query.Text = “VYBRAT

Poskytování služeb.Datum AS Datum,

Poskytování služeb Číslo AS Číslo,

Poskytování služeb.Sklad,

Poskytování služeb. Sklad. Prezentace,

Poskytování služeb. Master,

Poskytování služeb. Master. Prezentace,

Poskytování služeb Klient,

Poskytování služeb.Klient.Zastupování

Dokument.Poskytování služeb JAK PoskytovatSlužby

SEŘAZENO PODLE

Text požadavku začíná, jak jsme řekli výše, částí popisu požadavku:

I Poskytování služby Datum AS Datum,

I Poskytování služeb Číslo AS Číslo,

I Poskytování služeb.Sklad,

I Poskytování služeb. Sklad. Prezentace,

Poskytuji služby. Master,

I Poskytování služeb. Master. Prezentace,

I Poskytování služeb Klient,

1 Poskytování služeb Klienti Zastupování

I Dokument Poskytování služeb JAK poskytovat služby

Popis požadavku začíná požadovaným klíčovým slovem VYBRAT. Následuje seznam vybraných polí, který popisuje pole, která by měla být obsažena ve výsledku dotazu. Tento seznam může obsahovat jak samotná pole, tak některé výrazy vypočítané na základě hodnot polí.

Za klíčovým slovem IZ jsou uvedeny zdroje dat - původní tabulky dotazů, jejichž obsah je v dotazu zpracován. V tomto případě se jedná o objektovou (referenční) tabulku „Dokument.Poskytování služby“. Po klíčovém slově JAK uvedeno pseudonym zdroj dat. V našem případě se jedná o „Poskytování služeb“. V budoucnu bude tento zdroj dat přístupný v těle požadavku pomocí aliasu.

Toto volání vidíme v popisu výběrových polí:

| Poskytování služeb.Datum AS Datum,

| Poskytování služeb Číslo AS Číslo,

| Poskytování služeb.Sklad,

| Poskytování služeb. Sklad. Prezentace,

| Poskytování služeb. Master,

| Poskytování služeb. Master. Prezentace,

| Poskytování služeb Klient,

| Poskytování služeb.Klient.Zastupování

Pole výběru mohou mít také aliasy, které lze použít k odkazování na toto pole později v textu požadavku. V našem případě se jedná o aliasy „Datum“ a „Číslo“.

Po popisné části dotazu v našem příkladu následuje část pro řazení výsledků:

| OBJEDNAT PODLE

| Datum, | Číslo";

Nabídka SEŘAZENO PODLE umožňuje seřadit řádky ve výsledku dotazu. Za touto klíčovou klauzulí je objednávkový výraz, což je obecně seznam polí (výrazů) a výstupní pořadí. V našem případě bude objednání provedeno nejprve výběrovým polem, které je přístupné přes alias - „Kód“, a poté polem – „Číslo“. V obou případech bude pořadí řazení vzestupné, což je výchozí pořadí řazení.

Nyní se podívejme na to, jak se zobrazí výsledek dotazu v tabulkovém dokumentu.

Postup Registr dokumentů Poskytování služeb (TabDoc) Export

//((CONSTRUCTOR_OUTPUT_FORM(Registr dokumentů Poskytování služeb)// Tento fragment byl vytvořen konstruktérem.// Při opětovném použití konstruktoru,// představil ručně Změny bude ztraceno!!!

Layout = GetLayout("Registr dokumentů poskytujících služby"); Žádost = Nová žádost;

Výsledek = Query.Run();

HeaderArea = Layout.GetArea("Header"); PlochaSuterén =

Layout.GetArea("TableFooter"); DetailRecordsArea =

TabDoc.Output(TableHeadArea); TabDoc.StartAutogruttingRows();

SelectDetails = Result.Select();

Zatímco SelectDetails.NextFunctions() smyčka

AreaDetailRecords.Parameters.Fill(SelectionDetails);

TabDoc.Output(RecordsDetailsArea,DetailsSelection.Level()); EndCycle;

/L)CONSTRUCTOR_OUTPUT_FORM EndProcedure

Formulář zprávy obsahuje ovládací prvek TabularDocumentField s názvem „TabDoc“, který je vyplněn daty na základě návrhu vygenerovaného návrhářem.

Na začátku procedury získáme layout reportu, ze kterého pak získáme oblasti v něm existující do odpovídajících proměnných:

HeaderArea = Layout.GetArea("Header"); PlochaSuterén =

Layout.GetArea("Suterén"); TableHeaderArea =

Layout.GetArea("TableHeader"); TableFooterArea =

Layout.GetArea("TableFooter"");DetailRecordsArea =

Layout.GetArea("Detaily");

Poté tabulkový dokument vymažeme a zobrazíme oblasti, které neobsahují data získaná z výsledku dotazu:

TabDoc.Clear(); TabDoc.Output(AreaHeader);

TabDoc.Output(TableHeadArea); TabDoc.StartAutoGroupingRows();

V posledním řádku návrhář přidal začátek automatického seskupování řádků. V tomto příkladu nemáme řádky, které je třeba seskupit, ale ve výchozím nastavení návrhář vždy navrhuje seskupování řádků v dokumentu tabulky. Toto volání neovlivní rychlost výstupu sestavy, takže text konstruktoru ponecháme beze změny.

Poté získáme výběr z výsledku dotazu, který procházíme ve smyčce:

V každé iteraci smyčky vyplníme parametry dříve získané oblasti rozvržení hodnotami získanými z dalšího vzorového záznamu výsledku dotazu a zobrazíme tuto oblast v tabulkovém dokumentu.

Na konci postupu zobrazíme poslední oblasti rozvržení v tabulkovém dokumentu:

TabDoc.FinishAutoGroupingRows();

TabDoc.Output(TableFooterArea);

TabDoc.Output(AreaFooter);

Nyní spustíme 1C:Enterprise v režimu ladění a podíváme se na výsledek naší zprávy:

Na příkladu této zprávy jsme si tedy ukázali, jak používat návrhář výstupních formulářů, a seznámili jsme se s některými základními konstrukcemi dotazovacího jazyka.

Zpráva „Hodnocení služeb“ bude obsahovat informace o tom, které služby přinesly Master of All Trades LLC v uvedeném období největší zisk. Na příkladu sestavy „Hodnocení služby“ si ukážeme, jak vybrat data v určitém období, jak nastavit parametry dotazu a jak v dotazu použít data z několika tabulek a zahrnout všechna data z jednoho ze zdrojů do výsledek dotazu.

Vytvořme nový konfigurační objekt Report „Service Rating“. Přejdeme na kartu „Rozvržení“ a zavoláme konstruktor výstupního formuláře.

Vybereme objektovou (referenční) tabulku adresáře „Nomenklatura“ a virtuální tabulku akumulačního registru „Prodej.Obrat“. Abychom odstranili nejednoznačnost názvů v dotazu, přejmenujeme tabulku „Nomenklatura“ na „SprNomenclature“ (kontextové menu po kliknutí pravým tlačítkem).

Poté umístěte kurzor na tabulku „SalesTurnover“ a vyvolejte dialog pro zadání parametrů virtuální tabulky:

Otevřete dialog pro zadání parametrů virtuální tabulky

Uveďte, že začátek a konec období bude předán v odpovídajících parametrech „StartDate“ a „EndDate“ (symbol „&“ před názvem označuje, že se jedná o parametr požadavku):

Poté vyberte z tabulek pole „SprNomenclature.Link“ a „SalesTurnover.RevenueTurnover“:

SprNomenklatura. Prezentace

ProdejTurnoverRevenueObrat

Přejdeme na záložku "Links" a uvidíme, že projektant již vytvořil spojení mezi dvěma vybranými tabulkami - hodnota změny registru "Nomenclature" by se měla rovnat odkazu na prvek adresáře "Nomenclature".

Jediné, co nám zbývá, je resetovat příznak „All“ pro tabulku registrů a nastavit jej pro tabulku adresářů.

Vybereme všechny prvky z adresáře „Nomenclature“.

Nastavení příznaku „Vše“ u adresářové tabulky bude znamenat, že z adresáře budou vybrány všechny prvky a těmto prvkům bude přiřazena hodnota obratu tržeb z evidence. V důsledku požadavku tedy budou přítomny všechny služby a u některých z nich bude uveden obrat tržeb. U těch služeb, které nebyly ve zvoleném období poskytnuty, nebude nic uvedeno.

Přejdeme na záložku „Podmínky“ a nastavíme podmínky pro výběr prvků z adresáře „Nomenklatura“. Při nastavování podmínek výběru opět použijeme parametry dotazu. První podmínkou musí být, že vybraný prvek není skupina (k tomu přepněte do režimu „Vlastní podmínka“).

Druhou podmínkou musí být, že vybraná položka je služba (toto je „Jednoduchá podmínka“):

V budoucnu, před provedením požadavku, předáme odpovídající hodnotu výčtu do parametru „Typ nomenklatury“.

Pojďme na kartu „Asociace/Aliasy“ a určete, že zobrazení položky adresáře bude mít alias „Služba“ a pole registru bude mít alias „Příjmy“:

Přejdeme na kartu "Objednávka" a označíme, že výsledek dotazu by měl být seřazen v sestupném pořadí podle hodnoty pole "Příjmy".

Na kartě „Souhrny“ určíme, že potřebujeme zobrazit obecné součty a měly by být součtem hodnot v poli „Příjmy“:

Na kartě „Přehled“ zrušte příznak „Použít nástroj pro tvorbu přehledů“.

Nyní přejdeme na záložku "Výstupní formulář". Uveďme, že parametry „Datum ukončení“ a „Datum zahájení“ budou ve formuláři upravovány ve vstupních polích typu „Datum“. U parametru „Typ nomenklatury“ naopak odstraníme příznak úpravy ve tvaru:

Klikněte na "OK". Platforma vygeneruje rozvržení a formulář sestavy Otevřete modul formuláře a najděte v něm proceduru „Hodnocení služby“.

V tomto postupu v části, kde se nastavují parametry dotazu, určíme hodnotu parametru „Typ nomenklatury“ (opravy jsou zvýrazněny tučně):

| LEVÉ PŘIPOJENÍ RegisterAccumulation.Sales,Turnover(&StartDate,

| &Datum spotřeby,)

| JAK PRODEJObrat

|OBJEDNAT OD | SNÍŽENÍ tržeb

|ČÁSTKA VÝSLEDKŮ (Příjmy) PODLE | JSOU BĚŽNÉ";

RequestSetParameterC"Typ ​​nomenklatury",

Převody. Typy nomenklatury. Služba);

Query.SetParameter("StartDate",StartDate); Request.SetParameterC"EndDate", EndDate);

Nyní se podívejme na text požadavku generovaný konstruktorem:

| SprNomenclature.Representation AS Reprezentace,

|TržbyObrat.PříjmyObrat AS Výnosy

| Directory.Nomenclature AS RefNomenclature

LEVÉ PŘIPOJENÍ RegisterAccumulations.Sales.Turnover(&StartDate,

| JAK PRODEJObrat

| Software SalesTurnover.Nomenclature = SprNomenclature.Link

| (RefNomenclature.ThisGroup = False) AND

| SprNomenklatura. Typ nomenklatury = &Typ nomenklatury

| OBJEDNAT PODLE

| SNÍŽENÍ tržeb

|ČÁSTKA VÝSLEDKŮ (Příjmy) PODLE

Nejprve jako obvykle přichází část s popisem požadavku a obsahuje konstrukce, které jsou pro nás nové.

Při popisu zdrojů požadavků (za klíčové slovo IZ) byla využita možnost definovat několik zdrojů požadavků:

| Directory.Nomenclature AS RefNomenclature

|&Datum ukončení,)

| JAK PRODEJObrat

| Software SalesTurnover.Nomenclature = SprNomenclature.Link

V tomto případě jsou záznamy vybírány ze dvou zdrojů: „SprNomenklatura“ a „SalesTurnover“ s klíčovou větou LEVÉ PŘIPOJENÍ... PODLE popisuje způsob, jakým budou kombinovány záznamy z těchto dvou zdrojů.

LEVÉ PŘIPOJENÍ znamená, že výsledek dotazu musí obsahovat kombinace záznamů z obou zdrojů, které odpovídají podmínce uvedené za klíčovým slovem BY. Kromě toho musí výsledek dotazu obsahovat také záznamy z prvního (uvedeno vlevo od slova SLOUČENINA) zdroj, pro který nebyly nalezeny žádné záznamy odpovídající podmínce z druhého zdroje.

V popisu prvního zdroje a podmínky připojení pro nás není nic nového, ale při popisu druhého zdroje využíváme možnosti nastavení parametrů virtuální tabulky dotazu:

| RegisterAccumulations.Sales.Turnover(&StartDate, &EndDate,)

První parametr je začátek období pro výpočet součtů, druhý je konec období. Výsledkem je, že zdrojová tabulka bude obsahovat pouze obrat vypočítaný v přeneseném období. Zde byste měli vždy pamatovat na to, že pokud předáme datum jako tyto parametry (a v našem případě tomu tak bude), pak datum obsahuje také čas s přesností na sekundu.

Pokud je předem známo, že uživatel nebude mít zájem o výsledky zprávy v obdobích zadaných s přesností na sekundy, je třeba vzít v úvahu následující vlastnost: ve výchozím nastavení je čas v datu nastaven na 00 :00:00. Pokud tedy nepřijmete zvláštní opatření, ukáže se, že když uživatel nastaví období hlášení od 3. 1. 2004 do 31. 3. 2004, součty registru se budou počítat od začátku dne 3. 1. 2004 00:00:00 do začátku dne 31.03.2004 00:00:00. Do výpočtu tedy nebudou zahrnuty údaje za 31. den kromě začátku dne, což uživatele velmi překvapí.

Pro odstranění této situace je třeba udělat dvě věci.

Nejprve ve formuláři zprávy omezte možnost uživatele zadat počáteční a koncové datum nastavením složení data pro odpovídající vstupní pole jako „Datum“:

Určíme složení rande...

Za druhé, při předávání parametrů použijte vestavěnou funkci Konec dne(). Chcete-li to provést, vraťte se do modulu formuláře zprávy a proveďte potřebné změny (doplňky jsou zvýrazněny tučně):

ProcedureFormActionsRatingServicesGenerate(Button) //((CONSTRUCTOR_WEEKEND_FORM_PROCEDURE_CALL(RatingServices) //Tento fragment byl vytvořen konstruktorem. // Při opětovném použití konstruktoru budou // ručně provedené změny ztraceny!!!

TabDoc = FormElements.TableField;

//))CONSTRUCTOR_OUTPUT_FORM_CALL_PROCEDURE

spol. netProcedures

Pojďme se dále podívat na text žádosti. V rámci popisu dotazu je pro nás nová další konstrukce - nastavení podmínek pro výběr dat ze zdrojových tabulek:

| SprNomenclature.Representation AS Reprezentace,

| SalesTurnover.RevenueTurnover AS Tržby

| Directory.Nomenclature AS RefNomenclature

| LEVÉ PŘIPOJENÍ RegisterAccumulations.Sales.Turnover(&StartDate,

| &Datum spotřeby,

| JAK PRODEJObrat

| Prodej softwaruTurnover.Nomenclature = SprNomenclature.Ssshka

| SprNomenclature.ThisGroup = False AND

| SprNomenklatura. Typ nomenklatury = &Typ nomenklatury

Podmínce výběru vždy předchází klíčové slovo KDE. Poté je popsán samotný stav. Upozorňujeme, že pole zdrojových tabulek, na které je podmínka aplikována, nemusí být zahrnuta ve výběrovém seznamu (jako v našem případě). Naše podmínka navíc používá parametr dotazu „Typ nomenklatury“.

VÝSLEDKY ČÁSTKA (Příjmy) PO

Vždy to začíná klíčovým slovem VÝSLEDEK, následuje popis toho, jaké součty budou přítomny ve výsledku dotazu. Hned po slově VÝSLEDEK popisuje agregační funkce, které je třeba ve výsledcích vypočítat. V našem případě se vypočítá částka v poli „Příjmy“. Následuje klíčové slovo PO, za nímž jsou popsána seskupení, ve kterých se mají součty počítat. V našem případě chybí a je použito pouze klíčové slovo JSOU BĚŽNÉ, což znamená, že součty budou vypočítány pro celou tabulku jako celek.

Nyní, když jsme se seznámili s textem požadavku, spustíme 1C:Enterprise v režimu ladění a uvidíme, jak naše zpráva funguje.

Nastavme období vykazování od 3. 1. 2004 do 30. 4. 2004. Výsledek bude vypadat takto:

Nyní změňme datum ukončení na 31. 3. 2004 a ujistěte se, že v přehledu jsou zahrnuta data za 31. března: