Cum se configurează smartphone-uri și PC-uri. Portal informativ
  • Acasă
  • Windows 7, XP
  • O definiție a procedurii funcției este de așteptat înainte. Module de extindere

O definiție a procedurii funcției este de așteptat înainte. Module de extindere

Astăzi vrem să vă spunem despre utilizarea rapoartelor și procesării suplimentare, și în special a extensiilor de configurare în modelul de serviciu. Tehnologiile nu stau pe loc, întreținerea bazelor de date 1C în cloud devine un serviciu din ce în ce mai atractiv. Ce trebuie să știți pentru ca funcționalitatea necesară companiei dvs. să fie implementată în baza închiriată și cum arată acest proces din partea furnizorului de servicii - puteți afla despre asta sub tăietură.

Ce sunt rapoartele externe și procesarea

Procesarea 1C poate fi diferită, dar în orice caz, ele extind funcționalitatea configurației și vă permit să accesați rapid informațiile stocate în baza de date, fără a modifica configurația și fără a o scoate din suport. Acestea pot fi încorporate direct în configurație, adăugate ca extensie la configurație sau pot fi fișiere externe.

În funcție de funcționalitatea prelucrării, acestea se împart în cele care pot modifica datele și cele care pur și simplu analizează informațiile și afișează rezultatul într-o formă ușor de utilizat (rapoarte). Pentru a nu modifica machetele standard pentru tipărirea documentelor, sunt dezvoltate formulare de tipărire externe. De asemenea, procesarea externă poate fi efectuată conform unui program specificat pe serverul de aplicații 1C - acestea sunt sarcini programate.

Câteva zeci de tratamente au fost dezvoltate în Button, permițând contabililor noștri să folosească „magie practică”. De exemplu, pentru a analiza corectitudinea contabilității în Buton, se folosește raportul extern „Audit automat al bazelor de date”. În tabele ușor de citit, este afișată o analiză a 120 de criterii de solduri și cifre de afaceri ale conturilor, conformitatea datelor din declarațiile fiscale și informațiile contabile, analiza mijloacelor fixe etc.

Un exemplu de „acord de împrumut” extern imprimabil în forma elaborată de avocații noștri. Sunt momente în care un antreprenor ia un împrumut fără dobândă de la compania sa ca persoană fizică, sau invers, își transferă fondurile proprii către companie, atunci există posibilitatea de a imprima imediat contractul.

Se deschide un formular pentru completarea detaliilor necesare:

Și se afișează forma tipărită a contractului:

Folosim procesarea programată (sarcini programate), de exemplu, pentru a corecta un extras. La Button, integrările cu băncile majore sunt configurate și roboți speciali încarcă extrasul direct în 1C. Datorită tehnologiei de învățare automată, procentul de erori în timpul declarației a fost redus la 3%. Dar, ca întotdeauna, există excepții, de exemplu, clienții care folosesc o schemă de agenție pentru vânzarea de mărfuri, în acest caz regulile pentru efectuarea extrasului bancar sunt individuale. Pentru a nu reprograma robotul pentru un anumit caz, înainte de apariția extensiilor de configurare, a fost folosită o sarcină programată pentru a corecta declarația pentru robot la fiecare 10 minute.

Ce sunt extensiile de configurare

O extensie este o mini-configurație care moștenește obiecte din configurația principală a bazei de date și conține cod cu adăugiri sau remedieri la obiecte și module. În acest caz, configurația principală rămâne pe suport, nu trebuie să activați editarea, ceea ce facilitează foarte mult procesul de actualizare.

Mecanismul presupune trei tipuri de utilizare, care, de fapt, sunt indicate în câmpul „Scop” la crearea unei extensii:

Componenta centrală a tehnologiei este Manager de servicii, stochează toate informațiile despre abonați, utilizatori, aplicații, baze de informații și conexiunile dintre aceștia, cu ajutorul acestuia, procesările externe și extensiile de configurare sunt gestionate.

Toate fișierele de procesare sunt încărcate într-un director special al managerului de servicii. Dar înainte de a încărca un fișier în catalog, cu alte cuvinte „publicați în serviciu”, acesta trebuie pregătit într-un mod special.

Pregatirea rapoartelor externe si procesatorilor pentru publicare in modelul de serviciu

Un raport sau o procesare suplimentară este creat în configuratorul 1C: Enterprise 8 ca rapoarte și procesare externe standard și salvat într-un fișier cu extensia - .epf (pentru procesare suplimentară) sau .erf (pentru rapoarte suplimentare).

Modulul obiect trebuie să conțină proceduri și funcții pentru definirea parametrilor de înregistrare.

Vă rugăm să rețineți că „Versiune” este un parametru important. Dacă ați făcut modificări la o procesare care a fost încărcată anterior în directorul managerului de servicii, asigurați-vă că schimbați numărul versiunii, altfel managerul de servicii va refuza să descarce acest fișier. La elaborarea unui raport sau la procesarea acestuia, trebuie avut în vedere faptul că utilizatorii lucrează în modelul de servicii prin intermediul unui client web (un articol bun în blogul 1C). Dacă procesarea conține formulare, atunci acestea trebuie să funcționeze într-un client web sub toate browserele web care sunt suportate de platforma tehnologică 1C: Enterprise 8.

Conform standardelor de serviciu 1cfresh.com, un raport sau o procesare suplimentară trebuie să fie complet operațional atunci când este executat în modul sigur, adică să funcționeze fără a accesa obiecte externe pentru configurare.

Trebuie pregătit un raport sau o procesare suplimentară pentru a fi încărcat în serviciu ca kit de livrare. Kitul de distribuție este o arhivă (fișier zip) care conține:

  • raport suplimentar sau dosar de procesare;
  • fișier manifest xml, care conține metainformații suplimentare solicitate de managerul de servicii pentru a publica un raport suplimentar sau a-l procesa în serviciu.
Pregătirea se realizează într-o bază de informații implementată local a configurației pentru care este destinată raportarea sau procesarea suplimentară. Folosim un asistent special pentru crearea unui kit de livrare, prelucrare externă Pregătire Rapoarte Suplimentare și Prelucrare pentru Publicații în Serviciu Model.epf. Mai multe detalii pot fi găsite în documentația despre Tehnologia de publicare a soluțiilor 1C Fresh.

Instalarea rapoartelor suplimentare și procesarea în modelul de serviciu

O caracteristică distinctivă a tehnologiei 1C Fresh este că un raport sau o procesare externă nu poate fi încărcat direct în zona de date. Adăugarea se face numai de administratorul serviciului prin intermediul managerului de servicii. După ce arhiva zip cu fișierul de procesare a fost pregătită, aceasta trebuie să fie încărcată în directorul managerului de servicii și instalată pentru un anumit abonat al serviciului.

Un abonat la serviciu este un grup de utilizatori uniți după un anumit principiu. În consecință, bazele de informații disponibile pentru un anumit grup de utilizatori sunt numite aplicații pentru abonați.

Aplicațiile pot avea diverse configurații 1C (Contabilitatea întreprinderii, Managementul salariilor și personalului, Managementul companiei noastre etc.), care pot fi utilizate în modelul de servicii. Raportarea sau procesarea suplimentară poate fi instalată numai în aplicația abonatului, care este specificată la descărcarea fișierului.

Așa arată forma proprietăților unui raport suplimentar versionat. Folosind hyperlinkul „Instalare / Dezinstalare”, ajungem la lista de aplicații și selectăm bazele de date necesare.

După ce procesarea este încărcată și aplicația este selectată, managerul de servicii contactează adresa aplicației și dă comanda de instalare în baza de informații.

Începem procesarea conform programului

Când lucrați cu un număr mare de baze de date contabile, unele procesări trebuie efectuate periodic. De exemplu, o dată pe lună sau la fiecare câteva minute. De asemenea, este important să automatizați operațiunile manuale și tipice ale utilizatorului. Pentru aceasta folosim activ sarcinile programate.

Tratamentele programate nu au formă. Toată logica este scrisă în modulul obiect și arată astfel.



Când pregătim un kit de livrare, stabilim un program. Acum procesarea noastră va fi efectuată la fiecare oră.

Mai multe despre extensiile de configurare

În paralel cu procesarea și rapoartele externe, care trebuie pregătite și administrate „în mod demodat”, am început să folosim în mod activ mecanismul de extensii de configurare. Pornind de la platforma 1C Enterprise 8.3.10, acest mecanism ne-a ușurat mult viața și a făcut posibilă simplificarea adaptării configurațiilor la caracteristicile Butonului.

De exemplu, am scris mai sus despre operațiunile de rutină de corectare a documentelor pentru roboți, care erau lansate la fiecare 10 minute. Acum puteți redefini modul în care funcționează modulele folosind o extensie. Astfel, putem imediat, la înregistrarea sau postarea unui document, să efectuăm acțiunile necesare. Acest lucru este mult mai optim, deoarece coada de sarcini din baza de date nu este înfundată prin efectuarea de acțiuni la fiecare 10 minute și mai rapid, deoarece modificările se fac imediat.

