itthon / A PC elsajátítása / Külsőleg nyomtatható paraméterekkel. Nyomtatható űrlapok adatigényléssel a "Dokumentumok nyomtatása" űrlapra a BSP "Nyomtatás" alrendszeréből. Lábléc hozzáadása az elrendezéshez

Külsőleg nyomtatható paraméterekkel. Nyomtatható űrlapok adatigényléssel a "Dokumentumok nyomtatása" űrlapra a BSP "Nyomtatás" alrendszeréből. Lábléc hozzáadása az elrendezéshez

Fontolja meg, hogy írjon egy egyszerű nyomtatható anyagot 1s 8,1 - 8,2 a konfigurációs példán Vállalati számvitel 2.0. Tegyük fel, hogy egy külső nyomtatható anyagot szeretne írni a dokumentumba: jelenítse meg a dokumentum főbb adatait, 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 a következőről töltheti le.

A konfigurátorban 1C Enterprises 8 külső feldolgozás létrehozása ( Fájl->Új->Külső feldolgozás), állítson be egy nevet, hozzon létre egy attribútumot a külső nyomtatási űrlaphoz ReferenceToObject típussal DocumentReference.Realization of GoodsServices.

Hozzon létre egy nyomtatható elrendezést

Új hozzáadása 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 sorszám 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. Tegyük a fejlécbe nyomtatható név, dokumentumszámÉ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 állítsa be a tulajdonságot töltő jelentésbe Paraméter.

A területen Adat paraméterek létrehozása a táblázatos szakasz sorainak kiadásához ( Nómenklatúra, ár stb.), de a környéken Pince mennyiség és összeg szerinti végösszegekhez.

Programozás

Menjünk a nyomtatható objektum modulhoz Műveletek->Objektummodul megnyitása.

Hozzunk létre egy kötelezőt nyomtatott űrlapok export funkció Fóka().

Funkció Nyomtatás () Export EndFunctions

Hozzunk létre egy változót a függvényben táblázatos dokumentum, amelyben a nyomtatott forma fog megjelenni, kapjuk elrendezésÉs elrendezési terület.

TabDoc = új SpreadsheetDocument; Layout = GetLayout("Layout" ); Fejléc terület = Layout.GetArea("Fejléc" ); ScopeData = Layout.GetScope("Data" ); AreaFooter = Layout.GetArea("Alagsor" );

Töltse ki a paramétereket kalapokés vigye oda táblázatos dokumentum .

Header Area.Parameters.HeaderText = +ObjectReference.Number; HeaderScope.Parameters.Organization = LinkToObject.Organization; TabDoc.Output(HeaderArea);

Táblázatsorok beszerzéséhez Áruk lekérdezés használata.

Request = új kérés; Query.SetParameter("Referencia", ObjectReference); Query.Text = "VÁLASZTÁS | Áruk, szolgáltatások, áruk realizálása.Nómenklatúra, | Áruk, szolgáltatások, áruk értékesítése. Összeg, | Áruk, szolgáltatások, áruk értékesítése. Ár, | Áruk értékesítése, szolgáltatások, áruk Mennyiség| FROM | Dokumentum.Áruk értékesítéseSzolgáltatások.Goods AS Áruk realizálásaSzolgáltatásokÁruk|HOL | ImplementationProductsServicesProducts.Reference = &Referencia";

A kellékeket átadjuk a kérés paraméternek ReferenceToObject a feltételben megadni AHOL hogy csak abból a dokumentumból van szükségünk adatra, amelyből a nyomtatott űrlapot megjelenítjük. Egy lekérdezés kiválasztásához először végrehajtjuk, majd kijelöljük a sorokat.

Selection = Query.Execute().Select();

