Kapcsolatok

1c külső nyomtatási űrlap feldolgozási paraméterei. Nyomtatott űrlapok kiadása adatigénnyel a "Dokumentumok nyomtatása" űrlapon a BSP "Nyomtatás" alrendszeréből. Külső feldolgozó fájl

Ez a cikk részletesen elmondja, hogyan tud nyomtatott űrlapot készíteni egy kezdő, aki kevés ismeri az 1C 8-at. Vegyük például az egyik leggyakoribb 1C 8 konfigurációt - Számvitel 2.0. Nyomtatott űrlap készítése 1C írási szakaszok:

  • Külső nyomtatási űrlapfájl létrehozása;
  • Nyomtatott űrlap elrendezés készítése;
  • Programkód írása a nyomtatott űrlapadatok képernyőn történő megjelenítéséhez;
  • Paraméterek létrehozása nyomtatott űrlap automatikus regisztrálásához;
  • Külső nyomdalap csatlakoztatása az alaphoz 1C Enterprises.

Nyomtatott űrlap készítése 1C. A probléma megfogalmazása

Szükségünk van a konfigurációban Számvitel 2.0 nyomtatott űrlap létrehozása egy dokumentumhoz Áruk és szolgáltatások átvétele. A nyomtatott űrlap fejlécében jelenítse meg a következő adatokat:

  • Szervezet;
  • Ügyfél;
  • Ügyfélszerződés;
  • Beérkezés dátuma.

Jelenítse meg a táblázatos rész adatait táblázatként Áruk dokumentum. A táblázatnak a következő oszlopokat kell tartalmaznia:

  • Elnevezéstan;
  • Mennyiség;
  • Ár;
  • Összeg;
  • És a tétel ára az aktuális dátumra (a dokumentum árának típusa szerint).

Külső feldolgozó fájl

Térjünk át a probléma megoldására. Először is nyissuk meg módban az 1C 8-at Konfigurátor. Ebben a módban minden fejlesztés az 1C 8 platformon történik. Most létre kell hoznunk egy külső feldolgozó fájlt. Ehhez kattintson a menüre Fájl -> Új… vagy egy új fájl ikonjával.

A megnyíló ablakban válassza ki az elemet Külső feldolgozás.

Következő a mezőn Név Meg kell adnia a külső feldolgozás nevét. A mi esetünkben egyszerűen „PrintForm”-nak nevezzük a szinonim mezőt, amely automatikusan kitöltésre kerül. Kérjük, vegye figyelembe, hogy a területen Név, külső feldolgozás esetén a nevet szóközök és írásjelek nélkül kell írni.

Adjon hozzá külső feldolgozási attribútumokat LinkToObject és válassza kiírja be neki DocumentLink Áruk és szolgáltatások átvétele. Ehhez válassza ki az elemet az 1C külső feldolgozási metaadatfában Kellékekés nyomja meg a gombot Hozzáadás(gomb zöld plusszal). Az attribútum tulajdonságainak ablaka megnyílik a képernyő jobb oldalán, a mezőben Névírjunk - ReferenceToObject. BAN BEN terület típus nyomja meg a három ponttal ellátott gombot.

Bővítsük ki az ágat a típusfában DocumentLink, és ott keresse meg az Áruk és szolgáltatások átvétele elemet, jelölje be a mellette lévő négyzetet, és kattintson RENDBEN.

Mentsük a külső feldolgozó fájlt a merevlemezre, ehhez használjuk a menüt Fájl -> Mentés, piktogram Megment(kék hajlékonylemez), vagy egy billentyűparancsot Ctrl+S. Nevezzük el a mentett fájlt „PrintForm”-nak.

Nyomtatott űrlap elrendezés készítése

Kezdjük el létrehozni az 1C nyomtatási űrlap elrendezését. Az elrendezés sablonként szolgál a nyomtatvány kimenetéhez, így ha azt szeretné, hogy a nyomtatvány jól nézzen ki, érdemes odafigyelni rá.

Adjunk hozzá egy új elrendezést a külső feldolgozási metaadatfához, nem változtatunk semmit az elrendezéstervező ablakban, és kattintsunk a gombra Kész.

A megnyíló új elrendezésben több, a nyomtatott űrlap megjelenítéséhez szükséges területet is kialakítunk. Az összes szükséges elrendezési terület vízszintes lesz, ezért új terület létrehozásához válassza ki a kívánt számú elrendezési sort, és lépjen a menübe. Táblázat -> Nevek -> Név hozzárendelése vagy használja a billentyűparancsot Ctrl + Shift + N, majd a mezőbe írja be a régió nevét. Elrendezési terület létrehozásakor ne féljen hibázni a sorok számával, bármikor hozzáadhatja vagy eltávolíthatja őket. 1C elrendezési sor törléséhez válassza ki a kívánt sort, és válassza ki az elemet a helyi menüben Töröl. Ha új sort szeretne hozzáadni az elrendezéshez, válassza ki az elrendezés bármely sorát, és válassza ki az elemet a helyi menüben Kiterjed.

Elrendezés fejléc hozzáadása

Először is hozzunk létre egy területet Egy sapka, megjeleníti a nyomtatott űrlap fejlécének adatait. Ehhez a területhez hét elrendezési sorra lesz szükségünk. Jelöljük ki őket, és ahogy fentebb is írtam, nyomjuk meg a billentyűkombinációt Ctrl + Shift + N, mezőben Névírja be a „Hat” szót, és nyomja meg a gombot rendben.

Töltse ki az elrendezési területet a szükséges adatokkal. Általában egyetlen nyomtatott űrlap sem teljes cím nélkül, ezért hozzunk létre egyet az elrendezés fejlécében is. Mivel a címben a nyomtatott űrlap megnevezése mellett annak a dokumentumnak a számát is megjelenítjük, amelyből kinyomtatták, ezért paraméterként az elrendezésben a cím szövegét állítjuk be. Az elrendezési paraméter egy speciálisan kijelölt elrendezési cella, amelybe a beépített 1C 8 nyelv használatával különféle adatok írhatók ki. A címet a nyomtatott űrlap teljes szélességében meg kell jeleníteni, így döntsük el, hány elrendezési cella lesz elég ahhoz, hogy a lap szabványos fekvő tájolásában nyomtatjunk.

Általában tizenhárom vagy tizennégy elrendezési cella elegendő, jelölje ki őket a terület első sorában Egy sapkaés egyesítsd egy cellába ( Helyi menü -> Egyesítés). Ezután kattintson duplán a kapott nagy cellára, és írja be a paraméter nevét, esetünkben „TitleText”. Ahhoz, hogy a beírt szöveg teljes értékű paraméterré váljon, kattintson a jobb gombbal a cellára, és válassza ki az elemet a helyi menüben Tulajdonságok. A könyvjelzőn Elrendezés keressük meg a terepet Töltőés válassza ki az értéket Paraméter. Az 1C elrendezés paramétereit zárójelek jelzik "<>».

A nyomtatott űrlap fejlécének ki kell tűnnie a többi szöveg közül, ezért jelölje ki újra a cellát, és használja az elrendezés formázási panelen található ikonokat a szöveg igazításához Középre állítottés 14-es betűméret.

A címszöveg után megjelenítjük a területen Egy sapka információk a szervezetről, a partnerről, a szerződő fél szerződéséről és az áru átvételének időpontjáról. Mivel mindezek az adatok is a dokumentumból származnak, ezért paraméterekkel is formalizáljuk. Ezenkívül minden paraméter elé magyarázó szöveget kell írni, hogy a felhasználó könnyen megértse, hol található a szervezet, hol a partner stb. Mindezek a műveletek hasonlóak a címalkotáshoz, ezért nem részletezem őket, csak képet adok arról, hogy végül mi történjen.