Este destul de ușor să pregătiți o nouă extensie. Să aruncăm o privire asupra procesului de creare a extensiilor cu exemple specifice.
Conform experienței noastre, formularul tipărit TORG-12 este lider în ceea ce privește cererile de ajustare. De exemplu, trebuie să facem o extensie pentru capacitatea de a tipări o scrisoare de trăsură în valută străină (în mod implicit, aceasta poate fi generată numai în ruble).
Deschideți Meniu → Configurare → Extensii de configurare
Creăm o nouă extensie cu misiunea „Adaptare”.

Extensia arată ca un arbore de configurare familiar, dar până acum fără obiecte. Mai întâi de toate, să adăugăm un nou layout TORG-12, în care am inserat coloane cu sume în valută.

Deoarece factura este tipărită din documentul „Vânzări de bunuri și servicii”, vom adăuga acest document la extensia noastră din configurația principală și vom face modificările necesare în modulul de manager. Pentru a face acest lucru, selectați „adăugați la extensie” în meniul contextual de implementare.

Acum puteți modifica modulul manager de implementare. Trebuie să adăugăm un nou formular la lista de formulare imprimabile și să completăm sumele în valută.

Pentru a schimba procedurile tipice, folosim adnotarea & După; avem nevoie și de câteva dintre funcțiile noastre și de o procedură.

Să aruncăm o privire mai atentă asupra adnotărilor. În extensii, puteți folosi: & Înainte, & După, & În loc (foarte atent). Principiul de funcționare este simplu: vrem ca algoritmii noștri din extensie să fie executați mai întâi, punem adnotarea & Înainte și în paranteze indicăm numele procedurii din configurația standard. Dacă mai întâi funcționează modulul standard și apoi al nostru, folosim & After.

Adnotările & Înainte și & După nu pot fi aplicate funcțiilor. Prin urmare, dacă trebuie să schimbăm algoritmul unei funcții din configurația principală, folosiți & în loc de adnotare.

Adnotarea & În loc trebuie folosită cât mai puțin posibil, deoarece înlocuiește complet procedura și execuția funcției din configurația principală cu o procedură/funcție de extensie. Cu această metodă de interceptare, procedura/funcția din configurația principală va înceta în general să fie executată în timp ce extensia este instalată, chiar și actualizarea versiunilor nu va ajuta.

Concluzie

Există multe opinii diferite despre utilizarea extensiilor și a rapoartelor / procesării externe. Pe baza experienței noastre, amândoi suntem „în favoarea” expansiunii. Aceasta este o tehnologie modernă și mai adaptabilă, are mult mai multe funcții, iar publicarea lor este mult mai ușoară. Extensia conține doar partea necesară a codului; de asemenea, nu este nevoie să scrieți proceduri și funcții suplimentare pentru determinarea parametrilor de înregistrare, monitorizarea versiunilor și crearea unui kit de distribuție.

Pot fi utilizate mai multe extensii pentru aceeași zonă de date.
Pentru specificul funcționării 1C Fresh în modul de partajare a datelor (o configurație, multe zone independente), metoda de extensie este o soluție excelentă.

Implementat în versiunea 8.3.9.1818.

Pe scurt, acum cu ajutorul extensiilor puteți schimba modulele unei configurații tipice și puteți adăuga propriile module.

Și mai detaliat, puteți schimba orice module, cu excepția modulelor de forme obișnuite:

  • module comune;
  • Module obiect (modul obiect, modul manager etc.) pentru toate tipurile de obiecte;
  • Modul de sesiune;
  • Modul de aplicație gestionat;
  • Modul de conectare extern;
  • module de comandă;
  • Module de formulare;
  • etc.

Trebuie remarcat că este posibil să fi schimbat modulele formularelor gestionate înainte, dar acum am făcut câteva modificări acestui proces.

Interceptare
Puteți intercepta orice metodă din configurația tipică, încadrându-le cu propriile metode sau chiar înlocuindu-le în întregime.

Handler personalizat
Puteți adăuga propriile dvs. de gestionare a evenimentelor de configurare personalizate. Dacă, de exemplu, acestea nu sunt alocate într-o configurație tipică.

Module personalizate
Puteți crea propriile module comune în extensie.

Apel
Și, în sfârșit, puteți apela oricare dintre metodele tipice de configurare din extensia dvs.

Când împrumutați și extindeți un modul generic, extensia dvs. va fi în același spațiu de nume ca și modulul generic. Prin urmare, fiind într-un modul de extensie, puteți accesa direct orice variabile și metode ale unui modul tipic.