Ezután a ciklusban töltse ki a terület paramétereit Adat a dokumentumkijelölés minden sorához, és jelenítse meg azokat táblázatos dokumentum. Szintén a ciklusban számoljuk a teljes értékeket MennyiségÉs összegeket. Nem fogunk minden paramétert külön kitölteni, hanem az eljárást alkalmazzuk FillPropertyValues((<Приемник>, <Источник>) 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 ; TotalNumber = 0 ; While Selection.Next() Loop FillPropertyValues(DataArea.Parameters, Selection); TotalSum = TotalSum + Sample.Sum; TotalQuantity = TotalQuantity + Sample.Quantity; TabDoc.Output(Adatterület); EndCycle ;

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

AreaBasement.Parameters.TotalQuantity = TotalQuantity; RegionBasement.Parameters.TotalAmount = TotalAmount; TabDoc.Output(Régióláb);

A függvényből visszaadjuk a kitöltött táblázatos dokumentumot Fóka().

vissza TabDoc;

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

5. A nyomtatható egység csatlakoztatása a dokumentumhoz

BAN BEN tipikus konfigurációk 1C 8 van egy könyvtár a külső nyomtatási űrlapok regisztrálásához 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ő nyomtatási formák.

Hozzáadás új elem könyvtárba, 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új nyomtatható lesz.

Nyomtatási űrlap automatikus regisztráció

Annak érdekében, hogy a nyomtatható eszköz csatlakoztatásakor ne kelljen manuálisan kiválasztani a dokumentum típusát, konfigurálhatja automatikus regisztráció. Ehhez hozzáadunk egy új elrendezést, és elhívjuk Parameters_Autoregistration(csak úgy) és annak első cellájába írunk Dokumentáció.<Наименование документа> (vagy Útmutató könyvek.<Наименование справочника> ).

Most, amikor a nyomtatott űrlapot csatlakoztatja, a rendszer felszólít a használatára automatikus regisztrációs lehetőségek.

Mindenki látta már nem egyszer, hogy a BSP (Szabványos Alrendszerek Könyvtára) alapján épített tipikus konfigurációkban a Spreadsheet dokumentum alapján felépített nyomtatott űrlapok egy speciális "Nyomtatási dokumentumok" űrlapra kerülnek. Ez az űrlap a BSP "Nyomtatás" alrendszerének része. A nyomtatható anyagok fejlesztése során időnként meg kell kérni a felhasználótól a nyomtatáshoz szükséges további adatokat. Itt felmerül a kérdés, hogy ebben az esetben hogyan jeleníthető meg a nyomtatott űrlap a "Nyomtatott dokumentum" űrlapon. Ebben a cikkben megvizsgálom, hogyan valósíthatom meg a nyomtatható űrlap kimenetét az említett űrlapra a "Nyomtatás" alrendszerből, ha a nyomtatható ű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 nyomtatható elemet a "További jelentések és feldolgozás" alrendszer segítségével valósítanak meg, és amikor egy nyomtathatót adnak hozzá a konfigurációhoz konfigurátor módban, pl. módosításokat hajt végre az alapértelmezett konfiguráción.

A "PrintDocuments" űrlap nyújt néhányat további funkciókat amikor nyomtatott űrlapokkal dolgozik, mint 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 űrlap mentésének lehetősége különféle formátumok adatok (Excel, Word, PDF stb.);
  • nyomtatott űrlap elküldése e-mailben;
  • kényelmes munka egy sor dokumentummal.

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 nyomdai űrlapjaink fejlesztése során, hogy ne lépjük túl az elfogadott gyakorlatot, a rendelkezésre álló eszközökkel jelenítsük meg nyomdalapjainkat is.

Ha szabványos módszereket használunk a nyomtatványok hozzáadására, a "Nyomtatás" alrendszer mindent megtesz helyettünk, és úgy jeleníti meg a nyomtatványt, ahogy kell. Például:

  1. Amikor nyomtatási parancsot adunk egy dokumentumhoz a "Nyomtatás" alrendszer használatával, le kell írnunk a nyomtatási parancsot az AddPrintCommands eljárásban, jelezve azt a nyomtatáskezelőt, amelyben a Print eljárás megvalósul;
  2. A Kiegészítő feldolgozás létrehozásakor a DetailOnExternalProcessing függvény feldolgozó objektumának moduljában le kell írnunk egy parancsot a felhasználás típusával A szerver metódus meghívása, és azonnal végre kell hajtanunk a Print eljárást, amely bizonyos módon megvalósítja a formhívást. a nyomtatási forma.

Ilyen esetekben, ahogy már mondtam, a nyomdai alrendszer igény szerint megjeleníti az általunk kialakított nyomtatott űrlapot. Az ilyen eljárások egy nyomóforma közvetlen kialakítását jelentik, pl. átadta a nyomtatásra szánt objektumokat a nyomtatási eljárásnak, táblázatos dokumentumot alkotott és megjelenítette a képernyőn.

De mi van akkor, ha egy táblázatkezelő dokumentum létrehozásának megkezdése 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 nyomtatvány formálásának szokásos rendje, és el kell gondolkodnunk azon, hogy miként helyezzük át nyomdalapunkat a "Nyomdai dokumentumok" űrlapra.

Ebben az esetben két helyzet lehetséges:

  1. Amikor a konfiguráció módosításával nyomtatható dokumentum jön létre;
  2. Amikor a konfiguráció megváltoztatása nélkül hoz létre nyomtathatót, pl. A „További jelentések és feldolgozás” alrendszer használatos.

Nyomtathatót készítünk úgy, hogy hozzáadjuk a konfigurátoron keresztül.

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

Ez az opció lehetővé teszi a feldolgozás közvetlen hozzáadását a metaadat-objektumokhoz:

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

  1. Hozzon létre egy parancsot, amely meghívja a nyomtatható űrlapunk formáját;
  2. Hozza létre magát az űrlapot;
  3. Nyomtatható elrendezés létrehozása;
  4. Módosítsa a feldolgozáskezelő modult.

Csapatot hozunk létre

Adja meg a parancs tulajdonságaiban:

  • Csoport, ahol a parancsot az űrlapon szeretnénk megjeleníteni;
  • A paraméter típusa csak az a referenciakönyv vagy dokumentum, amelynek nyomtatott formáját készítjük;
  • Paraméterhasználati mód - Több. A nyomtatott űrlapok megjelenítéséhez, egyszerre több listában kiválasztott elemhez.

A parancsmodulban megnyitjuk a feldolgozó űrlapot úgy, hogy átadjuk neki a könyvtár kiválasztott elemeit, amelyekhez nyomtatási űrlapokat kell generálni. Ne filozofáljunk itt ravaszul, és kicsit javítsuk ki a tipikus kódot, amelyet a platform helyettesít a parancsfeldolgozási eljárásban:

&A kliens eljárás parancskezeléséről (Parancsparaméter, Parancsvégrehajtási paraméterek) //Szúrja be a kezelő tartalmát. FormParameters = New Structure("PrintData", CommandParameter); OpenForm("Feldolgozás.PrintForm.Form", FormParameters,CommandExecutionParameters.Source,CommandExecutionParameters.Uniqueness,CommandExecutionParameters.Window, CommandExecutionParameters.NavigationLink); Vége eljárás

Az eljárás paramétere, a Parancs Paramétere éppen azokat az elemeket tartalmazza, amelyeket nyomtatásra kiválasztottunk.

Hozzon létre egy űrlapot

Adjunk hozzá egy űrlapot a feldolgozáshoz, hozzunk létre egy Értéklista típusú form attribútumot és a szükséges beviteli adatokat számunkra további beállítások nyomtatott formában:

DataToPrint - típus ValueList;

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 mi a célom, hogy a nyomtatott sorban jelenjen meg a kiválasztott elem ábrázolása, illetve az, hogy hány sort választunk ki kiegészítő paraméterként az űrlapon.

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

&OnServerCreateProcedureOnServer(hiba, Standard Processing)PrintData.LoadValues(Parameters.PrintData); Az eljárás vége &Az ügyfélnél Procedure Print(Command) ControlPrintClient.ExecutePrintCommand("Processing.PrintForm", //Nyomtatáskezelő "PrintForm", //Azonosító GetObjectsToPrint(), //Objektumok nyomtatása ThisObject, //Az űrlap tulajdonosa a nyomtatás neve GetPrintParameters( )); //Nyomtatási paraméterek - tetszőleges paraméterek, amelyeket át kell adni a nyomtatáskezelőnek Return Array; EndFunction &AtServer függvény GetPrintSettings() PrintSettings = Új struktúra; PrintParameters.Insert("Űrlapfejléc", "Űrlapnyomtatás"); //A "Dokumentum nyomtatása" űrlap egyik paramétere. //Meghatározza a nyomtatható kimeneti űrlap címét. //Itt adjuk hozzá azokat a paramétereinket, amelyeket pluszban szeretnénk átvinni a nyomtatáskezelőbe. PrintParameters.Insert("Sorok száma", Sorok száma); Visszatérési paraméterek Nyomtatás; EndFunctions

Definiáljuk az OnCreateAtServer eljárást, és abban az űrlap megnyitásakor a parancsból átadott paraméterből kiolvassuk azon objektumok listáját, amelyekhez nyomtathatót kell generálnunk.

Az űrlapon létrehozzuk a Print parancsot, és megírjuk a kezelőjét, amelyben meghívjuk a függvényt közös modul ManagePrintClient.RunPrintCommand, beállítjuk ennek a függvénynek a szükséges paramétereit, nevezetesen:

  • Nyomtatáskezelő - az objektum neve a menedzser modulban, amely meghatározza a Nyomtatás funkciót, amely a nyomtathatóságot képezi;
  • Azonosító - a nyomtatni kívánt termék azonosítója. Ezzel az azonosítóval a kezelőmodul Nyomtatás funkciójában kiválasztjuk, hogy melyik nyomtatható űrlapot kell kinyomtatni;
  • A nyomtatási objektumok közvetlenül azok az objektumok, amelyekhez nyomtatási formákat hoznak létre;
  • Űrlap tulajdonosa;
  • Nyomtatási paraméterek - itt alakítunk ki és adunk át egy struktúrát nyomtatási paraméterekkel, ott adjuk át a további paramétereinket, amelyeket a feldolgozási űrlapon kértünk a felhasználótól.

Tulajdonképpen az ExecutePrintCommand függvény meghívásával a feldolgozási űrlapról megoldjuk azt a feladatunkat, hogy a nyomtatható űrlapot a "PrintDocuments" űrlapon jelenítsük meg. Ezután a "Nyomtatás" alrendszer standard műveleteket hajt végre, és a végrehajtást a Print eljárásra viszi, amelyet a feldolgozásunk modulkezelőjében kell meghatároznunk.

Nyomtatható 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 nyomtatási űrlapok fejlesztéséhez a BSP "Nyomtatás" alrendszerével.

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

Procedure Print(ObjectsArray,PrintParameters,PrintFormCollection,PrintObjects,OutputParameters) ket(ObjectsArray,PrintParameters), "Feldolgozás.PrintForm.PF_MXL_PrintForm",); EndIf; EndProcedure &AtServer függvény PrintLayout(ObjectArray,PrintSettings) SpreadsheetDocument = Új SpreadsheetDocument; //Táblázatdokumentum létrehozása //////////////////////////////////////////// ////////////////////////////////////////////////// // ///////////////// //A MODUL ÚJRA MEGHATÁROZOTT RÉSZE // //Itt hozzuk létre a nyomtatható elrendezésünket = GetLayout("PF_MXL_PrintForm"); Minden objektumhoz az objektumokból Tömb Loop AreaHeader = Layout.GetArea("Fejléc"); AreaObject = Layout.Get Area("Object"); SpreadsheetDocument.Output(Régiófejléc); AreaObject.Parameters["Object"] = Objektum; SpreadsheetDocument.Output(RegionObject); For Count = 1 ByPrintSettings["Sorok száma"] Loop AreaString = Layout.GetArea("String"); RegionString.Parameters["String"] = Szám; SpreadsheetDocument.Output(AreaString); EndCycle; SpreadsheetDocument.OutputHorizontalPageSeparator(); EndCycle; //A MODUL ÚJRA MEGHATÁROZOTT RÉSZE /////////////////////////////////////////// ////////////////////////////////////////////////// // ///////////////// Vissza SpreadsheetDocument; //Az EndFunction táblázatkezelő dokumentum visszaadása

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

Ez az opció nyomtatási szempontból nagyon hasonlít az elsőhöz. A különbség abban rejlik, ahogyan létrehozunk egy parancsot, amely az interfészre kerül, és megkezdődik a nyomtatás.

Ebben az esetben a print 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ást megnyitó parancsot, el kell mennünk a menedzser modulhoz, az objektumhoz, amelybe nyomtathatót szeretnénk hozzáadni, és be kell állítani 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 = НStr("ru = "Űrlap nyomtatása""); PrintCommand.Handler = "CommonModulePrintForm.ProcessingPrintFormCommand"; PrintCommand.Order = 100; Vége eljárás

Itt hozzáadjuk a címtár összes űrlapjához (emlékeztem, hogy a partner címtárával dolgozunk) egy "Nyomtatható űrlap nyomtatása" nevű nyomtatási parancsot. És itt van a fő szempont, amelyet figyelembe kell venni. Kétféle parancsot adhat hozzá egy űrlaphoz:

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

2. A kliens metódus meghívása.

Pontosan erre a kliens metódusra van szükségünk. A kliens módszer lehetővé teszi számunkra, hogy meghívjunk egy feldolgozási űrlapot, amelyben a nyomtatás előtt elkérjük a felhasználótól a szükséges adatokat.

Egy ilyen hívás végrehajtásához egy parancs definiálásakor állítson be egy Handlert (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. a Megosztott modul exportálási funkciójának elérési útja az ügyfélen. Ez az a függvény, amely az űrlapokhoz hozzáadott nyomtatási parancsra kattintva hívódik meg.

Mint érti, ahhoz, hogy ez működjön, létre kell hoznia ezt a CommonModule-t, és meg kell határoznia egy Export funkciót. Ezért a következő kódot írjuk a közös modulunkba:

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

Itt is ugyanúgy járunk el, mint az első implementációnál, megnyitjuk a nyomtatható űrlapot, csak most a PrintData-unk a PrintParameters függvénynek átadott paraméterben, pontosabban annak PrintObjects mezőjében lesz benne.

Miután megnyitottuk a feldolgozási űrlapot, minden művelet hasonló az első lehetőséghez.

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

További feldolgozást hozunk létre.

De mi van, ha ez nem a mi konfigurációnk, és támogatott? És általában nem akarunk bemászni 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 objektummodulba írja be a következő kódot:

////////////////////////////////////////////////// //////////////////////////////////////// // Program interfész #API terület // Információkat ad vissza a külső feldolgozás . FunctionExternalProcessingDetails() ExportRegistrationParameters = AdditionalReportsAndProcessing.ExternalProcessingDetails("2.2.2.1"); RegistrationParameters.View = AdditionalReportsAndProcessingClientServer.ProcessingViewPrintForm(); RegistrationParameters.Version = "1.0"; NewCommand = RegistrationParameters.Commands.Add(); NewCommand.View = НStr("ru = "Külső nyomtatási űrlap előzetes adatigényléssel""); NewCommand.Identifier = "ExternalPrintForm"; NewCommand.Usage = AdditionalReportsAndProcessesClientServer.CommandTypeOpenForm(); NewCommand.ShowAlert = igaz; NewCommand.Modifier = "PrintMXL"; Return ParametersRegistration; EndFunction Procedure Print(PrintData,PrintFormCollection,PrintObjects,OutputParameters) Export IfPrintControl.NeedPrintLayout(PrintFormCollection, "External PrintForm") ThenPrintControl.OutputSpreadsheetDocument" am Sheet" ""), PrintLayout(PrintData) ); EndIf; EndProcedure &AtServer függvény PrintLayout(PrintData)PrintParameters = PrintData.Value; //A nyomtatási beállítások lekérése a ValuesListObjectArray első eleméből = PrintData.Copy(); //Másolja az ArrayObjects értéklistáját.Delete(0); //Sorok törlése a másolt elemet tartalmazó PrintSettings SpreadsheetDocument = Új SpreadsheetDocument; //Táblázatdokumentum létrehozása //////////////////////////////////////////// ////////////////////////////////////////////////// // ///////////////// //A MODUL ÚJRA MEGHATÁROZOTT RÉSZE // //Itt hozzuk létre a nyomtatott űrlapunkat Layout = GetLayout("Layout"); Minden objektumhoz az objektumokból Tömb Loop AreaHeader = Layout.GetArea("Fejléc"); AreaObject = Layout.Get Area("Object"); SpreadsheetDocument.Output(Régiófejléc); AreaObject.Parameters["Object"] = Objektum; SpreadsheetDocument.Output(RegionObject); For Count = 1 ByPrintSettings["Sorok száma"] Loop AreaString = Layout.GetArea("String"); RegionString.Parameters["String"] = Szám; SpreadsheetDocument.Output(AreaString); EndCycle; SpreadsheetDocument.OutputHorizontalPageSeparator(); EndCycle; //A MODUL ÚJRA MEGHATÁROZOTT RÉSZE /////////////////////////////////////////// ////////////////////////////////////////////////// // ///////////////// Vissza SpreadsheetDocument; //Táblázat-dokumentum visszatérése EndFunction #EndArea

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

A Kiegészítő feldolgozás standard funkciója az ExternalProcessingInfo(), enélkül a rendszer nem fogja megérteni, hogy ez kiegészítő feldolgozás. Itt a fontos pont annak jelzése, hogy az ebben a feldolgozásban megvalósított parancs típusa rendelkezik Ű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 print parancs ebben az esetben csak 4 paramétert tartalmazzon, és ne 5 paramétert, ahogyan a kezelőmodulban a nyomtatási parancs szokásos definíciója esetén. Ebben az esetben nincs lehetőség a Nyomtatási beállítások átadására. Ezért leleményességet kell mutatnunk ahhoz, hogy magukon az objektumokon túlmenően átadjuk azokat a paramétereket, amelyekhez a nyomtatott űrlapot kialakítják, de 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 attribútumot kell létrehoznunk, hogy tároljuk azokat az értékeket, amelyekre a jövőben szükségünk lesz. Nevezzük ezeket a részleteket a következőképpen:

CommandID - írja be a karakterláncot

Célobjektumok – típusa ValueList

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

&AtServer eljárás WhenCreatingAtServer(Failure, StandardProcessing) //A kiszolgálón történő létrehozáskor ne feledje az alrendszer által átadott szabványos paramétereket AdditionalReportsAndProcessing AdditionalProcessingReference = Parameters.AdditionalProcessingReference; CommandId = Paraméterek.CommandId; DestinationObjects.LoadValues(Parameters.DestinationObjects); EndProcedure &AtClient Procedure Print(Command) // A megnyitott űrlap egyediségi kulcsának lekérése. UniqueKey = String(Új egyedi azonosító); //Határozza meg és töltse ki szabványos paraméterek az általános űrlaphoz PrintDocumentsOpenParameters = New Structure("DataSource, SourceParameters"); OpenParameters.DataSource = AdditionalProcessingReference; OpenParameters.SourceParameters = New Structure("Parancsazonosító, célobjektumok"); OpenParameters.SourceParameters.CommandId = CommandId; //A nyomtatáshoz szükséges objektumok és a feldolgozási űrlapon megadott paraméterek //a SourceParameters.DestinationObjectsOpeningParameters.SourceParameters.DestinationObjects = GetDestinationObjectsAndPrintParameters() paraméteren keresztül fognak átjutni. OpenForm("CommonForm.PrintingDocuments",OpenParameters,FormOwner,UniqueKey); EndProcedure &AtServer függvény GetDestinationObjectsAndPrintParameters()PrintData = DestinationObjects.Copy(); ////////////////////////////////////////////////// ////////////////////////////////////////////////// // //////////// //A MODUL ÚJRA MEGHATÁROZOTT RÉSZE // //Itt létrehozzuk a PrintParameters struktúrát és kitöltjük a paraméterekkel //amelyeket át kell adni a nyomtatási funkciónakPrintParameters = New Structure; PrintParameters.Insert("Sorok száma", Sorok száma); PrintData.Insert(0, Nyomtatási beállítások); //A MODUL ÚJRA MEGHATÁROZOTT RÉSZE /////////////////////////////////////////// ////////////////////////////////////////////////// /// ///////////////// ReturnPrintData; EndFunctions

Az OnCreateOnServer 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ározzuk az űrlapon lévő nyomtatás gomb kezelőjét. 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 opcióit. Ebben a struktúrában legalább két mezőt meg kell határozni:

Forrásparaméterek, amelyek magukban foglalják a CommandId és a DestinationObjects paramétereket:

Parancsazonosító - a szerveren történő létrehozáskor is elmentve, ez a feldolgozásunk formáját hívó parancs azonosítója. Ezért az azonosítót az objektummodul Print eljárásában határozzuk meg, hogy mit kell nyomtatnunk.

Célobjektumok - ebben a mezőben kell átadnunk egy objektumtömböt, amelyhez a nyomtatott űrlapot képezik, valamint az űrlapon a felhasználótól kért paramétereket.

A függvényben látható, hogyan definiálom a célobjektumokat GetDestinationObjectsAndPrintParameters. Ide másolom a célpontjainkat a form propból, a 0 indexnél lévő tömbelem helyére beillesztem a nyomtatási lehetőségeinket.

Az így definiált tömb a jövőben a "Dokumentumok nyomtatása" űrlapból kerül átadásra, mint az objektummodul korábban definiált Print eljárásának első paramétere.

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ásnak átadott adatokból a paramétereinket, objektumainkat, majd dolgozom velük.

A DestinationObjects paraméterrel végzett ilyen manipulációk az objektummodul Print eljárásának meghívásának sajátosságaiból adódnak. Nyomon követheti a paraméterek átadását és a függvényhívásokat a PrintDocuments űrlap moduljának megnyitásával.

Eredmény.

Az ilyen manipulációk eredményeként három parancsot kapunk az űrlapon, amelyből 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

Jelenítse meg a létrehozott nyomtatható anyagokat a "Dokumentumok nyomtatása" űrlapon. Pont amit szerettünk volna:

P.S. Sablonként a nyomtatható verzióim megvalósításához további paraméterek kérésével mindkét feldolgozást kirakom, amelyek mindhárom nyomtatható formázási módszerben részt vesznek.

Ez a cikk részletesen leírja, hogyan készíthet nyomtathatót egy kezdő, aki nem ismeri jól az 1C 8-at. Vegyük például az egyik leggyakoribb 1C 8 konfigurációt - Számvitel 2.0. Nyomtatható 1C írási szakaszok létrehozása:

  • Külső nyomtatható fá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 hozzon létre egy nyomtatható dokumentumot Áruk és szolgáltatások átvétele. A nyomtatott űrlap fejlécében jelenítse meg a következő adatokat:

  • Szervezet;
  • szerződő fél;
  • szerződő fél megállapodása;
  • Beérkezés dátuma.

Táblázatadatok megjelenítése táblázatos formában Áruk dokumentum. A táblázatnak a következő oszlopokat kell tartalmaznia:

  • Elnevezéstan;
  • Mennyiség;
  • Ár;
  • Összeg;
  • Valamint a tétel aktuális dátumra érvényes ára (a dokumentumban szereplő árak típusa szerint).

Külső feldolgozó fájl

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

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

Tovább a mezőre Név meg kell adnia a külső feldolgozás nevét. Esetünkben nevezzük egyszerűen: "Nyomtatási űrlap", a szinonim mező 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á egy külső feldolgozási attribútumot ObjectReference és válassza ki neki típus DocumentReference.Receipt of GoodsServices. Ehhez válassza ki az elemet az 1C külső feldolgozás metaadatfájában Kellékekés nyomja meg a gombot Hozzáadás(zöld plusz gomb). A képernyő jobb oldalán megnyílik az attribútum tulajdonságai ablak, a mezőben Névír - LinkToObject. BAN BEN terület típus nyomja meg a három ponttal ellátott gombot.

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

Mentse el a külső feldolgozó fájlt ide HDD, ehhez a menüt használjuk Fájl -> Mentés, ikon Megment(kék hajlékonylemez) vagy egy billentyűparancsot ctrl+s. Nevezzük el a mentett fájlt "PrintForm"-nak.

Hozzon létre egy nyomtatható elrendezést

Kezdjük el létrehozni az 1C nyomtatható elrendezést. Az elrendezés sablonként szolgál a nyomtatható kimenethez, ezért ha azt szeretné, hogy a nyomtatható jól nézzen ki, akkor figyeljen rá.

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

A megnyíló új elrendezésben hozzunk létre több, a nyomtatott űrlap megjelenítéséhez szükséges területet. Az összes szükséges elrendezési terület vízszintes lesz, ezért új terület létrehozásához ki kell jelölnünk szükséges mennyiség elrendezési sorokat, é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. Egy 1C elrendezési sor törléséhez válassza ki a kívánt sort, majd válassza ki helyi menü bekezdés Töröl. Hozzáadásért új sor az elrendezéshez válassza ki az elrendezés bármely sorát, és válassza ki az elemet a helyi menüben tolja szét.

Elrendezés fejléc hozzáadása

Először 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 van szükségünk. Jelölje ki őket, és ahogy fentebb írtam, nyomja meg a billentyűparancsot Ctrl+Shift+N, mezőben Névírja be a "Kalap" kifejezést, é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 fejléc nélkül, ezért elkészítjük az elrendezés fejlécében is. Mivel a fejlécben a nyomtatott űrlap megnevezése mellett annak a bizonylatnak a számát is megjelenítjük, amelyikből kinyomtatták, ezért az elrendezésben paraméterként a fejléc szövegét állítjuk be. Az elrendezési paraméter egy speciálisan kijelölt elrendezési cella, amelyben különféle adatok jeleníthetők meg a beépített 1C 8 nyelv használatával. 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 szabványosra nyomtatjunk fekvő tájolás lapot.

Á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ülj 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 "HeaderText". 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. Könyvjelző Elrendezés mezőt találni töltőés válassza ki az értéket Paraméter. Az 1C elrendezés paramétereit zárójelben jelöljük "<>».

A nyomtatott űrlap címének ki kell tűnnie a többi szöveg közül, ezért ismét jelölje ki a cellát, és az elrendezés formázási panelen található ikonokkal állítsa be a szöveg igazítását Középre állítottés a betűméret 14.

A címszöveg után megjelenik a területen Egy sapka a szervezetre, a szerződő félre, a szerződő fél szerződésére vonatkozó adatok és az áru átvételének időpontja. Mivel mindezek az adatok is a dokumentumból származnak, ezért paraméterekkel is díszítjük. Ezenkívül minden paraméter előtt írjon egy magyarázó szöveget, hogy a felhasználó könnyen megértse, hol található a szervezet, hol a partner stb. Mindezek a műveletek hasonlóak a fejléc létrehozásához, ezért nem részletezem őket, csak képet adok arról, hogy végül minek kell kiderülnie.

Az ábra azt mutatja, hogy az elrendezési lehetőségek miben térnek el az egyszerű 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, amelyben 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. A cellák egyesítésével és a szöveg (oszlopnevek) írásával táblázatfejlécet is készítünk. Válassza ki a táblázat fejlécének határait az eszközzel Keret, amely az elrendezés formázási sávjában található.

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

Hozzunk létre egy másik területet az elrendezésben - Adat. Megjeleníti a táblázatos rész adattáblázatát Á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. Hangszórók a környéken Adat meg kell egyeznie 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 lehetőségekre van szükségünk, nem csak szövegre. Azt is vegye figyelembe, hogy alapértelmezés szerint a numerikus paraméterek a jobb margón, a szöveges paraméterek pedig a bal oldalon 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 elrendezés utolsó területe, amire szükségünk van Pince. Megjeleníti az összegeket mennyiség és összeg szerint. A teremtés hasonló egy terület létrehozásához Adat, de emellett az eredményeket félkövérrel kell kiemelni.

Az eredmé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ő nyomdalap objektum moduljára, itt fogunk programozni. Ehhez a külső feldolgozás főablakában nyomja meg a gombot Műveletek -> Objektummodul megnyitása.

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

Függvény Print() Export EndFunction

vegye figyelembe, hogy adott funkciót használata kötelező a külső nyomtatási űrlapokhoz rendszeres alkalmazása. Ebben a függvényben minden további programkódot írunk, amely a nyomtatott űrlap megjelenítéséhez szükséges.

Alapváltozók inicializálása

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

TabDoc = új SpreadsheetDocument;

változóba 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 GetRegion(<ИмяОбласти>) .

Fejléc terület = Elrendezés GetArea("Fejléc"); AreaData = Layout.GetArea("Data"); AreaFooter = Layout.GetArea("Alagsor");

A nyomtatható fejléc megjelenítése egy táblázatos dokumentumban

Minden szükséges változó inicializálva van. Kezdjük el az elrendezési területek kitöltését és megjelenítését egy táblázatos dokumentumban. Először is töltsük ki a nyomtatott űrlap címét, ehhez át kell adnunk a paramétert 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 megkaphat. A címszövegben átadjuk a „Nyomtatási űrlap” szöveget, valamint a bizonylatszámot.

Header Area.Parameters.HeaderText = "Nyomtatási űrlap"+ReferenceToObject.Number;

A fejléc többi paramétere hasonló módon lesz kitöltve, a hozzájuk tartozó összes érték a kellékekből lesz beszerezve ReferenceToObject, amely a nyomtatandó dokumentumra mutató hivatkozást tartalmaz.

HeaderScope.Parameters.Organization = LinkToObject.Organization; Header area.Parameters.Account = LinkToObject.Account; Fejléc Area.Parameters.IncomingDate = ObjectReference.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 a terület kitöltésével és megjelenítésével Adat. Az 1C nyomtatható készítése egy lekérdezés írását is jelenti, szükségünk van rá a táblázatos rész adatainak lekéré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 másolja annak képességeit. SELECT utasítás, de a teljes kérés oroszul van írva. Ezért, ha legalább távolról 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 meg lehet csinálni nélküle, de a lekérdező nyelv ismerete és a helyes használat képessége az 1C programozó egyik fő készsége. A lekérdezések kevesebb erőforrás felhasználását teszik lehetővé a legbonyolultabb adatkijelölések megszerzéséhez, és sokkal könnyebben érthető a lekérdezés szövege, mint a lekérdezés nélkül (vagy minimális felhasználásával) írt programkódban. Ezenkívül az 1C 8-ban nagyon vannak jó tervező lekérdezések, amely lehetővé teszi a lekérdezések interaktív összegyűjté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 lekérdezéskészítő segítségével állítjuk össze. Kezdjük azzal, hogy írjuk:

Request.Text = "";

Vigye az egeret az idézőjelek közé, nyomja meg a jobb egérgombot. A megnyíló helyi menüben válassza ki az elemet Kivitelező kérése, ez sokat segít nekünk egy 1C nyomtatható létrehozásában. Ezek után megnyílik a lekérdezéstervező ablak, amely sok fület tartalmaz, de a lekérdezésünknek csak négyre lesz szüksége: "Táblázatok és mezők", "Kapcsolatok", "Feltételek", "Csatlakozások / Aliasok".

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

A tervezőablak bal oldalán keresse meg az oszlopot Adatbázis. Az összes metaadat objektum fát tartalmazza, keressük meg a szükségeseket. Ehhez nyissa meg az ágat Dokumentációés keresse meg a dokumentumot Bejövő áruk szolgáltatásai, nyissa ki és keresse meg táblázatos rész Áruk, húzza a lekérdezéstervező oszlopába táblázatok. Háromféleképpen lehet húzni és vidd: húzással, dupla kattintással a táblázatra, vagy kijelölve és a ">" gombra kattintva. Nyissunk fiókot RegisztrációkInformációés keress ott egy asztalt ÁrakTételek.SliceLast, 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 nyissa 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őket. Nyissuk ki az asztalt , keresse meg a mezőt Árés húzza is oda mezőket.

Elkészült a kérésünk tábláinak és mezőinek szerkezete, most foglalkozzunk a feltételekkel. Szükségünk van a táblázatos rész adataira Áruk nem minden bizonylatból vették, hanem csak abból, amelyet nyomtatunk. Ehhez feltételt szabunk az asztalra Bejövő áruk Szolgáltatások Áruk. Lépjünk a lekérdezéskészítő „Feltételek” lapjára. Egy oszlopban mezőket a korábban kiválasztott táblák találhatók, a feltételhez szükségünk van a mezőre Link az asztaltól Áruk, szolgáltatások, áruk átvétele, húzza a Feltételek ablakba.

Az 1C lekérdezésekben paramétereket használhat, amelyek szükségesek az adatok lekérdezé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.

Egyszer ki az ablakon Körülmények hozzáadtunk egy mezőt Link, a lekérdezéskészítő létrehoz egy azonos nevű paramétert, és a "=" jel után helyezi el. Ez a paraméter igény szerint át is nevezhető. A kérés szövegében a paramétereket „&” jellel jelöljük, de ebben az esetben ez nem szükséges, mivel feltételezzük, hogy a paraméter a feltétel második részében van, csak meg kell jegyezni. Az alábbiakban megvitatjuk, hogyan lehet értéket átadni egy 1C kérési paraméternek.

Mivel a lekérdezésben nem a cikkárak teljes tábláját használjuk, hanem egy virtuálisat (jelen esetben ez utóbbi egy szeletét), meg kell határoznunk ennek kialakításának feltételeit. virtuális asztal, esetünkben ez a lejárati dátum és az ártípus feltétele (szigorúan meghatározott ártípusú árakat kell választani - az általunk kinyomtatott nyugta bizonylaton feltüntetett árakat).

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 ÁrakTételekSliceLatestés nyomja meg a gombot Virtuális asztal opciók tetején található. A megnyíló ablakban, a mezőben Időszak be kell állítani azt a 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étel mezőbe írjuk az ártípus feltételeit, a paraméterben is átadjuk, amit „&PriceType”-nak nevezünk. Az eredményül kapott feltétel így fog kinézni (ahol Ár típusa- 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 PricesItemsSliceLast táblázatban szereplő árak nem lesznek társítva a nyugta cikkéhez. Menjünk a lapra Kapcsolatok lekérdezés konstruktor. Hozzunk létre egy linket mezőnként Elnevezéstan a két asztalunk között. Ehhez nyomja meg a gombot Hozzáadás, mezőben Asztal 1 válassz egy asztalt Bejövő áruk Szolgáltatások Áruk, és a 2. táblázat - PricesItemsSliceLast mezőben. A csatlakozási 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 csak akkor az árak, ha az aktuális dátumra rendelkezésre állnak bizonylat ártípusonként. Így ezek a fülek Áruk kötelezőek, de az árlezárási adatok nem. Ezért a táblák közötti hivatkozásokban az úgynevezett LEFT JOIN-t kell használni, és a bal oldali (vagy kötelező) tábla lesz Bejövő áruk Szolgáltatások Áruk, és a megfelelő (vagy opcionális) PriceItemSliceLast. Azért, hogy bal csatlakozás A lekérdezési táblák a fent leírtak szerint működtek, 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 kell dolgozni a terepi álneveken. Ugrás a könyvjelzőhöz Szakszervezetek / álnevekés állítson be egy álnevet a mezőhöz ÁrakTételekSliceLast.Price. Az álnév a − lesz ÁrToday, arra azért van szükség, hogy a nyomtatott űrlap elrendezésében a lekérdezéskiválasztó mezők nevei és a paraméterek nevei egyezzenek.

A lekérdezéstervezőben a munka véget ért, nyomjuk meg az OK gombot. A konstruktor 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:

Query.Text = "SELECT | Incoming Goods of Services Goods. Nomenclature, | Incoming of Goods of Services Goods. Incoming of Goods of Services Goods. Mennyiség, | Incoming of Goods of Services Goods. Price, | Incoming of Goods of Services Goods. .Goods AS Bejövő árukSzolgáltatásokAruk |BAL CSATLAKOZÁS (| &Aktuális dátum, ÁrTípus = &Ártípus) AS Prices Items SliceLast | Bejövő áruk szerintSzolgáltatásokÁruk.Nómenklatúra | = ÁrakTételekSliceLast.Nómenklatúra |HOL | Bejövő áruszolgáltatásokÁruk.Referencia";

Kérés teljesítése

A kérésnek átadjuk a szükséges paramétereket, ehhez a kérés módszerét használjuk setParameter(<ИмяПараметра>,<Значение>). Megszerzéséért mostani dátum 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 kiválaszthassuk a szükséges adatokat. Ehhez először a lekérdezési módszert használjuk Végrehajtás(), majd a módszer Választ().

Selection = Query.Execute().Select();

A nyomtatható tá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 az egész megkerüléséhez hurokra lesz szükség Viszlát. A szerkezet így fog kinézni:

While Selection.Next() Loop EndCycle;

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 típusú változót. Ezekben összegyűjtjük a végösszegeket annyi és összeg szerint, amennyit meg kell jelenítenünk a területen Pince.

TotalSum = 0; TotalNumber = 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 szám 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őnevei pontosan megegyeznek a mezőparaméterek neveivel Adat, akkor a kitöltéshez a beépített FillPropertyValues(<Приемник>, <Источник>), amely az ingatlanértékeket másolja<Источника>ingatlanokhoz<Приемника>.

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

A nyomtatási űrlap láblécének kimenete 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 töltés és a kiadás ugyanazon séma szerint történik.

AreaBasement.Parameters.TotalQuantity = TotalQuantity; RegionBasement.Parameters.TotalAmount = TotalAmount; TabDoc.Output(Régióláb);

A táblázatos dokumentum teljesen kitöltve van, marad a képernyőn való megjelenítése, hogy a felhasználó megtekinthesse a nyomtatott űrlapot, és szükség esetén kinyomtassa. De a tipikus 1C 8 konfigurációkban a speciális modulok eljárásai felelősek a külső nyomtatási űrlapok kimenetéért. Ezért elég visszatérni a függvényből Fóka() kitöltött táblázat.

Vissza TabDoc;

Ebben a szakaszban a programozás befejeződött, és a nyomtatható 1c űrlap létrehozása majdnem kész. A funkció teljes szövege Fóka() Ide nem adom, nyomtatható fájlban láthatod, amit a cikk alján tölthetsz le.

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

Amikor külső nyomtathatót csatlakoztatunk az adatbázishoz, a rendszer nem határozza meg automatikusan, hogy a nyomtatható dokumentum melyik dokumentumhoz vagy könyvtárhoz tartozik, azt manuálisan kell kiválasztani. És ha egy másik személy írta a nyomtatott űrlapot, és Ön csak arra utasítja, hogy kapcsolja össze, akkor a választás kétértelművé válhat. Az ilyen problémák elkerülése érdekében minden külső nyomtatható dokumentumban el kell készíteni egy elrendezést automatikus regisztrációs paraméterekkel. Létrehozása és helyes formázása esetén a rendszer automatikusan meghatározza, hogy a nyomtatott űrlap melyik dokumentumhoz vagy könyvtárhoz tartozik.

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

  • A külső feldolgozás során új elrendezést készítünk. „Parameters_Autoregistration”-nak hívjuk (fontos, hogy ne tévedjünk!).
  • Az elrendezés első cellájába írunk Dokumentáció.(vagy Útmutató könyvek.) és annak a dokumentumnak a nevét, amelyhez a nyomtathatót csatlakoztatni kívánja.

Csatlakozás egy külső nyomdalap aljához

  • Futtassa 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ő nyomtatási ű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 ezek használatát;
  • Ha nem hozott létre automatikus regisztrációs paramétereket, akkor a táblázatos részben A nyomdalap tartozéka adja hozzá a szükséges dokumentumot vagy könyvtárat;
  • Megnyomjuk a gombot RENDBEN.

Ezt követően a külső nyomtatható lesz elérhető a menüben Fóka dokumentum Áruk és szolgáltatások szállítása. Az ezen nyomtatható 1C elkészítése befejezettnek tekinthető.