Az ábra azt mutatja, hogy az elrendezési paraméterek miben térnek el a normál szövegtől.

Elrendezési táblázat fejléc hozzáadása

Az utolsó, amit ezen az elrendezési területen kell létrehoznunk, az a táblázat fejléce, amelybe a táblázatos rész adatai jelennek meg Áruk. A táblázathoz szükséges oszlopokat a „Problémanyilatkozat” részben ismertettük. Egy táblázat fejlécet is létrehozunk cellák és szövegek (oszlopnevek) kombinációjával. Válassza ki a táblázat fejlécének határait az eszközzel Keret, amely az elrendezés formázási paneljén található.

Táblázat hozzáadása az elrendezéshez

Hozzon létre egy másik területet az elrendezésben - Adat. Megjelenik benne a táblázatos rész adattáblázata Áruk. Ehhez a területhez csak egy elrendezési sorra van szükségünk. A táblázatos rész összes sorának nyomtatott formában történő megjelenítéséhez ezt a területet a szükséges számú alkalommal kitöltjük és megjelenítjük. Oszlopok a területen Adat egyeznie kell a táblázat fejlécének oszlopaival, így a kitöltése nem lesz nehéz. Az egyetlen különbség a területen van Adat paraméterekre van szükségünk, nem csak szövegre. Azt is vegye figyelembe, hogy alapértelmezés szerint a numerikus paraméterek jobbra, a szöveges paraméterek pedig balra vannak formázva. Az oszlopok kiválasztásához az eszközt is használnia kell Keret.

Lábléc hozzáadása az elrendezéshez

Az utolsó elrendezési terület, amire szükségünk van Pince. Megjeleníti az összegeket mennyiség és összeg szerint. Az alkotás hasonló a terület létrehozásához Adat, de emellett az eredményeket félkövérrel kell kiemelni.

A végeredmény a következőképpen néz ki:

Nyomtatott űrlap készítése 1C. Programozás

Kezdjük el a programozást - ez a nyomtatott űrlap létrehozásának legfontosabb szakasza. Először is menjünk a külső nyomtatási űrlap objektum modulhoz, itt fogunk programozni. Ehhez a fő külső feldolgozási ablakban kattintson a gombra Műveletek -> Objektummodul megnyitása.

Létre kell hoznia egy export függvényt a külső nyomtatási űrlapobjektum modulban Fóka().

Függvény Print() Export EndFunction

Kérjük, vegye figyelembe, hogy ez a funkció a szokásos alkalmazást használó konfigurációkban szükséges külső nyomtatványokhoz. A nyomtatott űrlap megjelenítéséhez szükséges minden további programkód ebbe a funkcióba kerül.

Alapváltozók inicializálása

Hozzunk létre egy változót TabDoc, amely egy táblázatos dokumentumot tartalmaz majd - pontosan ez a nyomtatott űrlap, amelybe az elrendezés kitöltött területeit jelenítjük meg.

TabDoc = új táblázatos dokumentum;

Egy változóhoz Elrendezés Megkapjuk az általunk készített nyomtatott űrlap elrendezést. Ehhez a beépített funkciót használjuk GetLayout(<ИмяМакета>).

Layout = GetLayout("Layout");

Az elrendezés minden területét változókká alakítjuk. Ehhez az elrendezés módszerét használjuk GetArea(<ИмяОбласти>) .

HeaderArea = Layout.GetArea("Fejléc"); AreaData = Layout.GetArea("Data"); AreaFooter = Layout.GetArea("Lábléc");

Nyomtatott űrlap fejlécének megjelenítése egy táblázatkezelő dokumentumba

Minden szükséges változó inicializálva van. Kezdjük el kitölteni és megjeleníteni az elrendezési területeket egy táblázatos dokumentumban. Először is töltsük ki a nyomtatható űrlap címét, ehhez a paramétert kell megadnunk Cím szöveg, amelyet az elrendezésben hoztunk létre, a szükséges szöveget. A paraméterértékek kitöltéséhez az elrendezési területen van egy speciális gyűjtemény, amelyet - Lehetőségek. Ahonnan a „.” bármilyen paramétert kaphat. A fejléc szövegében átvisszük a „Nyomtatott űrlap” szöveget, valamint a bizonylatszámot.

Header Area.Parameters.HeaderText = "Űrlap nyomtatása"+ObjectLink.Number;

Hasonló módon töltjük ki a fejléc többi paraméterét, a részletekből megkapjuk az összes szükséges értéket Objektum referencia, amely a nyomtatott dokumentumra mutató hivatkozást tartalmaz.

HeaderArea.Parameters.Organization = LinkToObject.Organization; HeaderArea.Parameters.Account = LinkToObject.Account; HeaderArea.Parameters.ReceiptDate = LinkToObject.Date; Fejléc Area.Parameters.Counterparty Agreement = LinkToObject.Counterparty Agreement;

A fejléc összes paramétere kitöltve, az általunk készített táblázatos dokumentumban megjelenítjük, ehhez a metódust használjuk Kimenet(<Область>) .

TabDoc.Output(HeaderArea);

Nyomtatott fogyatékossági kérelem írása

Kezdjük el kitölteni és kirajzolni a területet Adat. Az 1C nyomtatott űrlap létrehozása egy lekérdezés írását is jelenti, amire szükségünk van a táblázatos adatok megszerzéséhez Árukés az árakat Nomenklatúrák az aktuális dátumhoz használjuk Kérés. Az 1C 8 lekérdezési nyelv hasonló az SQL-hez, vagy inkább gyakorlatilag lemásolja a SELECT operátorának képességeit, de a teljes lekérdezés oroszul van írva. Ezért, ha legalább halványan ismeri az SQL-t, akkor könnyen megérti az 1C 8 lekérdezési nyelvet.

Ebben a nyomtatott formában a kérés meglehetősen egyszerű lesz, és sokan azt mondják, hogy nélküle is meg lehetne csinálni, de a lekérdező nyelv ismerete és a megfelelő használat képessége az 1C programozó egyik fő készsége. A lekérdezések lehetővé teszik összetett adatminták beszerzését kevesebb erőforrás felhasználásával, és a lekérdezés szövege sokkal könnyebben érthető, mint a lekérdezés nélkül (vagy annak minimális felhasználásával) írt programkód. Ezenkívül az 1C 8-nak van egy nagyon jó lekérdezéstervezője, amely lehetővé teszi a lekérdezések interaktív összeállítását a szükséges táblákból.

Hozzon létre egy változót, amely tartalmazza a kérést.

Request = Új kérés;

A kérés szövegét a kérelem konstruktor segítségével állítjuk össze. Kezdésként írjuk:

Request.Text = "";

Helyezze az egérmutatót az idézőjelek közé, és nyomja meg a jobb egérgombot. A megnyíló helyi menüben válassza ki az elemet Kivitelező kérése, sokat segít nekünk egy 1C nyomtatási űrlap elkészítésében. Ezek után megnyílik a lekérdezéstervező ablak, amely sok fület tartalmaz, de a lekérdezéshez csak négyre lesz szükségünk: „Táblázatok és mezők”, „Kapcsolatok”, „Feltételek”, „Csatlakozások / Aliasok”.

Lekérdezésünkhöz két táblázatra lesz szükségünk: táblázatrészre Áruk dokumentum Áruk és szolgáltatások átvételeés egy pillanatfelvétel a legfrissebb információkról a nyilvántartás aktuális dátumáról Tételárak.