Dacă vă aflați într-un alt modul care există în extensie, atunci propriile dvs. variabile exportate și metode ale modulului de extensie vă vor fi disponibile. Pentru că sunt adăugate la contextul public rezultat al modulului generic.

Interceptarea apelurilor de metodă

Sarcina interceptării apelurilor, în majoritatea covârșitoare a cazurilor, este de a înconjura apelul unei metode de tip cu unele acțiuni înainte și/sau după. În același timp, nu am exclus opțiunea de suprapunere completă a apelului metodei tip și am implementat această posibilitate.

Descrieți pe deplin necesitatea interceptării unei anumite metode de tip în modulul de extensie. Pentru aceasta, am introdus un nou element structural în limbajul încorporat - adnotarea. Cu ajutorul adnotării situate în fața definiției metodei, indicați ce metodă de tip este interceptată de procedură/funcție și în ce mod. De exemplu:

Adnotare și înainte ("Procedure1") înseamnă că o procedură tipică numită Procedure1 este interceptată. Numele de adnotare Înainte înseamnă că procedura de interceptoare Exp_Proc1 () va fi executată mai întâi, iar apoi - Procedure1 () tipică.

Abstracte și înainte

O adnotare cu acest nume înseamnă că interceptorul dumneavoastră va fi executat înainte de a începe execuția metodei de tip.

În diagramă, modulele tipice și de extensie sunt afișate prin dreptunghiuri, iar săgeata arată secvența de execuție a limbajului încorporat.

Abstract și După

Această adnotare înseamnă că interceptorul dvs. va fi executat după ce metoda de tip este executată.

Abstracte și în schimb

Această adnotare doar implementează posibilitatea de suprapunere completă a metodei de tip. Adică, o metodă tipică nu va fi executată deloc. În schimb, doar interceptorul tău va executa.

Pentru aceeași procedură tipică, puteți instala una dintre următoarele combinații de interceptoare în extensia dvs.:

  • &Față;
  • &După;
  • &In loc de;
  • & Inainte si dupa.

Ultima combinație de interceptoare (& Înainte și & După) va fi executată după cum urmează:

Dacă interceptați o funcție generică mai degrabă decât o procedură, atunci puteți utiliza doar & interceptor.

Apelarea unei metode suprapuse de adnotarea &

Se dovedește a fi o nedreptate. Puteți suprapune sau încadra procedura. Și funcția este doar de a acoperi complet.

Pentru a scăpa de această nedreptate, am implementat o nouă metodă în limbajul încorporat - ContinueCall (). Dacă apelați această metodă în interiorul funcției dvs. de interceptor, atunci funcția pe care ați suprapus va fi executată, după care execuția codului va reveni la interceptor:

În limbajul încorporat, o astfel de funcție de interceptor poate arăta astfel:

În acest fel, funcția dvs. de interceptor este împărțită în două părți. Partea care se execută înainte de execuția funcției tipice și partea care se execută după cea tipică.

Puteți utiliza metoda ContinueCall () nu numai atunci când suprapuneți funcții, ci și când suprapuneți proceduri. În acest caz, rezultatul aplicării sale va fi același ca atunci când utilizați o pereche de interceptoare & Înainte și & După. Singura diferență este că în acest caz partea ta „înainte” și partea ta „după” vor exista în același context. Acest lucru poate fi convenabil în unele situații. În limbajul încorporat, o astfel de procedură de interceptor ar putea arăta astfel:

Care este mai bine, & Înainte, & După, sau & În loc?

Este întotdeauna util să țineți cont de două lucruri atunci când interceptați metodele tipice de configurare:

  • După ce ați scris extensia, configurația tipică se va schimba;
  • Scopul tău este să adaugi propria ta funcționalitate și să nu abandonezi definitiv ceea ce este și ce va fi într-o configurație tipică.

Din acest punct de vedere, cel mai de preferat este folosirea interceptoarelor & Before and & After. Pentru că cu ele se va executa întotdeauna metoda tipului interceptat, fără nicio condiție. Și dacă dezvoltatorii configurației tipice fac mai târziu modificări acestei metode, aceste modificări vor funcționa cu siguranță atunci când utilizați extensia dvs.

De asemenea, este destul de acceptabil să folosiți metoda interceptor & În loc de și ContinueCall (). Totuși, aici aveți ocazia și tentația de a apela la o metodă tipică nu întotdeauna, ci în funcție de unele dintre propriile condiții. Acest lucru trebuie abordat cu prudență și amintiți-vă că în momentul în care refuzați să apelați o metodă de tip, refuzați să apelați nu numai metoda care se află în configurație acum, ci și din toate variantele acesteia care vor apărea în viitor. Și în viitor, de exemplu, în el pot apărea modificări importante și utile.

