Računalniki Windows internet

Oblikovanje zahtevkov. Zahteve davčnemu organu Kako se vložijo zahteve

V različici 8.3.5 imamo možnost programskega dela z besedilom poizvedbe.
Novice o tem lahko preberete na spletnem mestu 1C "Upravljani graditelj poizvedb in objektni model sheme poizvedb".
Za analizo določene zahteve priporočam

Poskusimo ugotoviti, kaj je zahteva na splošno. V kakšni obliki je predstavljen v 1C in na strežniku IS.

Poenostavljeno lahko ločimo naslednje ravni dela z zahtevo:
1. Zahteva v jeziku DBMS. Na tej ravni je poizvedba besedilni niz v sintaksi določenega DBMS.
Na primer "IZBERI polje1 IZ tabele1 KJE tabela1.polje2 > 100".
2. Gonilnik določenega DBMS. To je pripomoček, ki služi kot povezava med programom in strežnikom. Od programa prejme zahtevo in jo posreduje v DBMS.
Na tej ravni 1C deluje z zunanjimi viri podatkov.
3. Univerzalni programski vmesnik. To je univerzalna komponenta, ki omogoča programu dostop do podatkov v različnih IB. Lahko se imenuje tudi upravitelj voznikov. Gonilniki določenih DBMS, ki se uporabljajo v računalniku, so povezani z njim v obliki DSN. Odvisno od uporabljenega sistema lahko obstaja komponenta ODBC, OLE DB, JDBC, ADO.NET ali kateri koli drug standard. Sodeč po http://its.1c.ru/db/metod8dev#content:2926:1, 1C trenutno uporablja OLE DB. Platforma 7.7 uporablja ODBC.
4. Objekt na strežniku 1C. Na tej ravni se izvaja delo aplikacijskega strežnika z zahtevo.
Kolikor razumem, platforma jezika C opisuje objekt poizvedbe, za katerega so napisane metode generiranja besedila SQL. Objekti platforme delujejo s tem objektom poizvedbe (konstruktor poizvedb, graditelj itd.)
5. Zahteva v jeziku 1C. Na tej ravni je poizvedba besedilo, napisano v jeziku psevdo-SQL v obliki "CHOOSE Catalog.DirectoryName.FieldName FROM Catalog.DirectoryName"

Kolikor razumem, z uvedbo predmeta Shema zahtevkov v platformi ni bilo izumljeno nič novega.
Prej smo lahko delali le z besedilno predstavitvijo zahteve (raven 5). To je najbolj preprost in razumljiv način, čeprav ni vedno priročen.
Sedaj smo dobili dostop do objekta (nivo 4), s katerim so prej delali samo mehanizmi platforme.
Če analizirate objekt Shema poizvedbe, se njegove lastnosti zelo jasno sekajo z ustvarjalnikom poizvedb.
Vsak element in lastnost lahko vizualno najdete v ustvarjalniku poizvedb.
Vsak klik v konstruktorju se lahko ujema s podobnim ukazom.
Na primer:
Zaznamek "Zahtevaj paket" = Shema zahtev. Paket zahtev;
Zavihek "Tabele in polja" = RequestScheme.QueryPackage.AvailableTables;
Kliknite na tabelo "Katalogi" - "Nomenklatura" = Shema poizvedbe.Paket zahtev.Operatorji.Viri.Dodaj("Katalog.Nomenklatura");

Tako lahko programsko oblikujemo skoraj vsako zahtevo, ki jo lahko naredimo s konstruktorjem.
Seveda je programsko ustvarjanje veliko bolj zapleteno in zamudno kot samo delo s konstruktorjem ali celo ročno pisanje besedila poizvedbe.
Za statične poizvedbe, katerih besedilo se ne spremeni, nima smisla uporabljati sheme.
Programsko delo zahteva globlje razumevanje dela poizvedb.
Priročno je, če moramo besedilo zahteve dinamično spreminjati glede na sistemske parametre, izbiro uporabnika, rezultat prejšnje zahteve.

Če želite spremeniti besedilo obstoječe zahteve, je treba to besedilo nastaviti za shemo in ga po spremembi prejeti nazaj. Če želite to narediti, uporabite naslednjo kodo:

RequestSchema = Nova zahtevana shema; RequestScheme.SetQueryText(Request.Text); //Tukaj so naši ukazi za spreminjanje zahtev Request.Text = RequestScheme.GetQueryText();

Zahtevajte objektni model vključuje glavni objekt "Shema poizvedbe" in približno 50 povezanih podrejenih objektov, zbirk in specifičnih tipov podatkov.Sprva je precej težko krmariti po tem nizu predmetov.

Da bi razumeli splošno strukturo poizvedovalne sheme, odpremo potreben odsek skupnega podjetja in vse povezave med objekti zapeljemo v grafični risalnik.
Izkaže se tak graf.
Ne morem reči, da je zelo jasno, vendar kaže splošno idejo. Priročno je pokukati v analizo zahtevka.
Graf kaže:
Rumena - entitete sheme poizvedbe;
Rdeča - zbirke predmetov;
Zelena - standardni tipi 1C (niz, številka, logična vrednost);
Turkizna - primitivne vrste, specifične za shemo zahteve;

Shema poizvedbe je najbolj priročna za spreminjanje že pripravljene poizvedbe, omogoča pa tudi ustvarjanje besedila poizvedbe iz nič.

Razmislite o ustvarjanju paketa zahtev iz nič, podobno kot zahteva od

