Crearea plăcilor externe de imprimare pentru 1c 8

Cuvânt înainte: Această metodă este doar o alternativă la cea standard, pe care o puteți învăța dintr-o serie de articole din mac

După cum a demonstrat practica, utilizarea acestei metode este justificată doar în cazuri foarte rare. Dar metoda însăși este interesantă în ceea ce privește posibilitatea de a executa proceduri și funcții care vor fi executate în contextul unui alt obiect.







Ei bine, atunci. Pentru a nu merge departe, hai să luăm contabilitatea tipică 1C 1.6. Și vom face pentru ea o formă tipărită externă de imprimare a unei facturi emise cu aspectul acesteia și cu posibilitatea schimbării modulului de formare a formei tipărite.

Vom face următoarele:

1. Creați o formă tipărită externă care repetă formularul de eșantion.

2. Vom înlocui în presă în domeniul transportatorului "același lucru" cu aceste organizații.

3. Să schimbăm ușor aspectul.

Începutul nu diferă de crearea formei tipărite externe obișnuite.

1. Creați procesarea externă.

2. Să o numim "OutputFacility Output".

4. În modulul de procesare, creați funcția de export "Imprimare".

Butonul Procedură Executați Apăsați (Buton)
Imprimați (). Afișați ();
Sfârșitul procedurii

Acest lucru va permite tipărirea pentru a apela prelucrarea noastră fără a conecta un tip extern de imprimare prin simpla deschidere a fișierului.

6. Copiați macheta facturilor la procesarea noastră. Deoarece aceste machete sunt complete, vom copia totul. Doar în caz.

În timp ce totul este ca de obicei. Rezultatul - vezi Figura 1.

Și acum, începe "Magic".

7. Creați un alt formular. Să o numim "Forma de cont".

8. Modificarea condiție primară a doua formă ( „FormaSchetaFaktury“): Schimbarea numelui cu „ObrabotkaObekt“ de tipul „DokumentObekt“ cu un „VneshnyayaObrabotka.VneshniySchetFakturaVydanny“ pe „DokumentObekt.SchetFakturaVydanny“. Vă atrag atenția, este DocumentObject!

9. În modulul de formă, declarați variabila de export "Prelucrare". Acesta va conține obiectul prelucrării externe pentru a accesa layout-urile. De ce nu recuzita? Pentru că atunci când folosești recuzele, procesul de procesare a rămas activ în întreprindere, chiar și după închiderea tuturor ferestrelor.

10. În modulul de procesare din funcția "Print", adăugați codul:

Forma facturilor = Obțineți un formular ("Forma de cont");
Forma de cont. DocumentObject = AccountFactureObject;
Forma de cont. Procesare = ThisObject;
TabDoc = formă de cont de cont. Imprimați formularul ();

Întoarcere (TabDoc);
Terminați funcția

11. Transferăm (din metoda copiere / lipire) de la modulul Document la modulul de formular "Forma contului de cont" toate procedurile necesare. Și ei trebuie să fie spus la factura sunt multe:

  • Inițializarea TablesString
  • Colectați dateAboutCommentOrSales
  • Colectați dateAboutComissionerOrSales
  • ColectațiServicii de dateServiciiServicii
  • Colectați datele privind returnarea bunurilor către furnizor
  • Colectați dateleDublicări
  • Colectați datelePOSVP
  • Colectați date în fereastra de plată
  • Colectați datele
  • Colectați datele transferate
  • Colectați date de la o organizație
  • Collect DataPaintingRealization of GoodsServices
  • Colectați DataServiceServicesProcessing
  • Colectați DataApplicationDocument
  • Colectați datele MS
  • Colectați datele de date
  • Colectați DataSpareAventsAmountlessDifference
  • Câmpurile DeliverWidthsField
  • Reîncărcați cantitatea de runde SINGLE
  • Imprimare de conturiFactorii

Dar nu vă temeți de numărul lor. După cum puteți vedea, majoritatea sunt "Colectați date". Și serviciul de imprimare. De asemenea, există o funcție "PrintingFeedback".







Este demn de remarcat faptul că nu toate sunt exportate. Din acest motiv am copiat-o.

Conversație separată la transferarea procedurii Print (.) De la modulul de document.

Acesta este cel mai dificil moment.

Redenumiți-l pentru a imprima formularul. Dar nu numai că îl vom schimba într-o funcție. Pentru a face acest lucru, înlocuiți toate "Return" prin Return (Undefined).

O procedură de apel la sfârșitul modulului de procedură

Mecanisme universale. NapechatatDokument (TabDokument KolichestvoEkzemplyarov NaPrinter ObschegoNaznacheniya SformirovatZagolovokDokumenta (EtotObekt EtotObekt metadate () Introducere ()) NeposredstvennayaPechat .......);

De asemenea, acum nu avem nevoie de parametri: Cantitatea de instanțe, OnPrint, DirectPrint.

Și parametrul "NameMaker" este irelevant pentru noi. Doar setați valoarea sa în corpul funcției:

eliminându-l din parametri.

12. Rămâne să înlocuiască apelul de momeală obișnuită cu machete din prelucrare. Modificați rândurile formularului

Layout = Obțineți aspectul general (".") Și Layout = obțineți aspectul (".")

Layout = Manipulare. Obțineți pachetul (".");

Avem o formă tipărită externă a Facturii facturate, cu funcțiile și procedurile de formare și machete transferate.

Salvăm. Aga - jurăm la "mr. Adress". Privim în modulul documentului este o variabilă a modulului obiectului. Declarăm în forma noastră și atribuim o valoare (ca în modulul documentului).


Перем ВнОрабоботка Export;
Mutați mAddressFeedback;

//. (toate procedurile și funcțiile)

mAddressFeedback = "Plata anticipată";

Oktryvaem în întreprindere 1C și testarea!).

În funcția Print Outside Form după linii

Dacă DataFor Printing = Undefined sau TypeType (DataFor Printing) = Tip ("Matching") Apoi
continua;
ENDIF

// Înlocuiți "în print" cu Organizația
Dacă se imprimă date. Expeditor = "el" atunci
DataFor Printing. Expeditor = Imprimare date. organizație;
Sfârșit Dacă;

Dar acum totul este în regulă! Modificăm modul în care ne dorim aranjamente, obținerea datelor, formarea formularelor tipărite.

PS. Consultați atașamentul din atașament.

Supliment 1. Este luat în considerare un exemplu "complex". Factura de plată, conosament și așa mai departe sunt imprimate chiar mai ușor, dar principiul este același. Critica și comentariile sunt binevenite.

Supliment 2. Funcționează numai pe platforme mai vechi decât 8.1.11.

Dopolnenie3. Mă gândeam mult la poze. Nu m-am gândit niciodată.

Suplimentul 4. Când conectați o formă tipărită externă, puteți să o înlocuiți cu una obișnuită, pentru a nu întârzia utilizatorii în dialog (c) Locotenentul

Supliment 5. Pentru a testa și pentru a depana o formă tipărită externă, în loc să creați un formular special în EVOLUȚIE, puteți utiliza instrumentul de mac //infostart.ru/public/14686/ (c) artbear

Și nu mă ridic.

Având în vedere că forma tipărită nu salvează obiectul, ci doar o verifică. Ei bine, poate da. În cele mai multe cazuri, este necesar un document deținut sau salvat. Dar la fel. După ce apar întrebări, ar trebui să le explicați cumva.

Am greșit puțin:
- Am luat procedurile necesare pentru formarea tiparului;
- Pentru formularul de testare și depanare, am scris același cod ca cel descris mai sus:

Butonul Procedură Executați Apăsați (Buton)
Imprimare (). Afișați ();
Sfârșitul procedurii

- Dar pentru a fi folosit ca formă de tipar extern, într-un mod diferit (nu am primit niciun obiect, bine, nu am întâlnit încă cazul în care era cu adevărat necesar):

Cerere = Solicitare nouă;
.
Cerere de returnare Execute ();

Funcția Imprimare () Exportați

TabDocument = TabularDocument nou;
.
Eșantionare = Crearea unei interogări de tipărire (). Selectați ();
Layout = ThisObject. Obțineți aspectul ("Forms Layout");
.
În timpul selecției. Următorul () Ciclu
Layout.Parameters.Fill (Selecție);
.
TabDokument.Vyvest (Layout);
Sfârșitul ciclului;

Asta ridică o întrebare. De ce, în formularul standard tipărit, această verificare este implementată?


Întrebarea a fost pusă pe formularele tipice tipărite. Acestea sunt întrebările tipice pe care de obicei nu le ridicăm.


Ai citit articolul? Sau titlul? Așa cum am scris în titlu, citez: "(prin substituirea contextului)". Deci, pentru a înlocui contextul formei trebuie să obținem obiectul.

La urma urmei, totul se poate face mai ușor.


Din nou, mă voi cita

După cum a demonstrat practica, utilizarea acestei metode este justificată doar în cazuri foarte rare. Dar metoda însăși este interesantă în ceea ce privește posibilitatea de a executa proceduri și funcții care vor fi executate în contextul unui alt obiect.

Și, în măsura în care înțeleg, această procesare se numește prin apelarea comenzii "Open".


Nu, nu este înțeles corect.

În general, în măsura în care înțeleg situația, sunteți la începutul căii de a stăpâni 1C. Dacă da, acest tratament nu poate arăta în siguranță și nu se dezasambla. Avea un înțeles dubios în cererea obișnuită, iar în cazul în care a reușit, a pierdut-o. Ei bine, pe scurt, este irelevant.

Dacă asta îmi cer scuze pentru tonul tău. Este foarte greu astăzi.







Articole similare

Trimiteți-le prietenilor: