Hogyan működik a Jelentéskészítő és a Lekérdezéskészítő tetszőleges adatforrással. A jelentéskészítő és a lekérdezéskészítő munkája tetszőleges adatforrással Lekérdezéskészítő 1c 8.2 kiválasztása

Az 1C platform nyolcadik verziója sok új konfigurációs objektumot kínál, amelyek mindegyike saját módszerekkel és tulajdonságokkal rendelkezik, amelyek leegyszerűsítik az alkalmazásfejlesztési folyamatot és optimalizálják a teljesítményt. Az egyik a Report Builder.

Arról, hogy mi az 1c jelentéskészítő, milyen funkciókat lát el, és milyen alkalmazást talált a programozásban, és ebben a cikkben szeretnék beszélni.

1C jelentéskészítő – mi ez?

Ez egy konfigurációs objektum, amely lehetővé teszi adatok kimenetét egy táblázatkezelő dokumentumba vagy diagramba. Az adatforrás lehet:

  1. A lekérdezés végrehajtásának eredménye;
  2. Táblázatkezelő dokumentum cellaterülete;
  3. Dokumentum vagy referenciakönyv táblázatos része;
  4. Regiszterbejegyzések halmaza.

Ezenkívül az 1C jelentéskészítő rendelkezik a "Text" attribútummal, amelybe a kérés szövege küldhető, amelynek eredményét meg kell nézni.

Az 1. ábra egy kódrészletet mutat, amely lehetővé teszi egy tetszőleges értéktáblázat megjelenítését a "Jelentéskészítő" segítségével.

Így az építtető nyilvánvaló felhasználási módja a jelentések tervezése. A builder használatának nem ilyen kifejezett iránya, hogy a felhasználó testreszabja a különböző lekérdezési elemeket (csoportosításokat, kijelöléseket stb.).

Az 1. ábrán látható kód végrehajtásának eredménye egyébként a 2. ábrán látható.

2. ábra

Builder beállítása

A jelentéskészítő bizonyos értelemben hasonlít egy adatösszetételi rendszerre, és használható olyan esetekben, amikor az ACS valamilyen okból nem érhető el, vagy fennáll annak a lehetősége, hogy helytelenül fog működni.

Az ACS-hez hasonlóan az építő a következőket tartalmazza:

  • Csoportosítások (hierarchia szintek az információk megjelenítésénél);
  • Indikátorok (értékek, amelyekhez a teljes összeget meg szeretné kapni);
  • További számított mezők (elemek attribútumai, műveletek eredményei értékekkel);
  • Szűrők (kiválasztások);
  • Válogatás.

A Builder megjelenési elrendezési beállításai a részletek különböző szintjeit és pontosságát feltételezik.

Algoritmus a builder használatához

Természetesen a helyzettől függően a jelentéskészítőt használó program kódja jelentősen változhat. Az alapvető használati algoritmus nem változik:

  1. Kijelentjük egy új, ReportBuild típusú objektum létrehozását;
  2. Ebben a szakaszban vagy a QueryBuilder segítségével hozhatja létre a kijelölési szöveget, vagy a DataSourceDescription objektum használatával használhat egy meglévő kijelölést;
  3. A jelentéskészítő beállításai a FillSettings () builder objektum metódusával állíthatók be;
  4. Megtagadhatja az automatikus generálási módszerrel létrehozott szabványos tervezési elrendezés használatát, ha meghatározza a Layout objektum tulajdonságát a builderben;
  5. Ha a DataSourceDescription nem használatos, akkor ebben a szakaszban végre kell hajtani a kérést, használja az Execute () metódust;
  6. Az utolsó lépés az Output () metódus futtatása, a kimenet történhet egy táblázatkezelő dokumentumban, vagy a megfelelő űrlapelemben.

Dekódolás használata az építőben

Az 1. ábra harmadik sora a builder végrehajtás eredményeként kapott cellák dekódolását tartalmazza.

Ehhez a FillDecryption tulajdonságot használtuk. Ennek a tulajdonságnak a típusa RepOrtInterFillType, a három érték egyikét veheti fel:

  1. Értékek csoportosítása - egy cella aktiválásakor az abban megadott csoportosítás értéke kerül felhasználásra;
  2. Ne töltse ki – az alapértelmezett érték, ami azt jelenti, hogy a végeredményhez nem használnak visszafejtést;
  3. Dekódolás - a visszafejtés szerkezete az eredeti minta összes csoportjának értékeivel lesz kitöltve.

Ezenkívül a felhasználó maga is beállíthatja a visszafejtést a ConfigureDecryption () módszerrel. Az ezt a módszert futtató kódrészlet a 3. ábrán látható

3. ábra

Példa arra, hogyan használjuk az építőt a kijelölések jelentésbe való felvételére

Egy kicsit a gyakorlati részből. Néha előfordul, hogy jelentést kell készíteni bizonyos kijelölésekkel. Megoldhatja ezt a problémát az ACS segítségével, vagy használhatja a buildert:

  1. Kezdjük a létrehozással külső jelentésés hozzáadunk hozzá egy attribútumot tetszőleges névvel, és beírjuk a Report Builder parancsot (4. ábra);

4. ábra

  1. Hozzon létre egy jelentés űrlapot, és helyezze rá a TableField interfész objektumot, írja be Selection néven és kapcsolja össze a létrehozott attribútum Selection tulajdonságával 5. ábra.

5. ábra

  1. Létrehozunk egy OnOpen () eljárást az űrlapunk megfelelő eseményéhez társítva;

6. ábra

  1. A benne írt kódnak feltétlenül tartalmaznia kell egy lekérdezést a jelentéskészítőhöz, a kódra egy példa a 6. ábrán látható, a builder szövegének elkészítéséhez használhatjuk a lekérdezés konstruktort, a konstruktorban a builder feltételeit és annak a további beállítások a megfelelő fülön láthatók 7. ábra;

7. ábra

  1. A lekérdezés szövegének göndör () zárójelében megadott kiválasztási feltételek csak akkor kerülnek végrehajtásra, ha a megfelelő kijelölést aktiválja és használja a felhasználó;

  2. A builder eredményét megjelenítő eljárás a 8. ábrán látható, és a Generálás gomb megnyomásához kapcsolódik;

8. ábra

  1. Mentsük a jelentésünket.

Az általunk készített jelentés megjelenését és eredményét a 9. ábra mutatja

9. ábra

Természetesen meglehetősen nehéz egy cikkben bemutatni egy új objektum összes képességét, de számunkra úgy tűnik, hogy a megszerzett ismeretek figyelembevételével képet kaphatunk róla, és elkezdhetjük használni.

1. Mi az a jelentéskészítő?

A jelentéskészítő egy olyan objektum, amely lehetővé teszi, hogy a megadott lekérdezési szöveg és beállítások alapján megkapja az eredményt, és megjelenítse azt egy táblázatkezelő dokumentumban vagy diagramban.

A Jelentéskészítő beállításai a következők:

  • csoportosítások (például: „Nómenklatúra”, „Ügyfél”...),
  • mutatók (például: „Mennyiség”, „Mennyiség”...),
  • további mezők (például: „Nomenclature.Service”, „Counterparty.code” ...),
  • szűrő (például: egy adott tételre, egy partnercsoportra ...) és
  • rendezés (példa: „Nómenklatúra.Kód”, „Konpert.Név”...)

Az építő beállításai vizualizációs eszközökkel rendelkeznek, amelyek lehetővé teszik a programozó számára, hogy minimális erőfeszítéssel biztosítson a felhasználó számára a telepítéshez szükséges felületet.

Kiadás előtt stílusozhatja a jelentéskészítő elrendezését az elrendezési elrendezés használatával.

A jelentéskészítő lekérdezésének végrehajtási eredményét egy parancs hajtja végre.

2. Hol használhatja a Jelentéskészítőt?

A riportkészítő segítségével megtervezheti a jelentések nagy részét (például: „Készletegyenlegek”, „Időszaki értékesítések” ...). Ugyanakkor jelentősen lecsökken a fejlesztésük és a programkódjuk ideje, nő a tervezés és a funkcionalitás minősége.

Ezenkívül a riportkészítő olyan esetekben is használható, amikor az eredmény kimenetére nincs szükség, de a felhasználónak testre kell szabnia a lekérdezési elemeket, például csoportosításokat vagy szűrőt (például: elem kirakása xml fájlba ill. meghatározott szűrővel feladott dokumentumok feldolgozása).

Mivel a jelentéskészítő nem érhető el az 1C: Enterprise szerveren, és nem használják a külső kapcsolati modulban, ezekben az esetekben szükséges lekérdezéskészítő, amely hasonló a jelentéskészítőhöz, de nem rendelkezik vizuális tulajdonságokkal és módszerekkel ("Layout", "OutputReportHeader", "Output ()", "CheckoutLayout ()" ...).

3. Egy kicsit a fogalmakról

A 7.7-es verzióhoz képest a 8.0-s verzió némi koncepcióváltáson ment keresztül, ezért érdemes ezen egy kicsit elidőzni.

Koncepció

Leírás

Vonalmérések Azon csoportosítások listája, amelyek alapján a kimenet soronként történik (például: „Nómenklatúra”, „Ügyfél” ...)
Oszlopos mérések Azon oszlopok szerinti csoportosítások listája, amelyek alapján a kimenet végrehajtásra kerül (példa: „Raktár”, „Hónap” ...).
Kiválasztás Különféle szűrők halmaza (példa: vállalkozói csoport, adott szervezet ...).
Rendelés Rendezési mezők halmaza (például: "Nómenklatúra.Kód", "Dokumentumértékesítés.Felelős" ...).
Terület Az egyik lekérdezési mező (például: „Nómenklatúra”, „Counterparty.code”, „Quantity”, „Amount” ...).
Kiválasztott mezők A kiválasztott mezők listája mutatókat (például: "Mennyiség", "Összeg" ...) és további mezőket (csoportosítási részletek) (például: "Nómenklatúra.Csoport", "Konderfél.kód" ...) tartalmaz.
Elérhető mezők A csoportosításhoz, szűréshez, rendezéshez és kiválasztott mezőkhöz hozzáadható mezők listája. Általában tele van lekérdezéskiválasztó mezők listájával, de programozhatóan szerkeszthető (hozzáadhat, módosíthat és törölhet elérhető mezőket).

Fontos megérteni, hogy a csoportosítás, szűrés, rendezés és a kiválasztott mezők nem közvetlenül kapcsolódnak a rendelkezésre álló mezőkhöz, ezek különböző objektumok.

A fő különbség az, hogy a rendelkezésre álló mező nem rendelkezik az „Adatútvonal” tulajdonsággal (például: „Nómenklatúra.Kód”, „Mennyiség”), mivel ez csak egyfajta leírása a mezőnek, amellyel a kísérlet megtörténik. egyezést talált a lekérdezéskiválasztó mezők között, amikor hozzáadja azt a csoportosítási, szűrési, rendezési vagy kijelölt mezők listájához.

Ugyanakkor az elérhető mezők egyikét sem lehet programozottan hozzáadni a fenti listákhoz, mivel egyrészt a rendelkezésre álló mezőben nem találhatók olyan metódusok, mint az „AddWelected ()” vagy az „AddInSelectedFields ()” , de másrészt, ha a fenti listák bármelyikéhez új elemet ad hozzá, meg kell adni az „Adatútvonal” tulajdonságot, amely nem mindig egyezik a mező nevével (például: a „Nómenklatúra.Szülő” ill. A „Nómenklatúra.Szülő.Szülő” mezőknek ugyanaz a neve: „Szülő”).

4. A jelentéskészítő tipikus használati esete

Általánosságban elmondható, hogy a jelentések készítőjével végzett műveletek sorrendje a következő:

  1. Hozzon létre egy új „Jelentéskészítő” objektumot;
  2. Rendelje hozzá a kérés szövegét a „Szöveg” tulajdonsághoz;
  3. Ha a jelentéskészítő beállításai nem voltak megadva a lekérdezés szövegében, akkor hajtsa végre a „FillSettings ()” módszert;
  4. Lehetővé teszi a felhasználó számára a jelentéskészítő beállításainak módosítását;
  5. Ha szükséges, megtagadhatja az elrendezés automatikus generálását a jelentéskészítő által, és rögzített elrendezést rendelhet az Elrendezés tulajdonsághoz;
  6. Szükség esetén hozzárendelheti az egyik szabványt vagy saját elrendezést az "Elrendezés" tulajdonsághoz, és ha a jelentéskészítő automatikusan generált elrendezését lecserélték egy fixre, akkor hajtsa végre a "Checkout Layout ()" módszert;
  7. Hívja a "Futtatás ()" metódust;
  8. Hívja az "Output ()" metódust.
Builder = Új "Jelentéskészítő"; Postroitel.Tekst = „Válassza ki a felbontást | DenezhnyeSredstvaKompaniiOstatki.StrukturnayaEdinitsa, | Összeg (DenezhnyeSredstvaKompaniiOstatki.SummaOstatok) összegeként | | FROM | RegistrNakopleniya.DenezhnyeSredstvaKompanii.Ostatki ((StrukturnayaEdinitsa *).) | | Csoportosítva | DenezhnyeSredstvaKompaniiOstatki.StrukturnayaEdinitsa | | ÖSSZESEN EREDMÉNY (ÖSSZEG) | ÁLTALÁNOS, | Szerkezeti egység szerint "; Builder.FillSettings (); // Itt megadhatja a felhasználónak a lehetőséget // a jelentéskészítő beállításainak megváltoztatására Builder.Layout = GetLayout ("CustomLayout");
Builder.Layout.Layout = GetLayoutLayout (StandardLayout.Classic);
Builder.CheckLayout ();
Builder.Run ();
Builder.Display ();

5. A jelentéskészítő néhány tulajdonságának leírása

Ingatlan

Leírás

Szöveg A jelentéskészítő lekérdezési szövegét tartalmazza. Ha a jelentéskészítő lekérdezési szövege nem tartalmazza a „(…)” beállítási elemeket, akkor a FillSettings () metódussal automatikusan kitöltheti a beállításokat a lekérdezés szövege alapján.
Szövegfejléc A jelentés címében megjelenő szöveg (példa: „Készletállomány 2004.01.01-i állapot”, „2004. januári értékesítések” ...).
OutputReport Cím
DisplayHatTable
GeneralResults megjelenítése
DisplayBasementTable
DisplayFooterReport
Ezek a tulajdonságok határozzák meg, hogy megjelenjen -e a jelentés címe, a táblázat fejléce, a végösszegek, a táblázat lábléce és a jelentés lábléce.
DisplayDetailedRecords A részletes nyilvántartások kényszermegjelenítéséért, illetve megjelenítésének tilalmáért az ingatlan felelős.
Automatikusan részletes bejegyzések Ha az „AutoDetailed Records” tulajdonság értéke True, akkor minden részletes rekord csak akkor jelenik meg, ha eltér az első csoporttól.
Elérhető mezők Tartalmazza a csoportosításhoz, szűréshez, kijelölt mezőkhöz és rendezéshez rendelkezésre álló mezők listáját.
MeasurementsStrings
Mérések oszlopok
A csoportosítások listáját tartalmazza soronként és oszloponként.
Kiválasztás A jelentéskészítő által meghatározott szűrők listáját tartalmazza.
Selected Fields tartalmazza a kiválasztott mutatók és csoportosítási attribútumok listáját.
Rendelés rendezési mezők listáját tartalmazza.
Lehetőségek Tartalmazza a builder paraméterek listáját (az építő lekérdezés szövegében az „&” szimbólummal deklarálva).
Eredmény Egy jelentéskészítő lekérdezés végrehajtásának eredményét tartalmazza (a QueryResult típusú objektum).

6. Átiratok feldolgozása a Jelentéskészítővel

A "FillDecryption" tulajdonság a következő három lehetőség egyikét tartalmazza a dekódolás kitöltésére a kimenetben:

1. lehetőség: ne töltse ki (ne használjon visszafejtést).

2. lehetőség: értékek csoportosítása (egy cella visszafejtésekor megnyílik a benne megjelenített csoportosítási érték).

3. lehetőség: visszafejtés (a visszafejtést az összes csoport értékeit tartalmazó struktúrával kell kitölteni). Ebben az esetben fel kell dolgozni a „Dekódolás feldolgozása” táblázatkezelő dokumentum eseményét, ahol szükséges az átvitt szerkezet elemzése és bizonyos műveletek végrehajtása.

Fontos szempont, hogy a harmadik lehetőségnél nem lehet kimenni a generált táblázatos dokumentumba, mivel akkor nem lehet feldolgozni a visszafejtést, amelynek eseménye annak az űrlapnak a moduljában kerül feldolgozásra, amelyen a táblázatkezelő dokumentum mezője található. található.

Ha a harmadik opciót használja a visszafejtés kitöltéséhez, akkor használhatja a "ConfigureDecryption ()" módszert, amely a felhasználó által végrehajtott visszafejtést figyelembe véve jelentés végrehajtására és megjelenítésére szolgál.

A jelentéskészítő lehet ugyanaz, vagy új. Amikor személyre szabja a visszafejtést, az összes egyéni jelentéskészítő szűrő eltávolításra kerül telepített szűrők az eredeti lekérdezéskészítő, valamint a visszafejtésből származó csoportosítási értékek szűrői.

7. Jelentés

Az „Elrendezés” tulajdonság azt az elrendezést tartalmazza, amelyet az eredmény táblázatos dokumentumba történő kiadásakor használunk. Ha nincs meghatározva, akkor az elrendezés automatikusan generálódik.

A "ReportHeader Layout", "TableHeader Layout", "DetailRecords Layout", "GeneralTotals Layout", "TableFootboard Layout" és "ReportFootboard Layout" tulajdonságok tartalmazzák a terület nevét a jelentéskészítő elrendezésében vagy a kimenetben használt egyedi elrendezéseket, táblázatból, részletes jelentés címsorából, fejléc nagyösszegből, táblázat láblécéből és jelentés láblécéből egy táblázatkezelő dokumentumba. Ha a területnevek megegyeznek a jelentéskészítő elrendezésében szereplő nevekkel, akkor nem kell kitöltenie a tulajdonságokat.

A "Megjelenés elrendezés" tulajdonság tartalmazza a jelentéskészítő elrendezésének stílusához használt elrendezést. A megjelenési elrendezés celláinak díszítése a jelentéskészítő elrendezés celláira lesz alkalmazva.

A szabványos tervezési lehetőségek egyikének eléréséhez használhatja a „GetDesignLayout ()” globális kontextus módszert.

Ha a jelentéskészítő "Layout" tulajdonságához rögzített elrendezést rendeltek, akkor annak kialakításához a "Checkout Layout ()" metódus szükséges.

A „PlacementDimensionsInstrings” tulajdonság három lehetőség egyikét határozza meg a csoportosítások soronkénti megjelenítésére.
1. lehetőség: együtt (egy oszlopban).
Példa:

2. lehetőség: külön (különböző oszlopokban).
Példa:


Példa:

A "PlacementDimensionsInColumns" tulajdonság a három lehetőség egyikét határozza meg az oszlopok szerinti csoportosítások megjelenítésére.
1. lehetőség: együtt (egy sorban).
Példa:

2. lehetőség: külön (különböző sorokban).
Példa:

3. lehetőség: külön-külön és csak összesen.
Példa:

A „PlacementTotalsInLows” tulajdonság négyféle módon határozza meg az összegek sorokban történő megjelenítését.
1. lehetőség: a címben (csak a későbbi csoportosítások és részletes bejegyzések felett).

2. lehetőség: a fejlécben és a láblécben (a későbbi csoportosítások és részletbejegyzések felett és alatt).

3. lehetőség: a pincében (alatt a későbbi csoportosítások és részletes nyilvántartások, felettük csak a csoportosítás leírása jelenik meg).

4. lehetőség: csak a pincében (csak a későbbi csoportosítások és részletes nyilvántartások alatt).

Ingatlan " Az eredmények elhelyezése oszlopokban"Az összegek oszlopokban történő megjelenítésének négy módja egyikét határozza meg.

1. lehetőség: a címben (csak a későbbi csoportosítások és részletes bejegyzések bal oldalán).

2. lehetőség: a fejlécben és a láblécben (az azt követő csoportosítások és részletes bejegyzések bal és jobb oldalán).

3. lehetőség: a pincében (az ezt követő csoportosítások és részletes nyilvántartások jobb oldalán, balra csak a csoportosítás leírása látható).

4. lehetőség: csak az alagsorban (csak a későbbi csoportosításoktól és a részletes nyilvántartásoktól jobbra).

Ingatlan " A dimenzióattribútumok elhelyezése a sorokban”A három lehetőség egyikét határozza meg a csoportosítási attribútumok megjelenítése sorok szerint.

1. lehetőség: együtt (egy további oszlopban).
Példa:

2. lehetőség: mérésekkel együtt (csoportosítással ellátott oszlopokban).
Példa:

3. lehetőség: külön (különböző további oszlopokban).
Példa:

Ingatlan " PlacingDimensionAttributesInColumns"A három lehetőség egyikét határozza meg az oszlopok szerinti csoportosítás részleteinek megjelenítéséhez.

1. lehetőség: együtt (egy további sorban).
Példa:

2. lehetőség: mérésekkel együtt (csoportosítással ellátott sorokban).
Példa:

3. lehetőség: külön (különböző kiegészítő sorokban).
Példa:

8. A jelentéskészítő kimenete

A „Run ()” metódus végrehajtja a jelentéskészítő lekérdezését, és kitölti az „Eredmény” tulajdonságot.
A GetRequest () metódus használatával jelentéskészítő lekérdezést kaphat, amely a Futtatás () metódus meghívásakor fut le.

Az "Output ()" metódus az eredményt egy táblázatkezelő dokumentumba vagy diagramba adja ki. Ha nem adja meg az objektumot, amelyre a kimenetet kívánja adni, akkor új táblázatos dokumentum jön létre.

Példa egy új táblázatos dokumentum kimenetére:
Builder.Display ();

Példa egy meglévő táblázatkezelő dokumentum kimenetére:
Builder.Output (FormElements.ResultTable);

Példa a diagram kimenetére:
Builder.Output (FormElements.ResultDiagram, "Mennyiség");

Ha a jelentéskészítő eredményét pivot táblában vagy kimutatásdiagramban kell megjelenítenie, akkor ne az „Output ()” metódust használja, hanem töltse ki a pivot tábla vagy pivot diagram „DataSource” tulajdonságát. A forrás lehet a jelentéskészítő eredménye vagy maga a jelentéskészítő. A jelentéskészítő eredménye nem igényli a lekérdezés túlfutását, de a jelentéskészítő lehetővé teszi a csoportosítások összetételének módosítását.

9. Az építő beállításainak mentése és visszaállítása

A „GetSettings ()” metódus lehetővé teszi a jelentéskészítő aktuális beállításainak lekérését, és megadhatja, hogy melyek legyenek (például: csak szűrés, szűrés és rendezés...).

A „SetSettings ()” módszer lehetővé teszi a jelentéskészítő beállításainak betöltését, és megadhatja, hogy melyeket (például: csak szűrés, szűrés és rendezés ...).

10. A jelentéskészítő csoportosításai és mezői

A jelentéskészítő dimenziója sor vagy oszlop szerinti csoportosítás.

A csoportosítás főbb részletei a következők

  • „Név” (változóazonosító) (példa: „Nómenklatúra”, „Ügyfél” ...),
  • "Prezentáció" (bemutatás a kimeneten) (például: "Eladási bizonylat", "Mértékegység" ...),
  • "DataPath "(a kérés kiválasztási mezőjének elérési útja) (példa:" Nomenclature "," DocumentSales.Organization "...)

és ha a csoportosítás a kézikönyv szerint épül fel, akkor is

  • „DimensionType” (a mezőértékek szerinti szűrés egyik lehetősége: hierarchia (tagok és csoportok), csak hierarchia (csak csoportok) vagy tagok (csak tagok)).

Ezenkívül számos tulajdonság lehetővé teszi, hogy elrendezéseket rendeljen a csoportosításhoz, amelyet a táblázatkezelő dokumentumba történő kiadáskor használ.

  • Az „Elrendezés” a régió neve a jelentéskészítő elrendezésében vagy a csoportosítás megjelenítésekor használt külön elrendezésben.
  • A „LayoutHierarchy” a terület neve a jelentéskészítő elrendezésében vagy a csoportosítási hierarchia megjelenítésekor használt külön elrendezésben.
  • A „FooterLayout” a terület neve az építőelrendezésben, vagy külön elrendezés, amelyet a csoportosító lábléc megjelenítésekor kell használni.
  • A „HierarchyFooterLayout” a terület neve az építőelrendezésben, vagy egy külön elrendezés, amelyet a csoportosítási hierarchia láblécének megjelenítésekor használnak.
  • „BasementLayers” - pinceelrendezések tömbje különböző csoportosítási szintekhez.
  • „Level Layouts” – elrendezések tömbje a különböző csoportosítási szintek számára.

A jelentéskészítő mező a kiválasztott mezők egyike. A terület főbb részletei a következők

  • „Név” (mezőazonosító) (példa: „Mennyiség”, „Nómenklatúra kódja”, „Időszak” ...),
  • "Prezentáció" (megjelenítés a kimenetben) (például: "Mennyiség", "Kód", "Időszak" ...) és
  • „Adatútvonal” (a lekérdezés kiválasztási mezőjének elérési útja) (például: „Mennyiség”, „Nómenklatúra. Kód”, „Időszak” ...).

A csoportok vagy mezők listáján számos művelet végezhető el.

  • "Beszúrás ()" - csoportosítás / mező hozzáadása a megadott pozícióhoz.
  • "Hozzáadás ()" - csoportosítás / mező hozzáadása a lista végéhez.
  • „Index ()“ - a csoportosítás / mező indexének lekérése a listában.
  • "Szám ()" - lekérheti a csoportosítások / mezők számát a listában.
  • „Keresés ()” - csoportosítás / mező keresése a listában név szerint.
  • „Törlés ()” - a csoportok/mezők listájának törlése.
  • "Get ()" - csoportosítás / mező lekérése index szerint.
  • "Move ()" - mozgassa a csoportosítást / mezőt a megadott számú pozíció szerint.
  • „Eltávolítás ()” - csoportosítás / mező eltávolítása a listáról.

11. Építő nyelv

A jelentéskészítőnek saját nyelve van. Ez egy elterjedt lekérdezési nyelv, „(…)” konstrukciókkal kiegészítve. Ezen konstrukciók használatával elhagyhatja a FillSettings () metódust, és testre szabhatja a jelentéskészítőt a lekérdezéstestben.
Így testreszabhatja a "SELECT", "WHERE", "ORDER BY", "RESULTS BY" elemeket, és más érdekes dolgokat is elvégezhet. Ebben az esetben az építő lekérdezés fő szövege az alapértelmezett beállítás lesz, míg a konstrukciók (…) az elérhető beállításokat írják le.

Ha a kijelölő mező lehetővé teszi, hogy egy ponton keresztül kapjon valamit, akkor megadhatja a „. *” jelet a mező után, majd a felhasználó kiválaszthatja a mező részleteit. Például: „Nómenklatúra. *” Lehetővé teszi a „Nómenklatúra.Kód” szerinti rendezést vagy a „Nómenklatúra.Szolgáltatás” szerinti szűrést. De a "Mennyiség. *" Ennek nincs értelme, mivel a "Mennyiség" mezőben nincsenek részletek, ami azt jelenti, hogy elegendő egyszerűen a "Mennyiség" jelzése.

A SELECT konstrukcióban megadott mezők korlátozzák a felhasználó számára elérhető mezők listáját.
A "WHERE" konstrukcióban megadott mezők korlátozzák a szűrőben használható mezők listáját.
A „ORDER BY” konstrukcióban megadott mezők korlátozzák a rendezendő mezők listáját.
A "ÖSSZESEN" konstrukcióban megadott mezők korlátozzák az összegek csoportosítására szolgáló mezők listáját.

És most az érdekességekről.

Először, a kérés fő szövegében a konstrukciókat (...) is használhatja a források paramétereiben. Például ha helyett
| FROM
| Felhalmozási nyilvántartás. A vállalat árutérlege. Maradványok (és befejezési dátum)
rámutat
| FROM
| Felhalmozási nyilvántartás. Vállalat áruegyenlegei. Maradványok ((& befejezési dátum))
akkor ebben az esetben az "EndDate" mező alapján lehet szűrőt beállítani.

Ugyanakkor az első esetben be kell állítani a jelentéskészítő „Befejezés dátuma” paraméterét, a második esetben ez nem szükséges, sőt, ha a „Befejezés dátuma” mező általi kijelölés nem megadott, akkor a táblázat „Felhalmozási nyilvántartás.” ezt a paramétert nem veszi figyelembe.

Másodszor, a lekérdezés szövegében szereplő források opcionálisként jelölhetők meg, ha a „(…)” konstrukcióba helyezik őket. Például, ha ilyen kérésszöveget ír

| VÁLASSZ


| LotProductsCompaniesBalances.QuantityBalance AS QuantityByBatch
| (SELECT
| A vállalat áruegyenlegei Egyenlegek. Nómenklatúra AS Nómenklatúra,
| A Vállalat nyersanyagmérlege Egyenleg. Mennyiségegyensúly AS Mennyiség,
| Rengeteg áruCégekBalances.QuantityBalance AS QuantityBy lots)
| FROM
| Felhalmozási nyilvántartás. Vállalat áruegyenlegei. Marad AS áruegyenlegekVállalat egyenlege
| (BAL CSATLAKOZÁS A FELHALMOZÁSI REGISZTRÁCIÓHOZ. SOK ÁRUK Vállalat. Egyenlegek, mint árutétel Vállalatok
| Termékmérleg szerint Vállalati egyenlegek.Nómenklatúra = Lots of ProductsCéges mérlegek.Nómenklatúra)
| TOTALS SUM (mennyiség), SUM (QuantityByLots) BY
| TÁBORNOK,
| Elnevezéstan

akkor a batch regiszter bal oldali összekapcsolása csak akkor történik meg, ha a „QuantityByBatch” mező szerepel a kiválasztott mezők listájában.

Harmadszor, a források paramétereiben megadható, hogy a szűrők beállítása esetén lehetőség szerint ne a „WHERE” elemet használó lekérdezés végrehajtásának eredményére alkalmazzuk, hanem magára a forrásra. Így ahelyett
| Felhalmozási nyilvántartás. ÁruegyenlegekVállalat. Maradványok ()

van értelme írni

| Felhalmozási nyilvántartás. A cég áruegyenlege. Maradványok (, (Nómenklatúra. *, Vállalati raktár. *, Megrendelés. *, Kiskereskedelmi ár, Nómenklatúra jellemzői. *))

Jól, negyedszer, a legfinomabb szerintem. Ha a forrásban megadjuk a „Frekvencia” paramétert (a forgalomszerzést lehetővé tévő tábláknál), akkor azt is beállíthatjuk „(…)”-ként, és az építő lekérdezésének szövegével való kis manipuláció eredményeként meg tudjuk adni. pontok szerinti csoportosítást használjon.

Példa: | ENGEDÉLYEZETT KIVÁLASZTÁS | PartyGoodsCompanyObotory.Nómenklatúra, | ÖSSZEG (Sok árucégForgalom.KöltségÉrkezés) AS CostInvestment, | ÖSSZEG (Sok termékVállalatforgalom.Költségkiadások) AS Költségkiadások | |TÓL | RegisterAccumulation.PartyCompany.Turnover (, (& Periodicity), | (Nómenklatúra. *)) AS Batch of CommodityCompany BETÖLTÉS | PartyGoodsCompaniesObototy.Nómenklatúra | ÖSSZESEN SUM (CostPrihod), SUM (CostExpenditure) BE | ÁLTALÁNOS, | Nómenklatúra | | (KIVÁLASZT | Terméktétel Vállalatforgalom.Nómenklatúra. *, | Nyilvántartó. *, | Kezdőidőszak (időszak, nap) AS időszakNap, | kezdeti időszak (időszak, hét) AS időszak hét, | kezdeti időszak (időszak, évtized) AS időszak ) AS időszak hónap, | időszak eleje (időszak, negyedév) AS időszak negyedév, | időszak eleje (időszak, fél év) AS időszak fél év, | időszak eleje (időszak, év) AS időszak költségköltség) AS költségköltség) | | (RENDELÉS | ÁrutételCompanyObototy.Nómenklatúra. *, | Nyilvántartó. *, | CostPrihod, | CostExpenditure) | | (HOL | Sok árucégforgalom.Nómenklatúra. *, | Nyilvántartó. *, | ÖSSZEG (Sok ÁruVállalatforgalom.Költségbevétel) AS Költségbevétel, | ÖSSZEG (Sok áruCégforgalom.Költségkiadás) AS Költségkiadás) | | (ÖSSZESEN | Nómenklatúra. *, | Nyilvántartó. *, | Időszak eleje (időszak, nap) AS időszakNap, | időszak eleje (időszak, hét) AS időszakHét, | időszak eleje (időszak, évtized) AS időszakDecade, | A periódus kezdete (időszak, hónap) AS időszak hónapja, | Az időszak kezdete (időszak, negyedév) AS időszak Perc Időszak Év)

Van egy árnyalat, ahhoz, hogy a periódusok szerinti csoportosítás működjön, hozzá kell adnia egy szűrőt a „Frekvencia” paraméter szerint. Annak érdekében, hogy ezt ne manuálisan tegye, a kényelem kedvéért programozottan hozzáadhatja a jelentéskészítő futtatása előtt, és a végrehajtás után törölheti, hogy ne zavarjon, mivel egy ilyen szűrőt nem lehet megérteni a józan ész. Ez valami ilyesmi történik

IfReportBuilder.AvailableFields.Find ("Frekvencia")<>Undefined Akkor Periodicity = Undefined; IfReportBuilder.DimensionsStrings.Find ("PeriodYear")<>Undefined VAGY Report Builder.DimensionsColumns.Find ("PeriodYear")<>Undefined Akkor Periodikus = 9; EndIf; IfReportBuilder.DimensionsRows.Find ("IdőszakFélév")<>Undefined VAGY Report Builder.DimensionsColumns.Find ("PeriodFél év")<>Undefined Akkor Periodikus = 8; EndIf; IfReportBuilder.DimensionsRows.Find ("PeriodQuarter")<>Undefined VAGY Jelentéskészítő.DimensionsColumns.Find ("PeriodQuarter")<>Undefined Akkor Periodikus = 7; EndIf; IfReportBuilder.DimensionsRows.Find ("Period Month")<>Undefined VAGY Report Builder.DimensionsColumns.Find ("PeriodHónap")<>Undefined Akkor Periodikus = 6; EndIf; IfReportBuilder.DimensionsRows.Find ("PeriodDecade")<>Undefined OR Report Builder.DimensionsColumns.Find ("PeriodDecade")<>Undefined Akkor Periodikus = 5; EndIf; IfReportBuilder.DimensionsRows.Find ("PeriodWeek")<>Undefined OR Report Builder.DimensionsColumns.Find ("PeriodWeek")<>Undefined Akkor Periodikus = 4; EndIf; IfReportBuilder.DimensionsRows.Find ("PeriodDay")<>Undefined OR Report Builder.DimensionsColumns.Find ("PeriodDay")<>Undefined Akkor Periodikus = 3; EndIf; IfReportBuilder.DimensionsStrings.Find ("Regisztrátor")<>Undefined VAGY Report Builder.DimensionsColumns.Find ("naplózó")<>Undefined OR Report Builder.SelectedFields.Find ("Naplózó")<>Undefined Akkor Periodikus = 2; EndIf; Ha a frekvencia<>Undefined Then SelectionFieldBy Periodic = ReportBuilder.Selection.Add ("Frekvencia"); SelectionFieldBy Periodicity.Value = periodicitás; SelectionFieldByFrequency.Usage = igaz; EndIf; EndIf; Builder.Run (); Ha Kiválasztási mező Frekvencia szerint<>Undefined ThenReportBuilder.Collection.Remove (ReportBuild.Choice.Index (SelectionFieldBy Periodic)); EndIf;

12. Az építtető testreszabása

Ahhoz, hogy a felhasználó lehetőséget adjon a csoportosítások listájának, a szűrésnek, a kijelölt mezők vagy a rendezés megváltoztatására, elegendő létrehozni a jelentés "Építő" attribútuma, és a jelentés űrlapon elhelyezni egy táblázat mezőt és megadni adatként. forrás "Builder.DimensionsRows", "Builder.DimensionsColumns" , "Builder.Choose", "Builder.ChosenFields" vagy "Builder.Order".

Ezenkívül megadhatja a "Builder.AvailableFields" adatforrást is, és így először megtekintheti az elérhető mezők listáját, másodszor pedig helyi menü mezők hozzáadása csoportosításokhoz, kijelölésekhez, kiválasztott mezőkhöz vagy szűrőhöz.

Az 1C 8 lekérdezési nyelve a jól ismert "strukturált programozási nyelv" (ahogyan gyakran nevezik, SQL) egyszerűsített analógja. De az 1C-ben csak adatok olvasására használják, az objektum adatmodellt az adatok megváltoztatására használják.

Egy másik érdekes különbség az orosz szintaxis. Bár valójában használhat angol nyelvű konstrukciókat.

Példa kérés:

KIVÁLASZTÁS
Bankok.
Bankok.CorrSzámla
TÓL TŐL
Címtár Banks AS Banks

Ez a kérés lehetővé teszi számunkra, hogy információkat lássunk az adatbázisban szereplő összes bank nevéről és levelező számlájáról.

A lekérdező nyelv a legegyszerűbb és hatékony módszer információk megszerzése. Amint a fenti példából látható, a lekérdezési nyelven fellebbezni kell a metaadatok nevével (ez a konfigurációt alkotó rendszerobjektumok listája, azaz könyvtárak, dokumentumok, nyilvántartások stb.).

A lekérdező nyelvi konstrukciók leírása

Lekérdezés szerkezete

Az adatok megszerzéséhez elegendő a "SELECT" (select) és a "FROM" (from) konstrukciók használata. A legegyszerűbb kérés alábbiak szerint:

SELECT * FROM Könyvtárak.Nómenklatúra

Ahol a "*" a táblázat összes mezőjének kiválasztását jelenti, a References.Nomenclature pedig a táblázat neve az adatbázisban.

Nézzünk egy összetettebb és általánosabb példát:

KIVÁLASZTÁS
<ИмяПоля1>HOGYAN<ПредставлениеПоля1>,
Összeg(<ИмяПоля2>) HOGYAN<ПредставлениеПоля2>
TÓL TŐL
<ИмяТаблицы1>HOGYAN<ПредставлениеТаблицы1>
<ТипСоединения>ÖSSZETETT<ИмяТаблицы2>HOGYAN<ПредставлениеТаблицы2>
TOVÁBB<УсловиеСоединениеТаблиц>

AHOL
<УсловиеОтбораДанных>

LOAD BY
<ИмяПоля1>

RENDEZÉS
<ИмяПоля1>

EREDMÉNYEK
<ИмяПоля2>
TOVÁBB
<ИмяПоля1>

V ez a kérés a „Táblázatnév1” és „Táblázatnév” táblákból kiválasztjuk a „Mezőnév1” és „Mezőnév1” mezők adatait, a mezőkhöz az „AS” operátor segítségével szinonimákat rendelünk, bizonyos „Táblázatfeltétel” feltétellel összekapcsoljuk őket.

A beérkezett adatok közül csak azokat az adatokat választjuk ki, amelyek megfelelnek a feltételnek a „WHERE” „Adatvisszacsatolási feltétel” közül. Ezután a „Mezőnév1” mező alapján csoportosítjuk a kérelmet, miközben a „Mezőnév2” összegzést végzünk. mezőt és az utolsó mezőt a „FieldName2”.

Az utolsó lépés a kérés rendezése az ORDER BY konstrukcióval.

Általános konstrukciók

Tekintsük az 1C 8.2 lekérdezési nyelv általános konstrukcióit.

ELSŐn

Használva ezt az üzemeltetőt megkaphatja n az első rekordok számát. A bejegyzések sorrendjét a kérésben szereplő sorrend határozza meg.

ELSŐ 100 KIVÁLASZTÁSA
Bankok.
Bankok. Kód AS BIC
TÓL TŐL
Címtár Banks AS Banks
RENDEZÉS
Bankok.

A kérelem megkapja a "Bankok" könyvtár első 100 bejegyzését, ábécé sorrendben.

ENGEDÉLYEZVE

Ez a kialakítás a mechanizmussal való munka szempontjából releváns. A mechanizmus lényege, hogy az adatbázistábla egyes rekordjainak olvasását (és egyéb műveleteit) a felhasználókra korlátozza, nem pedig a tábla egészét.

Ha egy felhasználó egy kéréssel olyan rekordokat próbál beolvasni, amelyek számára elérhetetlen, hibaüzenetet kap. Ennek elkerülése érdekében az "ALLOWED" konstrukciót kell használnia, vagyis a kérés csak az arra engedélyezett rekordokat olvassa el.

ENGEDÉLYEZETT KIVÁLASZTÁS
További információk Store.Link
TÓL TŐL
Hivatkozás. További információk tárolása

KÜLÖNFÉLE

A „KÜLÖNBÖZŐ” használata lehetővé teszi, hogy kizárja az ismétlődő karakterláncokat az 1C lekérdezés eredményének beviteléből. A duplikáció azt jelenti, hogy a kérelem minden mezője megegyezik.

ELSŐ 100 KIVÁLASZTÁSA
Bankok.
Bankok. Kód AS BIC
TÓL TŐL
Címtár Banks AS Banks

EmptyTable

Ezt a konstrukciót nagyon ritkán használják lekérdezések kombinálására. Csatlakozáskor szükség lehet egy üres beágyazott tábla megadására az egyik táblában. Az "EmptyTable" operátor éppen erre alkalmas.

Példa az 1C 8 súgóból:

SELECT Hivatkozási szám, ÜRES (Nv, Tov, Menny.) AS Összetétel
Dokumentumból. Költség
ÖSSZESÍTES
SELECT Hivatkozási szám, Összetétel. (sorszám, cikk, mennyiség)
FROM Dokumentum.Számla bizonylat.Számla.Tartalom. *

NULLA

Nagyon hasznos funkció, amely sok hibát elkerül. A YesNULL () lehetővé teszi a NULL érték lecserélését a kívánt értékre. Nagyon gyakran használják az egyesített táblákban lévő érték jelenlétének tesztelésére, például:

KIVÁLASZTÁS
NomenclatureRef.Ref.
Van NULL (Tételegyenleg. Mennyiségi egyenleg, 0) AS Mennyiségi egyenleg
TÓL TŐL


Használhatja más módon is. Például, ha minden sor esetében nem ismert, hogy melyik táblázatban létezik az érték:

IS NULL (Számla beérkezett.dátuma, számla szerkesztett.dátuma)

Az AS egy operátor, amely lehetővé teszi számunkra, hogy nevet (szinonimát) rendeljünk egy táblához vagy mezőhöz. A fenti felhasználási példát láttuk.

Ezek a konstrukciók nagyon hasonlóak – lehetővé teszik karakterlánc-ábrázolás elérését kívánt értéket... Az egyetlen különbség az, hogy a REPRESENTATION bármilyen értéket karakterlánctípussá alakít, a REFERENCE REPRESENTATION pedig csak referenciaértékeket. A REFERENCIA ÁBRÁZOLÁS használata javasolt az adatösszeállítási rendszer optimalizálási lekérdezéseinél, kivéve, ha természetesen a referencia adatmezőt tervezzük használni a szűrőkben.

KIVÁLASZTÁS
Nézet (link), // sor, például "2015.10.10., 123. számú előzetes jelentés
Ábrázolás (törlésjel) AS Törlési jel szövege, // karakterlánc, "Igen" vagy "Nem"
Hivatkozási nézet (törlési jel) AS Törlési jel Logikai // Logikai, igaz vagy hamis
TÓL TŐL
Document.Advance Report

EXPRESSZ

Az Express lehetővé teszi a mezőértékek konvertálását a kívánt adattípusra. Egy értéket primitív típusra vagy referenciatípusra konvertálhat.

Az Express for referenciatípus a kért adattípusok korlátozására szolgál összetett típusú mezőkben, gyakran a rendszer teljesítményének optimalizálására. Példa:

EXPRESS (Költség.Subconto1 táblázat, mint referencia.Költségcikk) .Tevékenységtípus Adóköltség-elszámoláshoz

Primitív típusoknál ezt a függvényt gyakran használják a karakterek számának korlátozására a korlátlan hosszúságú mezőkben (az ilyen mezőket nem lehet összehasonlítani). A hiba elkerülése érdekében Érvénytelen paraméterek az összehasonlítási műveletben. A mezőket nem lehet összehasonlítani
korlátlan hosszúság és nem kompatibilis típusú mezők
", Az ilyen mezőket a következőképpen kell kifejezni:

EXPRESS (megjegyzés AS sor (150))

KÜLÖNBSÉG

Szerezzen 267 1C videós oktatóanyagokat ingyen:

Példa az IS NULL használatára 1C kérésben:

VÁLASSZ
Spr
LEFT CSATLAKOZÁS Felhalmozási nyilvántartás.Termékek Raktárokban.Megmaradó árukként Left
Software NomenclatureRef.Ref = ImplementedCommentsComponentsRemains.Nomenclature
HOL VAN AZ ÁRUK EGYENLEGE. Mennyiség Az egyenleg NULLA

Az adattípust a lekérdezésben a következőképpen határozhatja meg: a TYPE () és a TYPE () függvények használatával, vagy a logikai operátor LINK. Ez a két funkció hasonló.

Előre meghatározott értékek

Amellett, hogy az átadott paramétereket a kérésekben az 1C lekérdezési nyelven használja, használhat előre meghatározott értékeket, ill. Például felsorolások, előre meghatározott könyvtárak, számlatáblázatok stb. Ehhez az "Érték ()" konstrukciót használjuk.

Használati példa:

WHERE Nomenclature.NomenclatureType = Érték (Directory.NomenclatureTypes.Product)

WHERE Partnerek. Kapcsolattartási adatok típusa = Érték (Felsorolás. Kapcsolatfelvételi adatok típusai. Telefon)

WHERE Számlaegyenlegek.Számla = Érték (Számlaterv. Önfenntartó.Nyereség)

Kapcsolatok

4 típusú kapcsolat létezik: BAL, JOBB, TELJES, BELSŐ.

BAL és JOBB CSATLAKOZÁS

Az összekapcsolások két tábla összekapcsolására szolgálnak egy adott feltétel szerint. Funkció itt: BAL ÍZÜLET abban, hogy az első megadott táblát teljes egészében vesszük és a második táblát feltételhez kötjük. A második tábla azon mezői, amelyeket a feltétel nem köthet, kitöltődnek az értékkel NULLA.

Például:

Csak azokon a helyeken adja vissza a Partnerek teljes tábláját és tölti ki a „Bank” mezőt, ahol a „Counterparts.Name = Banks.Name” feltétel teljesül. Ha a feltétel nem teljesül, a Bank mező kerül beállításra NULLA.

JOBB ÍZÜLET 1C nyelven teljesen ugyanaz BAL kapcsolat, egy különbség kivételével - in HELYES CSATLAKOZTATÁS A „fő” táblázat a második, nem az első.

TELJES KAPCSOLAT

TELJES KAPCSOLAT abban különbözik a bal és a jobb oldaltól, hogy két tábla összes rekordját jeleníti meg, csak azokat kapcsolja össze, amelyeket feltétel szerint össze tud kapcsolni.

Például:

TÓL TŐL

TELJES KAPCSOLAT
Címtár Banks AS Banks

TOVÁBB

A lekérdezési nyelv csak akkor adja vissza mindkét táblát teljes egészében, ha a rekordok összekapcsolásának feltétele teljesül. A bal/jobb összekapcsolással ellentétben a NULL-ok két mezőben jelenhetnek meg.

BELSŐ CSATLAKOZTATÁS

BELSŐ CSATLAKOZTATÁS abban különbözik a teljestől, hogy csak azokat a rekordokat jeleníti meg, amelyeket a megadott feltétel összekapcsolhat.

Például:

TÓL TŐL
Címtár Vállalkozók AS ügyfelek

BELSŐ CSATLAKOZTATÁS
Címtár Banks AS Banks

TOVÁBB
Clients.Name = Banks.Name

Ez a kérelem csak azokat a sorokat adja vissza, amelyekben a bank és a partner neve megegyezik.

Egyesületek

A COMBINE and COMBINE ALL konstrukció két eredményt egyesít egybe. Azok. a kettő előadásának eredménye „összeolvad” egy, közös.

Vagyis a rendszer a megszokott módon működik, csak ideiglenes tábla esetén.

Az INDEX SZOFTVER használata

Van azonban egy szempont, amelyet figyelembe kell venni. Egy ideiglenes táblán lévő index felépítése is időt vesz igénybe. Ezért csak akkor célszerű a "" konstrukciót használni, ha biztosan tudjuk, hogy nem lesz 1-2 rekord az ideiglenes táblában. Ellenkező esetben a hatás ellentétes lehet - az indexelt mezők teljesítménye nem kompenzálja az index létrehozásának idejét.

KIVÁLASZTÁS
ValutaárfolyamokSliceLast.Currency AS Currency,
ValutaárfolyamokSzeletLast.Course
POST valutaárfolyamok
TÓL TŐL
Information Register.Currency Rates.SliceLast (& Period,) AS Currency RatesSliceLast
INDEX BY
Valuta
;
KIVÁLASZTÁS
Árak
ÁrakNómenklatúrák .Ár,
ÁrakNómenklatúrák. Pénznem,
Valuta árfolyamok.
TÓL TŐL
Információk Register.PricesNomenclature.SliceLast (& időszak,
B nómenklatúra (& nómenklatúra) ÉS PriceType = & PriceType) AS árak
BAL UNION valutaárfolyamok AS valutaárfolyamok
BY RatesNomenclature.Currency = RatesCurrency.Currency

Csoportosítás

Az 1C lekérdezési nyelv lehetővé teszi speciális összesítő függvények használatát a lekérdezési eredmények csoportosítása során. A csoportosítás összesítő függvények nélkül is használható a duplikációk "kiküszöbölésére".

A következő funkciók érhetők el:

Összeg, Szám, Különböző száma, Maximum, Minimum, Átlag.

1. példa:

KIVÁLASZTÁS
Áruk, szolgáltatások, áruk, nómenklatúra értékesítése,
ÖSSZEG (Áruk, szolgáltatások, áruk értékesítése. Mennyiség) AS Mennyiség,
AMOUNT (GoodsServicesGoods.Amount) AS Amount
TÓL TŐL

BETÖLTÉS
Realization of GoodsSzolgáltatásokGoods.Nómenklatúra

A kérelem megkapja az összes árut tartalmazó sort, és összegzi azokat mennyiség és mennyiség szerint a tétel összefüggésében.

2. példa

KIVÁLASZTÁS
Bankok. Kód,
MENNYISÉG (KÜLÖNBÖZŐ Bankok.Link) AS QuantityDoubles
TÓL TŐL
Címtár Banks AS Banks
BETÖLTÉS
Banki kód

Ez a példa megjeleníti a BIC-ek listáját a "Bankok" könyvtárban, és megmutatja, hogy mindegyikhez hány ismétlődés létezik.

Eredmények

Az összegzések egy módja annak, hogy adatokat kapjunk egy hierarchikus rendszerből. Az összesítő függvények összefoglaló mezőkhöz, valamint csoportosításokhoz használhatók.

Az összegek gyakorlati felhasználásának egyik legnépszerűbb módja az áruk tételes leírása.

KIVÁLASZTÁS




TÓL TŐL
Document.Realization of GoodsServices.Goods AS Sale ofGoodsServicesGoods
RENDEZÉS

EREDMÉNYEK
SUM (mennyiség),
SUM (összeg)
TOVÁBB
Elnevezéstan

A lekérdezés eredménye a következő hierarchikus lesz:

Általános összefoglaló

Ha az összes "összesítéshez" szeretne összesítést kapni, használja az "ÁLTALÁNOS" operátort.

KIVÁLASZTÁS
GoodsServicesGoods. Nómenklatúra AS Nómenklatúra,
A GoodsServicesGoods.Link AS dokumentum megvalósítása,
Áruk, szolgáltatások, áruk realizálása. Mennyiség AS Mennyiség,
Áruk értékesítéseSzolgáltatásokGoods.Amount AS Amount
TÓL TŐL
Document.Realization of GoodsServices.Goods AS Sale ofGoodsServicesGoods
RENDEZÉS
A GoodsServicesGoods.Link.Date megvalósítása
EREDMÉNYEK
SUM (mennyiség),
SUM (összeg)
TOVÁBB
TÁBORNOK,
Elnevezéstan

A lekérdezés végrehajtása eredményeként a következő eredményt kapjuk:

Amelyben a csoportosítás 1. szintje az összes kötelező mező összesítése.

Rendelés

Az ORDER BY operátor a lekérdezés eredményének rendezésére szolgál.

A primitív típusok (karakterlánc, szám, logikai érték) rendezése a szokásos szabályok szerint történik. A hivatkozástípusok mezőinél a rendezés a hivatkozás belső reprezentációja (egyedi azonosító) alapján történik, nem pedig kód vagy a hivatkozás reprezentációja alapján.

KIVÁLASZTÁS

TÓL TŐL
Hivatkozás.Nómenklatúra AS Nómenklatúra
RENDEZÉS
Név

A lekérdezés megjeleníti a nómenklatúra referenciakönyvének nevének listáját, ábécé sorrendben.

Automatikus rendelés

A rendezés nélküli lekérdezés eredménye egy kaotikusan bemutatott sorhalmaz. Az 1C platform fejlesztői nem garantálják a karakterláncok ugyanabban a sorrendben történő kimenetét, amikor ugyanazokat a lekérdezéseket hajtják végre.

Ha konzisztens sorrendben kell megjelenítenie a táblázat rekordjait, akkor az "Autoorder" konstrukciót kell használnia.

KIVÁLASZTÁS
Nomenklatúra Név AS Név
TÓL TŐL
Hivatkozás.Nómenklatúra AS Nómenklatúra
AUTOMATIKUS RENDELÉS

Virtuális asztalok

Az 1C virtuális táblák az 1C lekérdezési nyelv egyedi jellemzői, amely más hasonló szintaxisokban nem található. Virtuális asztal - gyors út profilinformációk beszerzése a nyilvántartásokból.

Mindegyik regisztertípusnak saját virtuális táblakészlete van, amelyek a regiszterbeállításoktól függően eltérőek lehetnek.

  • szelet az elsőből;
  • az utóbbi vágása.
  • maradék;
  • forradalmak;
  • egyenlegek és forgalom.
  • mozgások az alkontóból;
  • forradalmak;
  • RPM Dt Kt;
  • maradék;
  • egyenlegek és forgalom
  • subconto.
  • bázis;
  • grafikon adatok;
  • a tényleges érvényességi idő.

A megoldásfejlesztők számára az adatokat egy (virtuális) táblából veszik, valójában azonban az 1C platform sok táblából vesz, és átalakítja azokat a kívánt formába.

KIVÁLASZTÁS
TermékekRaktárban Egyenlegek és Forgások.Nómenklatúra,
Termékek Raktárban Egyenlegek és Forgások. Mennyiség Kezdő egyenleg,
Áruk Raktárban Egyenlegek és Forgások. Mennyiség Forgalom,
Áruk raktárban Egyenlegek és forgalom. Mennyiségbevétel,
Áruk Raktárban Egyenlegek és Forgások. Mennyiség
Termékek Raktárban Egyenlegek és Forgások. MennyiségVégső egyenleg
TÓL TŐL
Felhalmozási nyilvántartás. Áruk a raktárakban. Kiegyensúlyozások és forgalom, mint áruk a raktárakban Mérlegek és forgalom

Egy ilyen kérés lehetővé teszi a gyors fogadást nagyszámú adat.

Virtuális táblázat paraméterek

Magasan fontos szempont virtuális táblákkal való munkavégzés - paraméterek segítségével. Virtuális tábla paraméterei - speciális paraméterek a kiválasztáshoz és hangoláshoz.

Az ilyen táblák esetében helytelennek tekinthető a "WHERE" konstrukcióban történő kijelölés használata. Amellett, hogy a kérés nem válik optimálissá, lehetőség van hibás adatok fogadására.

Példa az ilyen paraméterek használatára:

Felhalmozási nyilvántartás.ProductsIn Warehouses.RemainsAndTurnovers (& kezdeti időszak, & végi időszak, hónap, mozgások és időszakhatárok, nómenklatúra = & kívánt nómenklatúra)

Virtuális táblák algoritmusa

Például a leggyakrabban használt "Residuals" típusú virtuális tábla két fizikai tábla - egyenlegek és mozgások - adatait tárolja.

Virtuális tábla használatakor a rendszer a következő műveleteket hajtja végre:

  1. A dátum és a méretek tekintetében a legközelebbi számított értéket kapjuk az összegtáblázatban.
  2. „Adja hozzá” az összeget a mozgástáblázatból az összesített táblázat összegéhez.


Az ilyen egyszerű műveletek jelentősen javíthatják a rendszer egészének teljesítményét.

A Lekérdezéskészítő használata

Lekérdezés konstruktor- az 1C vállalati rendszerbe épített eszköz, amely nagyban megkönnyíti az adatbázis lekérdezésének fejlesztését.

A lekérdezéskonstruktor meglehetősen egyszerű, intuitív tiszta felület... Nézzük azonban meg közelebbről a lekérdezéskonstruktor használatát.

A lekérdező szöveg konstruktort a helyi menü (jobb egérgombbal) indítja el a programkód megfelelő helyén.

Az 1C lekérdezés konstruktor leírása

Nézzük meg közelebbről az egyes tervezési lapot. A kivétel a Builder lap, amely egy másik beszélgetés témája.

Táblázatok és mezők

Ez a lap határozza meg a jelentésben megjeleníteni kívánt adatforrást és mezőket. Valójában a konstrukciók VÁLASZTJÁK .. BŐL.

A forrás lehet fizikai adatbázis -tábla, virtuális regisztertábla, ideiglenes táblák, beágyazott lekérdezések stb.

A virtuális táblák helyi menüjében beállíthatja a virtuális tábla paramétereit:

Linkek lap

A fül több tábla kapcsolatainak leírására szolgál, konstrukciókat hoz létre a CONNECTION szóval.

Csoportosítás lap

Ezen a lapon a rendszer lehetővé teszi a táblázat eredményének kötelező mezőinek csoportosítását és összesítését. Leírja a GROUP BY, SUM, MINIMUM, AVERAGE, MAXIMUM, MENNYISÉG, KÜLÖNBÖZŐ SZÁMA konstrukciók használatát.

Feltételek fül

Felelős mindazért, ami a WHERE konstrukció után a kérés szövegében szerepel, vagyis a kapott adatokkal kapcsolatos minden feltételért.

Speciális lap

Tab Továbbá tele van mindenféle paraméterrel, ami nagyon fontos. Tekintsük az egyes tulajdonságokat.

Csoportosítás Rekordok lekérése:

  • Először N- egy paraméter, amely csak N rekordot ad vissza a lekérdezéshez (FIRST operátor)
  • Nincs ismétlés- biztosítja a fogadott rekordok egyediségét (operátor MÁS)
  • Engedélyezett- lehetővé teszi, hogy csak azokat a rekordokat válasszuk ki, amelyeket a rendszer lehetővé tesz, figyelembe véve (konstrukció ENGEDÉLYEZVE)

Csoportosítás Kérelem típusa meghatározza, hogy milyen típusú lekérdezés lesz: adatok lekérése, ideiglenes tábla létrehozása vagy ideiglenes tábla megsemmisítése.

Alul van egy zászló A fogadott adatok blokkolása a későbbi módosításhoz... Lehetővé teszi az adatzár beállításának lehetőségét, amely biztosítja az adatok biztonságát a beolvasás pillanatától a módosításig (csak Automata üzemmód zárak, kivitel VÁLTOZÁSRA).

Szakszervezetek / Fedőnevek Tab

A lekérdezéstervező ezen a lapján beállíthatja a különböző táblák és álnevek kombinálásának lehetőségét (HOGYAN szerkesztés). A táblázatok a bal oldalon láthatók. Ha a táblával szemben beállítja a zászlókat, akkor az UNION konstrukció kerül felhasználásra, ellenkező esetben - UNION ALL (a két módszer különbözik). A jobb oldalon a mezők egyezései láthatók különböző táblázatok ha nincs egyezés megadva, a lekérdezés NULL értéket ad vissza.

Rendelés fül

Itt adja meg az értékek rendezési sorrendjét (ORDER BY) - csökkenő (DESCENT) vagy növekvő (RETURN).

Van egy érdekes zászló is - Automatikus rendelés(a kérésben - AUTOMATIKUS RENDELÉS). Alapértelmezés szerint az 1C rendszer "kaotikus" sorrendben jeleníti meg az adatokat. Ha bejelöli ezt a jelölőnégyzetet, akkor a rendszer belső adatok szerint rendezi az adatokat.

Lekérdezési csomag lap

A lekérdezéstervező lapján újakat hozhat létre, és navigációként is használhatja. A kérés szövegében a csomagokat „;” (vesszőpont) választja el.

Lekérdezés gomb a Lekérdezéskészítőben

A lekérdezéskonstruktor bal alsó sarkában található a Lekérdezés gomb, amellyel bármikor megtekintheti a lekérdezés szövegét:

Ebben az ablakban módosíthatja a kérést, és végrehajthatja azt.


A Query Console használata

A Lekérdezési konzol egyszerű és kényelmes módja a bonyolult lekérdezések hibakeresésének és az információk gyors lekérésének. Ebben a cikkben megpróbálom leírni, hogyan kell használni a Query Console-t, és megadok egy linket a Query Console letöltéséhez.

Nézzük meg közelebbről ezt az eszközt.

Töltse le az 1C Query Console-t

Először is, a Query Console használatának megkezdéséhez le kell töltenie valahonnan. A folyamatokat általában két típusra osztják - kezelt és normál formákra (vagy néha 8.1-en és 8.2-on / 8.3-on hívják őket).

Megpróbáltam ezt a két típust egy feldolgozásban kombinálni - a kívánt üzemmódban megnyílik a kívánt űrlap (in vezérelt mód a konzol csak félkövér módban működik).

Az 1C lekérdező konzol leírása

Nézzük meg a lekérdezési konzolt a fő feldolgozópanel leírásával:

A lekérdezési konzol fejlécében ezredmásodperces pontossággal láthatjuk az utolsó lekérdezés végrehajtási idejét, ez lehetővé teszi a különböző konstrukciók teljesítménybeli összehasonlítását.

A parancssor első gombcsoportja felelős az aktuális kérések külső fájlba mentéséért. Ez nagyon kényelmes, mindig visszatérhet egy összetett lekérdezés írásához. Vagy például vezessen egy listát bizonyos konstrukciók tipikus példáiról.

A bal oldali Lekérdezés mezőben új lekérdezéseket hozhat létre, és elmentheti őket egy fa szerkezetbe. A gombok második csoportja csak a kérések listájának kezeléséért felelős. Ezzel kérést hozhat létre, másolhat, törölhet, áthelyezhet.

  • Végrehajtásvizsgálat- egyszerű végrehajtás és az eredmény elérése
  • Csomag futtatása- lehetővé teszi az összes köztes kérés megtekintését a kérelemkötegben
  • Ideiglenes táblázatok megtekintése- lehetővé teszi az ideiglenes lekérdezések által visszaadott eredmények megtekintését a táblázatban

Kérelem paraméterei:

Lehetővé teszi a kérés aktuális paramétereinek beállítását.

A lekérdezési paraméterek ablakban a következők érdekesek:

  • Gomb Kérésre automatikusan megtalálja az összes paramétert a kérésben a fejlesztő kényelme érdekében.
  • Zászló Egységes paraméterek minden kéréshez- telepítéskor a feldolgozása nem törli a paramétereket, amikor kérésről kérésre halad általános lista kéréseket.

Állítsa be a paramétert értéklistaként nagyon egyszerű, amikor kiválaszt egy paraméterértéket, nyomja meg a gombot az érték törléséhez (kereszt), a rendszer felajánlja az adattípus kiválasztását, ahol ki kell választania az „Értékek listája” lehetőséget:

be is felső panel nagyon sok gomb található a lekérdezési konzol beállításainak meghívásához:

Itt adhatja meg az automatikus mentési lekérdezések és a lekérdezés végrehajtásának beállításait.

A lekérdezés szövege a konzol lekérdezési mezőjébe kerül. Ez megtehető egy egyszerű lekérdezési tesztkészlettel vagy egy speciális eszköz - a lekérdezéstervező - hívásával.

Az 1C 8 lekérdezés konstruktor a helyi menüből (jobb egérgombbal) hívható meg, amikor a beviteli mezőre kattintunk:

Ebben a menüben is vannak ilyenek hasznos funkciókat törlés vagy sortörés karakterek („|”) hozzáadása a kéréshez, vagy a kérelem kódjának ilyen kényelmes formában történő beszerzése:

Request = Új kérés;
Request.Text = "
| VÁLASSZ
| Pénznemek.Link
| FROM
| Címtár. Pénznemek AS Pénznemek ”;
QueryResult = Query.Run ();

A lekérdezési konzol alsó mezőjében megjelenik a lekérdezés eredménymezője, amelyhez ez a feldolgozás létrejött:



Ezenkívül a lekérdezési konzol a listán kívül képes megjeleníteni az adatokat fa formájában - az összesített lekérdezések esetén.

Lekérdezések optimalizálása

Az egyik kritikus pontok az 1C vállalat termelékenységének növelésében a 8.3 optimalizáláskéréseket... Ez a pont akkor is nagyon fontos, amikor bizonyítvány átadása... Az alábbiakban a lekérdezések szuboptimális működésének tipikus okairól és az optimalizálás módszereiről lesz szó.

Kijelölések a virtuális táblázatban a WHERE konstrukció használatával

A virtuális tábla részleteire csak a BT paramétereken keresztül szükséges szűrőket alkalmazni. Semmi esetre se használja a WHERE konstrukciót a virtuális táblában történő kijelöléshez, ez optimalizálási szempontból durva hiba. A WHERE segítségével történő kiválasztás esetén tulajdonképpen MINDEN rekordot kap a rendszer, és csak ezután választja ki a szükségeseket.

JOBB:

KIVÁLASZTÁS

TÓL TŐL
Felhalmozási nyilvántartás. Kölcsönös elszámolások Deponensekkel Szervezetek. Egyensúlyok (
,
Szervezet = & Szervezet
And Individual = & Individual) HOGYAN Kölcsönös elszámolások Deponensekkel Szervezetekkel

NEM JÓ:

KIVÁLASZTÁS
Kölcsönös elszámolások Deponensekkel Szervezetekkel Egyenlegek.ÖsszegEgyenleg
TÓL TŐL
Felhalmozási nyilvántartás.Kölcsönös elszámolások Deponensekkel Szervezetekkel. Egyenlegek (,) AS Kölcsönös elszámolások Deponensekkel Szervezetekkel Egyenlegek
AHOL
SettlementsWith DeponentsOrganizationsBalances.Organization = & Szervezet
És kölcsönös elszámolások Deponensekkel Szervezetekkel Egyenlegek. Személyes = & Egyéni

Egy összetett típusú mező értékének lekérése ponton keresztül

Amikor összetett típusú adatokat fogad egy lekérdezésben egy ponton keresztül, a rendszer bal oldali összekapcsolással pontosan annyi táblához csatlakozik, ahány típus lehetséges az összetett típus mezőjében.

Például nagyon nem kívánatos, hogy az optimalizálás a regiszterrekord mezőre - a regisztrátorra - hivatkozzon. Az anyakönyvvezető összetett adattípussal rendelkezik, beleértve az összes lehetséges dokumentumtípust, amely adatokat írhat a nyilvántartásba.

NEM JÓ:

KIVÁLASZTÁS
Record Set.Recorder.Date,
Rekordok halmaza. Szám
TÓL TŐL
Felhalmozási nyilvántartás.ProductsOrganizations AS SetRecords

Azaz valójában egy ilyen kérés nem egy táblára, hanem 22 adatbázistáblára vonatkozik (ebben a regiszterben 21 féle regisztrátor van).

JOBB:

KIVÁLASZTÁS
VÁLASZTÁS
WHEN GoodsOrg.Registrar LINK Document.Realization of GoodsServices
THEN EXPRESS (GoodsOrg.Registrar AS Document.Realization of GoodsServices) .Date
WHEN GoodsOrg.Registrar LINK Dokumentum.Arrival of GoodsServices
THEN EXPRESS (GoodsOrg.Registrar AS Document.Arrival of GoodsServices) .Date
VÉGE AS Dátum,
TermékekOrg. Mennyiség
TÓL TŐL
Felhalmozási nyilvántartás.ProductsOrg

Vagy a második lehetőség az ilyen információk hozzáadása a kellékekhez, például esetünkben dátum hozzáadása.

JOBB:

KIVÁLASZTÁS
ProductsOrganizations.Date,
Termékek Szervezetek. Szám
TÓL TŐL
Felhalmozási nyilvántartás. A szervezetek árui, mint a szervezetek árui

Allekérdezések csatlakozási állapotban

Optimalizáláshoz elfogadhatatlan az allekérdezések használata összekapcsolási feltételek mellett, ez jelentősen lelassítja a lekérdezést. Ilyen esetekben célszerű a VT-t használni. A csatlakozáshoz csak metaadatokat és BT-objektumokat kell használnia, miután azokat előzőleg indexelte a kapcsolati mezők szerint.

NEM JÓ:

KIVÁLASZTÁS…

BAL KÖZÖS (
VÁLASZTÁS AZ INFORMÁCIÓBÓL REGISTER.Limits
AHOL …
BETÖLTÉS...
) TOVÁBB …

JOBB:

KIVÁLASZTÁS…
POST limitek
Az információs nyilvántartásból. Korlátok
AHOL …
BETÖLTÉS...
INDEX BY…;

KIVÁLASZTÁS…
FROM Dokumentum.Realization of GoodsSzolgáltatások
LEFT JOIN Limits
TOVÁBB …;

Rekordok összekapcsolása virtuális táblákkal

Vannak olyan helyzetek, amikor a rendszer nem működik optimálisan, amikor egy virtuális táblát másokkal összekapcsol. Ebben az esetben a lekérdezés teljesítményének optimalizálása érdekében megpróbálhatja a virtuális táblát egy ideiglenes táblába helyezni, ne felejtse el indexelni az összekapcsolt mezőket az ideiglenes táblalekérdezésben. Ennek az az oka, hogy a VT-ket gyakran a DBMS több fizikai táblája is tartalmazza, ennek eredményeként egy részlekérdezés történik ezek kiválasztásához, és a probléma hasonló az előző ponthoz.

Szűrők használata nem indexelt mezőkön

Az egyik leggyakoribb hiba a lekérdezések írásakor a feltételek használata nem indexelt mezőkre, ennek ellentmond lekérdezés optimalizálási szabályok. A DBMS nem tudja optimálisan végrehajtani a lekérdezést, ha nem indexelt mezők szerinti szűrést ír elő a lekérdezésben. Ha ideiglenes táblát veszünk, akkor az összekapcsolási mezőket is indexelni kell.

Minden feltételhez megfelelő indexnek kell lennie. Az alábbi követelményeknek megfelelő index alkalmas:

  1. Az index tartalmazza a feltételben felsorolt ​​összes mezőt.
  2. Ezek a mezők az index legelején találhatók.
  3. Ezek a kijelölések sorban vannak, vagyis azok az értékek, amelyek nem vesznek részt a lekérdezési feltételben, nincsenek "beékelve" közéjük.

Ha a DBMS nem találja meg a megfelelő indexeket, akkor a teljes tábla vizsgálata megtörténik – ez nagyon negatív hatással lesz a teljesítményre, és a teljes rekordkészlet hosszan tartó blokkolásához vezethet.

Logikai VAGY használata feltételekben

Ez minden, ez a cikk a lekérdezésoptimalizálási szempontok alapjait ismertette, amelyeket minden 1C szakértőnek tudnia kell.

Egy nagyon hasznos ingyenes videó tanfolyam a lekérdezések fejlesztéséről és optimalizálásáról, erősen ajánlott kezdőknek és nem csak!

A jelentések készítése során néha szükségessé válik olyan jelentés megjelenítése, amelyhez a lekérdezési nyelv használatával nem lehet adatot szerezni. Ilyen helyzet állhat elő például akkor, ha egy bizonyos komplex algoritmust használnak az adatok kiszámításához, vagy ha a jelentés kimeneti adatait nem a információs bázis, és például innen külső fájl... A jelentéskészítő lehetővé teszi, hogy tetszőleges adatforrásból készítsen jelentést.
A következők használhatók adatforrásként a jelentés kiadásához:

  • Értéktáblázat,
  • A kérés eredménye,
  • Táblázat hatóköre Dokumentumcellák,
  • táblázatos rész,
  • Felhalmozási nyilvántartásRecordSet,
  • DatasheetRecordSet,
  • Számviteli RegisterRecordSet,
  • Számítás RegisterRecordSet.
Ahhoz, hogy a jelentéskészítő jelentést jelenítsen meg egy tetszőleges adatforrásról, elegendő az adatforrás leírását a DataSource builder tulajdonságra állítani. A DataSource jelentéskészítő tulajdonság tartalmazhat egy DataSource Description típusú értéket. A DataSourceDescription objektum magát az adatforrást tartalmazza, valamint az adatforrás oszlopainak leírását is. Minden adatforrás oszlop leírása tartalmazza:
  • Név – tartalmazza az adatforrás oszlopának nevét,
  • PathData – az oszlopok egymástól való függésének leírását tartalmazza. Az az oszlop, amelynek adatútvonala egy másik mező adatútjából egy ponton keresztül származik, egy másik oszlop attribútumának tekintendő. Ha a mező ponttal elválasztva tartalmazza a Representation szót, akkor ez a mező annak az oszlopnak a reprezentációja, amelynek adatútvonalából az ábrázolást kapjuk. Példák. Ha a „Nómenklatúra” oszlop elérési utat mutat a „Nómenklatúra” adatokhoz, a „Kód” oszlop pedig a „Nómenklatúra.Kód” adatok elérési útja, akkor ez az oszlop a „Nómenklatúra” oszlop attribútumaként fog szerepelni. A "Nómenklatúra. Ábrázolás" adat elérési útját tartalmazó oszlop a "Nómenklatúra" oszlop reprezentációja lesz,
  • Mező – annak jele, hogy ez az oszlop jelentésmezőként használható,
  • A rendelés annak a jele, hogy adott oszlopra lehetséges a rendelés,
  • A kiválasztás annak a jele, hogy adott oszlopra választást lehet előírni,
  • Dimenzió – annak jele, hogy ez az oszlop használható a jelentés csoportosításaként,
  • A Total egy karakterlánc, amely kifejezést tartalmaz az összeg kiszámításához. A jelentéskészítőben ennek a karakterláncnak a kifejezése megegyezik a lekérdezési nyelvben használt teljes összeg kiszámításához használt kifejezéssel,
Amikor adatforrást állít be a DataSourceDescription objektumhoz, az oszlopleírások automatikusan létrejönnek és kitöltődnek.

A DataSourceDescription objektum rendelkezik egy konstruktorral, melynek paramétereként olyan adatforrás adható át, amelyhez leírás készül, míg a DataSource tulajdonság az átvitt adatforrással, az oszlopleírások az oszlopokról információval töltődnek fel az adatforrást.

Példa adatforrás beállítására a jelentéskészítőhöz:

ReportBuilder.DataSource = NewDataSourceDescription (ValueTableResult);

A jelentéskészítővel végzett további munka nem különbözik a jelentéskészítővel végzett munkavégzéstől a lekérdezési módban: a jelentéskészítő biztosítja a teljes funkcionalitást, kivéve a hierarchikus összegek kimenetét. Ezen túlmenően, ha tetszőleges adatforrással dolgozik, nem kaphat olyan lekérdezést a jelentéskészítőtől, amely az információs bázisból való adatok lekérésére szolgál.

Az egyéni adatforrás Lekérdezéskészítővel végzett munka ugyanaz, mint az egyéni jelentéskészítővel.

Az 1C programozás nem csak egy programírásból áll. Az 1C a felhasználói műveletek és adatok tömbje, amellyel dolgozik.

Az adatokat adatbázisban tárolják. Az 1C kérések egy módja annak, hogy adatokat szerezzünk be az adatbázisból, hogy megmutassuk azokat a felhasználónak az űrlapon vagy feldolgozzuk.

A jelentés alapvető része egy 1C kérés. Az ACS jelentés esetében ez a jelentés többsége.

Ülj le. Levegőt venni. Vedd lazán. Most elmondom a hírt.

Az 1C programozáshoz nem elég ismerni az 1C programozási nyelvet. Ismernie kell az 1C kérések nyelvét is.

Az 1C lekérdező nyelv egy teljesen különálló nyelv, amely lehetővé teszi számunkra, hogy megadjuk, milyen adatokat kell lekérnünk az adatbázisból.

Ez is kétnyelvű - vagyis írhat oroszul vagy angolul. Kivételesen hasonlít a nyelvhez SQL lekérdezésekés aki ismer egyet, az megnyugodhat.

Hogyan használják az 1C kéréseket

Amikor a felhasználó elindítja az 1C-t Enterprise módban, egyetlen gramm adat sincs az elindított kliensben. Ezért, ha meg kell nyitnia egy könyvtárat, az 1C adatokat kér az adatbázisból, azaz 1C kérést küld.

Az 1C kérések a következők:

  • Automatikus kérések 1C
    Ezeket a rendszer automatikusan generálja. Létrehozott egy dokumentumlista űrlapot. Hozzáadott egy oszlopot. Ez azt jelenti, hogy amikor megnyitja ezt az űrlapot Vállalati módban, a rendszer kérést küld, és ehhez az oszlophoz tartozó adatokat kéri.
  • Félautomata 1C lekérdezések
    Az 1C nyelvben számos módszer (függvény) létezik, amelyek elérésekor kérés érkezik az adatbázishoz. Pl. GetObject ()
  • Kézi 1C kérések (a programozó kifejezetten kérésként írta meg)
    Ön is írhat egy 1C kérést a kódba, és végrehajthatja azt.

1C kérések létrehozása és végrehajtása

Az 1C kérés a kérés tényleges szövege az 1C lekérdezési nyelven.
A szöveg tollal írható. Vagyis fogj és írj (ha ismered ezt a nyelvet).

Mivel az 1C népszerűsíti a vizuális programozás koncepcióját, ahol sok vagy szinte mindent meg lehet csinálni anélkül, hogy tollal kódot írnánk, van egy speciális Query Constructor objektum, amely lehetővé teszi a lekérdezés szövegének rajzolását a lekérdezés nyelvének ismerete nélkül. Csodák azonban nem történnek - ehhez tudnia kell, hogyan kell dolgozni a kivitelezővel.

Miután az 1C kérés szövege elkészült, végre kell hajtani. Ehhez van egy objektum az 1C kód kérésben (). Íme egy példa:

Request = Új kérés ();
Request.Text = "VÁLASZTÁS
| Nomenklatúra.Ref.
| FROM
| Hivatkozás.Nómenklatúra AS Nómenklatúra
| HOL
| Nómenklatúra.Szolgáltatás ";
Kijelölés = Query.Run () Kijelölés ();

Jelentés (Sample.Link);
Ciklus vége;

Amint a példában látható - az 1C kérés végrehajtása után az eredmény megérkezik hozzánk, és fel kell dolgoznunk. Az eredmény a táblázat egy vagy több sora (speciális formában).

Az eredmény egy normál táblázatba helyezhető:
Lekérés = Query.Run (). Unload (); // Az eredmény egy értékek táblázata

Vagy csak körbejárja a vonalakat.
Kijelölés = Query.Run () Kijelölés ();
Mintavétel közben.Next () Loop
// Csináljon valamit a lekérdezés eredményeivel
Ciklus vége;

1C kérések kezelése

Az 1C kérések alapelvei

Az 1C lekérdezés felépítésének alapelvei a következők:
SELECT ListFields FROM TABLE TABLE WHERE Feltételek

Példa egy ilyen 1C kérés létrehozására:

KIVÁLASZTÁS
// a kiválasztandó mezők listája
Link,
Név,
Kód
TÓL TŐL
// a tábla neve, ahonnan az adatokat kiválasztjuk
// A táblák listája az objektumok listája a konfiguráló ablakban
Címtár.Nómenklatúra
AHOL
// kiválasztás megadása
Terméktípus = & Szolgáltatás // választás külső érték alapján
Vagy Service // "Szolgáltatás" logikai típusú változó, érték szerinti kiválasztása True
RENDEZÉS
//Válogatás
Név

táblázatok listája 1C

A táblázatok neveit a konfigurátor ablakában láthatja. Csak a „Könyvtár” szöveget kell írni a „Könyvtárak” helyett, például „Könyvtár.Nómenklatúra” vagy „Dokumentum.Áruszolgáltatások realizálása” vagy „Felhalmozási nyilvántartás.Értékesítések”.

A regiszterekhez további (virtuális) táblák állnak rendelkezésre, amelyek lehetővé teszik az összesített adatok lekérését.

Information Register.RegisterName.Last Slice (& Date) – 1C kérés az információs nyilvántartásból, ha az időszakos, egy adott dátumra

Felhalmozási nyilvántartás. Regiszter neve. Egyenlegek (& dátum) - 1C kérés az egyenlegnyilvántartásból egy bizonyos dátumra

Felhalmozási Register.RegisterName.Turnovers (& Kezdő dátum, & Befejezés dátuma) - 1C kérés a forgalmi nyilvántartásból a kezdő dátumtól a befejező dátumig terjedő időszakra.

További alapelvek

Amikor bizonyos adatok listáját kérjük, az alapelvek működnek. De kérhetünk számokat is és a kérés ki tudja számolni helyettünk (például összeadni).

KIVÁLASZTÁS
// Mennyiség (FieldName) - számolja a mennyiséget
// Field AS OtherName - átnevezi a mezőt
Szám (Link) AS Feladott dokumentumok száma
TÓL TŐL

AHOL
Végrehajtott

Ez az 1C kérés visszaküldi nekünk a dokumentumok teljes számát. Azonban minden dokumentumnak van Szervezet mezője. Tegyük fel, hogy egy 1C lekérdezéssel szeretnénk kiszámítani az egyes szervezetek dokumentumainak számát.

KIVÁLASZTÁS
// csak egy dokumentummező
Szervezet,
// számolja meg az összeget
Mennyiség (Referencia) AS Mennyiség szervezetenként
TÓL TŐL
Document.Realization of GoodsSzolgáltatások
AHOL
Végrehajtott
BETÖLTÉS

Szervezet

Ez az 1C kérés visszaküldi nekünk az egyes szervezetek dokumentumainak számát (azt is írják, hogy "szervezetekkel összefüggésben").

Ezen túlmenően ezeknek a dokumentumoknak az összegét is kiszámítjuk egy 1C kéréssel:

KIVÁLASZTÁS
// csak egy dokumentummező
Szervezet,
// számolja meg az összeget

// kiszámítja az összeget

TÓL TŐL
Document.Realization of GoodsSzolgáltatások
AHOL
Végrehajtott
BETÖLTÉS
// akkor kell használni, ha a mezők listája egy számláló függvényt () és egy vagy több mezőt tartalmaz egyszerre - akkor ezek alapján kell csoportosítani
Szervezet

Ez az 1C kérés a dokumentumok mennyiségét is visszaküldi nekünk.

KIVÁLASZTÁS
// csak egy dokumentummező
Szervezet,
// számolja meg az összeget
Mennyiség (link) AS Mennyiség szervezetenként,
// kiszámítja az összeget
Összeg (Dokumentum összege) AS Összeg
TÓL TŐL
Document.Realization of GoodsSzolgáltatások
AHOL
Végrehajtott
BETÖLTÉS
// akkor kell használni, ha a mezők listája egy számláló függvényt () és egy vagy több mezőt tartalmaz egyszerre - akkor ezek alapján kell csoportosítani
Szervezet
EREDMÉNYEK Általános

Az 1C lekérdezési nyelv kiterjedt és összetett, és nem fogjuk figyelembe venni minden képességét egy leckében - olvassa el a következő leckéket.

Röviden kb további jellemzők 1C lekérdezési nyelv:

  • Több tábla adatainak összekapcsolása
  • Beágyazott lekérdezések
  • Kötegelt kérés
  • Saját virtuális asztalok létrehozása
  • Lekérdezés értéktáblázatból
  • A beépített függvények használata értékszerzésre és értékek manipulálására.

1C Query Designer

Annak érdekében, hogy a kérés szövegét ne kézzel írhassa, van egy 1C lekérdezéstervező. Csak kattintson a jobb gombbal bárhol a modulban, és válassza az 1C Query Builder lehetőséget.

Válassza ki a kívánt táblázatot a bal oldalon az 1C lekérdezéstervezőben, és húzza jobbra.

Válassza ki a szükséges mezőket az 1C lekérdezéstervezőben a táblázatból, és húzza jobbra. Ha nem csak ki akarunk jelölni egy mezőt, hanem egy összegző függvényt szeretnénk rá alkalmazni - húzás után kattintsunk duplán a mezőre az egérrel. Ezt követően a Csoportosítás lapon ki kell választania (húzással) a csoportosításhoz szükséges mezőket.

Az 1C lekérdezéstervező Feltételek lapján ugyanúgy kiválaszthatja a szükséges szűrőket (a kiválasztott mezőket húzva). Ne felejtse el kiválasztani a megfelelő állapotot.

A Rendelés lapon a rendezés látható. Az Összes lapon - az összesítések összegzése.

Az 1C lekérdezéstervező segítségével bármilyen meglévő lekérdezést tanulmányozhat. Ehhez kattintson a jobb gombbal egy meglévő lekérdezés szövegére, és válassza ki az 1C lekérdezéstervezőt is - és a lekérdezés megnyílik az 1C lekérdezéstervezőben.