Și, în sfârșit, cea mai „rea” opțiune este suprapunerea completă a metodei tip de către interceptor & În loc. În acest caz, handlerul generic cu siguranță nu va fi executat acum sau în versiunile viitoare. Adică vă asumați toată responsabilitatea pentru funcționarea versiunilor viitoare ale configurației, pentru extensia dumneavoastră. Cu siguranță există situații în care este necesară o astfel de suprapunere completă, dar vă îndemnăm să abordați cu mare atenție și atenție utilizarea acesteia.

Secvența apelurilor la interceptarea metodelor

Aici, înainte de a spune povestea, este necesar să facem o mică explicație. O caracteristică „ideologică” importantă, s-ar putea spune, a extensiilor este autonomia lor. Adică, extensiile ar trebui proiectate astfel încât să nu depindă una de alta.

Dar atunci când aplicația rulează, este firesc și evident că există o anumită secvență de apelare a extensiilor conectate. Această secvență este cunoscută și acum vă vom spune despre ea. Dar nu vă vom spune astfel încât pe baza acesteia să creați extensii interdependente sau extensii care implică o singură secvență de conexiune definită rigid. Și astfel încât să puteți dezasambla problemele emergente și să depanați codul programului.

Când conectați extensii la o configurație tipică, se formează un „tort stratificat”. În partea de jos a acestei plăcinte este configurația tipică, iar în partea de sus este ultima extensie conectată.

Ce este în configurator, ce este în 1C: modul Enterprise, ultima extensie conectată este ultima din listă.

Astfel, în acest exemplu, eșantionul este în partea de jos, Extensia2 este în partea de sus și Extension1 este între. Fiecare extensie ulterioară interceptează (extinde) ceea ce este sub ea.

Când platforma întâlnește interceptori definiți în extensii, procesul de execuție a limbajului încorporat merge de sus în jos a acestei plăcinte, în conformitate cu adnotările pe care le au interceptori. La nivelul la care poate ajunge. După aceea, revine în partea de sus, dacă există interceptori, și revine la configurația standard.

Exemplul 1

De exemplu, dacă aceeași metodă de tip este interceptată (încadrată) în două extensii, atunci secvența de apelare a handler-urilor va fi următoarea:

  • Interceptorul de la Extensia2 va fi apelat primul, pentru că este deasupra. Acesta va fi interceptorul & Before, deoarece are o astfel de adnotare;
  • Apoi va fi apelat interceptorul din Extensia1 pentru că este următorul în plăcintă. Va fi & Înainte din nou, pentru că are o astfel de adnotare;
  • După aceea, se va apela metoda tip, deoarece nu mai există interceptori care să împiedice executarea acesteia;
  • Apoi, în ordinea inversă a plăcintei, vor fi apelați interceptorul & After din Extensia1 și interceptorul & After din Extensia2.

Folosind acest exemplu, puteți înțelege bine următoarea caracteristică: dacă o excepție netratată apare într-unul dintre interceptori, atunci întregul lanț este întrerupt și excepția continuă să se propage.

Exemplul 2

Dacă metoda ContinueCall () este utilizată în interceptoare, se aplică același principiu plăcintă.

  • Interceptorul de la Extension3 va fi apelat primul, pentru că este deasupra. Acesta va fi interceptor & În schimb, pentru că are o astfel de adnotare;
  • Dacă încercați să apelați metoda generică, plăcinta rămasă va fi analizată. Acesta va fi analizat exact în același mod ca cel descris în exemplul anterior;
  • Ca rezultat, execuția codului va reveni la interceptor și, în schimb, la finalizarea acestuia - la configurația standard.

Exemplul 3

Un punct important de înțeles este faptul că atunci când se suprapune folosind adnotarea & În loc, de fapt, nu se suprapune doar apelul la metoda principală, ci și interceptorii care sunt mai jos în „plăcintă”.

În acest exemplu, doar interceptorul & va fi executat în loc de din Extensia2. Pentru că se suprapune metodei tipice, adică întreaga „plăcintă” care se află dedesubt.

Exemplul 4

Aceasta este, de fapt, o variație a temei celui de-al doilea exemplu, dar atunci când există o extensie sub extensia de sus, „aruncă” și apelul unei proceduri tipice.

