Počítače Okna Internet

Formování žádostí. Žádosti k finančnímu úřadu Jak jsou žádosti podávány

V 8.3.5 máme možnost programově pracovat s textem dotazu.
Novinky o tom si můžete přečíst na webu 1C "Managed Query Builder and Query Schema Object Model".
Pro rozbor konkrétního požadavku doporučuji

Zkusme zjistit, co je žádost obecně. V jakém formátu je prezentován v 1C a na serveru IS.

Zjednodušeně můžeme rozlišit následující úrovně práce s požadavkem:
1. Žádost v jazyce DBMS. Na této úrovni je dotaz textový řetězec v syntaxi konkrétního DBMS.
Například "SELECT pole1 FROM tabulka1 WHERE tabulka1.pole2 > 100".
2. Ovladač konkrétního DBMS. Jedná se o nástroj, který slouží jako spojení mezi programem a serverem. Přijme požadavek od programu a předá jej DBMS.
Na této úrovni 1C pracuje s externími datovými zdroji.
3. Univerzální programovací rozhraní. Jedná se o univerzální komponent, který umožňuje programu přístup k datům v různých IB. Může se také nazývat manažer řidičů. Ovladače konkrétních DBMS používaných v počítači jsou k němu připojeny ve formě DSN. V závislosti na použitém systému může existovat komponenta ODBC, OLE DB, JDBC, ADO.NET nebo jakýkoli jiný standard. Soudě podle http://its.1c.ru/db/metod8dev#content:2926:1, 1C v současné době používá OLE DB. Platforma 7.7 používá ODBC.
4. Objekt na serveru 1C. Na této úrovni se provádí práce aplikačního serveru s požadavkem.
Pokud jsem pochopil, platforma jazyka C popisuje objekt dotazu, pro který jsou napsány metody generování textu SQL. Objekty platformy pracují s tímto objektem dotazu (konstruktor dotazu, tvůrce atd.)
5. Žádost v jazyce 1C. Na této úrovni je dotazem text napsaný v pseudo-SQL jazyce ve tvaru "VYBRAT Katalog.NázevDirectory.NázevPole Z Katalog.NázevDirectory"

Pokud jsem pochopil, se zavedením objektu Request Schema nebylo v platformě vynalezeno nic nového.
Dříve jsme mohli pracovat pouze s textovou reprezentací dotazu (úroveň 5). Toto je nejjednodušší a nejsrozumitelnější způsob, i když ne vždy pohodlný.
Nyní jsme dostali přístup k objektu (úroveň 4), se kterým dříve pracovaly pouze mechanismy platformy.
Pokud analyzujete objekt Query Schema, pak se jeho vlastnosti velmi jasně prolínají s tvůrcem dotazů.
Každý prvek a vlastnost lze vizuálně nalézt v Tvůrci dotazů.
Každé kliknutí v konstruktoru může být spojeno s podobným příkazem.
Například:
Záložka "Požadavek balíček" = Schéma požadavku Balíček požadavku;
karta "Tabulky a pole" = RequestScheme.QueryPackage.AvailableTables;
Klikněte na tabulku "Katalogy" - "Nomenklatura" = Query Scheme.Package of Requests.Operators.Sources.Add("Catalog.Nomenclature");

Můžeme tedy programově vytvořit téměř jakýkoli požadavek, který můžeme provést pomocí konstruktoru.
Programatická tvorba je samozřejmě mnohem složitější a časově náročnější než pouhá práce s konstruktorem nebo dokonce ruční psaní textu dotazu.
U statických dotazů, jejichž text se nemění, nemá smysl používat schéma.
Programatická práce vyžaduje hlubší pochopení práce s dotazy.
Je vhodné, pokud potřebujeme dynamicky měnit text požadavku v závislosti na parametrech systému, volbě uživatele, výsledku předchozího požadavku.

Chcete-li upravit text existujícího požadavku, musí být tento text nastaven pro schéma a po úpravě přijat zpět. Chcete-li to provést, použijte následující kód:

RequestSchema = New RequestSchema; RequestScheme.SetQueryText(Request.Text); //Zde jsou naše příkazy pro úpravu požadavků Request.Text = RequestScheme.GetQueryText();

Požadavek na objektový model zahrnuje hlavní objekt "Schema dotazu" a asi 50 souvisejících podřízených objektů, kolekcí a specifických datových typů.Zpočátku je docela obtížné se v této sadě objektů orientovat.

Abychom porozuměli obecné struktuře schématu dotazů, otevřeme nezbytnou část společného podniku a vložíme všechny vazby mezi objekty do grafového plotru.
Ukazuje se takový graf.
Nemohu říci, že je to zcela jasné, ale ukazuje to obecnou myšlenku. Je vhodné nahlédnout do analýzy požadavku.
Graf ukazuje:
Žlutá - dotaz na entity schématu;
Červená - sbírky předmětů;
Zelená - standardní typy 1C (řetězec, číslo, boolean);
Tyrkysová - primitivní typy specifické pro schéma požadavku;

Schéma dotazu je nejvhodnější pro úpravu hotového dotazu, ale také umožňuje vytvořit text dotazu od začátku.

Zvažte například vytvoření balíčku požadavku od začátku, podobně jako požadavek od

