Értéktáblázat átvitele kér 1s.

Van egy cikkünk, amely a "Tiltott cikk" csoportban található, és ennek használatát meg kell tiltania a felhasználóknak a "Megrendelés a szállítónak" dokumentumban az "Áruk" táblázatos részében. Ugyanakkor érdemes megfontolni azt a tényt, hogy a nómenklatúra pozíciója nem magában a "Tiltott nómenklatúra" csoportban lehet, hanem az annak alárendelt csoportokban. Ebben az esetben is alkalmazni kell a tilalmat. Ráadásul a belső megrendelés kitöltéséhez csekket kell csatolnia.

Az ellenőrzést el kell végezni felvétel előtt dokumentumot az adatbázisba, ha az aktuális írási mód "feladás".

Végrehajtás

Menjünk a dokumentum objektum modulhoz, a "BeforeWrite" eseményhez. Itt kell érvényesítési ellenőrzést végrehajtanunk. Mivel a rekord ebben az esetben csak egy dokumentumobjektumunk van, amely még nem került az adatbázisba, így közvetlenül a dokumentum "Termékek" táblájában nem tudunk lekérdezést végrehajtani.

Miért szükséges az ellenőrzést lekérdezéssel elvégezni? Az a tény, hogy az objektum-adat-hozzáférési modell használatakor egy ilyen ellenőrzés meglehetősen sok erőforrásba kerül a szervergép számára. Ha olyan konstrukciókat hajtunk végre, mint:

Ha TableString. Elnevezéstan. Szülő. Szülő. Szülő = ForbiddenGroup Then // Műveletek EndIf ;

akkor a "BeforeWrite" esemény végrehajtási ideje drámaian megnőhet.

A legtöbb legjobb lehetőség megoldások egy lekérdezés használata a kitöltés helyességének ellenőrzésére, mert abban használhatjuk a konstrukciót

"A HIERARCHIÁBAN () "

Ez lehetővé teszi, hogy a könyvtár minden elemét bevegye az ellenőrzött csoportba vagy elembe. Most a legérdekesebb. Így adhatunk át egy értéktáblázatot egy lekérdezésnek, és dolgozhatjuk fel tovább:

Ha WriteMode = DocumentWriteMode. Holding Akkor // Unload tab. dokumentálja egy értéktáblázatba a kívánt oszlopokkal TabProducts = Termékek. Upload(, "LineNumber , Nómenklatúra, Rend" ) ; Request = Új kérés; // Tabulátor átadása. értékeket a kéréshez paraméterként Kérés. SetParameter(" TabDoc " , TabProducts) ; // A tiltott elemcsoport beállítása Kérés. setParameter(" ForbiddenGroup" , Könyvtárak. Nomenklatúra. FindByName(" Tiltott nómenklatúra" , Igaz )) ; Lekérdezés. Szöveg = " KIVÁLASZT | T . sorszám,| T . Elnevezéstan,| VÁLASZTÁS | AMIKOR T | | | VAGY T. Rendelés = NEM MEGHATÁROZOTT | AKKOR IGAZ | MÁS HAMIS | VÉGE MINT rendelés kitöltetlen|PUT Tab | TÓL TŐL // Helyettesítse be az átadott táblát a "FROM" szakaszba paraméterként | & TabDoc AS T|HOL | (T. Nómenklatúra HIERARCHIABAN (& Tiltott Csoport) | VAGY VÁLASZTÁS| AMIKOR T . Rendelés = ÉRTÉK (Dokumentum. Gyártási rendelés. Üres hivatkozás) | VAGY T. Megrendelés = ÉRTÉK (Dokumentum. Vevő rendelése. Üres hivatkozás) | VAGY T.Rendelés = ÉRTÉK(Dokumentum.Belső Rend.NullReference) | VAGY T. Megrendelés = Undefined | AKKOR IGAZ | MÁS HAMIS| VÉGE ) |; | |//////////////////////////////////////////////////////////////////////////////// |VÁLASZT | Tab . Elnevezéstan,| Tab . sorszám,| Tab . Rendelés kitöltetlen |TÓL TŐL| Tab AS Tab "; Kijelölés = Lekérdezés. Végrehajtás () . Select() ; // Az eredmény feldolgozása Míg a kiválasztás. Következő() Általános célú hurok. ReportError(" Sorban " + Kijelölés. Sorszám + " tiltott nómenklatúrát használnak" + " " " " + Mintavétel. Nómenklatúra + " " " " + ? (Mintavétel. Rendelés nincs kitöltve, " és a rendelés sem fejeződött be!" , " " ) , Failure) ; EndCycle ; EndIf ;

Az értéktáblázat paraméterként kerül átadásra a kérésnek. Ha megnyit egy ilyen lekérdezést a konstruktorban, akkor egy ilyen tábla "Egy ideiglenes tábla leírása" lesz, és így néz ki:

A kérésben lévő értéktáblázattal való munka egyik fontos jellemzője egy olyan kérelem ideiglenes táblában való kötelező elhelyezése, amely az átadott paraméterből értéktáblázatot kap. Ha megpróbál egy lekérdezést végrehajtani ideiglenes tábla használata nélkül, a platform hibát jelez.

Azt is fontos megérteni, hogy a lekérdezéskészítővel nem lesz képes megszervezni az adatok beszerzését egy értéktáblázatból. A konstruktorban csak az ideiglenes tábla leírását tudjuk definiálni. Nem lehet jelezni, hogy a kiválasztást az átadott paraméterből hajtják végre a konstruktorban - szintaktikai hibák jelennek meg.

Következtetés

A feladat megoldva. Példa a kiváltott ellenőrzésre a dokumentum írása előtt:

Természetesen a fenti példa meglehetősen egyszerű. A feladat úgy oldható meg, hogy az ellenőrzést az "On Write" eseményre helyezzük át, akkor egyszerű lekérdezésekkel tudtunk volna eljutni az adatbázisba anélkül, hogy értéktáblázatot adtunk volna át a lekérdezéshez. A leírt módszer helyességének megítéléséhez ismernie kell a probléma konkrét körülményeit.

43
NULL – hiányzó értékek. Nem tévesztendő össze a nullával! A NULL nem szám, nem egyenlő szóközzel, nulla hivatkozás, nem definiált. A NULL típusképző érték, azaz. létezik egy NULL típus és egy ilyen típusú érték. NULLA... 26
Az 1C platformon az adatbázistáblák lekérdezésének kialakításához és végrehajtásához a Request programozási nyelv speciális objektumát használják. Ez az objektum a New Request konstrukció meghívásával jön létre. Kényelmes kérés... 18
A cikk hasznos trükköket tartalmaz az 1C v.8.2 lekérdezésekkel végzett munka során, valamint olyan információkat, amelyek nem annyira ismertek a lekérdezési nyelvről. Nem próbálok adni Teljes leírás lekérdező nyelv, de csak a ... 13
LIKE – Operátor, amely ellenőrzi, hogy egy karakterlánc hasonló-e egy mintához. A LIKE analógja SQL-ben. A LIKE operátor lehetővé teszi a tőle balra megadott kifejezés értékének összehasonlítását a jobb oldalon megadott sablon karakterlánccal. Kifejezés értéke...

Nagyon gyakran ez generál egy gyakori hibát - egy ciklusban lévő kérést. Vagyis a fejlesztő nem tudja, hogyan kell egy értéktáblázatot felvenni a kérésbe, ezért elkezdi megkerülni azt egy ciklusban, és minden iterációhoz saját kérést készít. Fontolja meg egyszerű példa, hogyan kell csinálni.

Példa

Példaként egy értéktábla elhelyezésére egy 1C 8.3-as lekérdezésben, vegyünk egy egyszerű helyzetet – van, amely az elemek listáját tartalmazza. A raktári egyenlegekről minden készletcikknél adatokat kell beszerezni.

Ingyenes 267 1C videóleckéket kaphat:

Két helyzet lehet, hogy egy értéktáblázat jön létre – programozottan és már valahonnan (például PM-dokumentumból) érkezve. Ha a táblázatot programozottan hozzák létre, akkor ezt meg kell tennie oszloptípus beállítása, könnyű megtenni

Azok. oszlop hozzáadásakor második paraméterként meg kell adni az adattípusokat a TypeDescription objektum konstruktorával.

Térjünk át a lekérdezés felépítésére. Egy értéktáblázat átadható egy lekérdezésnek egy egyszerű ¶méterrel.

Kötelező árnyalat, hogy a létrehozott táblát egy ideiglenes táblába kell helyezni, ellenkező esetben a rendszer egy üzenetet jelenít meg: „Hiba a kontextus metódus hívásakor (Execute): Az adatobjektum tartalma csak egy ideiglenes táblába tölthető le».

Így az első lekérdezést egy ideiglenes táblába helyezzük, majd a készletegyenleg-nyilvántartásba kapcsoljuk.

Ennyi, probléma megoldva.



Betöltés...
Top