Crearea formularelor tipărite 1c 8.2. Publicații. Crearea unei plăci exterioare de tipărire pe baza unuia standard cu modificări minore

Implementat în conformitate cu aspectul tipărit standard integrat în aplicație de dezvoltatori (denumit aspectul „furnizat”).

Dacă este necesar, puteți schimba aspectul standard și, ulterior, puteți imprima documentul în funcție de aspectul personal (personalizat). Pentru a edita aspectul formularului tipărit, este prevăzut un mecanism de încărcare pe un computer local. Aspectul este editat în versiunea locală a aplicației 1C: Enterprise (în special, puteți utiliza aplicația gratuită 1C: Enterprise - Lucrul cu fișiere).


Pentru a schimba aspectul tipăririi, faceți următoarele.




Editarea machetei formularului de imprimare este finalizată, când documentul este tipărit, se va folosi aspectul la care au fost efectuate modificările.

Dacă doriți să reveniți la aspectul anterior al tipăririi, faceți clic pe buton Folosiți aspectul standard... În același timp, aspectul editat va fi încă prezent pe server și poate fi pornit din nou prin apăsarea butonului Editați | ×.

Vă dorim muncă plăcută!

Cum să inserați un logo al companiei într-un format tipărit?

Să oferim un exemplu concret de editare a unui aspect imprimabil Facturi pentru platăși anume, vom lua în considerare modul de a insera o imagine în ea, de exemplu, un logo al companiei (această imagine trebuie mai întâi pregătită și salvată ca fișier grafic, de exemplu, în format png sau jpg).


Astfel, acum facturile de plată pe care le pregătiți pentru transfer către omologii dvs. vor avea logo-ul companiei dvs. Pentru a adăuga un logo la alte documente, va fi necesar să repetați pașii descriși pentru formularele tipărite corespunzătoare ale acestor documente.

Vă dorim muncă plăcută!

Nu pot adăuga decât că pentru cele mai recente versiuni de BSP și, în consecință, configurații pe formularele gestionate, a existat tendința de a muta procedurile și funcțiile de tipărire din modulul manager în module comune. Prin urmare, cel mai adesea, VPF-ul creat de proiectant va trebui finalizat prin transferul acelorași proceduri și funcții din modulele generale în modulul VPF.

Instrucțiuni pentru o aplicație gestionată

Să creăm un VPF, de exemplu, pentru un document Factura cumpărătorului, formular tipărit Factura-comandă(Fac un exemplu pe platforma 8.3.8.1784 BP 3.0.43.247 baza DEMO).

Crearea VPF

Plec de la faptul că cel care creează VPF este capabil să utilizeze configuratorul, prin urmare nu vom desena imagini de acolo. Rezultatul va fi o formă externă care nu este diferită de forma tipărită a documentului.

Deci, punct cu punct:

  1. Copie modul de manager document Factura cumpărătorului,prin deschiderea acesteia în Configurator. Copiată întregmodul , de exemplu, făcând clic pe Ctrl +A, mai tarziu Ctrl + C.
  2. Deschideți constructorul în modul contabilitate, selectați Tipul documentului Factură pentru plată cumpărătorului și apăsați butonul Pastă:
  1. Apăsați butonul următor Analiză.Urcăm marcajul Comenzi și funcțiilista comenzilor de imprimare disponibile, lista procedurilor și funcțiilor modulului manager și textul procedurilor selectate în fereastra din dreapta. În fereastra din stânga sus, eliminați toate casetele de selectare (butoanele de control din partea de sus) și marcați formularul de imprimare de care avem nevoie Comanda facturilor.În fereastra din stânga jos, procedurile necesare pentru tipărirea formularului selectat vor fi marcate în verde în mod automat. Dacă este necesar, puteți marca alte proceduri și funcții folosind butonul nevoie / nu este nevoie, acestea vor fi transferate la procesarea finală, dar nu vor fi utilizate automat de VPF, deci gândiți, aveți nevoie? În fereastra din dreapta, puteți vedea textul procedurilor și funcțiilor selectate în fereastra din stânga jos. Textul poate fi schimbat, deși nu am folosit niciodată această oportunitate, dar nu știi niciodată cine va avea nevoie de el ?:

  1. Butonul următor Pentru a forma... Creează textul modulului de procesare HPF:

  1. Apasam Compila - nimic nu se va schimba pe ecran, doar un VPF va fi creat.
  2. Buton Salvați se va oferi să alegeți calea unde să salvați procesarea creată și să deschideți VPF-ul creat pentru verificare. VPF este creat cu un formular de procesare încorporat, astfel încât acesta poate fi depanat fără a apela la instrumente suplimentare. La deschiderea VPF, verificăm imediat operativitatea selectând un document și formând un formular tipărit:

După cum am menționat deja, acum nu este diferit de cel tipic și, dacă va trebui să schimbați ceva, va trebui să o faceți de mână, despre care voi discuta mai jos. Aș dori să notez că ordinea specificată de formare a HMF este minimă, încercați singur restul ... sau nu încercați. De fapt, enumeră doar pașii pentru a crea rapid un VPF pentru rafinare ulterioară.

Ceea ce m-a surprins, atât standard, cât și extern, în loc de suma în cuvinte, dau suma din demo ca număr:

Modificarea VPF-ului rezultat