VYBERTE POVOLENÉ položky. Reference JAKO Nomenklatura, Nákupy. Období JAKO Období, ISNULL(Nákupy.SoučetObrat, 0) JAKO SoučetNákupy, 0 JAKO Suma Prodej PUT Tabulka Obraty Z Příručky.Nomenklatura JAKO Položky VLEVO Registrovat.Připojit se. Měsíc) JAKO Nákup PODLE nákupu. Nomenklatura = Položky. Reference KDE NE Položky. Tato skupina KOMBINOVAT VŠECHNY VYBERTE RŮZNÉ PRVNÍCH 100 Položek. Reference, Prodej. Období, 0, ISNULL (Sales. Částka Obrat, 0) Akumulace Z Katalogu položky JO. Register.Sales .Volumes(&Start, &End, Month) AS Sales BY Sales.Nomenclature = Items.Reference WHERE NOT Items.ThisGroup INDEX PODLE položky, období; ////////////////////////////////////////////////// / /////////////////////////////// VYBERTE množství nákupů, SOUČET (Obraty v tabulce. Výše ​​prodeje) JAKO součet prodejů OD Tabulkové obraty JAKO Tabulkové obraty SKUPINA PODLE Tabulkové obraty Nomenklatura, Tabulkové obraty ) VŠEOBECNĚ, POUZE HIERARCHIE nomenklatury; ////////////////////////////////////////////////// / /////////////////////////////// ZNIČIT TableTurns

Pojďme analyzovat dávku požadavků.

Balíček je sada tří požadavků.
V prvním požadavku jsou data z IB vybírána dvěma operátory (požadavky na nákup a prodej), z nichž každý využívá dva zdroje (adresář "Nomenklatura" a příslušný akumulační registr). Data budou spojena ze dvou výpisů a umístěna do dočasné tabulky na serveru.
Ve druhém dotazu získáme data z dočasné tabulky, seskupíme je a získáme výsledek pro zpracování na serveru 1C.
Třetí dotaz se používá ke zničení dočasné tabulky generované prvním dotazem.

Začněme programově vytvářet dávku požadavků.

K vývoji kódu použijeme strom dotazů. Pohodlné pro něj definovat datové cesty. Po úpravách kódu je vhodné pravidelně kontrolovat výsledný text požadavku.

Nejprve vytvořte objekt RequestScheme.

RequestSchema = New RequestSchema;

Vygenerované schéma dotazu již obsahuje jednu dávku a jeden příkaz select.
Pro usnadnění je uložíme do samostatných proměnných.

RequestFromIBSelection = RequestScheme.PacketRequests; PurchasingChoiceOperator = RequestChoiceFromIB.Operators;

Přidávání zdrojů na první vybraný příkaz.
Chcete-li to provést, použijte metodu sběru zdroje "Add()". V parametrech metody zadejte název přidávané tabulky, její alias, kterým se na ni budeme v budoucnu odkazovat.
Jako přidanou tabulku můžete použít buď název tabulky, nebo odkaz na ni v kolekci dostupných tabulek.

SourceNomenclature = PurchasingChoice Operator.Sources.Add("Adresář.Nomenklatura","Zboží"); Zdroj nákupu = Operátor výběru nákupu. Zdroje. Přidat („Registr akumulace. Nákupy. Obraty“, „Nákupy“);

Ve výchozím nastavení je druhý zdroj přidán s levým připojením k prvnímu.

Potřebujeme reverzní spojení. Změňte typ připojení.

Purchasing.Connection.ConnectionType = RequestSchemaConnectionType.RightOuter;

Možnosti tabulky:
Pro každou tabulku přidanou jako zdroj můžeme nastavit další parametry.
Kolekce voleb se vyplní automaticky, když přidáte tabulku, v závislosti na typu tabulky.
Nemůžete do něj ručně přidat parametr, můžete pouze nastavit hodnotu existujícího parametru.
Tabulka "Reference. Nomenklatura" je jednoduchý stůl adresář. Nemá žádné možnosti.
Tabulka "Evidence akumulace. Nákupy. Obraty" je tabulka obratů evidence akumulace.
Podle společného podniku má 4 parametry: začátek období, konec období, četnost, stav.
Musíme nastavit první 3 parametry:

PurchaseSource.Source.Parameters.Expression = New QuerySchemaExpression("&Start" ); PurchaseSource.Source.Parameters.Expression = New QuerySchemaExpression("&End") ; PurchaseSource.Source.Parameters.Expression = New QuerySchemaExpression("Month") ;

Určete sloupce k výběru z uvedených tabulek.
K tomu přidáváme pole do kolekce volitelných polí příkazu select.

PurchasingChoice Operator.SelectableFields.Add("Zboží.Odkaz"); PurchasingSelection Operator.SelectableFields.Add("Nákupy.Období"); Operátor výběru nákupu.SelectableFields.Add("ISNULL(Purchases.AmountTurnover, 0)"); PurchasingChoice Operator.SelectableFields.Add("0");

Uveďte na úrovni požadavku jako celek aliasy pro volitelné sloupce:
Upozorňujeme, že vybíráme sloupce tabulky pro každý dílčí dotaz spojení, sloupcům jako celku přiřazujeme názvy pro kolekci "Columns" na úrovni dotazu na balíček.

QuerySelectionFrom VT.Columns.Alias ​​​​= "Nomenklatura"; QuerySelectFrom BT.Columns.Alias ​​​​= "Období"; QuerySelectionFrom VT.Columns.Alias ​​​​= "Částka nákupu"; QuerySelectionFrom VT.Columns.Alias ​​​​= "Částka prodeje";

Přidejte podmínku pro výběr dat

SalesChoice Operator.Selection.Add("NENÍ zboží.Toto je skupina");

Vše doplníme obdobně pro druhou část požadavku.

Mapování sloupců:
V každém prohlášení o výběru vybereme 4 pole (prvek referenční knihy "Nomenklatura", datum a dvě číselná pole).
Při kombinaci sloupců od dvou operátorů pro výběr sloupce z adresáře a data se systém sám spáruje.
Jsou zde dva číselné sloupce. Samotné schéma je může nesprávně mapovat na sloupce v prvním dotazu.
Označíme, který sloupec výsledkové tabulky odpovídá kterému výrazu.

QuerySelectFrom.Columns.Fields.Set(1,PurchasingExpression); QuerySelectFrom.Columns.Fields.Set(1,SaleExpression);

Vše opakujeme stejně i u druhého požadavku balíčku.