De fapt, este doar o altă vizualizare a faptului că apelul la metoda tip se aplică întregii „plăcinte” sub extensie. De aceea, după apelarea interceptorului din Extensia2, va fi apelat interceptorul din Extensia1. Pentru că în „plăcinta” rămasă el este cel care se suprapune apelului metodei tip, pe care se dorește să „atingă” Extensia2.

Interceptarea gestionatorilor de evenimente și a gestionarilor personalizați în module de obiecte, manageri etc.

Interceptarea oricăror metode din aceste module se realizează în același mod ca cel descris la început. Cu toate acestea, dacă procedura interceptată este un handler de evenimente, există unele particularități. Aceste caracteristici se datorează faptului că în aceste module toți gestionanții de evenimente au nume fixe.

În primul rând, numele evenimentului este specificat ca numele metodei care este interceptată. De exemplu, înainte de înregistrare:

În al doilea rând, prezența unui handler generic pentru acest eveniment este opțională. Dacă nu există un handler generic, atunci interceptorul tău va fi apelat. Datorită acestei funcții, puteți atribui propriile dvs. de gestionare evenimentelor care nu sunt gestionate într-o configurație tipică.

Deoarece handlerele de evenimente din modulele obiect au nume fixe, iar lista de adnotări este cunoscută, am implementat un mic „serviciu” pentru dvs. Când se creează un handler într-o extensie, se deschide un dialog în care puteți selecta tipul de apel. După aceea, în modul este creat un șablon pentru procedura de interceptor.

Interceptarea handlerelor de evenimente și a handlerelor personalizate în modulele de formulare

Interceptarea oricăror metode din aceste module este, de asemenea, efectuată în același mod ca cel descris la început. Cu toate acestea, există și unele particularități legate de interceptarea gestionatorilor de evenimente. Aceste caracteristici se datorează faptului că în aceste module toți gestionanții de evenimente sunt atribuibili și nu au nume fixe. După cum probabil știți, pentru ca platforma să înțeleagă cum să gestioneze acest sau acel eveniment, în configurator, în panoul de proprietăți, trebuie să existe o legare a unei anumite proceduri de un anumit eveniment.

Din acest motiv, și numai atunci când interceptați manipulatorii de evenimente într-un formular, trebuie să utilizați paleta Proprietăți mai degrabă decât adnotările. Deși orice alte metode ale modulului care nu sunt handler de evenimente, puteți intercepta folosind adnotări.

În exterior, un interceptor de evenimente într-un modul de formular arată astfel:

Adnotarea nu este utilizată, iar tipul de interceptor este specificat în paleta de proprietăți. Acest lucru se face destul de simplu. Când creați un handler într-o extensie făcând clic pe butonul „lupă”, se deschide un dialog. Vă permite, pe lângă context, să specificați tipul de interceptor (Înainte, După sau În loc).

După crearea unui șablon pentru o procedură în paleta de proprietăți, lângă numele interceptorului, apare o pictogramă care arată tipul de interceptare.

Dacă suprapuneți un handler generic (În loc de), este doar un punct.

Dacă creați un interceptor Înainte sau După, acesta va fi punctul de lângă bara verticală. Locația punctului, înainte sau după bară, denotă tipul de interceptor. Și pe lângă aceasta, un al doilea câmp (gol) apare lângă acest eveniment în paleta de proprietăți. Cu ajutorul acestuia, puteți defini un interceptor împerecheat, dacă este nevoie să încadrați un handler tipic cu o pereche Înainte - După.

Cârligele de evenimente definite în acest fel vor funcționa chiar dacă nu există un handler generic pentru acest eveniment. Acesta este modul în care vă puteți atribui propriile handlere pentru a forma evenimente care nu sunt gestionate în configurația tipică.

Mai este o mică notă de făcut când vorbim despre modulele de formular. Am schimbat ușor comportamentul modulelor care extind modulele de formulare care existau înainte. Pentru ca acesta să se potrivească cu comportamentul restului modulelor și pentru a asigura stabilitatea codului programului.

Anterior, toate modulele care extind modulul formular și modulul formular în sine erau în același spațiu de nume. Astfel, s-a putut apela din extensia de sus nu numai metodele configurației standard, ci și metodele extensiilor subiacente. Acum am închis această „lacună”, iar metodele extensiilor de bază nu mai sunt disponibile. Acum puteți accesa doar metodele conținute în modulul generic pe care îl extindeți.

Module comune

În extensie, puteți crea oricare dintre propriile module comune. Există doar două restricții:

  • Nu trebuie să fie la nivelul întregului server;
  • Nu trebuie să fie privilegiați.

Când extindeți modulul de configurare generic generic, există restricții similare:

  • Nu puteți împrumuta module globale de server;
  • Codul din extensia dvs. se va executa numai în modul neprivilegiat (dacă nu este permis altfel în profilul de securitate).

Operațiunea de împrumut a modulului server global în sine nu este interzisă în arborele de configurare, dar în etapa de actualizare a configurației bazei de date veți primi o eroare și actualizarea nu va fi efectuată.

Metodele de pe partea serverului nu se extind întotdeauna

Faptul că extensia dvs. a fost conectată cu succes la o configurație tipică nu înseamnă că toate cârligele pe care le conține extensia dvs. vor fi aplicate și vor începe să se execute. Există câteva caracteristici legate de securitate.

Dacă soluția aplicată funcționează în versiunea de fișier sau în versiunea client-server fără profiluri de securitate, atunci când vă conectați extensia:

  • În modul normal de execuție al limbajului încorporat, toate metodele soluției standard, atât cele client, cât și cele de server, vor fi extinse;
  • În modul de execuție sigur al limbajului încorporat - vor fi extinse numai metodele de la partea clientului și gestionatorii de formulare de pe partea serverului. Extensia nu va fi aplicată la restul procedurilor/funcțiilor serverului.

Când soluția aplicației funcționează în versiunea client-server și când extensia este conectată, este specificat un profil de securitate specific sau infobazei i se atribuie profiluri normale și sigure, partea „server” a extensiei va fi aplicată așa cum este specificat în profilul corespunzător.

Cea mai simplă dintre ele este caseta de selectare pentru extinderea tuturor modulelor din grup Acces complet permis. „Într-o singură lovitură” permite extinderea contextului serverului.

Există, de asemenea, o setare mai precisă utilizând câmpurile Module Available for Expansion și Modules Not Available for Expansion. Presupunem că le veți folosi în felul următor:

  • Dacă nu ați permis accesul complet la extensii, atunci în câmpul Module disponibile pentru extensie enumerați numele acelor module pentru care extinderea contextului serverului este acceptabilă și nu înfricoșătoare;
  • Dacă ați permis accesul complet la extensii, atunci în câmpul Module not available for extension, enumerați câteva module în care încă nu trebuie să permiteți extensii de context de server.

S-a dovedit a fi destul de relevant :)

Ok, hai să facem și acest weekend bun.

Deci, astăzi încă un subiect despre „exploatarea aplicată a 1C”:

Mecanism de extindere în platformă 8.3.6

Despre ce vorbim?

În platforma 8.3.6 a fost implementat un nou mecanism - un mecanism de extensie care facilitează adaptarea unei soluții de aplicație la un anumit client.

Când utilizați extensii finalizarea configurației se realizează într-o nouă entitate- extinderea configurației:

  • O extensie, de fapt, este și o configurație, dar cu unele restricții.
  • Extensia pregătită poate fi conectată la baza de producție a clientului în modul utilizator
  • Cel mai important lucru - configurația modificată nu trebuie eliminată din suport, adică rămâne tipic, neschimbat
  • Actualizarea configurației modificate poate fi efectuată de utilizator în modul automat

Astfel, clientul primește drept rezultat posibilitatea de revizuire configurație și în același timp - actualizare automată ușoară.

Pentru a putea înțelege acest lucru mai în detaliu, mai publicăm câteva videoclipuri + PDF pe extensii.

Deci să mergem:

Atribuirea extensiilor de configurare

Videoclipul discută noul mecanism de extensii de configurare care a apărut în platforma 8.3.6. Este destinat revizuirii, adaptării soluțiilor în timpul implementării. În același timp, clientul primește o simplă actualizare automată a configurației și capacitatea de a efectua îmbunătățiri.

Obiecte care pot fi modificate în extensie

Acest videoclip explorează limitările existente ale mecanismului de extensie. În prezent, doar un număr limitat de obiecte pot fi folosite în extensii.

Lucrul cu extensii în configurator

Acest videoclip acoperă dezvoltarea extensiilor în configurator. Extensia este o configurație, deși oarecum limitată. Lucrul cu extensia se realizează și în arborele obiectelor de metadate. Extensia rezultată poate fi salvată într-un fișier de pe disc.

Împrumut de obiecte

Acest videoclip acoperă împrumutarea obiectelor de configurare de bază într-o extensie. Acesta este mecanismul principal necesar pentru a realiza dezvoltarea extensiei în sine. De asemenea, descrie proprietățile controlate, a căror valoare este verificată atunci când extensia este conectată.

Crearea propriilor obiecte într-o extensie de configurare

Acest videoclip vă arată cum vă puteți crea propriile obiecte în extensie. Lista acestor obiecte este încă limitată - acestea sunt rapoarte, procesare și subsisteme. Dezvoltarea unor astfel de obiecte în extensie se realizează prin analogie cu configurația principală.

Lucrul cu extensii în modul utilizator

Acest videoclip examinează cum să conectați o extensie pregătită la baza de producție a clientului. În acest caz, conexiunea se poate face din modul utilizator fără accesarea configuratorului.

Lucrul cu formulare gestionate în Extensiile de configurare

Acest videoclip vă arată cum să lucrați cu formulare gestionate în extensie. Se observă că forma originală nu este sincronizată automat cu extensia. Explică modul în care sistemul modelează aspectul formei rezultat atunci când există expansiune.

Modulul de formulare gestionat și manipulatorii de evenimente în extensiile de configurare

Acest videoclip vă arată cum să lucrați cu gestionanții de evenimente în forme gestionate ale unei extensii de configurare.

Demonstrează cum se execută handlere de evenimente în configurația principală și în extensie.

Principala problemă a lucrului cu extensii este o evaluare părtinitoare a numărului de îmbunătățiri viitoare de către dezvoltatori/implementatori. Pornind de la mesajul „da, trebuie doar să schimbăm câteva butoane de pe formular”, lucrul începe cu extensii. Numărul de îmbunătățiri este în creștere, extensiile continuă să fie folosite pe baza mesajului „folosim deja extensii, să continuăm prin ele”.

Apoi devine necesară adăugarea de noi entități la baza de date, extinderea structurii celor existente. Sau schimbați principiul de funcționare al oricărui subsistem tipic. Lucrul cu extensii devine din ce în ce mai dificil sau mai imposibil. În configurație, se activează posibilitatea de schimbare și începe revizuirea „soft” sau „hard” a configurației tipice, în funcție de calificările dezvoltatorilor.

Acesta este momentul în care sosește grădina zoologică a tehnologiei. Eterogenitatea, care trăiește deja în sistemul corporativ, își freacă bucuros mâinile, realizând că a câștigat un punct bun din claritate și simplitate.

Desigur, în acest moment, puteți scăpa de unul dintre animalele din grădina zoologică tehnologică și puteți transfera în mod inteligent toate modificările configurației. La urma urmei, atunci va trebui să „ai grijă” de două animale - și extensii și modificări în cea mai tipică configurație. Curățați după ei, hrăniți-i, împăcați-vă cumva unul cu celălalt, astfel încât să nu rupă nimic în procesul de lucru împreună, adăugați încă o linie la lista de cerințe pentru dezvoltatori la posturile vacante pe Headhunter.

Într-un mod bun, ar trebui făcut. Dar Heterogeneity știe că oamenii sunt leneși, le este frică să atingă ceva care cumva funcționează, întotdeauna „nu au timp”, iar șefii nu sunt capabili să evalueze necesitatea refactorizării în acest moment critic pentru abandonarea tehnologiei inutile. Îmbunătățirile aduse modificărilor efectuate prin extensii continuă să fie făcute prin extensii. Modificările efectuate în configurație – continuă să se facă în configurație. Principalul inamic al arhitecturii software corporative este ferm înrădăcinat în capul de pod capturat.

În general, este mai bine să te gândești cu atenție înainte de a folosi o tehnologie înalt specializată. Dacă există riscul ca structura obiectelor să fie modificată sau să fie adăugate noi obiecte de bază de date, este nevoie să începeți depanarea des și fără probleme, există oameni care înțeleg cum să schimbe inițial configurația fără probleme pentru actualizările ulterioare, atunci este mai bine să decizi imediat să nu crești o grădină zoologică. Nimeni nu a luat de la noi module care pot fi anulate, modificarea programelor de formulare și abonamentele la evenimente. Dacă compania este mică și este important pentru angajați ca configurația să fie actualizată cu un singur buton, acum și întotdeauna în viitor, cu siguranță nu vor fi schimbări majore (chiar sigur?), atunci nu va exista nicio grădină zoologică cu extensii.

Și, desigur, pentru pluginurile mici, extensiile sunt bune. Există exemple de utilizare bună pe IS atunci când extensiile sunt publicate în loc de un fișier cf cu instrucțiuni pentru comparare-combinare. Dar aceasta este din nou o zonă specifică și pentru o utilizare permanentă convenabilă este mai bine să transferați funcționalitatea în configurație, astfel încât lansarea în modul întreprindere să nu fie încetinită.

Top articole similare