Pentru a corecta situația și a adăuga ceva propriu la VPF, să începem să facem modificări:

  1. Introduceți aspectul contului în VPF (implicit, același lucru este folosit ca în formularul standard de cont). Pentru a face acest lucru, să vedem ce aspect este folosit. În modulul obiect al VPF:
Dacă Print Control.Trebuie să imprimați un layout (Colecția de formulare de tipărire, "InvoiceOrder") AtunciInvoiceInvoiceInvoiceTable \u003d GetInvoiceInvoiceInvoiceTable (ArrayObjects); Print Management.OutputTableDocumentInCollection (CollectionPrintForms, "InvoiceOrder", "Factură pentru plată", Tipărirea documentelor comerciale. Facturi de imprimare pentru plată (factură de plată, obiecte de tipărire), "Layout general.PF_MXL_ factură"; Parametri de ieșire.Insert („Generați ED”, adevărat); endif;

Din procedura de tipărire, vedem că avem nevoie de un aspect general PF_MXL_Order account. O copiem în configurator. ramură General - Dispuneri generale:

Apoi în procesare ne ridicăm aspecte și introduceți, acum aspectul este în VPF, trebuie să schimbați codul modulului pentru al utiliza, și nu aspectul general:

  1. Analizăm textul procedurii de tipărire și adăugăm procedurile și funcțiile modulelor generale utilizate la formarea formularului de imprimare:
#Area adăugatăProceduri și funcții // între aceste linii lipiți procedurile copiate din modulele comune #EndArea
  • Salvăm ce s-a întâmplat (sau facem clic pe controlul sintaxei). Primim un mesaj de eroare:

(ExternalProcessing.InvoicePaymentBuyer_ExternalPrinted.ObjectModule (371,3)): Procedura sau funcția cu numele specificat nu este definită (PrintHeaderWarning)

<\u003e DisplayWarningHeader (Document Information.Recipient, TabularDocument, Layout); (Verificați: Server).

Deoarece procedura nu este definită fără a specifica printr-un punct, deducem că este în același modul general ca funcția pe care am copiat-o înainte. PrintInvoicePayment - îl găsim acolo și îl copiem în modulul VPF. Și din nou încercăm să economisim. În acest caz, avem noroc - nu mai există erori. În general, aceasta este o raritate, în mare măsură, acesta este cel mai mult timp. Se întâmplă să fie necesar să copiați mai multe proceduri și funcții și poate nici măcar dintr-un singur modul. Principalul lucru nu este doar copierea, ci și apelarea corectă mai târziu. Nu am nicio rețetă universală pentru asta.

  • Eliminați linia „ Tipărirea documentelor comerciale."- acum această funcție va fi apelată din modulul VPF.
  • Salvăm VPF-ul, îl verificăm în modul contabil - totul funcționează, doar acum, tot ce este necesar pentru modificări este în VPF. Acum puteți face modificările necesare.
  1. Modificarea textului modulului VPF:
  • Apelarea aspectului încorporat în loc de aspectul general - găsiți linia "Aspect general.PF_MXL_InvoiceOrder",vedem că este în funcția adăugată din modulul comun și fără a schimba modul comun Tipărirea documentelor comerciale (păstrând configurația tipică pe suport complet) schimbați funcția modulului VPF:
// Layout \u003d Imprimare Control.Print Layout ("General Layout.PF_MXL_InvoiceOrder"); // A fost Layout \u003d Obținerea machetei ("PF_MXL_InvoiceOrder"); // A devenit

Atenţie: După fiecare modificare, este mai bine să salvați VPF-ul și să verificați performanța, dacă schimbați totul la rând, atunci se poate dovedi că va fi mai ușor să începeți de la început decât să remediați ceea ce ați schimbat. Un alt sfat, atunci când totul funcționează și veți termina ceva, creați o versiune nouă a VPF și modificați-o - versiunea de lucru va rămâne, iar cea actuală, cu o încercare de a o termina)))

  • Să corectăm cantitatea în cuvinte - acum, din anumite motive, este afișată ca număr, există multe opțiuni, puteți, de exemplu, să utilizați un șir de format într-o celulă de aspect Suma în cur,dar acest lucru este urât, așa că haideți să încercăm să găsim locul în textul modulului în care acest parametru este completat și să îl remediem. Vedem linia:
PrintDataSumWord.SumWord \u003d GeneralPurposeBPCallServer.GenerateSumInWords (AmountKRecord, Document Information.Currency);

Cu debuggerul ne uităm unde a cățelat câinele. Se pare că totul este filip, dar vedem un număr în loc de un șir. Vedem că atunci când apelăm la funcția modulului comun GeneralPurposeBPCallServer.GenerateSumWordîn parametru Informații document valutăgol. Există multe opțiuni de corectare - puteți extrage procedura GenerateSumWordîn modulul VPF, puteți vedea completarea liniei Informații despre document și completați moneda acolo, puteți verifica completarea monedei, iar dacă este goală, utilizați moneda implicită din constantă. Sunt prea leneș, așa că haideți să luăm moneda din contract:

PrintDataSumWord.SumWord \u003d GeneralPurposeBPServerCall.GenerateSumWord (AmountToRecord, Information About the Document.Contractor Agreement.CurrencyMutual Settlements); // Information About the Document.Currency);

Salvează, verifică:

  • Acum să adăugăm un nou parametru la aspect, de exemplu, Comentează și îl afișăm după linia finală (un exemplu condiționat, doar ca exemplu)))):