A tervezőablak bal oldalán találjuk az oszlopot Adatbázis. Az összes metaadat objektum fát tartalmazza, keressük meg a szükségeseket. Ehhez nyissuk meg a szálat Dokumentációés keresse meg a dokumentumot Áruk és szolgáltatások átvétele, nyissuk meg és keressük meg a táblázatos részt Áruk, húzza a lekérdezéstervező oszlopába Táblázatok. Háromféleképpen húzhat: húzással, dupla kattintással a táblázatra, vagy kijelölve és a „>” gombra kattintva. Nyissuk meg a fonalat Információs nyilvántartásokés keress ott egy asztalt ÁrakNómenklatúra.GyorsbillentyűLegfrissebb, szintén húzza az oszlopba Táblázatok. Ez a két táblázat elegendő a lekérdezésünkhöz.

A kapott táblázatokból jelöljük ki a számunkra szükséges mezőket. Ehhez az oszlopban Táblázatok nyissuk ki az asztalt és keresse meg a mezőket: Nómenklatúra, mennyiség, ár, mennyiségés húzza őket a konstruktőr harmadik oszlopába - Mezők. Bővítsük a táblázatot , keressük meg a mezőt Árés húzza is oda Mezők.

Elkészült a kérésünk tábláinak és mezőinek szerkezete, most térjünk át a feltételekre. Szükségünk van a táblázatos adatokra Áruk nem minden bizonylatról vették, hanem csak abból, amelyet nyomtatunk. Ehhez feltételt szabunk az asztalra Áruk átvételeSzolgáltatásokÁruk. Lépjünk a lekérdezéstervező „Feltételek” lapjára. Egy oszlopban Mezők a korábban kiválasztott táblák találhatók, a feltételhez szükségünk lesz egy mezőre Link az asztaltól Áruk és szolgáltatások átvétele, Húzzuk be a Feltételek ablakba.

Az 1C kérésekben paramétereket használhat, amelyekre szükség van az adatok kérésbe történő átviteléhez. Például, ha a dokumentumok kiválasztását egy adott dokumentumra szeretnénk korlátozni, akkor egy paraméter segítségével átadhatunk egy hivatkozást erre a dokumentumra a kérésnek, és ezt a paramétert használhatjuk a feltételben. Pontosan ezt fogjuk tenni kérésünkben.

Az ablak után Körülmények hozzáadtunk egy mezőt Link, a lekérdezéstervező maga hoz létre egy azonos nevű paramétert, és a „=” jel után helyezi el. Ez a paraméter igény szerint átnevezhető. A kérés szövegében a paraméterek „&” jellel vannak jelölve, de ebben az esetben ez nem szükséges, mivel feltételezzük, hogy a feltétel második része tartalmaz egy paramétert, ezt csak emlékezni kell. Az alábbiakban megvitatjuk, hogyan lehet értéket átadni egy 1C kérési paraméternek.

Mivel a kérésben nem egy teljes termékáras táblázatot használunk, hanem egy virtuálisat (jelen esetben ez utóbbi egy szeletét), ezért meg kell határoznunk ennek a virtuális táblának a kialakításának feltételeit, esetünkben ez a lejárati dátum és az árak típusának feltétele (azok az árak, amelyeknek szigorúan meghatározott ártípusa van, az az általunk kinyomtatott bizonylaton van feltüntetve).

A virtuális tábla paramétereinek kitöltéséhez lépjen a fülre Táblázatok és mezők lekérdezés konstruktor, az oszlopban Táblázatok válassza ki a táblázatot ÁrakNómenklatúraVágásLegfrissebbés nyomja meg a gombot Virtuális asztal opciók, a tetején található. A megnyíló ablakban, a mezőben Időszak be kell állítani egy paramétert, amelyre átkerül az árcsökkentés dátuma. Esetünkben ez az aktuális dátum lesz (vagyis a mai nap), ezért a paramétert „&CurrentDate”-nek nevezzük. A feltételek mezőbe írjuk az ártípus feltételeit, ezt a paraméterben is átadjuk, amit „&TypePrice”-nek nevezünk. Az eredményül kapott feltétel így fog kinézni (ahol TípusÁr- regiszter mérés Tételárak):

PriceType = &PriceType

A virtuális tábla paraméterei kitöltve, kattintson a gombra rendben.

Most, hogy a kiválasztást csak a szükséges dokumentumra korlátoztuk, hozzunk létre kapcsolatokat a lekérdezési táblák között. Ha ez nem történik meg, akkor a PricesNomenclatureSliceLast táblában szereplő árak nem lesznek társítva a bizonylaton szereplő cikkhez. Menjünk a lapra Kapcsolatok lekérdezés tervezője. Teremtsünk kapcsolatot az egész területen Elnevezéstan a két asztalunk között. Ehhez nyomja meg a gombot Hozzáadás, mezőben Asztal 1 válasszon egy táblázatot Áruk átvételeSzolgáltatásokÁruk, és a 2. táblázat - PricesNomenclatureSliceLast mezőben. A kommunikációs feltételek között válassza ki a mezőket Elnevezéstan mindkét asztalról.

Azt is meg kell jegyezni, hogy a lekérdezés kiválasztásánál az összes sort a tabulátor részből kell megkapnunk Árukés árakat csak akkor, ha azok az aktuális dátumon elérhetők a bizonylat ártípushoz. Így a táblázatos adatok Áruk kötelezőek, de az árak bontására vonatkozó adatok nem állnak rendelkezésre. Ezért a táblák közötti kapcsolatokban szükséges az úgynevezett LEFT JOIN használata, és a bal oldali (vagy kötelező) tábla lesz Áruk átvételeSzolgáltatásokÁruk, és a megfelelő (vagy nem kötelező) PriceNomenclatureSliceLast. Ahhoz, hogy a lekérdezési táblák bal oldali összekapcsolása a fent leírtak szerint működjön, be kell jelölnie a négyzetet Minden a mező után Asztal 1.


A kérés már majdnem készen van, már csak egy kicsit dolgozni kell a terepálneveken. Menjünk a könyvjelzőhöz Szakszervezetek/Álnevekés állítson be egy álnevet a mezőhöz ÁrakNómenklatúra Slice Latest.Price. A becenév a következő lesz: ÁrMa, arra azért van szükség, hogy a lekérdezés kijelölő mezőinek neve és a paraméterek neve a nyomtatott űrlapelrendezésben egyezzen.

A lekérdezéstervezőben végzett munka ezzel befejeződött, kattintson az OK gombra. A tervezőablak bezárása után látni fogja, hogy a kérés szövegét tartalmazó sor ki van töltve, és így néz ki:

Request.Text = "SELECT | Áruk átvételeSzolgáltatásokTermékek.Nómenklatúra, | Áruk átvételeSzolgáltatásokTermékek.Összeg, | ÁruátvételiSzolgáltatásTermékek.Ár, ÁrukSzolgáltatások.Goods AS nyugta TermékekSzolgáltatásokTermékek |. BAL KAPCSOLAT RegisztrációInformáció.ÁrakNómenklatúra.SzeletUtolsó (| &AktuálisDátum, ÁrTípus = &ÁrTípus) AS ÁrakNómenklatúraSliceLast ON Receipt of GoodsductatureSer

A kérés teljesítése

Adjuk át a kérésnek a szükséges paramétereket, ehhez a kérés metódusát fogjuk használni SetParameter(<ИмяПараметра>,<Значение>). Az aktuális dátum megtekintéséhez használja a beépített funkciót Az aktuális dátum(), visszaadja a számítógép dátumát és idejét.

Futtassunk le egy lekérdezést, hogy mintát kapjunk a szükséges adatokkal. Ehhez először használja a kérési módszert Fuss(), majd a módszer Választ().

Select = Query.Run().Select();

A nyomtatott űrlaptáblázat kitöltése

Ennek eredményeként a változóban Minta a lekérdezési eredményeket fogja tartalmazni, a metódus segítségével navigálhat benne Következő(), és ahhoz, hogy végigmenjen az egészen, egy hurokra van szüksége Viszlát. A dizájn a következő lesz:

While Select.Next() Loop EndLoop;

Ebben a ciklusban töltjük ki és jelenítjük meg az elrendezési területet Adat. De először inicializáljunk két numerikus változót. Ezekben összegyűjtjük az összesített összeget mennyiség és mennyiség szerint, amelyet a területen meg kell jelenítenünk Pince.

TotalSum = 0; TotalQuantity = 0;

A hurkon belül kitöltjük a területet Adat az aktuális kiválasztási elem adatait változókká Teljes összegÉs Teljes mennyiség adjunk hozzá összeg és mennyiség értékeket, és végül jelenítsük meg a területet egy táblázatos dokumentumban a már ismert módszerrel Kimenet(). Mivel kérésünk mezőinek nevei teljesen egybeesnek a területparaméterek nevével Adat, akkor a kitöltéshez a beépített FillPropertyValues(<Приемник>, <Источник>), amely az ingatlanértékeket másolja<Источника>ingatlanokhoz<Приемника>.

While Selection.Next() Loop FillPropertyValues(AreaData.Parameters,Selection); TotalSum = TotalSum + Sample.Sum; TotalQuantity = TotalQuantity + Sample.Quantity; TabDoc.Output(AreaData); EndCycle;

Nyomtatott űrlap láblécének megjelenítése egy táblázatkezelő dokumentumba

Marad az elrendezés utolsó területének kitöltése és megjelenítése - Pince. A kitöltéshez már elkészítettük az adatokat, a kitöltés és a kivonás ugyanazon séma szerint történik.

AreaFooter.Parameters.TotalQuantity = TotalQuantity; AreaFooter.Parameters.TotalSum = TotalSum; TabDoc.Output(AreaFooter);

A táblázatos dokumentumot teljesen kitöltik, csak megjeleníteni kell a képernyőn, hogy a felhasználó megtekinthesse a nyomtatott űrlapot, és szükség esetén ki is nyomtathassa. De a tipikus 1C 8 konfigurációkban a speciális modulok eljárásai felelősek a külső nyomtatott űrlapok kimenetéért. Ezért elég visszatérni a függvényből Fóka() kitöltött táblázatos dokumentum.

Return TabDoc;

Ezen a ponton a programozási szakasz befejeződött, és az 1c nyomtatási űrlap létrehozása majdnem kész. A funkció teljes szövege Fóka() Ide nem adom, a nyomtatható fájlban nézheti meg, amit a cikk alján tölthet le.

Nyomtatott űrlap készítése 1C. Automatikus regisztrációs lehetőségek

Külső nyomtatvány adatbázishoz csatlakoztatásakor a rendszer nem határozza meg automatikusan, hogy melyik dokumentumhoz vagy referenciakönyvhöz kell a nyomdai űrlapot manuálisan kiválasztani. És ha egy másik személy írta a nyomtatott űrlapot, és Ön csak az összekapcsolással van megbízva, akkor a választás kétértelművé válhat. Az ilyen problémák elkerülése érdekében minden külső nyomtatott űrlapon el kell készíteni egy elrendezést az automatikus regisztrációs paraméterekkel. Ha létrejön és helyesen formázza, a rendszer automatikusan meghatározza, hogy a nyomtatott űrlap melyik dokumentumhoz vagy kézikönyvhöz készült.

Ez a következőképpen történik:

  • A külső feldolgozás során új elrendezést készítünk. „Settings_Auto-Registration”-nak hívjuk (fontos, hogy ne tévedjünk!).
  • Az elrendezés első cellájába írunk Dokumentáció.(vagy Könyvtárak.) és annak a dokumentumnak a neve, amelyhez a nyomtatott űrlapot csatlakoztatni kell.

Külső nyomdalap csatlakoztatása az alaphoz

  • Indítsa el az 1C 8-at módban Vállalat;
  • Menjen a menübe Szolgáltatás -> További jelentések és feldolgozás -> További külső nyomtatott űrlapok;
  • Kattintson a gombra Hozzáadás;
  • A megnyíló ablakban kattintson az ikonra Cserélje ki a külső feldolgozó fájlt;
  • Ha automatikus regisztrációs paramétereket hozott létre, akkor elfogadjuk azok használatát;
  • Ha nem hozott létre automatikus regisztrációs paramétereket, akkor a táblázatos részben Nyomdalap tartozék adja hozzá a szükséges dokumentumot vagy kézikönyvet;
  • nyomja meg a gombot RENDBEN.

Ezt követően a külső nyomtatási űrlap elérhető lesz a menüben Fóka dokumentum Áruk és szolgáltatások átvétele. Az 1C nyomtatott űrlap elkészítése immár befejezettnek tekinthető.

Vegyük fontolóra a legegyszerűbb nyomtatott formában való írást 1s 8,1 - 8,2 konfigurációs példa segítségével Vállalati számvitel 2.0. Tegyük fel, hogy egy dokumentumhoz külső nyomtatott űrlapot kell írni: jelenítse meg a dokumentum alapadatait, valamint a táblázatos részből Áruk: nómenklatúra, ár, mennyiség és mennyiség.

Az eredményül kapott példát letöltheti innen.

A konfigurátorban 1C Enterprises 8 külső feldolgozás létrehozása ( Fájl->Új->Külső feldolgozás), állítsa be a nevet, hozza létre a szükséges adatokat a külső nyomtatott űrlaphoz Objektum referencia típussal DocumentLink áruk és szolgáltatások értékesítése.

Nyomtatott űrlap elrendezés készítése

Adjon hozzá egy újat elrendezés, hagyja el az elrendezés típusát táblázatos dokumentum. Három területet hozunk létre az elrendezésen: Fejléc, adatokÉs Pince. Ezt a kívánt számú sor kiválasztásával és a menüre kattintva teheti meg Táblázat->Nevek->Név hozzárendelése (Ctrl+Shift+N).

Ezt követően elkezdünk szöveget és paramétereket elhelyezni a területeken. Beírjuk a fejlécbe a nyomtatott űrlap neve, bizonylatszámaÉs szervezet, valamint rajzolja meg a táblázat fejlécének határait és írja be az oszlopok nevét. Amikor paramétert hoz létre a cellatulajdonságokban, az Elrendezés lapon kell beállítani a tulajdonságot Töltő jelentésében Paraméter.

A területen Adat hozzunk létre paramétereket a sorok megjelenítéséhez a táblázatos részben ( Nómenklatúra, ár stb.), és a területen Pince mennyiség és összeg szerinti végösszegekhez.

Programozás

Menjünk a nyomtatási űrlap objektum modulhoz Műveletek->Objektummodul megnyitása.

Ott hozzunk létre egy export függvényt, ami a nyomtatott űrlapoknál kötelező. Fóka().

Funkció Nyomtatás () Export EndFunction

A függvényben létrehozunk egy változót a számára táblázatos dokumentum, amelybe a nyomtatott forma kerül kiadásra, megkapjuk elrendezésÉs elrendezési területek.

TabDoc = új TabularDocument; Layout = GetLayout("Layout" ); HeaderArea = Layout.GetArea("Fejléc" ); AreaData = Layout.GetArea("Data" ); AreaFooter = Layout.GetArea("Lábléc" );

Töltsük ki a paramétereket kalapokés hozza el táblázatos dokumentum.

HeaderArea.Parameters.HeaderText = +LinkToObject.Number; HeaderArea.Parameters.Organization = LinkToObject.Organization; TabDoc.Output(HeaderArea);

Táblázatsorok beszerzéséhez Áruk használjuk a kérést.

Request = új kérés; Request.SetParameter("Link", ObjectLink); Query.Text = "VÁLASZTÁS | Áruk és szolgáltatások áruk nómenklatúrája, | Az áruk és szolgáltatások áruk mennyisége. | Áruk és szolgáltatások Áruk értékesítése, | Áruk és szolgáltatások értékesítése Mennyiség|FROM | Az áruk és szolgáltatások értékesítésének módja|HOL | Áruk és szolgáltatások értékesítése Link = &Link";

A részleteket átadjuk a kérés paraméternek Objektum referencia, hogy jelezze a feltételben AHOL, hogy csak abból a dokumentumból van szükségünk adatokra, amelyből a nyomtatott űrlapot származtatjuk. A mintalekérdezés lekéréséhez először végrehajtjuk, majd kijelöljük a sorokat.

Select = Query.Run().Select();

Ezután a ciklusban kitöltjük a terület paramétereit Adat a dokumentumminta minden sorához, és jelenítse meg azokat táblázatos dokumentum. Kiszámoljuk a hurok összértékét is mennyiségeketÉs összegeket. Nem fogunk minden paramétert külön kitölteni, hanem az eljárást alkalmazzuk Töltse ki az inPropertyValues((<Приемник>, <Источник>) tól től globális kontextusban, másolja a tulajdonságértékeket <Источника> ingatlanokhoz <Приемника> . Az illesztés a tulajdonságnevek alapján történik. Erről bővebben itt olvashat szintaktikai asszisztens 1C Enterprise 8.

TotalSum = 0 ; TotalQuantity = 0 ; While Selection.Next() Loop FillPropertyValues(AreaData.Parameters,Selection); TotalSum = TotalSum + Sample.Sum; TotalQuantity = TotalQuantity + Sample.Quantity; TabDoc.Output(AreaData); EndCycle ;

Töltse ki és jelenítse meg a területet Pince.

AreaFooter.Parameters.TotalQuantity = TotalQuantity; AreaFooter.Parameters.TotalSum = TotalSum; TabDoc.Output(AreaFooter);

Az elkészült táblázatos dokumentum visszaadása a függvényből Fóka().

vissza TabDoc;

Ha a szabványos konfigurációk egyikét használja, akkor a táblázatkezelő dokumentum visszaküldése után 1C megjeleníti a nyomtatott űrlapot a képernyőn. A kimenethez a táblázatkezelő dokumentummódszert is használhatja. Előadás().

5. Nyomtatott űrlap csatlakoztatása dokumentumhoz

BAN BEN szabványos konfigurációk 1C 8 Van egy könyvtár a külső nyomtatott űrlapok regisztrálására Külső feldolgozás. A csatlakozáshoz lépjen a menübe vállalati módban Szolgáltatás->További jelentések és feldolgozás->További külső nyomtatott űrlapok.

Adjon hozzá egy új könyvtárelemet, töltse be a nyomtatott űrlapot a lemezről, és válassza ki a dokumentum típusát.

Most a dokumentumban Áruk és szolgáltatások értékesítése Megjelenik egy új nyomtatható anyag.

A nyomtatott űrlap automatikus regisztrációja

Annak érdekében, hogy a nyomtatási űrlap csatlakoztatásakor ne kelljen manuálisan kiválasztania a dokumentumtípust, konfigurálhatja automatikus regisztráció. Ehhez adjon hozzá egy új elrendezést, és hívja meg Beállítások_Automatikus regisztráció(csak így) és annak első cellájába írunk Dokumentáció.<Наименование документа> (vagy Könyvtárak.<Наименование справочника> ).

Most, amikor egy nyomtatványt csatlakoztatunk, felkérjük, hogy használjuk automatikus regisztrációs paraméterek.

Mindenki látta már nem egyszer, hogy a BSP (Szabványos Alrendszerek Könyvtára) alapján felépített tipikus konfigurációkban a Spreadsheet dokumentum alapján felépített nyomtatott űrlapok egy speciális „Nyomtatott dokumentumok” űrlapra kerülnek. Ez az űrlap a BSP „Nyomtatás” alrendszerének része. Saját nyomtatott űrlapok kidolgozásakor esetenként szükséges a felhasználótól további, a nyomtatáshoz szükséges adatokat kérni. Itt felmerül a kérdés, hogy ebben az esetben hogyan jeleníthető meg a nyomtatott űrlap a „Dokumentum nyomtatása” űrlapon. Ebben a cikkben azt nézem meg, hogyan valósítsuk meg a nyomtatott űrlap kiadását az említett űrlapra a „Nyomtatás” alrendszerből, ha a nyomtatott űrlap kiadása előtt további adatokat szeretnénk kérni a felhasználótól. Itt két esetet veszünk figyelembe: amikor egy nyomtatott űrlapot a „További jelentések és feldolgozás” alrendszer segítségével valósítanak meg, és amikor egy nyomtatott űrlapot konfigurátor módban adnak hozzá a konfigurációhoz, pl. módosítások történnek a standard konfiguráción.

A "PrintDocuments" űrlap további funkciókat biztosít a nyomtatott űrlapokkal való munka során, például:

  • gomb a nyomtatóra történő nyomtatáshoz, közvetlenül az űrlapon;
  • példányszám feltüntetése, nyomtatott forma;
  • a generált nyomtatott űrlap szerkesztése;
  • a nyomtatott űrlapok különféle adatformátumokban (Excel, Word, PDF stb.) történő mentésének lehetősége;
  • nyomtatott űrlap elküldése e-mailben;
  • Kényelmes munkavégzés dokumentumkészlettel.

Ezt az űrlapot az 1C már minden szabványos konfigurációban használja a dokumentumok és a címtárelemek nyomtatott formáinak megjelenítésére. És természetesen saját nyomtatott nyomtatványaink kidolgozásakor, hogy ne lépjünk túl az elfogadott gyakorlaton, a nyomtatott űrlapjainkat is jelenítsük meg a rendelkezésre álló eszközök segítségével.

A nyomtatott űrlapok hozzáadásának szabványos módszereivel a „Nyomtatás” alrendszer mindent megtesz helyettünk, és szükség szerint megjeleníti a nyomtatott űrlapot. Például:

  1. Amikor nyomtatási parancsot adunk egy dokumentumhoz a "Nyomtatás" alrendszer segítségével, a nyomtatási parancsot le kell írnunk a Nyomtatási parancsok hozzáadása eljárásban, jelezve azt a nyomtatáskezelőt, amelyben a Nyomtatási eljárás megvalósul;
  2. A Kiegészítő feldolgozás létrehozásakor az InformationOnExternalProcessing függvény feldolgozó objektum moduljában le kell írnunk egy parancsot a szerver metódus Call of a use típusával, és azonnal végre kell hajtanunk a Print eljárást, amely bizonyos módon megvalósítja a hívást egy nyomtatott forma.

Ilyen esetekben, ahogy már mondtam, a nyomtatási alrendszer szükség szerint maga adja ki az általunk generált nyomtatott űrlapot. Az ilyen eljárások magukban foglalják a nyomdai forma közvetlen kialakítását, azaz átadta a nyomtatandó objektumokat a nyomtatási eljárásnak, generált egy táblázatkezelő dokumentumot és megjelenítette a képernyőn.

Mi van akkor, ha egy táblázatkezelő dokumentum generálása előtt adatokat kell kérnie a felhasználótól? Azok. meg kell mutatnunk a formát. Ebben az esetben sérül a nyomtatott nyomtatvány formálásának szokásos rendje, és el kell gondolkodnunk azon, hogy miként helyezzük át nyomtatott űrlapunkat a „Nyomtatott dokumentumok” űrlapra.

Ebben az esetben két helyzet lehetséges:

  1. Amikor egy nyomtatólemezt konfigurációmódosítással hoznak létre;
  2. Amikor egy nyomtatott űrlap a konfiguráció megváltoztatása nélkül jön létre, pl. A „További jelentések és feldolgozás” alrendszer használatos.

A konfigurátoron keresztüli hozzáadással nyomtatott űrlapot készítünk.

Első variáció. A csapattal való feldolgozás létrehozásán keresztül.

Ez a beállítás magában foglalja a feldolgozás közvetlen hozzáadását a metaadat-objektumokhoz:

Tekintsük azt a lehetőséget, amikor egy bizonyos objektum nyomtatott formáját kell megvalósítanunk, például egy könyvtárelemet. Ehhez négy feldolgozási területen kell dolgoznunk:

  1. Hozzon létre egy parancsot, amely meghívja nyomtatható űrlapunkat;
  2. Hozza létre magát az űrlapot;
  3. Készítsen elrendezést egy nyomtatott űrlapról;
  4. Módosítsa a feldolgozáskezelő modult.

Csapat létrehozása

Adja meg a parancs tulajdonságaiban:

  • A csoport, ahol a csapatot megjeleníteni szeretnénk az űrlapon;
  • A paraméter típusa pontosan az a referenciakönyv vagy dokumentum, amelynek nyomtatott formáját készítjük;
  • A paraméter használatának módja a Multiple. Így egyszerre több, a listában kiválasztott elemhez nyomtatott űrlapot jeleníthet meg.

A parancsmodulban megnyitjuk a feldolgozó űrlapot, átadva annak kiválasztott könyvtárelemeit, amelyekhez nyomtatott űrlapokat kell generálni. Itt ne hasítsuk fel a szőrszálakat, és kicsit javítsuk ki a szabványos kódot, amelyet a platform beszúr a parancsfeldolgozási eljárásba:

&A ClientCommand feldolgozási eljárásról (Parancsparaméter, Parancsvégrehajtási paraméterek) //Szúrja be a kezelő tartalmát. FormParameters = New Structure("DataForPrinting", CommandParameters); OpenForm("Feldolgozás.Nyomtatási űrlap.Űrlap",Űrlapparaméterek,Parancsvégrehajtási paraméterek.Forrás,Parancsvégrehajtási paraméterek.Egyediség,Parancsvégrehajtási paraméterek.Window,CommandExecutionParameters.NavigationLink); Az eljárás vége

A Command Parameter eljárásparaméter pontosan tartalmazza azokat az elemeket, amelyeket nyomtatásra kiválasztottunk.

Űrlap létrehozása

Adjunk hozzá egy űrlapot a feldolgozáshoz, hozzunk létre egy Értéklista típusú form attribútumot és a szükséges adatokat, hogy további paramétereket adhassunk meg a nyomtatott űrlaphoz:

DataForPrint - írja be a ListValues-t;

Sorok száma – írja be a Számot.

Példám pusztán szemléltető jellegű lesz, tehát feltételesen határozzuk meg, hogy az a célom, hogy kinyomtassuk az űrlapon a kiválasztott elem reprezentációját és az általunk kiválasztott sorok számát kiegészítő paraméterként.

Lépjen az űrlap modulba, és írja be a következő kódot:

&OnServerProcedureWhenCreatingOnServer(Failure, Standard Processing)PrintData.LoadValues(Parameters.PrintData); Az eljárás vége &Az ügyfélen Nyomtatási eljárás (parancs) NyomtatáskezelésClient Execute Print Command("Processing.PrintForm", //Print Manager "PrintForm", //Identifier GetObjectsForPrint(), //PrintObjectsThisObject, //Az űrlap tulajdonosa. az űrlap, amelyből a nyomtatás neve GetPrintParameters( )); //Nyomtatási paraméterek - tetszőleges paraméterek a nyomtatáskezelőbe történő átvitelhez Az eljárás vége &On Szerverfüggvény GetObjectsForPrint() Array = DataForPrint.UploadValues(); Return Array; EndFunction &OnServer függvény GetPrintParameters()PrintParameters = Új struktúra; Nyomtatási beállítások.Insert("Űrlapcím", "Űrlapnyomtatás"); //A "Dokumentum nyomtatása" űrlap egyik paramétere. //Meghatározza a nyomtatható kimeneti űrlap címét. //Itt adjuk hozzá a paramétereinket, amelyeket pluszban szeretnénk átvinni a nyomtatáskezelőbe. PrintOptions.Insert("Sorok száma", Sorok száma); ReturnPrintOptions; EndFunction

Meghatározzuk az WhenCreatingOnServer eljárást és abban az űrlap megnyitásakor a parancsból átadott paraméterből kiolvassuk azon objektumok listáját, amelyekhez nyomtatott űrlapot kell generálnunk.

Az űrlapon létrehozunk egy Print parancsot, és megírjuk a kezelőjét, amelyben az általános modul függvényét hívjuk meg ManagePrintClient.ExecutePrintCommand, állítsa be a függvény szükséges paramétereit, nevezetesen:

  • Nyomtatáskezelő - az objektum neve a menedzser modulban, amelyet a nyomtatott űrlapunkat képező Print funkció határoz meg;
  • Azonosító - a nyomtatandó nyomtatvány azonosítója. Ezzel az azonosítóval a kezelő modul Nyomtatás funkciójában kiválasztjuk, hogy melyik nyomtatványt kell kinyomtatni;
  • A nyomtatási objektumok közvetlenül azok az objektumok, amelyekhez nyomtatási űrlapokat generálnak;
  • Az űrlap tulajdonosa;
  • Nyomtatási paraméterek - itt készítünk és adunk át egy struktúrát nyomtatási paraméterekkel, itt adjuk át a további paramétereinket, amelyeket a feldolgozási űrlapon kértünk a felhasználótól.

Valójában az ExecutePrintCommand függvény meghívásával a feldolgozási űrlapról megoldjuk a nyomtatott űrlap „PrintDocuments” űrlapra történő kiadásának problémáját. Ezután a „Nyomtatás” alrendszer szabványos műveleteket hajt végre, és a végrehajtást a Print eljárásra viszi, amelyet feldolgozásunk menedzser moduljában kell meghatároznunk.

Nyomtatott űrlap elrendezés készítése

A feldolgozáskezelő modul módosítása

Ettől a pillanattól kezdve szabványos műveleteket hajtunk végre a nyomtatott űrlapok fejlesztésére a BSP „Nyomtatás” alrendszerével.

Adja hozzá a következő kódot a menedzser modulhoz:

Nyomtatási eljárás (Objektumok tömbje, Nyomtatási beállítások, Nyomtatási űrlapok gyűjteménye, Nyomtatási objektumok, Kimeneti beállítások) Exportáljon, ha nyomtatási elrendezést kell kinyomtatni (nyomtatási űrlapok gyűjteménye, "Nyomtatási űrlap"), majd a Kimeneti táblázatos dokumentumot a gyűjteménybe (Nyomtatási űrlapok gyűjteménye, "Nyomtatási űrlap" űrlap", NStr("ru = "Nyomtatási űrlap""), PrintLayout (Objektumok tömbje, Nyomtatási paraméterek), "Processing.PrintForm.PF_MXL_PrintForm",); endIf; Eljárás vége &On Server Function PrintLayout(Object Array, Print Options) TabularDocument = Új táblázatos dokumentum; //Táblázatdokumentum létrehozása //////////////////////////////////////////// //////////////////////////////////////////////// /////////////////A MODUL TÚLRIGGELT RÉSZE // //Itt hozzuk létre a nyomtatott űrlapunkat Layout = GetLayout("PF_MXL_PrintForm"); Minden objektumtömb objektumához Loop AreaHeader = Layout.GetArea("Fejléc"); RegionObject = Layout.GetArea("Object"); TabularDocument.Output(HeaderArea); AreaObject.Parameters["Object"] = Objektum; TabularDocument.Output(AreaObject); For Account = 1 ByPrint Options["Sorok száma"] Cycle AreaLine = Layout.GetArea("Sor"); AreaString.Parameters["String"] = Számlálás; TabularDocument.Output(AreaString); EndCycle; TabularDocument.OutputHorizontalPageSeparator(); EndCycle; //A MODUL TÚL DEFINÍTOTT RÉSZE //////////////////////////////////////////// ////////////////////////////////////////////////// ///////////////// TabularDocument visszaküldése; //A tábladokumentum visszaadása Funkció vége

Második lehetőség. A nyomtatási parancs végrehajtásán keresztül.

Ez a lehetőség nagyon hasonlít az elsőhöz a nyomtatási megvalósítás tekintetében. A különbség abban rejlik, ahogyan létrehozunk egy parancsot, amely megjelenik a felületen, és elindítja a nyomtatást.

Ebben az esetben a nyomtatási parancs definiálásakor a BSP „Nyomtatás” alrendszerét is használjuk. Ahelyett, hogy magában a feldolgozásban definiálnánk a feldolgozás megnyitására szolgáló parancsot, el kell mennünk annak az objektumnak a kezelő moduljába, amelyhez nyomtatási űrlapot szeretnénk hozzáadni, és meg kell adni a nyomtatási parancs leírását az eljárásban. AddPrintCommands (PrintCommands):

Eljárás AddPrintCommands(PrintCommands) ExportPrintCommand = PrintCommands.Add(); PrintCommand.Identifier = "PrintForm"; PrintCommand.View = NStr("ru = "Nyomtatott űrlap nyomtatása""); PrintCommand.Handler = "GeneralModulePrintForm.ProcessingPrintFormCommand"; PrintCommand.Order = 100; Az eljárás vége

Itt minden címtárűrlaphoz hozzáadunk egy „Nyomtatott űrlap nyomtatása” elnevezésű nyomtatási parancsot (emlékeztem, hogy a partnerek címtárával dolgozunk). És itt van a fő szempont, amelyet figyelembe kell venni. Kétféle parancsot adhat hozzá az űrlaphoz:

1. A Nyomtatási eljárás meghívása a menedzser modulból;

2. Kliens metódus hívása.

Pontosan ezt kell kliens módszernek neveznünk. A kliens metódus lehetővé teszi, hogy meghívjunk egy feldolgozási űrlapot, amelyben nyomtatás előtt lekérjük a felhasználótól a szükséges adatokat.

Egy ilyen hívás megvalósításához meg kell adni egy Kezelőt a parancs definiálásakor (lásd a fenti kódot). A kliens függvény elérési útját tartalmazó karakterlánc átadásra kerül a parancskezelőnek, azaz. elérési útja a kliens közös moduljának Exportálás funkciójához. Ez a függvény hívódik meg, amikor rákattint az űrlapokhoz hozzáadott nyomtatási parancsra.

Mint érti, ahhoz, hogy ez működjön, létre kell hoznia ezt az általános modult, és meg kell határoznia az Export funkciót. Ezért az alábbi kódot írjuk az általános modulunkba:

Funkció ProcessingPrintCommandPrintForm(PrintParameters) Export //A kezelő tartalmának beszúrása. FormParameters = New Structure("DataForPrint", PrintParameters.PrintObjects); OpenForm("Feldolgozás.PrintForm.Form", FormParameters); EndFunction

Itt ugyanazt csináljuk, mint az első implementációnál, megnyitjuk a nyomtatási űrlapot, csak most a Nyomtatási adatok a Print Parameters függvénynek átadott paraméterben, vagy inkább annak Print Objects mezőjében lesznek benne.

A feldolgozási űrlap megnyitása után minden művelet hasonló az első lehetőséghez.

Ennek az opciónak a megvalósítása megtalálható a szabványos konfigurációkban, a személyes adatok feldolgozásához való hozzájárulás nyomtatásához kapcsolódó mechanizmusokban.

További feldolgozást hozunk létre.

Mi van, ha ez nem a mi konfigurációnk, és támogatott? És általában nem akarunk belemenni a konfigurációba és szerkeszteni?

Ebben az esetben a BSP „További jelentések és feldolgozás” alrendszerét kell használnunk.

Ezzel a megoldással csak két helyre kell kódot írnunk, és mindegyik a jövőbeni további feldolgozás alatt áll:

1. Feldolgozó objektum modul;

2. Űrlap modul feldolgozása.

Az objektummodulban a következő kódot írjuk:

//////////////////////////////////////////////// ////////////////////////////////// /// Program interfész #ProgramInterface Area // A külső feldolgozással kapcsolatos információkat ad vissza. Funkció InformationOnExternalProcessing() ExportRegistrationParameters = AdditionalReportsAndProcessing.InformationOnExternalProcessing("2.2.2.1"); Regisztráció Parameters.View = AdditionalReportsAndProcessingClientServer.ProcessingViewPrintedForm(); Regisztrációs paraméterek.Verzió = "1.0"; NewCommand = Regisztrációs paraméterek.Commands.Add(); NewCommand.Presentation = NStr("ru = "Külső nyomtatott űrlap előzetes adatkéréssel""); NewCommand.Identifier = "ExternalPrintForm"; NewCommand.Use = AdditionalReportsAndProcessingClientServer.CommandTypeOpenForm(); NewCommand.ShowAlert = Igaz; NewCommand.Modifier = "PrintMXL"; ReturnRegistrationParameters; EndFunctions eljárás Nyomtatás (Nyomtatási adatok, Nyomtatási űrlapok gyűjteménye, Nyomtatási objektumok, Kimeneti Paraméterek) Exportálás, ha PrintManage.NeedPrintLayout(PrintFormsCollection, "ExternalPrintForm") akkor PrintManage.OutputTabularDocumentIntoCollection(PrintFormsCollection, "Nyomtatási űrlapok gyűjtemény", "Külső" "), PrintLayout(PrintData ),); endIf; Az eljárás vége &On Server Funkció PrintLayout(PrintData)PrintParameters = PrintData.Value; //Nyomtatási paramétereket fogad az értéklista első elemétől Object Array = Print Data.Copy(); //Másolja az értékek listáját>ArrayObjects.Delete(0); //A másolt elem Nyomtatási beállításokat tartalmazó sorainak törlése TabularDocument = New TabularDocument; //Táblázatdokumentum létrehozása //////////////////////////////////////////// //////////////////////////////////////////////// /////////////////A MODUL TÚLIRÁNYÍTOTT RÉSZE // //Itt hozzuk létre a nyomtatott űrlapunkat Layout = GetLayout("Layout"); Minden objektumtömb objektumához Loop AreaHeader = Layout.GetArea("Fejléc"); RegionObject = Layout.GetArea("Object"); TabularDocument.Output(HeaderArea); AreaObject.Parameters["Object"] = Objektum; TabularDocument.Output(AreaObject); For Account = 1 ByPrint Options["Sorok száma"] Cycle AreaLine = Layout.GetArea("Sor"); AreaString.Parameters["String"] = Számlálás; TabularDocument.Output(AreaString); EndCycle; TabularDocument.OutputHorizontalPageSeparator(); EndCycle; //A MODUL TÚL DEFINÍTOTT RÉSZE //////////////////////////////////////////// ////////////////////////////////////////////////// ///////////////// TabularDocument visszaküldése; //Az EndFunction #EndArea táblázatkezelő dokumentum visszaadása

Két funkció és egy eljárás van.

A kiegészítő feldolgozás standard funkciója az InformationOnExternalProcessing(); Itt az a fontos, hogy jelezzük, hogy az ebben a feldolgozásban megvalósított parancs típusú Űrlap megnyitása. Azok. szükség szerint megnyitjuk az űrlapot. Ezután következik a Nyomtatási eljárás és a táblázatkezelő dokumentumunkat közvetlenül előállító függvény meghatározása.

Itt figyelni kell arra, hogy a nyomtatási parancs ebben az esetben csak 4 paramétert tartalmazzon, és ne 5 paramétert, ahogyan az a kezelőmodulban a nyomtatási parancs szokásos definíciója esetén történik. Ebben az esetben nincs paraméter a nyomtatási beállítások átadásához. Ezért kreatívnak kell lennünk ahhoz, hogy ne csak magukat az objektumokat közvetítsük, amelyekhez a nyomtatott űrlapot generáljuk, hanem azokat a paramétereket is, amelyeket az űrlapon kérünk a felhasználótól.

Így további feldolgozást határoztunk meg, amelyből a parancs megnyitja a feldolgozási űrlapot. Ezért a következő lépés egy feldolgozási űrlap létrehozása.

Ebben a formában három részletet kell létrehoznunk, hogy tároljuk azokat az értékeket, amelyekre később szükségünk lesz. Nevezzük ezeket a részleteket a következőképpen:

Parancsazonosító – String típusa

ObjectsAssignments – Értéklista típus

Az űrlap moduljába a következő kódot írjuk:

&A kiszolgálói eljárásról Amikor létrehozza a kiszolgálón (hiba, StandardProcessing) //A kiszolgálón történő létrehozáskor ne feledje az AdditionalReportsAndProcessing alrendszer által átadott szabványos paramétereket AdditionalProcessingLink = Parameters.AdditionalProcessingLink; CommandIdentifier = Parameters.CommandIdentifier; Destination Objects.LoadValues(Parameters.Destination Objects); EndProcedure &OnClient Procedure Print(Command) // A megnyitandó űrlap egyediségi kulcsának lekérése. UniqueKey = String(Új egyedi azonosító); //Szabvány paraméterek meghatározása és kitöltése az általános űrlaphoz Print DocumentsOpening Parameters = New Structure("DataSource, SourceParameters"); OpeningParameters.DataSource = AdditionalProcessingLink; OpeningParameters.SourceParameters = New Structure("CommandIdentifier, DestinationObjects"); OpeningParameters.SourceParameters.CommandIdentifier = CommandIdentifier; //A nyomtatandó objektumok és az űrlapba beírt paraméterek feldolgozásra kerülnek //áthaladunk a Source Parameters.Destination ObjectsOpening Parameters.Source Parameters.Destination Objects = GetDestination ObjectsAndPrint Parameters(); OpenForm("GeneralForm.PrintDocuments", OpeningParameters,FormOwner,UniqueKey); Az eljárás vége &A kiszolgáló függvényben GetDestinationObjectsAndPrintParameters()PrintData = DestinationObjects.Copy(); //////////////////////////////////////////////// ////////////////////////////////////////////////// //////// //A MODUL TÚLIRÁNYÍTOTT RÉSZE // //Itt létrehozzuk a Print Parameters struktúrát és kitöltjük azokkal a paraméterekkel, //amelyeket át kell adni a nyomtatási függvénynek Print Parameters = New Structure; PrintOptions.Insert("Sorok száma", Sorok száma); PrintData.Insert(0, Nyomtatási beállítások); //A MODUL TÚL DEFINÍTOTT RÉSZE //////////////////////////////////////////// ////////////////////////////////////////////////// ///////////////// ReturnPrintData; EndFunction

A When CreatingOnServer eljárásban kitöltjük három adatunkat, amelyeket a feldolgozási űrlapnak átadott paraméterek tárolására hoztunk létre.

Ezután meghatározunk egy kezelőt az űrlapon lévő nyomtatás gombhoz. Ebben a kezelőben magunknak kell megnyitnunk a „Dokumentumok nyomtatása” űrlapot, ehhez el kell készítenünk egy bizonyos struktúra megnyitási paramétereit. Ebben a struktúrában legalább két mezőt kell meghatározni:

Forrásparaméterek, amelyek magukban foglalják a parancsazonosítót és a célobjektumokat:

Parancsazonosító – a szerveren való létrehozáskor is elmentve, ez a feldolgozási űrlapunkat meghívó parancs azonosítója. Ezért az azonosító segítségével meghatározzuk, hogy mit kell nyomtatnunk az objektummodul Print eljárásában.

Objektumok hozzárendelése - ebben a mezőben kell átadnunk egy objektumtömböt, amelyhez a nyomtatott űrlapot előállítják, valamint az űrlapon a felhasználótól kért paramétereket.

A függvényben látható, hogyan definiálom a célobjektumokat GetObjectsDestinationsAndPrintOptions. Ide másolom a célobjektumainkat a form kellékekből, a 0 indexű tömbelem helyére a nyomtatási paramétereinket illesztem be.

Az így definiált tömb a jövőben az általunk korábban definiált Print object module eljárás első paramétereként a „Dokumentumok nyomtatása” űrlapról kerül átadásra.

Ha visszatérünk a feldolgozó objektum modul definíciójához, és megnézzük a PrintLayout függvényt, akkor a függvény első három sorában láthatjuk, hogyan bontom ki a Print eljárásba átvitt adatokból paramétereinket, objektumainkat, majd dolgozom velük.

Az Assignment Objects paraméterrel végzett ilyen manipulációkat a Print object module eljárás meghívásának sajátosságai határozzák meg. A Dokumentumnyomtatás űrlapmodul megnyitásával saját maga nyomon követheti a paraméterek átadását és a függvényhívások végrehajtását.

Eredmény.

Az ilyen manipulációk eredményeként három parancsot kapunk azon az űrlapon, ahonnan a nyomtatott űrlapot meg akarjuk jeleníteni:

A parancsok számozása megfelel a megvalósítási lehetőségek sorrendjének.

Mindezek a parancsok ugyanazt teszik:

További paraméterek kérési űrlapjának megjelenítése

A generált nyomtatott űrlapokat adja ki a „Dokumentumok nyomtatása” űrlapra. Pontosan azt, amit szerettünk volna:

P.S. Sablonként a saját nyomtatott űrlapok megvalósításához további paraméterek kérésével mindkét folyamatot feltöltöm, amelyek részt vesznek mindhárom nyomtatott űrlap előállításának módszerében.



Tetszett a cikk? Oszd meg