Z rozdílů využívá výběr podle celkových hodnot typu "HAVING".
Taková podmínka se přidává podobně jako při běžném výběru pro podrobné záznamy.
Schéma určí, do které části podmínek vložit tu naši v závislosti na použití seskupovacích funkcí.

OperatorSelect.Selection.Add("SUM(Tabulka Obraty.SoučetNákupů) > 0");

Posledním krokem je přidání požadavku na zničení datové tabulky

DestructionRequestVT = QuerySchema.RequestPacket.Add(Type("DestructionRequestRequestSchemaTable")); Destruction RequestBT.TableName = "TableTurnovers";

Také vystavujeme další vlastnosti požadavky:

RequestChoiceFromIB.TableForLocation = "TableTurnovers"; QuerySelectionFromIB.SelectAllowed = True;

finále plná verze generování požadavku:

//Vytvoření schématu požadavku RequestSchema = New RequestSchema; RequestFromIBSelection = RequestScheme.PacketRequests; //Nastavení vlastností požadavku RequestChoiceFromIB.TableForPlace = "TableTurnovers"; QuerySelectionFromIB.SelectAllowed = True; //Přidání operátorů výběru pro první dávkový požadavekPurchaseChoiceOperator =ChoiceFromIB.Operators; SourceNomenclature = PurchasingChoice Operator.Sources.Add("Adresář.Nomenklatura","Zboží"); //Přidat požadavek na výběr z nákupního registruPurchaseSource = PurchaseSelection Operator.Sources.Add("Akumulační registr.Purchases.Turnovers","Nákupy"); PurchaseSource.Source.Parameters.Expression = New QuerySchemaExpression("&Start" ); PurchaseSource.Source.Parameters.Expression = New QuerySchemaExpression("&End") ; PurchaseSource.Source.Parameters.Expression = New QuerySchemaExpression("Month") ; //Změna typu připojeníPurchaseSource.Connection.ConnectionType = ConnectionTypeRequestSchema.RightExternal; //Určete pole, která se mají vybratPurchaseChoice Operator.SelectableFields.Add("Goods.Link"); PurchasingSelection Operator.SelectableFields.Add("Nákupy.Období"); Operátor výběru nákupu.SelectableFields.Add("ISNULL(Purchases.AmountTurnover, 0)"); PurchasingChoice Operator.SelectableFields.Add("0"); //Určení aliasů pro vybraná poleChoiceFromIB.Columns.Alias ​​​​= "Nomenklatura"; QuerySelectFromIB.Columns.Alias ​​​​= "Období"; QueryFrom IB.Columns.Alias ​​​​= "Částka nákupu"; QueryFrom IB.Columns.Alias ​​​​= "Částka prodeje"; //Přidat výběr PurchasingChoice Operator.Filter.Add("NOT Goods.This isGroup"); /////////////////////// //Výběr prodejních datSalesChoiceOperator = QueryChoiceFromIB.Operators.Add(); SourceNomenclature = OperatorChoiceSales.Sources.Add("Adresář.Nomenklatura","Zboží"); SalesChoice Operator.SelectableFields.Add("Products.Link"); //Přidáme zdroj PH a nastavíme parametry SourceSales =SalesChoice Operator.Sources.Add("Accumulation Register.Sales.Turnovers","Sales"); SaleSource.Source.Parameters.Expression = New QuerySchemaExpression("&Start" ); SaleSource.Source.Parameters.Expression = New QuerySchemaExpression("&End") ; SaleSource.Source.Parameters.Expression = New QuerySchemaExpression("Month") ; SaleSource.Connection.ConnectionType = QuerySchemaConnectionType.RightOuter; //Určete pole, která mají být vybrána, a nastavte číselná pole tak, aby odpovídala polím prvního požadavku SalesChoiceOperator. SelectableFields.Add("Sales.Period"); Nákupní výraz = SalesChoiceOperator.SelectableFields.Add("0"); SalesExpression = SalesSelect Operator.SelectableFields.Add("ISNULL(Sales.SumTurnover, 0)"); QuerySelectFrom.Columns.Fields.Set(1,PurchasingExpression); QuerySelectFrom.Columns.Fields.Set(1,SaleExpression); //Přidat výběr OperatorChoiceSales.Filter.Add("NOT Goods.This is a Group"); //Index dataChoiceFromIB.Index.Add(ChoiceFromIB.Columns); QueryFrom IB.Index.Add(QueryChoiceFrom IB.Columns); //Nastavení parametrů výběru dat SalesChoiceOperator.SelectDifferent = True; Operátor SalesChoice. Počet přijatých záznamů = 100; //////////////// //Druhý požadavek packetChoiceFromVT Request = RequestScheme.RequestPacket.Add(); OperatorSelect = RequestSelectionFromVT.Operators; //Nastaví dočasnou tabulku vytvořenou v předchozím dotazu jako zdroj Source = OperatorSelect.Sources.Add("Table Turnovers","Table Turnovers"); OperatorSelect.SelectableFields.Add("Obraty tabulky.Nomenklatura"); OperatorSelect.SelectableFields.Add("Obraty tabulky.Období"); OperatorSelect.SelectableFields.Add("SUM(Tabulkové obraty.ČástkaPurchases)"); OperatorSelect.SelectableFields.Add("SUM(Tabulkové obraty.SoučetProdeje)"); //Podmínka výběru OperatorSelect.Selection.Add("SUM(Table Turnovers.SumPurchases) > 0"); //Nastavit aliasy sloupců QueryFromVT.Columns.Alias ​​​​= "Nomenklatura"; QuerySelectFrom BT.Columns.Alias ​​​​= "Období"; QuerySelectionFrom VT.Columns.Alias ​​​​= "Částka nákupu"; QuerySelectionFrom VT.Columns.Alias ​​​​= "Částka prodeje"; //Pořadí řazení dat SelectionFromVT.Order.Add(SelectionFromVT.Operators.Sources.Source.AvailableFields.Fields); QueryChoiceFromVT.Order.Add(RequestChoiceFromVT.Columns); //Dotaz celkem Nomenklatura = QuerySelectionFromVT.CheckpointsTotals.Add(QuerySelectionFromVT.Columns); TotalNomenclature.CheckpointType = QuerySchemaCheckpointType.HierarchyOnly; QuerySelectionFrom VT.CommonTotals = true; Dotaz SelectFrom VT.Total Expression.Add(Query SelectFrom VT.Columns); Dotaz SelectFrom VT.Total Expression.Add(Query SelectFrom VT.Columns); //////////////// //Poslední dávkový požadavek - smazání dočasné tabulkyDestroyRequestVT = QuerySchema.QueryPacket.Add(Type("RequestDestroyRequestSchemaTable")); Destruction RequestBT.TableName = "TableTurnovers";

Po provedení této sady příkazů dostaneme stejný požadavek, jaký jsme předtím obdrželi konstruktorem.

Je jasně vidět, že tvorba softwaru je mnohem složitější než tvorba textu.
Nabízí se otázka, jaký má smysl šaškovat s tvorbou softwaru místo pohodlného designu.
Pokud se tento požadavek již nemění, pak to nemá smysl.

Bonusy se objeví pouze v případě, že potřebujeme tento požadavek dále upravit v závislosti na nastavení.
Zvažte několik příkladů úpravy našeho balíčku 3 požadavků:

Příklad 1

Řekněme, že máme proměnné "Organizace" a "Sklad". A pokud jsou vyplněny, musíme do výběru dat přidat podmínky pro tyto proměnné.
Při práci s textem se budeme muset vklínit do textu dotazu a napsat složité podmínky jako "Pokud je měřítko plné, přidejte podmínku." na co rozbít na více místech a kombinovat možnosti, sklad i organizace se plní, plní se pouze sklad, plní se pouze organizace, neplní se nic.
Po takové úpravě nebude možné dotaz otevřít konstruktorem a jeho další úprava je velmi obtížná.

Při programové práci s daty jednoduše přidáme příkazy:

If ValueFilled(Organization) Then PurchasingSelection Operator.Selection.Add("Purchasing.Organization = &Organization"); SalesSelect Operator.Selection.Add("Sales.Organization = &Organization"); EndIf; If ValueFilled(Warehouse) Then PurchasingSelection Operator.Selection.Add("Purchases.Warehouse = &Warehouse"); OperatorChoiceSales.Selection.Add("Sales.Warehouse = &Warehouse"); EndIf;

Příklad 2

Musíme vybrat zboží, u kterého je poslední cena vyšší než 1 000 rublů.
Tito. nutné
1. Přidejte do textu dotazu volbu v dočasné tabulce z cenového rejstříku položky, u níž jsou ceny vyšší než 1000 rublů.
2. Při výběru dat přidejte podmínky pro tuto dočasnou tabulku k oběma dotazům na výběr dat (nákupy a prodeje).
Jak se vklínit do textového dotazu k provedení těchto akcí, si dokážete představit sami.
Programově jednoduše přidáme řádky kódu:

//Přidání dočasné tabulky RequestFromPriceRegister = RequestScheme.RequestPackage.Add(); //Nastavení dočasné tabulky RequestFromPriceRegister.TableForLocation = "VT_NomenclaturePrices"; OperatorSelect = QueryFromPriceRegister.Operators; Zdroj = OperatorSelect.Sources.Add("Information Register.Nomenclature Prices.SliceLast","Nomenclature PricesSliceLast"); OperatorSelect.SelectableFields.Add("Nomenklaturní cenySliceLast.Nomenclature"); OperatorSelect.Selection.Add("Ceny položkyPoslední řez.Cena > &Cena"); //Přesun nové tabulky před požadavky na výběr dat RequestSchema.QueryPack.Shift(QueryScheme.QueryPack.Index(RequestFromPriceRegister),0); //Přidat podmínky k původním dotazům PurchasingSelection Operator.Selection.Add("Purchases.Nomenclature IN (SELECT BT_NomenclaturePrices.Nomenclature FROM BT_NomenclaturePrice AS BT_NomenclaturePrice)"); OperatorSelectSales.Selection.Add("Sales.Nomenclature IN (SELECT VT_NomenclaturePrices.Nomenclature FROM VT_NomenclaturePrice AS BT_NomenclaturePrice)");

IMHO i pro tyto příklady programová práce s dotazem je pohodlnější než přímá práce s textem.
Zároveň bereme v úvahu, že tyto možnosti úprav jsou stále celkem jednoduché.
S komplikací možností úprav, zvýšením počtu požadavků v balíku, volbou různých úprav v závislosti na podmínkách (například přidání podmínek buď podle cenového rejstříku, nebo podle typu položky nebo podle výrobních plánů), práce s programem vypadá stále pohodlněji ve srovnání s prací s textovým řetězcem.

Můžete si procvičit dotazy pomocí zpracování.To je užitečné pro vývoj příkazů pro úpravu existujícího dotazu. Obsahuje také několik příkladů úpravy kódu požadavku a graf schématu typu požadavku.

ps Vše výše napsané je pouze moje osobní chápání tématu. Možná se někde mýlím. Komentáře a vysvětlení jsou vítány.

upd: Další malý příklad použití schématu dotazu. Vytvoření dotazu, který hledá dvojité hodnoty předdefinovaných dat. Bez přístupu k metadatům generuje podle konfigurace jeden obecný požadavek na všechny adresáře, účtové osnovy, PVC, PVR jako celek. Používá se při zpracování

RequestSchema = New RequestSchema; CollectionOperators = QueryScheme.RequestPackage.Operators; For everyTableGroupFromQuerySchema.QueryPack.AvailableTables Cycle IfTableGroup.View = "References" OR TableGroup.View = "Charts of Accounts" OR TableGroup.View = "PlansofCalculationTypes" ORTableGroup.View = "TableGroupForm TableGroup TableFracterpesFor each TableGroup Table.Fields Loop IfTableField.Name = "PredefinedDataName" Then NewOperator = CollectionOperators.Add(); NewSource = NewOperator.Sources.Add(Table,"KatalogName"); NewOperator.SelectableFields.Add(""""+Tabulka.Jméno+""""); NewOperator.SelectableFields.Add("NUMBER(JINÝ název adresáře.Předdefinovaný názevDat)"); NewOperator.Grouping.Add("Název katalogu.Název předdefinovaných dat"); NewOperator.Selection.Add("Název katalogu.Předdefinováno"); NewOperator.Selection.Add("NUMBER(JINÝ název adresáře.Odkaz) > 1"); Pokračovat; EndIf; EndCycle; EndCycle; EndIf; EndCycle;

Jak správně formulovat požadavek klienta na umístění? Na to se klienti často ptají. Někteří z nich dokonce žádají o předběžnou konzultaci: "Pomozte mi to zjistit a zformulovat žádost, jsem zmatená."

Pojďme na to přijít.

Historicky existovalo několik přístupů ke správnému konstelačnímu dotazu. Je to dáno tím, jak se konstelace jako metoda vyvíjely spolu s dalšími oblastmi psychoterapie a tradicemi duchovní praxe. Když konstelace právě vstoupily do praxe (koncem 70. – začátkem 80. let minulého století), byly na vrcholu popularity tzv. metody. „krátkodobá terapie orientovaná na řešení“. Na rozdíl od dlouhé psychoterapeutické práce (včetně psychoanalýzy) začali terapeuti vyvíjet metody rychlé a konkrétní pomoci klientovi. Taková pomoc vyžadovala jasnou žádost. Kritéria pro dosažení tohoto požadavku musí klient i terapeut jasně chápat. "Chci dostat větší plat, ale když půjdu za šéfem požádat o zvýšení platu, nastydnu, potím se a podlomí se mi nohy.". Úkol: jděte za šéfem na povýšení, zeptejte se ho a získejte, co chcete. Na tomto úkolu odpracujeme např. 10 sezení. Na konci bude klient dotázán, o kolik jistější se cítí (alespoň). Úspěšná terapie: Povýšení přijato.

Vzhledem k tomu, že konstelace jsou samozřejmě krátkodobou prací, začaly „analogicky“ označovat skupinu krátkodobých terapeutických metod a uplatňovat na ni stejné požadavky na náročnost a účinnost, jaké jsou u těchto metod akceptovány. K tomu přispěl i zájem o konstelace známých specialistů na krátkodobou terapii (Matthias Varga von Kiebed a Inse Sparrer). A implicitně si myslím, že k tomu přispělo i Hellingerovo nadšení a jeho tendence mluvit o konstelacích v pojmech jako „řešení nalezeno“. Ve svých raných spisech často mluvil o „odstranění symptomů“, „řešení problému alkoholismu“ a tak dále.

Dosud se můžete setkat se „starými“ konstelátory, kteří od klienta žádají konkrétní formulace kýžený výsledek. Setkal jsem se dokonce s kolegy (např. Thomas Hafer), kteří požadavek klienta sepíší na papír a na konci domluvy zkontrolují, zda byl tento konkrétní požadavek splněn, tzn. stav náhradníků odpovídá požadovanému stavu klienta.

Spolu s těmito historickými důvody existuje ne vždy vědomá touha klienta formulovat něco konkrétního, prostě proto, že konstelace nyní bude jedna, je drahá a možná se na to dlouho čekalo a „musíme udělat dobrý využít naší šance."

Existuje však i jiný, téměř opačný přístup k žádosti. Spočívá v tom, že žádost není vůbec potřeba.. Má to i historické důvody související především se stylem práce Berta Hellingera.

V raných konstelacích Hellinger vždy umístil současnou a/nebo rodičovskou rodinu klienta. Hellinger se zeptal, jaký má klient problém, ale bez ohledu na to, co řekl, konstelace se vždy snesla na práci s rodinnými příslušníky. Nabízí se správná otázka: proč se ptát? Později, když Hellinger formuloval, že se pracuje se systémem jako celkem (a ne s klientem jako takovým), začal požadavek ztrácet smysl „zjistit, co klient chce“ a nabyl významu. Žádost je nutná k navázání dialogu s konstelátorem Kontakt. Ti, kteří jsou obeznámeni s Hellingerovým dílem, mohou jistě uvést mnoho příkladů, jak Hellinger odmítl provést aranžmá poté, co sotva vyslechl dvě nebo tři fráze od klienta. "Nerespektuješ mě, nemůžu s tebou pracovat."

Hellinger často pracoval, aniž by prohodil jediné slovo ohledně požadavku klienta.

Jak pochopit všechnu tu rozmanitost pro běžného klienta? Hlavní věc, kterou bych chtěl [svým] klientům sdělit, je, že jakýkoli zmatek (stejně jako jakákoli nejasnost) ohledně požadavku je zcela normální. Váš vnitřní proces je vyjádřen způsobem, který je vám známý a přirozený. A na straně metody neexistují žádná omezení, jak může být požadavek vyjádřen. Pokud dokážete „jen“ sedět vedle konstelátora a propuknout v pláč, naprosto to stačí. Pokud jste týden přemýšleli nad jasnou formulací a nastínili jste mi ji, je to také normální. I když je v tomto znění patnáct bodů a vše je nepřehledné. I kdyby se tato formulace rozpadla přesně ve chvíli, kdy jsi seděl na židli vedle mě.

V návaznosti na Hellingera věřím, že hlavní věcí pro zahájení práce je respekt a kontakt mezi klientem a konstelátorem. Způsob, jakým je toho dosaženo, není důležitý. Technicky mohu pracovat jak na jasné formulaci, tak zcela bez požadavku. Obvykle v dlouhé skupině mám spoustu obou zaměstnání.

Jako každý konstelátor mám své preference, stavy, ve kterých se cítím pohodlněji. Při práci s požadavkem se přikláním spíše k málo srozumitelným formulacím, které je klient připraven prozkoumat v aranžmá a případně změnit přímo v procesu. Například pro mě formulace "Chci si vzít normálního muže" těžší pracovat než "Jsem velmi osamělý a rád bych pochopil, jak mohu získat schopnost vstupovat do harmonických vztahů, nebo co tomu brání". První formulace mě implicitně staví do role „toho, kdo přinese výsledky“, a druhá obrací klientku tam, kde ji bolí... Zároveň respektuji, že míra kontaktu s bolestí může být taková, že je viditelná pouze absencí požadovaného výsledku a více zatím v žádném případě.

Podle mých pozorování a zkušeností pole nejlépe odpovídá na požadavky, které se zabývají zkoumáním a transformací bolesti. Cítím, že toto je základní pohyb, který v oboru existuje – přiblížit se k bolestivému, stlačenému, odmítnutému stavu, dotknout se ho a tím ho zviditelnit, přijmout, projít. V širokém slova smyslu jde o implementaci Prvního řádu (zákon formulovaný Hellingerem) systémů: nikdo není vyloučen. Pokud je širší, nic není vyloučeno. Pokud je bolest vyloučena, funguje. Pokud bolest zmizí, ztrácí svůj vliv a sílu.

Na základě tohoto pochopení je vůbec jedno, jak jsme s klientem našli „kde to bolí“. Bylo to znění a bylo to jasné. Změnilo se toto znění pětkrát ve skupině nebo je stále pevné? Nebo jsme jen mlčky seděli. Nebo klientka plakala a já jsem seděl vedle ní. Stále hledám neverbální kontakt (přesněji je tam vždy, i když si to neuvědomujeme), naladím se na klienta a skrze své tělo cítím, co se s ním děje. Někdy je tato citlivost velmi zřetelná, někdy pokulhává, ale v každém případě tam je a přináší určitou míru kontaktu, navíc nebo navíc k jakýmkoli formulacím. Další kontakt a jasno pak přinesou zastupitelé, až začneme s nastavováním.

Můžeš pomoct dobrý kontakt odpověď na vlastní otázku "kde to bolí" nebo "co je špatně". Odpověď může být: "tady"(v srdci) popř "maminka"(vztah s matkou způsobuje utrpení) popř Manžel dítě nechce, ale já ano nebo "můj spolupracovník mě pronásleduje" nebo jakákoli jiná jasná či nejasná formulace. Upozorňuji, že i při naprosté absenci verbální formulace „tak nějak“ víte, že něco není v pořádku, jinak byste do skupiny nepřišli. Tato znalost má obvykle své místo ve vašem těle, stačí na toto místo ukázat - a bude to velmi dobré, velmi jasné "prohlášení o žádosti"!

Pro mě tedy odpověď na otázku „co je dobrý konstelační dotaz“ zní takto: může být jakékoli znění nebo žádné znění pokud v důsledku naší interakce klient i já cítíme vzájemný kontakt a důvěru, abychom mohli začít pracovat.

Každý den se musíme potýkat s mnoha problémy. K jejich úspěšnému vyřešení jsou zapotřebí odpovědi na otázky: počínaje „jaké je dnes počasí“ a konče „kurzem polského zlotého k ruskému rublu“. Internet a vyhledávače umožňují najít odpovědi téměř na všechny otázky, ale s jednou podmínkou: musí být položeny správně.

Návod

  • Vyhledávače (Google, Yandex, Rambler, Mail, Yahoo atd.) jsou navrženy tak, aby uživatelům poskytovaly potřebné informace. Dělají to na základě vyhledávacího dotazu. Vyhledávací dotazy mohou být tří typů:
  • Informační. Uživatel hledá přesné informace (bez ohledu na to, na jaké stránce se nachází). Například: „Hymna Ruska“.

    Navigační. Uživatel hledá adresu webu, který může obsahovat informace, které ho zajímají. Například: „Webové stránky Moskevské státní univerzity pojmenované po M. V. Lomonosovovi“.

    Transakční. Uživatel je připraven provést nějakou akci a potřebuje o ní informace. Například: „formátování disku.“ První věcí, kterou musíte při vytváření vyhledávacího dotazu udělat, je určit, co přesně hledáte.

  • Vyhledávač je obrovská databáze, všechny informace, ve kterých se „rozkládají“ do regálů – klíčových slov. Poté, co se zeptáte vyhledávací dotaz, vyhledají se klíčová slova a vrátí se výsledek hledání. Častou chybou začínajících uživatelů je, že vyhledávač vnímají jako partnera, který všechno ví, a nastaví vyhledávací dotaz například takto: „Můžete mi říct, jak odstranit skvrnu ze zbrusu nové halenky? Ona hedvábí." Přínos takového požadavku bude samozřejmě minimální, mnohem efektivnější by byl požadavek: „bílá hedvábná halenka na odstranění skvrny.“ Druhá věc, kterou je třeba udělat, je správně formulovat požadavek. Měl by být co nejjednodušší a obsahovat klíčová slova.
  • Poté, co stroj zpracuje váš požadavek, vrátí výsledky vyhledávání. Všechny nejrelevantnější výsledky jsou zpravidla na prvních dvou až třech stránkách. Následují výsledky vyhledávání, které dotaz uspokojí jen částečně, jsou však situace, kdy jsou potřebné informace velmi vzácné – pak je třeba ve vyhledávacím dotazu třídit několik kombinací klíčových slov a přijatá data velmi pečlivě filtrovat.
  • Také někdy musíte hledat vzácné informace, které jsou "obsaženy" v populární klíčová slova. Pokud například nastavíte vyhledávací dotaz „Marx photo publisher“, pak vyhledávací systém najdete mnoho fotografií Karla Marxe, vydavatele Karla Marxe, ale abyste našli fotografii A.F. Marx, knižní nakladatel, se bude muset hodně snažit, takže třetí věcí, kterou je třeba udělat, aby hledání uspělo, je správně roztřídit informace.

    Téma 2.3. Prezentační software a základní kancelářské programování

    Téma 2.4. Systémy pro správu databází a expertní systémy

    2.4.11. Databáze školení s hlavním tlačítkem formuláře "Training_students" - Stáhnout


    DBMS a expertní systémy

    2.4. Systémy pro správu databází a expertní systémy

    2.4.4. Vytváření (formování) požadavků

    Žádost je prostředkem k výběru potřebných informací z databáze. Otázka vytvořená ve vztahu k databázi je dotaz. Používají se dva typy dotazů: příkladem (QBE - Query by example) a strukturovaným dotazovacím jazykem (SQL - Structured Query Language).

    QBE - ukázkový dotaz- nástroj pro vyhledání potřebných informací v databázi. Tvoří se nikoli ve speciálním jazyce, ale vyplněním formuláře žádosti v okně Query Builder.

    SQL - dotazy- to jsou dotazy, které jsou sestaveny (programátory) ze sekvence SQL instrukcí. Tyto instrukce specifikují, co dělat se vstupní datovou sadou, aby se vygenerovala výstupní datová sada. Access staví všechny dotazy na základě SQL dotazů, k jejich zobrazení je potřeba spustit příkaz View / SQL v aktivním okně návrhu dotazu.

    Existuje několik typů dotazů: výběr, aktualizace, přidání, odstranění, křížový dotaz, vytvoření tabulek. Nejběžnější je výběrový dotaz. Pro výběr se používají výběrové dotazy uživatel potřebuje informace obsažené v tabulkách. Jsou vytvořeny pouze pro související tabulky.

    2.4.4.1. Vytvoření výběrového dotazu pomocí průvodce

    Při vytváření dotazu musíte definovat:

    • pole v databázi, ve kterých se budou vyhledávat informace;
    • předmět hledání v databázi;
    • seznam polí jako výsledek provádění dotazu.

    V okně databáze vyberte záložku Dotazy a poklepejte na ikonu Vytvořit dotaz pomocí průvodce, zobrazí se okno Vytvořit jednoduché dotazy.


    Rýže. jeden.

    V okně průvodce vyberte požadovanou tabulku (zdrojovou tabulku) z volby Tabulky a dotazy a vyberte datová pole. Pokud je dotaz tvořen na základě několika tabulek, je nutné opakovat kroky pro každou zdrojovou tabulku.

    Poté v okně průvodce vyberte podrobnou nebo souhrnnou zprávu a klikněte na tlačítko Další. Poté musíte zadat název požadavku a vybrat jednu z možností další akce: Otevřete dotaz pro zobrazení dat nebo Upravit rozložení dotazu a klikněte na Dokončit. V důsledku toho získáte připravený dotaz.

    2.4.4.2. Vytvoření výběrového dotazu pomocí Návrháře

    Pomocí konstruktoru můžete vytvořit následující typy dotazů:

    1. Jednoduchý.
    2. Podle podmínek.
    3. Parametrické.
    4. Finále.
    5. S vypočítanými poli.

    Chcete-li zavolat Tvůrce dotazů, musíte přejít do okna databáze. V okně databáze vyberte kartu Dotazy a poklepejte na ikonu Vytvořit dotaz v návrhovém zobrazení. Aktivní okno Přidat tabulku se zobrazí před neaktivním oknem Dotaz: Výběr dotazu.

    V okně Přidat tabulku vyberte zdrojovou tabulku nebo několik tabulek z prezentovaného seznamu tabulek, na základě kterých bude proveden výběr dat, a klikněte na tlačítko Přidat. Poté zavřete okno Přidat tabulku, aktivuje se okno "Dotaz: Výběr dotazu".

    Okno Constructor se skládá ze dvou částí – horní a dolní. Horní část okna obsahuje datové schéma dotazu, které obsahuje seznam zdrojových tabulek a odráží vztah mezi nimi.

    V dolní části okna je formulář dotazu QBE (Query by Example), ve kterém každý řádek vykonává určitou funkci:

    1. Pole – uvádí názvy polí, která jsou zahrnuta v dotazu.
    2. Název tabulky – Název tabulky, ze které je toto pole vybráno.
    3. Třídit – Určuje typ řazení.
    4. Zobrazit na obrazovku – zaškrtávací políčko pro zobrazení pole na obrazovce.
    5. Podmínky výběru - kritéria vyhledávání jsou nastavena.
    6. Nebo – jsou nastavena další kritéria výběru.



    Rýže. 2.

    Vzorový požadavek

    V okně "Dotaz: dotaz na výběr" pomocí nástrojů vytvoříme dotaz:

    1. Vyberte tabulku - zdroj, ze kterého se provádí výběr záznamů.
    2. Přesuňte názvy polí ze zdroje do formuláře žádosti. Například z tabulky Skupiny studentů přetáhněte pole Jméno do prvního pole formuláře žádosti, z tabulky Studenti přetáhněte pole Příjmení do druhého pole formuláře žádosti a z tabulky Průběh přetáhněte pole Známka do třetího pole a z tabulky Kurzy přetáhněte pole Název do čtvrtého pole formuláře žádosti.
    3. Nastavte princip řazení. Přesuňte kurzor myši na řádek řazení pro libovolné pole, zobrazí se tlačítko pro otevření seznamu režimů řazení: vzestupně a sestupně. Nastavte například režim řazení v poli Příjmení na vzestupný.
    4. V řádku displeje se automaticky nastaví zaškrtávací políčko pro prohlížení nalezených informací v poli.
    5. V řádku "Podmínky" výběru a řádku "Nebo" musíte zadat omezené podmínky vyhledávání - kritéria vyhledávání. Například do pole Známka zadejte - "výborně / A", tzn. zobrazit všechna jména studentů, kteří obdrželi známky Ex/A.
    6. Po dokončení požadavku zavřete okno Vybrat požadavek. Dialogové okno Uložit - odpověď Ano (zadejte název vygenerovaného dotazu, např. Ukázkový dotaz v režimu Návrh) a klikněte na OK a vraťte se do okna databáze.



    Rýže. 3.

    Chcete-li otevřít dotaz z okna databáze, zvýrazněte název dotazu a klikněte na tlačítko Otevřít, na obrazovce se objeví okno pro výběr dotazu s požadovaným názvem.



    Rýže. 4.

    Chcete-li provést změny v dotazu, vyberte jej kliknutím myši v okně databáze, klepněte na tlačítko Konstruktor a proveďte změny. Uložte požadavek, opakujte jeho provedení.

    Parametrické dotazy

    Dotazy, které jsou variantami základního dotazu a mírně se od sebe liší, se nazývají parametrické dotazy. V parametrickém dotazu je specifikováno kritérium, které může být změněno objednávkou uživatele.

    Sekvence vytváření parametrického dotazu:

    1. Vytvořte dotaz v návrhovém zobrazení nebo otevřete existující dotaz v návrhovém zobrazení, například Ukázkový dotaz v návrhovém zobrazení.
    2. Ve formuláři Poptávka v řádku Podmínky výběru zadejte podmínku výběru formou pozvánky na hranaté závorky, například [Zadejte příjmení].
    3. Zavřete okno Vybrat požadavek, odpovězte na otázku o uložení změny - Ano. Vraťte se do okna databáze, kde bude vytvořený dotaz zvýrazněn.
    4. Dotaz provedete kliknutím na tlačítko: Otevřít. V dialogovém okně „Zadejte hodnotu parametru“, které se objeví na obrazovce, musíte zadat například jméno studenta, jehož informace o postupu chcete dostávat, klikněte na tlačítko OK.

    Dotazy jsou jedním z typů dokumentů používaných v Access DBMS, které jsou určeny ke zpracování dat uložených v tabulkách

    Dotazy lze vytvářet v konstruktér a s pomocí mistrů. Konstruktor vám umožňuje vytvořit jakýkoli typ dotazu sami, ale tento režim se doporučuje uživatelům, kteří již mají nějaké zkušenosti s vytvářením dotazů.

    Průvodce dotazem shromažďuje informace potřebné k vygenerování požadavku v několika krocích a poté je automaticky sestavuje v závislosti na odpovědích uživatele na položené otázky.

    Pomocí průvodců v Accessu můžete vytvořit následující typy dotazů:

    § Jednoduchá žádost.

    § Křížový dotaz.

    § Duplicitní záznamy.

    § Nahrávky bez podřízených.

    Chcete-li některý z nich vytvořit, vyberte v okně databáze objekt Queries a klikněte na tlačítko Vytvořit. Otevře se okno Nový dotaz, jehož pohled je na Obr. jeden.

    Obrázek 1 Okno DB Stav a okno pro výběr typů dotazů

    Jednoduchá žádost umožňuje tvořit s mistři vzorová žádost data z určitých polí tabulek nebo dotazů, je to nejvhodnější pro začínající uživatele. Po jeho zvolení se spustí Průvodce, v jehož prvním okně (obr. 2) je potřeba v seznamu Tabulky a dotazy vybrat tabulku, například Zaměstnanci učitelů, vybrat ze seznamu jejích dostupných polí ty které by měly být obsaženy v dotazu a přeložit každý stisknutím [> ]. Podobně jsou do dotazu přidána pole z jiných tabulek stejné databáze.

    Poznámka. Dotaz lze provést pouze tabulkami nebo pouze databázovými dotazy. Kombinování polí z tabulky a dotazu v dotazu není povoleno.

    Obrázek 2 Výběr polí pro dotaz.

    Křížový dotaz vypadá jako stůl , ve kterém se zobrazí až tři pole (sloupce) zdrojové tabulky, buňky jednoho ze zbývajících se převedou na nové sloupce a v jejich průsečíku se zobrazí jedna z hodnot zadaných uživatelem - Rozptyl, Minimum , Maximum, Průměr, Odchylka, Číslo, První, Poslední atd. Například dotaz na Obr. 4 je křížový dotaz na tabulku 1 na Obr. 3, ve kterém se hodnoty vzdálenosti staly názvy sloupců:

    Volba Duplicitní záznamy vytvoří dotaz pro vyhledávání duplicitních záznamů (řádků) v jedné tabulce nebo dotazu pro tabulku na obr. 3 s danými poli Vzdálenost a Jízdné to vypadá (obr. 5)

    MS Access umožňuje vytvořit takový dotaz pouze pro jednu tabulku nebo dotaz (nikoli pro více databázových tabulek) a je potřeba v něm specifikovat

    Obrázek 3 Tabulka 1 pro vytvoření křížového dotazu


    Obrázek 4 Karta Křížový dotaz. jeden

    pouze ta pole, ve kterých je úplná současná shoda dat ze záznamů (např. pole Doprava nelze do tohoto požadavku zahrnout). Navíc pro rozpoznání můžete povolit neopakující se pole (Město).

    Záznamy bez podřízených dotaz na vyhledání záznamů, které neodpovídají žádnému záznamu v porovnávané tabulce. Tento dotaz se používá pro vícetabulkové databáze.

    Obrázek 6 Hlavní tabulka 1

    Dotaz bez podřízených pro porovnání tabulek Obr. 3 a Obr. 6 zobrazí nesprávný řádek (obr. 7):

    Tyto požadavky jsou základem pro vytváření dalších složité dotazy, pro který je použit režim návrhu.