Acest articol vă va spune în detaliu cum un începător care nu știe prea multe despre 1C 8 creează o placă de imprimare. De exemplu, să luăm una dintre cele mai comune configurații 1C 8 - Contabilitate 2.0... Crearea unui formular de tipărire Etapele de scriere 1C:

  • Crearea unui fișier al unei plăci de imprimare externe;
  • Crearea unui aspect imprimabil;
  • Scrierea codului programului pentru afișarea datelor de imprimare pe ecran;
  • Crearea parametrilor pentru înregistrarea automată a unui tipar;
  • Conectarea unei plăci de imprimare externe la bază 1C Enterprise.

Crearea unui formular de imprimare 1C. Formularea problemei

Suntem solicitați în configurație Contabilitate 2.0 creați un tipar pentru document Primirea bunurilor și serviciilor... Tipăriți următoarele date în antetul tiparului:

  • Organizare;
  • contraparte;
  • Acord de contrapartidă;
  • Data admiterii

Afișează datele secțiunii tabulare sub forma unui tabel Produsedocument. Tabelul trebuie să includă următoarele coloane:

  • Nomenclatură;
  • Cantitate;
  • Preț;
  • Cantitate;
  • Și, de asemenea, prețul articolului pentru data curentă (în funcție de tipul de prețuri din document).

Fișier de procesare externă

Să trecem la rezolvarea problemei. Mai întâi, să deschidem 1C 8 în modul Configurator... În acest mod sunt realizate toate evoluțiile de pe platforma 1C 8. Acum trebuie să creăm un fișier de procesare extern. Pentru a face acest lucru, faceți clic pe meniu Fișier -\u003e Nou ... sau prin noua pictogramă de fișier.

În fereastra care se deschide, selectați elementul Prelucrare externă.

Mai departe pe teren Nume este necesar să introduceți numele tratamentului extern. În cazul nostru, să-l numim simplu: „Formular de tipărire”, câmpul de sinonime va fi completat automat. Rețineți că în câmp Nume,procesare externă, ar trebui să scrieți numele fără spații și semne de punctuație.

Adăugați o recuzită pentru prelucrarea externă LinkOnObject și selectați pentru el tip DocumentLink.Arrival of GoodsServices... Pentru a face acest lucru, în arborele de metadate al procesării externe 1C, selectați elementul Rechizite și apăsați butonul Adauga la (buton verde plus). În partea dreaptă a ecranului, în câmp se va deschide fereastra de proprietate Nume scrie - ReferenceObject. ÎN camp Un fel apăsați butonul cu trei puncte.

Deschideți ramura în arborele tip DocumentLinkși găsiți acolo Obiectul de primire a bunurilor și serviciilor, puneți o căsuță în față și faceți clic O.K.

Să salvăm fișierul de procesare extern pe hard disk, pentru aceasta folosim meniul File -\u003e Save, pictogramă Salvați (dischetă albastră) sau o comandă rapidă de la tastatură Ctrl + S... Să denumim fișierul salvat „Formular de imprimare”.

Crearea unui aspect imprimabil

Să începem să creăm un aspect al formularului de imprimare 1C. Aspectul servește ca un șablon pentru ieșirea tipăritului, astfel încât dacă doriți ca imprimarea dvs. să arate bine, ar trebui să-i acordați atenție.

În arborele de metadate de procesare externă, adăugați un nou aspect; în fereastra proiectantului de machete, nu vom schimba nimic și vom face clic pe buton Terminat.

În noul aspect care se deschide, creați mai multe zone necesare pentru ieșirea tiparului. Toate zonele de aspect de care avem nevoie vor fi orizontale, deci pentru a crea o nouă zonă, selectați numărul necesar de linii de aspect și accesați meniul Tabelul -\u003e Nume -\u003e Alocare nume sau utilizați comanda rapidă de la tastatură Ctrl + Shift + N, apoi introduceți numele zonei în casetă. Când creați o zonă de aspect, nu vă temeți să greșiți cu numărul de linii, puteți oricând să le adăugați sau să le eliminați. Pentru a șterge o linie în aspectul 1C, selectați linia dorită și selectați elementul din meniul contextual Șterge... Pentru a adăuga o linie nouă la aspect, selectați orice linie din aspect și selectați elementul Împingeți-vă.

Adăugarea unui antet de aspect

În primul rând, hai să creăm o zonă Capac, datele pentru antetul tipăririi vor fi afișate acolo. Pentru această zonă, avem nevoie de șapte linii ale machetei. Selectați-le și, așa cum am scris mai sus, apăsați comanda rapidă de la tastatură Ctrl + Shift + N, în câmp Nume scrieți „Hat” și apăsați butonul O.K.

Să completăm zona de aspect cu datele de care avem nevoie. De obicei, niciun tipar nu este complet fără o rubrică, deci creăm și unul în antetul nostru. Întrucât în \u200b\u200btitlu, pe lângă numele tipăririi, vom afișa și numărul documentului din care a fost tipărit, vom seta textul titlului în aspect cu un parametru. Un parametru de dispunere este o celulă de design special desemnată, în care se pot afișa diferite date folosind limbajul 1C 8 încorporat. Titlul ar trebui să fie afișat pe întreaga lățime a formularului de imprimare, așa că haideți să determinăm câte celule de aspect vor fi suficiente pentru a tipări pe orientarea standard a peisajului foii.