IZBERITE DOVOLJENE predmete.Referenca AS Nomenklatura, Nakupi.Obdobje AS Obdobje, ISNULL(Nakupi.SumTurnover, 0) AS SumPurchases, 0 AS SumSales PUT Table Prometov IZ Priročnika.Nomenklatura AS Elementi LEFT JOPnourchamuses, &Start Register. Mesec) KOT Nabava PO Nabavi.Nomenklatura = Artikli.Reference KJE NI Artikli.Ta skupina ZDRUŽI VSE IZBERI RAZLIČNIH PRVI 100 artiklov.Referenca, Prodaja.Obdobje, 0, ISNULL(Prodaja.ZnesekPromet, 0) Št.Izberite postavko.Katalog.Št. Register.Sales .Obseg(&Začetek, &Konec, Mesec) AS Prodaja PO Sales.Nomenklatura = Artikli.Reference KJE NI Artikli.Ta skupina INDEKS PO postavki, obdobju; ///////////////////////////////////////////////// //////////////////////////////// Izberi količino nakupa, SUM (TABLE TOURPORTS.Sales znesek) kot Sumsales iz tabel Promet GROUP BY Tabela Promet.Nomenklatura, Tabela Promet.Obdobje HAVE AMOUNT(Promet v tabeli.Znesek nakupov) > 0 ORDER BY TablePromets.Nomenclature.AMOUNT,Nakup TOTALSUM(Opis, Obdobje TOTALSum,PRIOD TOTALSum,Purchased TOTALSum,PurchasONHIGNAses Št. ///////////////////////////////////////////////// ///////////////////////////////// uničiti tablete

Analizirajmo serijo zahtevkov.

Paket je nabor treh zahtev.
V prvi zahtevi podatke iz IB izbereta dva operaterja (zahteve za nakup in prodajo), od katerih vsak uporablja dva vira (imenik »Nomenklatura« in pripadajoči akumulacijski register). Podatki bodo združeni iz dveh stavkov in postavljeni v začasno tabelo na strežniku.
V drugi poizvedbi dobimo podatke iz začasne tabele, jih združimo in dobimo rezultat za obdelavo na strežniku 1C.
Tretja poizvedba se uporablja za uničenje začasne tabele, ki jo je ustvarila prva poizvedba.

Začnimo programsko ustvarjati paket zahtev.

Za razvoj kode bomo uporabili drevo poizvedb. Udobno zanj določiti podatkovne poti. Priporočljivo je, da občasno preverjate nastalo besedilo zahteve po spremembah kode.

Najprej ustvarimo predmet RequestScheme.

RequestSchema = Nova zahtevana shema;

Ustvarjena shema poizvedbe že vsebuje en paket in en stavek za izbiro.
Za udobje jih bomo shranili v ločene spremenljivke.

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

Dodajanje virov na prvi stavek za izbiro.
Če želite to narediti, uporabite metodo zbiranja vira "Add()". V parametrih metode podajte ime tabele, ki jo želite dodati, njen vzdevek, s katerim se bomo v prihodnje sklicevali nanjo.
Kot dodano tabelo lahko uporabite ime tabele ali povezavo do nje v zbirki razpoložljivih tabel.

SourceNomenclature = PurchasingChoice Operator.Sources.Add("Imenik.Nomenklatura","Blago"); Vir nabave = Operater izbire nabave Viri Dodaj ("Register akumulacije. Nabavi. Promet", "Nabavi");

Privzeto je drugi vir dodan z levo povezavo k prvemu.

Potrebujemo obratno povezavo. Spremenite vrsto povezave.

Purchasing.Connection.ConnectionType = RequestSchemaConnectionType.RightOuter;

Možnosti tabele:
Za vsako tabelo, ki je dodana kot vir, lahko nastavimo dodatne parametre.
Zbirka možnosti se samodejno napolni, ko dodate tabelo, odvisno od vrste tabele.
Parametra mu ne morete dodati ročno, nastavite lahko samo vrednost obstoječega parametra.
Tabela "Reference. Nomenklatura" je preprosta miza imenik. Nima možnosti.
Tabela "Register akumulacije. Nabavi. Promet" je tabela prometov registra akumulacije.
Glede na skupno podjetje ima 4 parametre: začetek obdobja, konec obdobja, pogostost, stanje.
Nastaviti moramo prve 3 parametre:

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

Določite stolpce izbrati med navedenimi tabelami.
V ta namen dodamo polja v zbirko izbirnih polj stavka select.

Operator PurchasingChoice.SelectableFields.Add("Goods.Link"); Operator izbire nabave.SelectableFields.Add("Purchases.Period"); PurchaseSelection Operator.SelectableFields.Add("ISNULL(Purchases.AmountTurnover, 0)"); Operator PurchasingChoice.SelectableFields.Add("0");

Določite na ravni zahteve kot celote vzdevki za izbirne stolpce:
Upoštevajte, da izberemo stolpce tabele za vsako podpoizvedbo združitve, dodelimo imena stolpcem kot celoti za zbirko "Stolpci" na ravni poizvedbe paketa.

QuerySelectionFrom VT.Columns.Alias ​​= "Nomenklatura"; QuerySelectFrom BT.Columns.Alias ​​= "Period"; QuerySelectionFrom VT.Columns.Alias ​​= "Znesek nakupa"; QuerySelectionFrom VT.Columns.Alias ​​= "Znesek prodaje";

Dodajte pogoj za izbiro podatkov

SalesChoice Operator.Selection.Add("NI Blago.To je skupina");

Podobno dodamo vse za drugi del zahteve.

Preslikava stolpcev:
V vsaki izbirni izjavi izberemo 4 polja (element referenčne knjige »Nomenklatura«, datum in dve številčni polji).
Pri kombiniranju stolpcev dveh operaterjev za izbiro stolpca iz imenika in datuma se bo sistem ujemal.
Obstajata dva številčna stolpca. Shema jih lahko sama napačno preslika v stolpce v prvi poizvedbi.
Navedemo, kateri stolpec rezultatske tabele ustreza kateremu izrazu.

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

Vse na enak način ponovimo za drugo zahtevo paketa.

Od razlik uporablja izbor po skupnih vrednostih tipa "HAVING".
Tak pogoj se doda podobno kot običajni izbor za podrobne zapise.
Shema bo določila, v kateri pogojni odsek naj postavimo naš, odvisno od uporabe funkcij združevanja.

OperatorSelect.Selection.Add("SUM(Table Turnovers.SumPurchases) > 0");

Zadnji korak je dodati zahtevo za uničenje podatkovne tabele

DestructionRequestVT = QuerySchema.RequestPacket.Add(Type("DestructionRequestRequestSchemaTable")); Zahteva za uničenjeBT.TableName = "TableTurnovers";

Tudi razstavljamo dodatne lastnosti zahteve:

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

končno polna izvedba generiranje zahteve:

//Ustvari shemo zahteve RequestSchema = New RequestSchema; RequestFromIBSelection = RequestScheme.PacketRequests; //Nastavitev lastnosti zahteve RequestChoiceFromIB.TableForPlace = "TableTurnovers"; QuerySelectionFromIB.SelectAllowed = Res; //Dodaj izbirne operaterje za prvo zahtevo serijePurchaseChoiceOperator =ChoiceFromIB.Operators; SourceNomenclature = PurchasingChoice Operator.Sources.Add("Imenik.Nomenklatura","Blago"); //Dodaj zahtevo za izbiro iz registra nakupaPurchaseSource = Operator za izbiro nakupa.Sources.Add("Register akumulacije.Nakupi.Promet","Nakupi"); PurchaseSource.Source.Parameters.Expression = Nova QuerySchemaExpression("&Start" ); PurchaseSource.Source.Parameters.Expression = Nova QuerySchemaExpression("&End") ; PurchaseSource.Source.Parameters.Expression = Nova QuerySchemaExpression("Month") ; //Spremeni vrsto povezavePurchaseSource.Connection.ConnectionType = ConnectionTypeRequestSchema.RightExternal; //Določite polja, ki bodo izbranaPurchaseChoice Operator.SelectableFields.Add("Goods.Link"); Operator izbire nabave.SelectableFields.Add("Purchases.Period"); PurchaseSelection Operator.SelectableFields.Add("ISNULL(Purchases.AmountTurnover, 0)"); Operator PurchasingChoice.SelectableFields.Add("0"); //Določite vzdevke za izbrana poljaChoiceFromIB.Columns.Alias ​​= "Nomenklatura"; QuerySelectFromIB.Columns.Alias ​​= "Period"; QueryFrom IB.Columns.Alias ​​= "Znesek nakupa"; QueryFrom IB.Columns.Alias ​​= "Znesek prodaje"; //Dodaj izbor PurchasingChoice Operator.Filter.Add("NOT Goods.This isGroup"); /////////////////////// //Izbiranje prodajnih podatkovSalesChoiceOperator = QueryChoiceFromIB.Operators.Add(); SourceNomenclature = OperatorChoiceSales.Sources.Add("Imenik.Nomenklatura","Blago"); Operator SalesChoice.SelectableFields.Add("Izdelki.Povezava"); //Dodajte vir PH in nastavite parametre SourceSales =SalesChoice Operator.Sources.Add("Register akumulacije.Sales.Turnovers","Prodaja"); SaleSource.Source.Parameters.Expression = Nova QuerySchemaExpression("&Start"); SaleSource.Source.Parameters.Expression = Nova QuerySchemaExpression("&End") ; SaleSource.Source.Parameters.Expression = Nova QuerySchemaExpression("Month") ; SaleSource.Connection.ConnectionType = QuerySchemaConnectionType.RightOuter; //Določite polja, ki jih želite izbrati, in nastavite številčna polja, da se ujemajo s polji prve zahteve SalesChoiceOperator. SelectableFields.Add("Sales.Period"); Izraz nakupa = SalesChoiceOperator.SelectableFields.Add("0"); SalesExpression = Operator SalesSelect.SelectableFields.Add("ISNULL(Sales.SumTurnover, 0)"); QuerySelectFrom.Columns.Fields.Set(1,PurchasingExpression); QuerySelectFrom.Columns.Fields.Set(1,SaleExpression); //Dodaj izbor OperatorChoiceSales.Filter.Add("NI Blago. To je skupina"); //Index dataChoiceFromIB.Index.Add(ChoiceFromIB.Columns); QueryFrom IB.Index.Add(QueryChoiceFrom IB.Columns); //Nastavi parametre izbire podatkov SalesChoiceOperator.SelectDifferent = True; Operator SalesChoice. Število prejetih zapisov = 100; //////////////// //Druga zahteva packetChoiceFromVT Zahteva = RequestScheme.RequestPacket.Add(); OperatorSelect = RequestSelectionFromVT.Operators; //Nastavi začasno tabelo, oblikovano v prejšnji poizvedbi, kot vir Source = OperatorSelect.Sources.Add("Table Turnovers","Table Turnovers"); OperatorSelect.SelectableFields.Add("Obrni promet tabel.Nomenklatura"); OperatorSelect.SelectableFields.Add("Obrnjene tabele.Obdobje"); OperatorSelect.SelectableFields.Add("SUM(Table Turnovers.AmountPurchases)"); OperatorSelect.SelectableFields.Add("SUM(Table Turnovers.SumSales)"); //Pogoj za izbor OperatorSelect.Selection.Add("SUM(Table Turnovers.SumPurchases) > 0"); //Nastavi vzdevke stolpcev QueryFromVT.Columns.Alias ​​= "Nomenklatura"; QuerySelectFrom BT.Columns.Alias ​​= "Period"; QuerySelectionFrom VT.Columns.Alias ​​= "Znesek nakupa"; QuerySelectionFrom VT.Columns.Alias ​​= "Znesek prodaje"; // Vrstni red razvrščanja podatkov SelectionFromVT.Order.Add(SelectionFromVT.Operators.Sources.Source.AvailableFields.Fields); QueryChoiceFromVT.Order.Add(RequestChoiceFromVT.Columns); //Vsota poizvedbe TotalNomenclature = QuerySelectionFromVT.CheckpointsTotals.Add(QuerySelectionFromVT.Columns); TotalNomenclature.CheckpointType = QuerySchemaCheckpointType.HierarchyOnly; QuerySelectionFrom VT.CommonTotals = res; Poizvedba SelectFrom VT.Total Expression.Add(Query SelectFrom VT.Columns); Poizvedba SelectFrom VT.Total Expression.Add(Query SelectFrom VT.Columns); //////////////// //Zadnja zahteva paketa - brisanje začasne tabeleDestroyRequestVT = RequestSchema.RequestPacket.Add(Type("RequestDestroyRequestSchemaTable")); Zahteva za uničenjeBT.TableName = "TableTurnovers";