De obicei, treizeci sau paisprezece celule de dispunere sunt suficiente, selectați-le în prima linie a zonei Capac și se combină într-o celulă ( Meniu contextual -\u003e Fuziune). După aceea, faceți dublu clic pe celula mare rezultată și scrieți numele parametrului, în cazul nostru „TitleText”. Pentru ca textul introdus să devină un parametru complet, faceți clic dreapta pe celulă și selectați elementul din meniul contextual Proprietăți... Pe un marcaj schemă găsi câmpul Umplere și alegeți valoarea Parametru... Parametrii în aspectul 1C sunt indicați prin paranteze "<>».

Titlul tiparului trebuie să iasă în evidență printre celelalte texte, astfel încât din nou să selectați celula și, folosind pictogramele de pe panoul de formatare a machetei, setați alinierea textului Centru și dimensiunea fontului 14.

După textul titlului, îl afișăm în zonă Capacdate despre organizație, contrapartidă, contractul contrapartidei și data primirii mărfii. Deoarece toate aceste date sunt preluate și din document, le vom aranja și cu parametri. În plus, un text explicativ ar trebui să fie scris înainte de fiecare parametru, astfel încât utilizatorul să înțeleagă cu ușurință unde se află organizația și unde se află contraparte, etc. Toate aceste acțiuni sunt asemănătoare cu crearea unui titlu, așa că nu mă voi lăsa pe ele în detaliu, nu voi oferi decât o imagine cu ceea ce ar trebui să fie rezultatul.

Figura arată cum diferă parametrii de aspect față de textul normal.

Adăugarea unui antet de tabel de aspect

Ultimul lucru pe care trebuie să-l creăm în această zonă a aspectului este antetul tabelului în care vor fi afișate datele secțiunii tabulare Produse... Coloanele necesare pentru tabel au fost descrise în secțiunea „Declarație de probleme”. De asemenea, vom crea antetul tabelului folosind concatenarea celulelor și scrierea textului (nume de coloană). Selectați marginile antetului tabelului cu ajutorul instrumentului Cadrucare se află în panoul de formatare a machetei.

Adăugarea unui tabel la aspect

Să creăm o altă zonă în aspect - Date... Va afișa tabelul de date din secțiunea tabulară Produse.Pentru această zonă, avem nevoie de o singură linie de aspect. Pentru a afișa toate rândurile secțiunii tabulare într-un formular printabil, vom completa și afișa această zonă de câte ori este nevoie. Coloane din zonă Date trebuie să corespundă coloanelor din antetul tabelului, astfel încât completarea acestuia este ușoară. Singura diferență este în zonă Date avem nevoie de parametri, nu doar de text. De asemenea, rețineți că, implicit, parametrii numerici sunt aliniați la dreapta și parametrii textului sunt aliniați la stânga. Pentru a selecta coloane, trebuie să utilizați instrumentul Cadru.

Adăugarea unui subsol la aspect

Ultima zonă de dispunere de care avem nevoie este subsol... Acesta va afișa totalurile în funcție de cantitate și cantitate. Creația este similară cu cea creată în zonă Date, dar în plus, totalurile trebuie evidențiate cu caractere aldine.

Drept urmare, ar trebui să obțineți următorul aspect:

Crearea unui formular de imprimare 1C. Programare

Să începem programarea - aceasta este cea mai importantă etapă în crearea unei plăci de imprimare. În primul rând, să mergem la modulul obiectului formularului de imprimare extern, aici vom programa. Pentru aceasta, faceți clic pe fereastra principală de procesare externă Acțiuni -\u003e Modul obiect deschis.

În modulul obiectului formularului de imprimare extern, trebuie să creați o funcție de export Imprimare ().

Funcții de tipărire () Exportă funcții de terminare

Vă rugăm să rețineți că această caracteristică este necesară pentru imprimabile externe în configurații folosind o aplicație obișnuită. Vom scrie tot codul de program ulterior necesar pentru afișarea tipăririi în această funcție.

Inițializarea variabilelor de bază

Să creăm o variabilă TabDoc, care va conține documentul foii de calcul - el este cel care poate fi imprimat în care vom afișa zonele completate ale aspectului.

TabDoc \u003d nou TabularDocument;

Intr-o variabila schemă obținem macheta plăcii de imprimare pe care am creat-o. Pentru aceasta folosim funcția încorporată Obțineți aspect (<ИмяМакета>).

Dispunere \u003d Obținerea machetei („Aspect”);

Vom primi toate zonele aspectului în variabile. Pentru aceasta folosim metoda de aspect GetArea (<ИмяОбласти>) .

Zona antetului \u003d Layout.GetArea ("Antet"); DataScope \u003d Layout.GetScope („Date”); AreaFooter \u003d Layout.GetArea ("Footer");

Ieșirea antetului imprimabil într-un document de foi de calcul

Toate variabilele necesare sunt inițializate. Să începem să completăm și să afișăm zonele de aspect într-un document de foi de calcul. În primul rând, să completăm antetul tipăririi, pentru aceasta trebuie să trecem în parametru TextHeader, pe care l-am creat în aspect, textul de care avem nevoie. Pentru a completa valorile parametrilor, zona de dispunere are o colecție specială, care se numește așa - Parametri.Din care prin „prin”. puteți obține orice parametru. În textul titlului vom transfera textul: „Tipărire”, precum și numărul documentului.

AreaHapki.Parameters.TextHeader \u003d "Printable" + ReferenceObject.Number;

Completați restul parametrilor antetului într-un mod similar, obținem toate valorile necesare pentru aceștia din recuzită ReferenceObject, care conține un link către documentul care este tipărit.

AreaHaps.Parameters.Organization \u003d ReferințăObject.Organization; AreaHaps.Parameters.Contractor \u003d ReferenceObject.Contractor; AreaHaps.Parameters.ArrivalDate \u003d ReferenceObject.Date; AreaHaps.Parameters.Contractor Agreement \u003d ReferințăObject.Contractor Agreement;

Toți parametrii antetului sunt completați, îl vom afișa în documentul de calcul pe care l-am creat, pentru aceasta folosim metoda Ieșire (<Область>) .

TabDok.Display (AreaHap);

Scrierea unei cereri pentru un handicap imprimabil

Să completăm și să ieșim zona Date... Crearea unei tipăriri 1C înseamnă, de asemenea, scrierea unei cereri, avem nevoie de ea pentru a obține datele secțiunii tabulare Produse și prețuri Nomenclatură pentru data curentă pe care o vom folosi Cerere... Limba de interogare 1C 8 este similară cu cea a SQL, sau mai degrabă copiază practic capabilitățile operatorului său SELECT, dar întreaga interogare este scrisă în rusă. Prin urmare, dacă sunteți chiar la distanță cu SQL, atunci veți înțelege cu ușurință limbajul de interogare 1C 8.

În această formă tipărită, solicitarea va fi destul de simplă și mulți vor spune că ar fi posibil să o faci fără ea, dar cunoașterea limbajului de interogare și abilitatea de a o folosi corect este una dintre abilitățile principale ale unui programator 1C. Interogările permit utilizarea a mai puține resurse pentru a obține cele mai complexe eșantioane de date, iar textul de interogare este mult mai ușor de înțeles decât în \u200b\u200bcodul programului scris fără a utiliza o interogare (sau cu o utilizare minimă a acesteia) În plus, 1C 8 are un designer de interogări foarte bun care vă permite să colectați în mod interactiv o interogare din tabelele dorite.

Să creăm o variabilă care să conțină solicitarea.

Cerere \u003d Cerere nouă;

Vom compune textul solicitării folosind constructorul de interogare. Mai întâi, să scriem:

Request.Text \u003d "";

Puneți cursorul mouse-ului între ghilimele, apăsați butonul dreapta al mouse-ului. În meniul contextual care se deschide, selectați elementul Constructor de interogare, ne va ajuta foarte mult în crearea unui formular de imprimare 1C. După aceea, fereastra proiectantului de interogare se va deschide, conține multe file, dar pentru interogarea noastră sunt necesare doar patru: „Tabele și câmpuri”, „Relații”, „Condiții”, „Alăturați / Alias”.

Pentru interogarea noastră, avem nevoie de două tabele: secțiunea tabulară Produse document Primirea bunurilor și serviciilor și o porție din ultimul registru de informații pentru data curentă Prețurile articolului.

În partea stângă a ferestrei designerului, găsiți coloana Bază de date... Conține un arbore cu toate obiectele de metadate, să le găsim pe cele de care avem nevoie. Pentru a face acest lucru, deschideți sucursala Documente și găsiți documentul Sosirea bunurilor și serviciilor, deschideți-l și găsiți secțiunea tabulară Produsetrăgând-o în coloana proiectantului de interogare Mese... Puteți trage în trei moduri: prin glisare și fixare, dând dublu clic pe tabel sau selectând și apăsând butonul "\u003e". Să deschidem filiala Registre de informare și găsește masa acolo PricesNomenclature.SliceLast, glisați-l și în coloană Mese... Aceste două tabele sunt suficiente pentru interogarea noastră.

Să selectăm câmpurile de care avem nevoie din tabelele rezultate. Pentru a face acest lucru, în coloană Mese deschide masa și găsiți câmpurile: Nomenclator, Suma, Preț, Cantitate și trageți-le la a treia coloană a constructorului - Câmpuri... Să deschidem masa , găsiți câmpul Preț și de asemenea trageți-l la Câmpuri.

Structura tabelelor și câmpurilor interogării noastre este gata, acum să ne ocupăm de condiții. Avem nevoie de datele secțiunii tabulare Produse nu au fost luate din toate chitanțele, ci doar din cele pe care le tipărim. Pentru a face acest lucru, impunem o condiție pe masă Sosirea mărfurilor... Să mergem la fila „Condiții” a designerului de interogare. Într-o coloană Câmpuritabelele selectate mai devreme sunt localizate, pentru condiția de care avem nevoie de un câmp Legătură de la masă Primire de bunuri, servicii, bunuri, trageți-l în fereastra Condiții.

În cererile 1C, puteți utiliza parametri, aceștia sunt necesari pentru a transfera date la cerere. De exemplu, dacă dorim să restricționăm selecția documentelor la un anumit document, putem utiliza un parametru pentru a trece o legătură către acest document la cerere și să utilizăm acest parametru în condiție. Aceasta este exact ceea ce vom face în cererea noastră.

După ieșirea din fereastră Termeni am adăugat un câmp Legătură, constructorul de interogare va crea el însuși un parametru cu același nume și îl va plasa după semnul "\u003d". Dacă doriți, acest parametru poate fi redenumit. În textul de solicitare, parametrii sunt marcați cu „&”, dar în acest caz nu trebuie să faceți acest lucru, deoarece se presupune că a doua parte a condiției conține un parametru, trebuie doar să vă amintiți de acesta. Modul de transfer al unei valori la un parametru de solicitare 1C va fi descris mai jos.

Întrucât în \u200b\u200binterogare nu folosim un tabel complet al prețurilor articolului, ci unul virtual (o reducere a acestuia din urmă în acest caz), trebuie să stabilim condițiile pentru formarea acestui tabel virtual, în cazul nostru aceasta este data de tăiere și o condiție pentru tipul de preț (prețurile trebuie selectate care să aibă o definiție strictă) tipul de preț - cel care este specificat în documentul de primire pe care îl tipărim).

Pentru a completa parametrii tabelului virtual, accesați fila Tabele și câmpuri constructor de interogare, în coloană Mese selectați tabelul PricesNomenclatureSliceLast și apăsați butonul Parametrii tabelului virtualsituat în vârf. În fereastra care se deschide, în câmp Perioadă ar trebui să setați parametrul la care va fi transmisă data, pentru care prețurile vor fi reduse. În cazul nostru, aceasta va fi data curentă (adică astăzi), de aceea vom numi parametrul „& CurrentDate”. În câmpul condiții, vom scrie condiții pentru tipul de preț, îl vom transmite și în parametrul, pe care îl vom numi „& Preț tip”. Starea rezultată va arăta astfel (unde Tip de preț - măsurarea registrului Prețurile articolului):

PriceType \u003d & PriceType

Parametrii tabelului virtual sunt completați, apăsați butonul O.K.

Acum că am limitat selecția doar la documentul de care avem nevoie, vom crea legături între tabelele de interogare. Dacă nu faceți acest lucru, atunci prețurile din tabelul ItemNomenclatureSlicePrices nu vor fi legate de obiectul de la chitanță. Să mergem la filă Conexiuniconstructor de interogare. Creați o legătură pe câmp Nomenclatură între cele două tabele ale noastre. Pentru a face acest lucru, apăsați butonul Adauga la, în câmp tabelul 1selectați tabelul Sosirea mărfurilor, și în câmpul Tabelul 2 - PrețuriNomenclatorSliceLast. În condițiile de comunicare, selectați câmpurile Nomenclatură din ambele tabele.

De asemenea, trebuie remarcat faptul că în selecția de interogare, trebuie să obținem toate rândurile din partea filei Produse și prețurile numai dacă sunt disponibile pentru data curentă în funcție de tipul prețurilor documentelor. Astfel, aceste file Produse sunt necesare, dar datele privind reducerea prețurilor nu sunt. Prin urmare, în legăturile dintre aceste tabele, este necesar să se utilizeze așa-numita ÎNCHIRIARE ÎNCHIS, iar tabelul din stânga (sau obligatoriu) va fi Sosirea mărfurilor, și dreptul (sau opțional) PriceNomenclatureSliceLast. Pentru ca alăturarea din stânga a tabelelor de interogare să funcționeze așa cum am descris mai sus, trebuie să bifați caseta Toate după câmp Tabelul 1.


Interogarea este aproape gata, a mai rămas doar puțin lucru pentru alias-urile de teren. Să mergem la marcaj Uniuni / Alias și setați un alias pentru câmp PricesNomenclatureSliceLast.Price... Numele de alias va fi - PriceToday, este necesar pentru ca numele câmpurilor de selecție de interogare și numele parametrilor din aspectul tipăririi să fie aceleași.

Aceasta finalizează lucrul în proiectantul de interogare, apăsați butonul OK. După ce se închide fereastra constructorului, veți vedea că linia cu textul de solicitare este completată și arată astfel:

Zapros.Tekst \u003d „SELECT | PostuplenieTovarovUslugTovary.Nomenklatura, | PostuplenieTovarovUslugTovary.Summa, | PostuplenieTovarovUslugTovary.Tsena, | PostuplenieTovarovUslugTovary.Kolichestvo, | TsenyNomenklaturySrezPoslednih.Tsena AS TsenaNaSegodnya | DIN | Dokument.PostuplenieTovarovUslug.Tovary AS PostuplenieTovarovUslugTovary | alătura stânga RegistrSvedeniy.TsenyNomenklatury.SrezPoslednih |

Executarea unei cereri

Să transmitem parametrii necesari la cerere, pentru aceasta folosim metoda solicitării SetParameter (<ИмяПараметра>,<Значение>). Pentru a obține data curentă, utilizați funcția încorporată Data curentă (), returnează data și ora computerului.

Să executăm o solicitare pentru a obține o selecție cu datele de care avem nevoie. Pentru a face acest lucru, folosim mai întâi metoda solicitării A executa ()și apoi prin metodă Alege().

Selection \u003d Query.Run (). Selectați ();

Completarea tabelului imprimabil

Ca urmare, în variabilă Probă va conține o selecție de rezultate de interogare, puteți naviga prin ea folosind metoda Ca urmare a()și să ocoliți întreaga buclă de care aveți nevoie Pana cand... Construcția va fi următoarea:

În timp ce Fetch.Next () Bucla finală a buclei;