Po izvedbi tega niza ukazov dobimo enako zahtevo, ki smo jo prej prejeli od konstruktorja.

Jasno je razvidno, da je ustvarjanje programske opreme veliko bolj zapleteno kot ustvarjanje besedila.
Postavlja se vprašanje, kakšen je smisel norčevati z ustvarjanjem programske opreme namesto priročnega oblikovanja.
Če se ta zahteva ne spremeni več, potem nima smisla.

Bonusi se pojavijo le, če moramo to zahtevo dodatno spremeniti glede na nastavitve.
Razmislite o nekaj primerih spreminjanja našega paketa 3 zahtev:

Primer 1

Recimo, da imamo spremenljivki "Organizacija" in "Skladišče". In če so izpolnjene, moramo izboru podatkov dodati pogoje za te spremenljivke.
Pri delu z besedilom se bomo morali zagozditi v besedilo poizvedbe in napisati zapletene pogoje, kot je "Če je skalirano polno, dodajte pogoj." pri čem razbiti na več mestih in združiti možnosti, tako skladišče kot organizacija sta napolnjena, samo skladišče je napolnjeno, samo organizacija je napolnjena, nič ni napolnjeno.
Po takšni spremembi bo poizvedbo nemogoče odpreti s konstruktorjem, njeno nadaljnje spreminjanje pa je zelo težko.

Pri programskem delu s podatki preprosto dodamo ukaze:

Če je ValueFilled(Organizacija), potem PurchasingSelection Operator.Selection.Add("Purchasing.Organization = &Organization"); SalesSelect Operator.Selection.Add("Sales.Organization = &Organization"); EndIf; Če je ValueFilled(Warehouse), potem PurchasingSelection Operator.Selection.Add("Purchases.Warehouse = &Warehouse"); OperatorChoiceSales.Selection.Add("Sales.Warehouse = &Warehouse"); EndIf;

Primer 2

Izbrati moramo blago, za katerega je zadnja cena nad 1000 rubljev.
tiste. potrebno
1. V besedilo poizvedbe dodajte izbiro v začasni tabeli iz registra cen artikla, za katerega so cene nad 1000 rubljev.
2. Ko izbirate podatke, dodajte pogoje za to začasno tabelo obema poizvedbama za izbiro podatkov (nakupi in prodaje).
Kako se vtakniti v besedilno poizvedbo za izvedbo teh dejanj, si lahko predstavljate sami.
Programsko preprosto dodamo vrstice kode:

//Dodaj začasno tabelo RequestFromPriceRegister = RequestScheme.RequestPackage.Add(); //Nastavi začasno tabelo RequestFromPriceRegister.TableForLocation = "VT_NomenclaturePrices"; OperatorSelect = QueryFromPriceRegister.Operators; Vir = OperatorSelect.Sources.Add("Informacijski register.Nomenklaturne cene.SliceLast","Nomenklaturne ceneSliceLast"); OperatorSelect.SelectableFields.Add("Nomenklaturne ceneSliceLast.Nomenclature"); OperatorSelect.Selection.Add("Cene artiklovLast Slice.Price > &Price"); //Premakni novo tabelo, preden zahteva izbiro podatkov RequestSchema.QueryPack.Shift(QueryScheme.QueryPack.Index(RequestFromPriceRegister),0); //Dodajte pogoje izvirnim poizvedbam PurchasingSelection Operator.Selection.Add("Purchases.Nomenclature IN (IZBERITE BT_NomenclaturePrices.Nomenclature FROM BT_NomenclaturePrice AS BT_NomenclaturePrice)"); OperatorSelectSales.Selection.Add("Sales.Nomenclature IN (IZBERITE VT_NomenclaturePrices.Nomenclature FROM VT_NomenclaturePrice AS BT_NomenclaturePrice)");

IMHO, tudi za te primere programsko delo s poizvedbo je bolj priročno kot neposredno delo z besedilom.
Hkrati pa upoštevamo, da so te možnosti spreminjanja še vedno precej preproste.
Z zapletom možnosti spreminjanja, povečanjem števila zahtev v paketu, izbiro različnih modifikacij glede na pogoje (na primer dodajanje pogojev bodisi po registru cen, po vrsti artikla ali po proizvodnih načrtih), programsko delo je videti vse bolj priročno v primerjavi z delom z besedilnim nizom.

S poizvedbami lahko vadite z obdelavo. Koristno je za razvoj ukazov za spreminjanje obstoječe poizvedbe. Vsebuje tudi več primerov spreminjanja kode zahteve in grafa sheme vrste zahteve.

ps Vse zgoraj napisano je samo moje osebno razumevanje teme. Mogoče se kje motim. Komentarji in pojasnila so dobrodošli.

upd:Še en majhen primer uporabe sheme poizvedbe. Oblikovanje poizvedbe, ki išče dvojne vrednosti vnaprej določenih podatkov. Brez dostopa do metapodatkov generira eno splošno zahtevo za vse imenike, kontne načrte, PVC, PVR kot celoto po konfiguraciji. Uporablja se pri predelavi

RequestSchema = Nova zahtevana shema; CollectionOperators = QueryScheme.RequestPackage.Operators; Za vsakoTableGroupFromQuerySchema.QueryPack.AvailableTables Cycle IfTableGroup.View = "References" OR TableGroup.View = "Kontni načrti" OR TableGroup.View = "PlansofCalculationTypes" ORTableGroup.View For Everyday For Everyone TableGroup.ViewFrom TableGroup. Table.Fields Loop IfTableField.Name = "PredefinedDataName" Nato NewOperator = CollectionOperators.Add(); NewSource = NewOperator.Sources.Add(tabela,"Ime kataloga"); NewOperator.SelectableFields.Add(""""+Table.Name+""""); NewOperator.SelectableFields.Add("ŠTEVILKA(DRUGAČNO Ime imenika.PredefinedDataName)"); NewOperator.Grouping.Add("CatalogName.Name of PredefinedData"); NewOperator.Selection.Add("CatalogName.Predefined"); NewOperator.Selection.Add("ŠTEVILKA(DRUGAČNO Ime imenika.Referenca) > 1"); Nadaljuj; EndIf; EndCycle; EndCycle; EndIf; EndCycle;

Kako pravilno oblikovati zahtevo stranke za umestitev? To pogosto sprašujejo stranke. Nekateri od njih celo prosijo za predhodno posvetovanje: "Pomagajte mi ugotoviti in oblikovati prošnjo, zmeden sem."

Ugotovimo.

V preteklosti je obstajalo več pristopov k pravilni poizvedbi o ozvezdju. To je posledica tega, kako so se konstelacije kot metoda razvile skupaj z drugimi področji psihoterapije in tradicijami duhovne prakse. Ko so se konstelacije šele začele izvajati (v poznih 70-ih - zgodnjih 80-ih letih prejšnjega stoletja), so bile tako imenovane metode na vrhuncu priljubljenosti. "kratkoročna terapija, usmerjena v rešitve". V nasprotju z dolgotrajnim psihoterapevtskim delom (vključno s psihoanalizo) so terapevti začeli razvijati metode za hitro, konkretno pomoč klientu. Takšna pomoč je zahtevala jasno zahtevo. Kriterije za dosego te zahteve morata tako klient kot terapevt jasno razumeti. "Želim dobiti večjo plačo, a če grem k šefu prosit za povišico, me zebe, znojim se in noge se mi zvijajo". Naloga: pojdite k šefu na napredovanje, ga vprašajte in dobite, kar želite. Delali bomo na tej nalogi, na primer 10 sej. Na koncu bo stranka vprašana, koliko bolj samozavestno se počuti (vsaj). Uspešna terapija: Prejeto napredovanje.

Ker so konstelacije seveda kratkoročno delo, so se začeli »po analogiji« nanašati na skupino kratkotrajnih terapijskih metod in zanjo uporabljati enake zahteve po povpraševanju in učinkovitosti, kot so sprejete pri teh metodah. K temu je pripomoglo tudi zanimanje za konstelacije znanih specialistov za kratkotrajno terapijo (Matthias Varga von Kiebed in Inse Sparrer). In implicitno mislim, da sta k temu pripomogla tudi Hellingerjev entuziazem in njegova nagnjenost k govorjenju o ozvezdjih z izrazi, kot je "najdena rešitev". V svojih zgodnjih spisih je pogosto govoril o »odpravljanju simptomov«, »reševanju problema alkoholizma« itd.

Do zdaj lahko srečate "stare" konstellatorje, ki stranko sprašujejo po določenem besedilo želeni rezultat. Spoznal sem celo sodelavce (npr. Thomasa Haferja), ki na kos papirja zapišejo zahtevo naročnika in ob koncu dogovora preverijo, ali je ta zahteva izpolnjena, tj. stanje nadomestkov ustreza želenemu stanju odjemalca.

Poleg teh zgodovinskih razlogov obstaja ne vedno zavestna želja naročnika, da bi oblikoval nekaj konkretnega, preprosto zato, ker bo konstelacija zdaj eno, je drago in morda se je čakalo že dolgo in "moramo narediti dobro izkoristiti našo priložnost."

Vendar pa obstaja še en, skoraj nasproten pristop k zahtevi. Sestavljen je v tem, da zahteva sploh ni potrebna.. Za to obstajajo tudi zgodovinski razlogi, povezani predvsem s stilom dela Berta Hellingerja.

V zgodnjih konstelacijah je Hellinger vedno postavil trenutno in/ali starševsko družino stranke. Hellinger je vprašal, v čem je težava stranke, a ne glede na to, kaj je rekel, se je konstelacija vedno zmanjšala na delo z družinskimi člani. Postavlja se pošteno vprašanje: zakaj vprašati? Kasneje, ko je Hellinger formuliral, da gre za delo s sistemom kot celoto (in ne z naročnikom kot takim), je zahteva začela izgubljati pomen »ugotoviti, kaj stranka želi« in je dobila drugačen pomen. Zahteva je potrebna za vzpostavitev dialoga z ozvezdjem stik. Tisti, ki poznajo Hellingerjevo delo, lahko zagotovo navedejo številne primere, kako je Hellinger zavrnil aranžma, potem ko je komaj poslušal dve ali tri fraze naročnika. "Ne spoštuješ me, ne morem delati s tabo."

Hellinger je pogosto delal brez ene besede glede naročnikove zahteve.

Kako razumeti vso to raznolikost za navadno stranko? Glavna stvar, ki bi jo želel sporočiti [svojim] strankam, je, da je vsaka zmeda (pa tudi vsaka jasnost) glede zahteve povsem normalna. Vaš notranji proces je izražen na način, ki vam je znan in naraven. In na strani metode ni omejitev glede tega, kako je mogoče izraziti zahtevo. Če lahko "samo" sedite poleg ozvezdja in bruhnite v jok, je to povsem dovolj. Če ste en teden razmišljali o jasnem besedilu in mi ga orisali, je to tudi normalno. Tudi če je v tem besedilu petnajst točk in je vse zmedeno. Tudi če je to besedilo razpadlo točno v trenutku, ko si bil na stolu poleg mene.

Po Hellingerju menim, da je za začetek dela glavno spoštovanje in stik med stranko in konstellatorjem. Način, na katerega se to doseže, ni pomemben. Tehnično lahko delam tako na jasni formulaciji kot tudi brez zahteve. Običajno imam v dolgi skupini veliko obeh služb.

Kot vsak konstellator imam tudi jaz svoje preference, stanja, v katerih se počutim bolj udobno. Pri delu s povpraševanjem se raje nagibam k besedilu nizke jasnosti, ki ga je naročnik pripravljen raziskati v aranžmaju in po potrebi spremeniti kar v procesu. Na primer zame besedilo "Želim se poročiti z normalnim moškim" težje delati kot "Zelo sem osamljen in rad bi razumel, kako si lahko pridobim sposobnost vstopanja v harmonične odnose ali kaj to preprečuje". Prva formulacija me implicitno postavlja v vlogo »tiste, ki bo prinesla rezultate«, druga pa stranko obrne tja, kjer jo boli... Ob tem spoštujem dejstvo, da je stopnja stika z bolečino lahko tako, da je viden le skozi odsotnost želenega rezultata, bolj pa nikakor.

Po mojem opazovanju in izkušnjah se polje najbolje odziva na zahteve, ki obravnavajo raziskovanje in preoblikovanje bolečine. Čutim, da je to osnovno gibanje, ki obstaja na terenu – približati se bolečemu, stisnjenemu, zavrnjenemu stanju, se ga dotakniti in ga s tem narediti vidnega, sprejetega, prehodnega. V širšem pomenu besede je to implementacija prvega reda (zakon, ki ga je oblikoval Hellinger) sistemov: nihče ni izključen. Če širše, ni nič izključeno. Če je bolečina izključena, deluje. Če bolečina izgine, izgubi svoj vpliv in moč.

Na podlagi tega razumevanja sploh ni pomembno, kako sva s stranko ugotovila, »kje boli«. Ali je bilo besedilo in ali je bilo jasno. Ali se je to besedilo v skupini spremenilo petkrat ali je še vedno trdno? Ali pa smo sedeli v tišini. Ali pa je stranka jokala, jaz pa sem sedela poleg nje. Vedno iščem neverbalni stik (natančneje, vedno je tam, tudi če se tega ne zavedamo), se uglasim s stranko in skozi telo čutim, kaj se z njim dogaja. Včasih je ta občutljivost zelo jasna, včasih omahne, v vsakem primeru pa je prisotna in prinaša določeno mero stika, poleg ali poleg kakršnih koli formulacij. Dodaten stik in jasnost bodo nato prinesli poslanci, ko bomo začeli s postavitvijo.

lahko pomagaš dober stik odgovor na svoje vprašanje "kjer boli" oz "kaj je narobe". Odgovor bi lahko bil: "tukaj"(v srcu) oz "mati"(odnos z materjo povzroča trpljenje) oz Mož noče otroka, jaz pa ga oz "moj sodelavec me zalezuje" ali katero koli drugo jasno ali nejasno besedilo. Upoštevajte, da tudi v popolni odsotnosti besedne formulacije "nekako" veste, da je nekaj narobe, sicer ne bi prišli v skupino. To znanje ima običajno svoje mesto v vašem telesu, lahko samo pokažete na to mesto – in to bo zelo dobra, zelo jasna »izjava zahteve«!

Tako zame zveni odgovor na vprašanje "kaj je dobra poizvedba o ozvezdju": lahko je kakršno koli besedilo ali brez besedilače zaradi naše interakcije oba s stranko čutiva stik in zaupanje drug v drugega, da lahko začnemo z delom.

Vsak dan se moramo soočiti s številnimi težavami. Za njihovo uspešno rešitev so potrebni odgovori na vprašanja: od "kakšno je vreme danes" in konča z "tečaj poljskega zlota za ruski rubelj". Internet in iskalniki vam omogočajo, da najdete odgovore na skoraj vsa vprašanja, vendar z enim pogojem: zastaviti jih je treba pravilno.

Navodilo

  • Iskalniki (Google, Yandex, Rambler, Mail, Yahoo itd.) so zasnovani tako, da uporabnikom zagotavljajo potrebne informacije. To naredijo na podlagi iskalne poizvedbe. Iskalne poizvedbe so lahko treh vrst:
  • Informativno. Uporabnik išče točne informacije (ne glede na to, na kateri strani je). Na primer: "Himna Rusije".

    Navigacijski. Uporabnik išče naslov strani, ki lahko vsebuje informacije, ki ga zanimajo. Na primer: "Spletna stran Moskovske državne univerze po imenu M.V. Lomonosov".

    Transakcijski. Uporabnik je pripravljen na nekaj dejanj in potrebuje informacije o tem. Na primer: "formatiranje diska". Torej, prva stvar, ki jo morate storiti, ko oblikujete iskalno poizvedbo, je ugotoviti, kaj točno iščete.

  • Iskalnik je ogromna baza podatkov, v kateri so vse informacije »razložene« na police – ključne besede. Potem ko vprašaš iskalna poizvedba, se iščejo ključne besede in vrne se rezultat iskanja. Pogosta napaka uporabnikov začetnikov je, da iskalnik dojemajo kot sogovornika, ki vse ve, iskalno poizvedbo pa nastavijo na primer takole: »Ali mi lahko poveš, kako naj odstraniti madež s čisto nove bluze? Ona svilena". Seveda bodo koristi takšne zahteve minimalne. Veliko bolj učinkovita zahteva bi bila: "bela svilena bluza za odstranjevanje madežev." Torej, druga stvar je, da pravilno formulirate zahtevo. Biti mora čim bolj preprost in vsebovati ključne besede.
  • Ko stroj obdela vašo zahtevo, bo vrnil rezultate iskanja. Praviloma so vsi najbolj relevantni rezultati na prvih dveh ali treh straneh. Sledijo rezultati iskanja, ki le delno zadovoljujejo poizvedbo, vendar obstajajo situacije, ko so potrebni zelo redki podatki - takrat morate v iskalni poizvedbi razvrstiti več kombinacij ključnih besed in prejete podatke zelo natančno filtrirati.
  • Prav tako je včasih treba iskati redke informacije, ki jih "vsebuje" popularno ključne besede. Na primer, če nastavite iskalno poizvedbo "Marx photo publisher", potem iskalni sistem bo našel veliko fotografij Karla Marxa, založnika Karla Marxa, a da bi našel fotografijo A.F. Marx, založnik knjig, se bo moral potruditi, zato je tretja stvar, ki jo je treba narediti, da bi iskanje uspelo, pravilno razvrstiti podatke.

    Tema 2.3. Predstavitvena programska oprema in osnovno pisarniško programiranje

    Tema 2.4. Sistemi za upravljanje baz podatkov in ekspertni sistemi

    2.4.11. Baza podatkov o usposabljanju z obrazcem glavnega gumba "Training_students" - Prenesi


    DBMS in ekspertni sistemi

    2.4. Sistemi za upravljanje baz podatkov in ekspertni sistemi

    2.4.4. Ustvarjanje (formiranje) zahtevkov

    Prošnja je sredstvo za izbiro potrebnih informacij iz baze podatkov. Vprašanje, ki se oblikuje v zvezi z bazo podatkov, je poizvedba. Uporabljata se dve vrsti poizvedb: po vzoru (QBE - Query by example) in jezik strukturiranih poizvedb (SQL - Structured Query Language).

    QBE - vzorčna poizvedba- orodje za iskanje potrebnih informacij v bazi podatkov. Oblikuje se ne v posebnem jeziku, ampak z izpolnjevanjem obrazca zahteve v oknu Query Builder.

    SQL - Poizvedbe- to so poizvedbe, ki jih prevedejo (programerji) iz zaporedja navodil SQL. Ta navodila določajo, kaj storiti z vhodnim naborom podatkov za generiranje izhodnega nabora podatkov. Access gradi vse poizvedbe na podlagi poizvedb SQL; za ogled morate v oknu aktivnega oblikovanja poizvedbe izvesti ukaz View / SQL.

    Obstaja več vrst poizvedb: izbira, posodobitev, dodajanje, brisanje, navzkrižna poizvedba, ustvarjanje tabel. Najpogostejša je poizvedba za izbiro. Za izbor se uporabljajo poizvedbe za izbiro uporabnik potrebuje informacije v tabelah. Ustvarjene so samo za povezane tabele.

    2.4.4.1. Ustvarjanje izbirne poizvedbe s čarovnikom

    Ko ustvarjate poizvedbo, morate definirati:

    • polja v bazi podatkov, ki bodo iskali informacije;
    • predmet iskanja v bazi podatkov;
    • seznam polj kot rezultat izvedbe poizvedbe.

    V oknu zbirke podatkov izberite zavihek Poizvedbe in dvokliknite ikono Ustvari poizvedbo s pomočjo čarovnika, prikaže se okno Ustvari preproste poizvedbe.


    riž. eno.

    V oknu čarovnika iz možnosti Tabele in poizvedbe izberite zahtevano tabelo (izvorno tabelo) in izberite podatkovna polja. Če je poizvedba oblikovana na podlagi več tabel, je treba korake ponoviti za vsako izvorno tabelo.

    Nato v oknu čarovnika izberite podrobno ali povzeto poročilo in kliknite gumb Naprej. Po tem morate določiti ime za zahtevo in izbrati eno od možnosti nadaljnje ukrepanje: Odprite poizvedbo za ogled podatkov ali Uredi postavitev poizvedbe in kliknite Dokončaj. Kot rezultat boste dobili pripravljeno poizvedbo.

    2.4.4.2. Ustvarjanje izbirne poizvedbe z orodjem Designer

    S konstruktorjem lahko ustvarite naslednje vrste poizvedb:

    1. Preprosto.
    2. Glede na pogoje.
    3. Parametrično.
    4. Končno.
    5. Z izračunanimi polji.

    Če želite poklicati graditelja poizvedb, morate iti v okno baze podatkov. V oknu zbirke podatkov izberite zavihek Poizvedbe in dvokliknite ikono Ustvari poizvedbo v pogledu načrta. Aktivno okno Dodaj tabelo se prikaže pred neaktivnim Poizvedba: Izberite okno Poizvedba.

    V oknu Dodaj tabelo s predstavljenega seznama tabel, na podlagi katerih bo izbrana podatka, izberite izvorno tabelo ali več tabel in kliknite gumb Dodaj. Po tem zaprite okno Dodaj tabelo, okno "Poizvedba: izberite poizvedbo" bo postalo aktivno.

    Konstruktorsko okno je sestavljeno iz dveh delov - zgornjega in spodnjega. Zgornji del okna vsebuje shemo podatkov poizvedbe, ki vsebuje seznam izvornih tabel in odraža razmerje med njimi.

    Na dnu okna je obrazec za gradnjo poizvedbe QBE (Query by Example), v katerem vsaka vrstica opravlja določeno funkcijo:

    1. Polje – določa imena polj, ki so vključena v poizvedbo.
    2. Ime tabele – ime tabele, iz katere je izbrano to polje.
    3. Razvrsti - Določa vrsto razvrščanja.
    4. Prikaži na zaslonu – potrditveno polje za ogled polja na zaslonu.
    5. Pogoji izbire - kriteriji iskanja so postavljeni.
    6. Ali – določijo se dodatni izbirni kriteriji.



    riž. 2.

    Zahteva za vzorec

    V oknu "Poizvedba: poizvedba za izbor" z orodji oblikujemo poizvedbo:

    1. Izberite tabelo - vir, iz katerega se izvaja izbor zapisov.
    2. Premaknite imena polj iz vira v obrazec za zahtevo. Na primer, iz tabele Skupine študentov povlecite polje Ime v prvo polje obrazca za zahtevo, iz tabele Študentje povlecite polje Priimek v drugo polje obrazca za prošnjo in iz tabele Napredek povlecite polje Ocena v tretje polje in iz tabele Tečaji povlecite polje Ime v četrto polje obrazca za zahtevo.
    3. Nastavite načelo razvrščanja. Premaknite kazalec miške na vrstico za razvrščanje za katero koli polje, pojavil se bo gumb za odpiranje seznama načinov razvrščanja: naraščajoče in padajoče. Na primer, nastavite način razvrščanja v polju Priimek na naraščajoče.
    4. V vrstici za prikaz se samodejno nastavi potrditveno polje za ogled najdenih informacij v polju.
    5. V vrstico »Pogoji« izbora in vrstico »Ali« morate vnesti omejene pogoje iskanja – iskalne kriterije. Na primer, v polje Ocena vnesite - "odlično / A", t.j. prikaže vsa imena učencev, ki so prejeli ocene exc/A.
    6. Ko je zahteva zaključena, zaprite okno Select Request. Pogovorno okno Shrani - odgovori Da (vnesite ime ustvarjene poizvedbe, na primer Vzorčna poizvedba v načinu načrtovanja) in kliknite V redu in se vrnite v okno baze podatkov.



    riž. 3.

    Če želite odpreti poizvedbo iz okna baze podatkov, označite ime poizvedbe in kliknite gumb Odpri, na zaslonu se prikaže okno za izbiro poizvedbe z želenim imenom.



    riž. 4.

    Če želite spremeniti poizvedbo, jo izberite s klikom miške v oknu baze podatkov, kliknite gumb Konstruktor in naredite spremembe. Zahtevo shranite, ponovite njeno izvedbo.

    Parametrične poizvedbe

    Poizvedbe, ki so različice osnovne poizvedbe in se med seboj nekoliko razlikujejo, se imenujejo parametrične poizvedbe. V parametrični poizvedbi je podan kriterij, ki ga je mogoče spremeniti po naročilu uporabnika.

    Zaporedje ustvarjanja parametrične poizvedbe:

    1. Ustvarite poizvedbo v pogledu načrta ali odprite obstoječo poizvedbo v pogledu načrta, kot je vzorčna poizvedba v pogledu načrta.
    2. V obrazec Zahteva v vrstico Pogoji izbire vnesite izbirni pogoj v obliki povabila na oglati oklepaji, kot je [Vnesite priimek].
    3. Zaprite okno Select Request, odgovorite na vprašanje o shranjevanju spremembe - Da. Vrnite se v okno baze podatkov, kjer bo označena ustvarjena poizvedba.
    4. Izvedite poizvedbo s klikom na gumb: Odpri. V pogovornem oknu »Vnos vrednosti parametra«, ki se prikaže na zaslonu, morate vnesti na primer ime študenta, katerega informacije o napredku želite prejeti, kliknite na gumb V redu.

    Poizvedbe so ena od vrst dokumentov, ki se uporabljajo v Access DBMS, ki so zasnovane za obdelavo podatkov, shranjenih v tabelah.

    Poizvedbe je mogoče ustvariti v konstruktor in s pomočjo mojstri. Konstruktor vam omogoča, da sami ustvarite katero koli vrsto poizvedbe, vendar je ta način priporočljiv za uporabnike, ki že imajo nekaj izkušenj z ustvarjanjem poizvedb.

    Čarovnik za poizvedbe zbira informacije, potrebne za generiranje zahteve, v več korakih, nato pa jih samodejno sestavi glede na uporabnikove odgovore na zastavljena vprašanja.

    S pomočjo čarovnikov v Accessu lahko ustvarite naslednje vrste poizvedb:

    § Preprosta zahteva.

    § Navzkrižna poizvedba.

    § Podvojeni vnosi.

    § Posnetki brez podrejenih.

    Če želite ustvariti katerega koli od njih, v oknu baze podatkov izberite predmet Poizvedbe in kliknite gumb Ustvari. Odpre se okno Nova poizvedba, katerega pogled je prikazan na sl. eno.

    Slika 1 Okno DB Stanje in okno za izbiro vrst poizvedb

    Preprosta zahteva vam omogoča ustvarjanje s Mojstri vzorčna zahteva podatkov iz določenih polj tabel ali poizvedb, je najbolj priročna za uporabnike začetnike. Ko je izbran, se zažene čarovnik, v prvem oknu katerega (slika 2) morate na seznamu Tabel in poizvedb izbrati tabelo, na primer Osebje učiteljev, s seznama njegovih razpoložljivih polj izberite tista ki mora biti prisoten v poizvedbi in prevedite vsakega s pritiskom na [> ]. Podobno so v poizvedbo dodana polja iz drugih tabel iste baze podatkov.

    Opomba. Poizvedbo je mogoče narediti samo s tabelami ali samo s poizvedbami v bazi podatkov. Združevanje polj iz tabele in poizvedbe v poizvedbi ni dovoljeno.

    Slika 2 Izbira polj za poizvedbo.

    Navzkrižna zahteva izgleda kot miza , v katerem so prikazana do tri polja (stolpca) izvorne tabele, se celice enega od preostalih pretvorijo v nove stolpce, na njihovem presečišču pa se prikaže ena od vrednosti, ki jih določi uporabnik - Disperzija, Minimum , Maximum, Average, Deviation, Number, First, Last itd. Na primer, poizvedba na sl. 4 je navzkrižna poizvedba tabele 1 na sl. 3, v katerem so vrednosti razdalje postale imena stolpcev:

    Možnost Podvojeni vnosi ustvari poizvedbo za iskanje podvojenih zapisov (vrstic) v eni tabeli ali poizvedbi, za tabelo na sl. 3 z danima poljema Razdalja in Fare, je videti tako (slika 5)

    MS Access vam omogoča, da ustvarite takšno poizvedbo samo za eno tabelo ali poizvedbo (ne za več tabel baze podatkov), v njej pa morate določiti

    Slika 3 Tabela 1 za ustvarjanje navzkrižne poizvedbe


    Slika 4 Zavihek Navzkrižna poizvedba. eno

    samo tista polja, v katerih je popolno hkratno ujemanje podatkov iz zapisov (na primer polja Transport ni mogoče vključiti v to zahtevo). Poleg tega lahko za prepoznavanje omogočite neponavljajoče se polje (Mesto).

    Zapisi brez podrejenih poizvedba za iskanje zapisov, ki ne ustrezajo nobenemu zapisu v primerjalni tabeli. Ta poizvedba se uporablja za baze podatkov z več tabelami.

    Slika 6 Glavna tabela 1

    Poizvedba brez podrejenih za primerjavo tabel sl. 3 in sl. 6 bo prikazala neusklajeno črto (slika 7):

    Te zahteve so osnova za ustvarjanje več zapletene poizvedbe, za katerega se uporablja način načrtovanja.