În această buclă vom completa și afișa zona de aspect Date... Dar mai întâi, să inițializăm două variabile de tip numeric. În ele vom colecta totaluri pentru cantitatea și suma pe care trebuie să le aducem în zonă subsol.

TotalSum \u003d 0; Total cantitate \u003d 0;

În interiorul buclei, vom umple zona Date date din elementul de selecție curent, în variabile Valoare totalăși Cantitatea totala adăugați valorile cantității și cantității și, în final, afișați zona din documentul foii de calcul folosind metoda deja cunoscută Ieșire ()... Întrucât numele de câmp ale interogării noastre coincid complet cu numele parametrilor domeniului de aplicare Date, apoi pentru completare vom folosi procedura încorporată FillPropertyValues \u200b\u200b(<Приемник>, <Источник>), care copiază valorile proprietății<Источника> în proprietăți<Приемника>.

În timp ce Fetch.Next () Loop FillPropertyValues \u200b\u200b(ScopeData.Parameters, Fetch); TotalSum \u003d TotalSum + Exemplu.Sum; TotalQuantity \u003d TotalQuantity + Sample.Quantity; TabDok.Display (ScopeData); Sfârșitul ciclului;

Afișarea subsolului unui formular de imprimare într-un document cu foi de calcul

Rămâne să completați și să afișați ultima zonă a aspectului - subsol... Am pregătit deja datele pentru completarea, completarea și retragerea se realizează conform aceleiași scheme.

AreaBoard.Parameters.TotalQuantity \u003d TotalQuantity; AreaBoard.Parameters.TotalSum \u003d TotalSum; TabDok.Display (subsol zonă);

Documentul foii de calcul este completat complet, rămâne să îl afișăm pe ecran, astfel încât utilizatorul să poată vizualiza formularul tipărit și, dacă este necesar, să printeze. Dar în configurațiile tipice 1C 8, procedurile modulelor speciale sunt responsabile pentru producerea formularelor de imprimare externe. Prin urmare, este suficient să reveniți din funcție Imprimare () document completat cu foaie de calcul.

Returnarea TabDoc;

În această etapă, programarea s-a încheiat, iar crearea plăcii de imprimare 1c este aproape completă. Text complet pentru funcții Imprimare () Nu o voi da aici, îl puteți vedea în fișierul imprimabil, care poate fi descărcat în partea de jos a articolului.

Crearea unui formular de imprimare 1C. Parametri de înregistrare automată

Când conectați un formular de imprimare extern la bază, sistemul nu stabilește automat ce document sau carte de referință este destinată formularului de imprimare, ci trebuie selectat manual. Și dacă o altă persoană a scris formularul tipărit și vi s-a cerut doar să îl conectați, atunci alegerea poate deveni ambiguă. Pentru a evita astfel de probleme, este necesar să se creeze un layout cu parametrii de înregistrare automată în toate formele de imprimare externe. Dacă este creat și formatat corect, sistemul stabilește automat ce document sau carte de referință este tipărită forma tipărită.

Se face după cum urmează:

  • În procesarea externă, creăm un nou aspect. O numim „Auto-înregistrare_Parametre” (important este să nu greșim!).
  • În prima celulă a machetei, scrieți Documente. (sau Carti de referinta.) și numele documentului la care doriți să conectați tipărirea.

Conexiune la baza unei plăci de imprimare externe

  • Rulați 1C 8 în modul Companie;
  • Accesați meniul Service -\u003e Rapoarte și procesare suplimentare -\u003e Formulare suplimentare de imprimat extern;
  • Faceți clic pe buton Adauga la;
  • În fereastra care se deschide, faceți clic pe pictogramă Înlocuiți fișierul de procesare extern;
  • Dacă ați creat parametri de înregistrare automată, atunci acceptăm să le utilizăm;
  • Dacă nu ați creat parametri de înregistrare automată, atunci în secțiunea tabulară Afilierea plăcii de imprimare adăugați documentul sau directorul necesar;
  • Apasa butonul O.K.

După aceea, imprimarea externă va fi disponibilă în meniu tipărire document Primirea bunurilor și serviciilor.Crearea formularului de imprimare 1C poate fi considerată completată în acest sens.

2016-12-01T12: 56: 42 + 00: 00

În 1C: Contabilitatea 8.3 (revizuirea 3.0) a apărut o oportunitate minunată. Acum, utilizatorul în modul 1C: Modul Enterprise poate edita cu ușurință aspectele formularelor tipărite.

Când poate fi util acest lucru? Ei bine, de exemplu, există o formă de tipărire, să spunem, „Obligatoriu”, în care faceți unele modificări după ce o imprimați. Schimbați fontul, imprimați marjele, eliminați lucruri inutile.

Deci de ce să faci asta de fiecare dată ?! Dacă putem face aceste modificări odată cu aspectul formularului de imprimare și programul va afișa întotdeauna formularul de imprimare așa cum avem nevoie.

Mai jos, în pași vă voi arăta modul de modificare a machetei tipăritului „Cerință-factură”. Vom adăuga un câmp nou acolo: „Responsabil”.

1. Generați un tipar (folosind butonul „Tipărire”) și faceți clic în formularul care se deschide (din dreapta) „Mai mult” -\u003e „Schimbă aspectul”:

2. Dispunerea plăcii de imprimare se va deschide. Faceți modificările necesare, dar aveți grijă să nu lucrați astfel. Voi spune imediat că fonturile și dimensiunile câmpurilor pot fi modificate absolut exact, dar puteți șterge câmpurile existente (în special cele din<угловых скобках>) nu merită. Dacă doriți să ascundeți un câmp în<угловых скобках>, faceți-o invizibilă (după culoare sau dimensiune), dar ar trebui să rămână pe formular, așa cum este necesar de codul de program 1C.

3. Vom adăuga câmpul „Responsabil” și vom face clic pe butonul „Salvați și închide”.

4. Formularul tipărit a fost format din nou într-o formă nouă așa cum ne-am dorit.

Dacă după schimbarea formei tipărite a încetat să funcționeze, atunci tu.

Cu respect, Vladimir Milkin (profesor și dezvoltator).

Asa de! Există o configurație (de exemplu, „Managementul comerțului”, revizuirea 10.3) și pentru aceasta trebuie să dezvoltați o imprimare externă. De exemplu, să luăm un document tipic „Factură pentru plată unui client” (deși formularele tipabile externe pot fi create nu numai pentru documente, ci și pentru cărți de referință).

Exemplu pentru 1C 8.3 (formulare gestionate)

Un exemplu de dezvoltare a unei tipăriri externe pentru o aplicație gestionată poate fi vizualizat.

O sarcină

Elaborați un formular tipărit extern, care va fi disponibil din documentul „Factură pentru plata către cumpărător” și care va conține numele organizației, contrapartidei și o listă de bunuri cu preț, cantitate și cantitate.

Merge!

Primul lucru de făcut este să creăm un fișier de procesare extern. Prelucrarea trebuie să conțină trei puncte principale:
  1. Atributul „ReferenceObject” cu tipul „DocumentLink.InvoicePayment către cumpărător”
  2. Aspect care urmează să fie tipărit
  3. Funcția de export „Print ()” care returnează un document de foi
Aceste acțiuni pot fi văzute în figura # 1

"Desenarea machetei"

Aspectul nostru va conține două domenii:
  1. Titlul (capul) documentului (numele organizației și contrapartida vor fi plasate în această zonă) și capul tabelului (cu numele coloanelor)
  2. Tabel cu mărfuri (coloane, cu nume, cantitate și cantitate)
Figura 2 prezintă aspectul plăcii de imprimare externe. Rețineți că celulele tabelului și celulele antet conțin parametri, nu doar text.

Funcția "Print ()"

Acum formularul este aproape gata. Rămâne să scrieți programatic completând câmpurile din documentul foii de calcul. Aceste acțiuni sunt efectuate în modulul obiectului de procesare, într-o funcție numită "Tipărire", care TREBUIE să fie exportată.
Etapa 1 Primirea datelor pentru antet, completarea parametrilor antetului și afișarea acestora într-un document de foi de calcul TabularDocument \u003d TabularDocument nou; Layout \u003d Obțineți aspect („Aspectul nostru”); Cerere de date \u003d Solicitare nouă ("ALEGI | ÎNVĂȚARE (factură pentru plata către cumpărător.Contractor) ca contrapartidă | | PREZENTARE (factură pentru plată către cumpărător.Organizare) AS Organizație | FROM | Document.Infuzie pentru plată cumpărătorului AS Factură pentru plată | Data Query.SetParameter ("Link", LinkOnObject); Antet \u003d Date Query.Run (). Selectați (); Hat.Next (); Area \u003d Layout.GetArea ("Antet"); Region.Parameters.Fill (rubrică); TabularDocument.Display (Regiune); Etapa 2 Primirea de date tabulare și ieșirea linie cu linie a mărfurilor
Data Query.Text \u003d "SELECT | _Products.LineNumber, | PREZENTARE (_Products.Nomenclature) AS Nomenclature, | _Products.Quantity, | _Goods.Price, | _Products.Total | FROM | Document.Factura de mărfuri _ Bunuri către cumpărător | Link \u003d & Link "; Fetch \u003d Data Query.Run (). Selectați (); Region \u003d Layout.GetScope ("Date"); În timp ce Selection.Next () Loop Area.Parameters.Fill (Selection); TabularDocument.Display (Regiune); Sfârșitul ciclului; Etapa 3 Întoarcerea funcției documentului și a foii de calcul Return TabularDocument;

Adăugați placa noastră de imprimare externă la 1C

Accesăm meniul "Service - Formulare de imprimare externe și procesare - Formulare de imprimare externe"

În fereastra de creare a elementelor care se deschide, efectuați următoarele acțiuni:

  1. Încărcați fișierul de procesare extern
  2. Vă indicăm pentru ce document (sau carte de referință) a configurației, tipărirea este destinată
  3. Modificări de înregistrare

Să tipărim!

Deschidem orice document „Factură pentru plată către cumpărător” (cu secțiunea tabulară completată „Produse”, pentru că de acolo luăm datele pentru completare), apăsăm butonul „Tipărire”, în fereastra care se deschide, selectați formularul nostru imprimabil și apăsați „Tipărire”


ATENŢIE!Acest algoritm de dezvoltare este adecvat DOAR pentru „Aplicație normală”. Formularele de imprimare pentru configurații în modul Ghidare aplicație sunt diferite!

Fișierul formularului imprimabil prezentat în exemplu poate fi

 

Ar putea fi util să citiți: