Kako podesiti pametne telefone i računare. Informativni portal
  • Dom
  • Windows 7, XP
  • Definicija procedure funkcije očekivana prije. Proširenje modula

Definicija procedure funkcije očekivana prije. Proširenje modula

Danas vam želimo reći o korištenju dodatnih izvještaja i obradi, a posebno konfiguracijskih ekstenzija u modelu usluge. Tehnologije ne miruju, održavanje 1C baza podataka u oblaku postaje sve atraktivnija usluga. Šta trebate znati da bi funkcionalnost koja je potrebna vašoj kompaniji bila implementirana u iznajmljenu bazu podataka i kako ovaj proces izgleda sa strane pružaoca usluga - o tome možete saznati ispod.

Šta su eksterni izvještaji i obrada

1C obrada je drugačija, ali u svakom slučaju proširuju funkcionalnost konfiguracije i omogućuju vam brz pristup informacijama pohranjenim u bazi podataka bez promjene konfiguracije i bez uklanjanja iz podrške. Mogu se ugraditi direktno u konfiguraciju, dodati kao konfiguracijska ekstenzija ili biti vanjski fajlovi.

Prema funkcionalnosti obrade, dijele se na one koje mogu mijenjati podatke i one koje jednostavno analiziraju informacije i prikazuju rezultat u obliku prilagođenom korisniku (izvještaji). Kako se ne bi mijenjali standardni izgledi za štampanje dokumenata, razvijaju se eksterne štamparske forme. Također, eksterna obrada se može izvršiti prema datom rasporedu na 1C aplikacijskom serveru - to su zakazani zadaci.

Nekoliko desetina obrada je razvijeno u Buttonu, što omogućava našim računovođama da koriste „praktičnu magiju“. Na primjer, za analizu ispravnosti računovodstva u Buttonu koristi se eksterni izvještaj „Autorevizijske baze podataka“. Lako čitljive tabele prikazuju analizu 120 kriterijuma stanja i prometa na računima, usklađenost podataka iz poreskih prijava i računovodstvenih informacija, analizu osnovnih sredstava i drugo.

Primjer eksternog štampanog obrasca "ugovor o kreditu" prema obrascu koji su izradili naši pravnici. Postoje slučajevi kada preduzetnik uzme beskamatni kredit od svoje firme kao fizičko lice, ili obrnuto, prenese sopstvena sredstva kompaniji, tada je moguće odmah odštampati ugovor.

Otvara se obrazac za popunjavanje potrebnih podataka:

I prikazuje se štampani obrazac ugovora:

Planirana obrada (planirani zadaci) se koristi, na primjer, za ispravljanje izvoda. Dugme ima integraciju sa velikim bankama i specijalni roboti učitavaju izvod direktno u 1C. Zahvaljujući tehnologiji mašinskog učenja, procenat grešaka prilikom plaćanja smanjen je na 3%. Ali kao i uvijek, postoje izuzeci, na primjer, kupci koji koriste agencijsku shemu za prodaju robe, u ovom slučaju pravila za vođenje bankovnog izvoda su individualna. Kako se robot ne bi reprogramirao za određeni slučaj, prije pojave konfiguracijskih ekstenzija, korišten je zakazani zadatak za ispravljanje izjave za robota svakih 10 minuta.

Šta su konfiguracijske ekstenzije

Ekstenzija je mini konfiguracija koja nasljeđuje objekte iz glavne konfiguracije baze podataka i sadrži kod s dodacima ili popravcima objekata i modula. U isto vrijeme, glavna konfiguracija ostaje podržana, nema potrebe za omogućavanjem uređivanja, što uvelike pojednostavljuje proces nadogradnje.

Mehanizam pretpostavlja tri vrste upotrebe, koje su, u stvari, naznačene u polju „Svrha“ prilikom kreiranja ekstenzije:

Centralna komponenta tehnologije je Service Manager, pohranjuje sve informacije o pretplatnicima, korisnicima, aplikacijama, infobazama i vezama između njih, uz njegovu pomoć se upravlja eksternom obradom i konfiguracijskim ekstenzijama.

Svi fajlovi sa obradom se učitavaju u poseban direktorijum servis menadžera. Ali prije postavljanja datoteke u direktorij, drugim riječima, „objavljivanja u servisu“, ona mora biti pripremljena na poseban način.

Priprema eksternih izvještaja i obrada za objavljivanje u modelu usluge

Dodatni izvještaj ili obrada kreira se u konfiguratoru „1C: Enterprise 8” kao standardni eksterni izvještaji i obrada i pohranjuje se u datoteku sa ekstenzijom - .epf (za dodatnu obradu) ili .erf (za dodatne izvještaje).

Objektni modul mora imati procedure i funkcije za definiranje parametara registracije.

Imajte na umu da je važan parametar „Verzija“. Ako izvršite promjene u obradi koja je već otpremljena u direktorij upravitelja usluga, obavezno promijenite broj verzije ili će upravitelj usluge odbiti da otpremi datoteku. Prilikom izrade izvještaja ili obrade, mora se uzeti u obzir da korisnici rade u modelu usluge preko web klijenta (dobar članak na 1C blogu). Ako obrada sadrži obrasce, oni moraju raditi u web klijentu pod svim web preglednicima koji su podržani od strane tehnološke platforme 1C: Enterprise 8.

Prema standardima servisa 1cfresh.com, dodatni izvještaj ili obrada mora biti potpuno funkcionalna kada se izvršava u sigurnom načinu rada, odnosno mora raditi bez pristupa vanjskim objektima za konfiguraciju.

Dodatni izvještaj ili obrada mora biti pripremljena za učitavanje u servis kao komplet za isporuku. Komplet za isporuku je arhiva (zip datoteka) koja sadrži:

  • dodatni izvještaj ili fajl obrade;
  • xml datoteka manifesta, koja sadrži dodatne meta-informacije koje zahtijeva upravitelj usluge za objavljivanje dodatnog izvještaja ili obradu u servisu.
Priprema se vrši u lokalno raspoređenoj info bazi konfiguracije za koju je dodatni izvještaj ili obrada namijenjena. Koristimo poseban pomoćnik za kreiranje paketa, eksternu obradu. Priprema dodatnih izvještaja i obrada publikacija u ServiceModel.epf. Više detalja možete pronaći u dokumentaciji o 1C Fresh Solutions Publishing Technology.

Instaliranje dodatnih izvještaja i obrada u modelu usluge

Posebnost 1C Fresh tehnologije je da se eksterni izvještaj ili obrada ne mogu učitati direktno u područje podataka. Dodavanje se dešava samo od strane administratora servisa preko servis menadžera. Nakon što se pripremi zip-arhiva sa datotekom za obradu, ona se mora učitati u direktorij servis menadžera i instalirati za određenog pretplatnika usluge.

Pretplatnik usluge je grupa korisnika ujedinjenih po nekom principu. Shodno tome, baze podataka dostupne za određenu grupu korisnika nazivaju se pretplatničkim aplikacijama.

Aplikacije mogu imati različite 1C konfiguracije (Knjigovodstvo preduzeća, Platni obračun i upravljanje osobljem, Menadžment naše kompanije itd.), koje se mogu koristiti u modelu usluge. Dodatni izvještaj ili obrada može se instalirati samo u aplikacijama pretplatnika koji su navedeni prilikom preuzimanja datoteke.

Ovako izgleda obrazac svojstava dodatnog izvještaja sa verzijama. Na hipervezi "Instaliraj / Deinstaliraj" ulazimo u listu aplikacija i biramo potrebne baze podataka.

Nakon učitavanja obrade i odabira aplikacije, servis manager poziva adresu aplikacije i daje naredbu da se ona instalira u infobazu.

Počinjemo sa obradom prema rasporedu

Kada se radi sa velikim brojem računovodstvenih baza podataka, neke obrade se moraju vršiti periodično. Na primjer, jednom mjesečno ili svakih nekoliko minuta. Također je važno automatizirati ručne i rutinske korisničke operacije. Da bismo to učinili, aktivno koristimo proceduralne zadatke.

Obrada koja će biti zakazana nema obrazac. Sva logika je zapisana u objektnom modulu i izgleda ovako.



Prilikom pripreme kompleta za isporuku postavljamo raspored. Sada će se naša obrada obavljati svakih sat vremena.

Saznajte više o konfiguracijskim proširenjima

Paralelno sa eksternim izvještajima i obradom, koje je potrebno pripremiti i administrirati „na stari način“, počeli smo aktivno koristiti mehanizam konfiguracijskih ekstenzija. Počevši od platforme 1C Enterprise 8.3.10, ovaj mehanizam nam je znatno olakšao život i omogućio pojednostavljenje prilagođavanja konfiguracija karakteristikama dugmeta.

Na primjer, gore smo pisali o rutinskim operacijama ispravljanja dokumenata za robote koji su pokretani svakih 10 minuta. Sada možete koristiti ekstenziju da redefinirate kako moduli rade. Tako možemo odmah, prilikom snimanja ili postavljanja dokumenta, izvršiti potrebne radnje. Ovo je mnogo optimalnije, jer red poslova u bazi podataka nije zakrčen radnjama svakih 10 minuta, i brže, jer se promjene vrše odmah.

Priprema novog proširenja je prilično jednostavna. Pogledajmo proces kreiranja ekstenzija na konkretnim primjerima.
Prema radnom iskustvu, vodeći u zahtjevima za prilagođavanje je štampani obrazac TORG-12. Na primjer, trebamo napraviti proširenje za mogućnost štampanja otpremnice u valuti (podrazumevano, može se generisati samo u rubljama).
Otvorite Meni → Konfiguracija → Proširenja konfiguracije
Kreirajte novi lokal sa zadatkom „Prilagodba“.

Ekstenzija izgleda kao poznato stablo konfiguracije, ali još bez objekata. Prije svega, dodajmo novi izgled TORG-12 u koji smo ubacili kolone sa iznosima u valuti.

Pošto se tovarni list štampa iz dokumenta „Prodaja robe i usluga“, dodajmo ovaj dokument u našu ekstenziju iz glavne konfiguracije i izvršimo izmene koje su nam potrebne u modulu menadžera. Da biste to učinili, u kontekstnom izborniku implementacije odaberite "dodaj u ekstenziju".

Sada možete modificirati modul menadžera implementacije. Moramo dodati novi obrazac na listu za ispis i popuniti iznose u valuti.

Da promijenimo tipične procedure, koristimo &Nakon napomene, također nam je potrebno nekoliko naših funkcija i procedura.

Pogledajmo bliže napomene. U ekstenzijama možete koristiti: &prije, &poslije, &umjesto (vrlo pažljivo). Princip rada je jednostavan: želimo da se naši algoritmi iz ekstenzije prvo izvrše, stavimo napomenu &Before i u zagradama navedemo naziv procedure iz tipične konfiguracije. Ako tipični modul radi prvi, a zatim naš, koristimo &After.

Napomene &prije i &nakon ne mogu se primijeniti na funkcije. Stoga, ako trebamo promijeniti algoritam funkcije iz glavne konfiguracije, koristimo &Umjesto napomene.

Oznaku &Instead treba koristiti što je manje moguće, jer u potpunosti zamjenjuje izvršenje procedure i funkcije iz glavne konfiguracije sa procedurom/funkcijom proširenja. S ovom metodom presretanja, procedura/funkcija iz glavne konfiguracije općenito će prestati da se izvršava dok je proširenje instalirano, čak ni ažuriranje verzija neće pomoći.

Zaključak

Postoji mnogo različitih mišljenja o korištenju ekstenzija i eksternih izvještaja/obrada. Na osnovu našeg iskustva, zalažemo se za širenje s obje ruke. Ovo je modernija i prilagodljivija tehnologija, ima mnogo više mogućnosti, a njihovo objavljivanje je višestruko lakše. U ekstenziju se stavlja samo neophodan dio koda, također nije potrebno dodatno propisivati ​​procedure i funkcije za određivanje parametara registracije, praćenje verzija i kreiranje distributivnog kompleta.

Možete koristiti više ekstenzija za isto područje podataka.
Za specifičnosti 1C Fresh u načinu dijeljenja podataka (jedna konfiguracija, mnogo nezavisnih područja), metoda proširenja je odličan izlaz.

Implementirano u verziji 8.3.9.1818.

Ukratko, sada uz pomoć ekstenzija možete promijeniti module tipične konfiguracije i dodati svoje module.

A detaljnije, možete promijeniti bilo koje module, osim modula običnih oblika:

  • Opći moduli;
  • Objektni moduli (objektni modul, modul menadžera, itd.) za sve vrste objekata;
  • modul sesije;
  • Upravljani aplikacijski modul;
  • Eksterni priključni modul;
  • Komandni moduli;
  • Moduli obrazaca;
  • itd.

Nepotrebno je reći da ste možda u prošlosti modificirali module upravljanih obrazaca, ali sada smo napravili neke promjene u procesu.

Presretanje
Možete presresti bilo koju od generičkih metoda konfiguracije, uokviriti ih svojim vlastitim ili ih čak potpuno zamijeniti.

Vlastiti rukovaoci
Možete dodati vlastite prilagođene obrađivače događaja konfiguracije. Ako, na primjer, nisu dodijeljeni u tipičnoj konfiguraciji.

Vlastiti moduli
Možete kreirati vlastite dijeljene module u ekstenziji.

Zovi
I konačno, možete pozvati bilo koju vrstu konfiguracijskih metoda u svom proširenju.

Kada posudite i proširite generički konfiguracijski modul, vaš modul za proširenje će biti u istom imenskom prostoru kao i generički modul. Stoga, dok ste u modulu proširenja, možete direktno pristupiti svim varijablama i metodama generičkog modula.

Ako se nalazite u drugom modulu koji postoji u ekstenziji, tada će vam biti dostupne vaše vlastite izvezene varijable i metode modula proširenja. Zato što se dodaju u rezultirajući javni kontekst generičkog modula.

Presretanje poziva metode

Zadatak presretanja poziva, u velikoj većini slučajeva, je okružiti poziv generičke metode nekim prethodnim i/ili naknadnim akcijama. Istovremeno, nismo isključili mogućnost potpunog preklapanja poziva tipične metode i implementirali smo takvu mogućnost.

U potpunosti opisujete potrebu za presretanje ove ili one metode tipa u modulu proširenja. Da bismo to učinili, uveli smo novi strukturni element u ugrađeni jezik - anotaciju. Sa napomenom postavljenom ispred definicije metode, specificirate metodu tipa koju procedura/funkcija presreće i na koji način. Na primjer:

Oznaka &Before("Procedure1") znači da je generička procedura pod nazivom Procedure1 presretnuta. Ime napomene Prije znači da će se vaša zakačiva procedura Extend_Proc1() prvo izvršiti, a zatim će se izvršiti generička Procedure1().

Anotacija i prednja strana

Napomena s ovim imenom znači da će se vaš presretač izvršiti prije nego što se generička metoda počne izvršavati.

Na dijagramu su tip i moduli proširenja prikazani kao pravokutnici, a strelica pokazuje redoslijed izvršavanja ugrađenog jezika.

Napomena &nakon

Ova napomena znači da će se vaš presretač izvršiti nakon što se izvrši metoda tipa.

Napomena &Umjesto toga

Ova napomena samo implementira mogućnost potpunog preklapanja tipične metode. To jest, generička metoda se uopće neće izvršiti. Umjesto toga, samo će vaš presretač biti izvršen.

Možete instalirati jednu od sljedećih kombinacija presretača u svoju ekstenziju za istu proceduru uzorka:

  • &Front;
  • &After;
  • &Umjesto;
  • &Prije i poslije.

Posljednja kombinacija presretača (&prije i &poslije) će se izvršiti na sljedeći način:

Ako presrećete generičku funkciju, a ne proceduru, tada možete koristiti samo & umjesto presretača.

Pozivanje metode prekrivene &Umjesto napomene

Postoji neka nepravda. Možete pokriti ili uokviriti proceduru. A funkcija - samo potpuno blokirana.

Da bismo se riješili ove nepravde, implementirali smo novu metodu u ugrađeni jezik - Continue Call (). Ako ovu metodu pozovete unutar vaše funkcije presretača, tada će se izvršiti funkcija koju ste nadjačali, nakon čega će se izvršenje koda vratiti vašem presretaču:

U ugrađenom jeziku, takva funkcija presretača može izgledati ovako:

Dakle, vaša funkcija presretača je podijeljena na dva dijela. Dio koji se izvršava prije izvršavanja funkcije tipa i dio koji se izvršava nakon tipa.

Metodu ContinueCall() možete koristiti ne samo kada se funkcije preklapaju, već i kada se preklapaju procedure. U ovom slučaju, rezultat njegove primjene bit će isti po značenju kao kod korištenja para presretača &prije i &poslije. Jedina razlika je u tome što će u ovom slučaju vaš dio "prije" i vaš dio "poslije" postojati u istom kontekstu. U nekim situacijama ovo može biti zgodno. Na prvom jeziku takva procedura presretača može izgledati ovako:

Što je bolje, &prije, &poslije ili &umjesto?

Kada nadjačate generičke metode konfiguracije, uvijek je dobro imati na umu dvije stvari:

  • Nakon što napišete svoju ekstenziju, zadana konfiguracija će se promijeniti;
  • Vaš cilj je da dodate svoju funkcionalnost, a ne da trajno napustite ono što jeste i što će biti u tipičnoj konfiguraciji.

Sa ove tačke gledišta, upotreba presretača &prije i &poslije je najpoželjnija. Zato što će se kod njih metoda presretnutog tipa uvijek izvršavati, bez ikakvih uvjeta. A ako programeri tipične konfiguracije kasnije izvrše promjene u ovoj metodi, ove promjene će sigurno funkcionirati kada koristite vašu ekstenziju.

Također je savršeno prihvatljivo koristiti &Umjesto metode ContinueCall(). Međutim, ovdje imate priliku i iskušenje da pozovete generičku metodu ne uvijek, već ovisno o nekim vašim vlastitim uvjetima. Ovome se mora pristupiti s oprezom i zapamtite da u trenutku kada odbijete pozvati generičku metodu, odbijate pozvati ne samo metodu koja je sada u konfiguraciji, već i sve njene varijante koje će se pojaviti u budućnosti. I u budućnosti se, na primjer, mogu pojaviti važne i korisne promjene u njemu.

I, na kraju, naj"loša" opcija je potpuno preklapanje tipične metode sa presretačem &Instead. U ovom slučaju, obrađivač tipa sigurno neće biti izvršen ni sada ni u budućim verzijama. To jest, preuzimate punu odgovornost za rad budućih verzija konfiguracije, na vašem proširenju. Svakako postoje situacije u kojima je takva potpuna pokrivenost neophodna, ali mi vas pozivamo da njenom korištenju pristupite vrlo pažljivo i pažljivo.

Redoslijed poziva prilikom presretanja metoda

Ovdje, prije nego što ispričamo, potrebno je napraviti malo objašnjenje. Važna, moglo bi se reći, "ideološka" karakteristika ekstenzija je njihova autonomija. Odnosno, ekstenzije bi trebale biti dizajnirane na takav način da ne zavise jedna od druge.

Ali kada je aplikacija pokrenuta, prirodno i očigledno, postoji određeni redoslijed pozivanja povezanih ekstenzija. Ovaj slijed je poznat i sada ćemo o njemu pričati. Ali nećemo vam govoriti o tome tako da kreirate međuzavisne ekstenzije na njegovoj osnovi, ili ekstenzije koje podrazumijevaju jednu, tvrdo kodiranu sekvencu veze. I tako da možete analizirati probleme koji se javljaju i otkloniti greške u programskom kodu.

Kada spojite ekstenzije na tipičnu konfiguraciju, formira se "slojeviti kolač". Na dnu ovog kolača je zadana konfiguracija, a na vrhu je posljednji uključeni dodatak.

I u konfiguratoru iu 1C:Enterprise načinu rada, posljednji spojeni lokal je posljednji na listi.

Dakle, u ovom primjeru, Type je na dnu, Extension2 je na vrhu, a Extension1 je između. Svako sljedeće proširenje presreće (proširuje) ono što je ispod njega.

Kada platforma naiđe na zakačke definirane u ekstenzijama, proces ugrađivanja ide od vrha do dna tog kolača, u skladu sa napomenama koje imaju zakačivanja. Koliko god može. Nakon toga se vraća na vrh, ako postoje presretači, i vraća se na tipičnu konfiguraciju.

Primjer 1

Na primjer, ako je metoda istog tipa presretnuta (uokvirena) u dvije ekstenzije, tada će redoslijed rukovatelja pozivima biti sljedeći:

  • Hook iz Extension2 će biti pozvan prvi jer je na vrhu. To će biti presretač &Before jer ima ovu bilješku;
  • Zatim će biti pozvana udica iz Extension1, jer je to sljedeća u kolaču. Opet će biti &Before, jer ima takvu napomenu;
  • Nakon toga, generička metoda će biti pozvana jer više nema presretača koji bi spriječili njeno izvršenje;
  • Zatim, u obrnutom redoslijedu od kolača, &After kuka iz Ekstenzije1 i &After kuka iz Ekstenzije2 će biti pozvana.

U ovom primjeru, sljedeća karakteristika se može dobro razumjeti: ako se neobrađeni izuzetak dogodi u jednom od presretača, tada se cijeli lanac prekida, a izuzetak nastavlja da se širi.

Primjer 2

Ako se metoda ContinueCall() koristi u presretačima, tada se primjenjuje isti princip "torte".

  • Hook iz Extension3 će biti pozvan prvi jer je na vrhu. Bit će to presretač & Umjesto toga, jer ima takvu napomenu;
  • Kada pokušate da pozovete generičku metodu, preostala "pita" će biti analizirana. Bit će analiziran na potpuno isti način kao što je opisano u prethodnom primjeru;
  • Kao rezultat toga, izvršenje koda će se vratiti na &Umjesto presretača, a nakon njegovog završetka, na tipičnu konfiguraciju.

Primjer 3

Važna stvar koju treba razumjeti je činjenica da kada nadjačate korištenjem &Instead napomene, u stvari, ne samo da se poništava poziv glavne metode, već i presretači ispod u "torti".

U ovom primjeru, samo će se izvršiti presretač &Instead of Extension2. Zato što nadjačava generičku metodu, to jest čitavu "toru" koja je pod njom.

Primjer 4

Ovo je, u stvari, varijacija na temu drugog primjera, ali kada postoji ekstenzija ispod gornje ekstenzije, ona također "odbacuje" poziv standardne procedure prema dolje.

U stvari, to samo još jednom vizualizira činjenicu da se poziv generičke metode primjenjuje na cijelu "tortu" pod ekstenzijom. Zato će nakon pozivanja presretača iz Ekstenzije2 biti pozvan presretač iz Ekstenzije1. Zato što u preostaloj "torti" on je taj koji nadjačava poziv tipične metode koju želite da "dostignete" Extension2.

Presretanje rukovalaca događaja i vlastitih rukovalaca u objektnim modulima, menadžerima itd.

Presretanje bilo koje metode u ovim modulima se vrši upravo onako kako je opisano na početku. Međutim, ako je zakačena procedura rukovalac događajima, postoje neke posebnosti. Ove karakteristike su rezultat činjenice da u ovim modulima svi obrađivači događaja imaju fiksna imena.

Prvo, ime događaja je navedeno kao ime presretnute metode. Na primjer, BeforeWrite:

Drugo, prisustvo generičkog rukovaoca za ovaj događaj je opciono. Ako ne postoji obrađivač tipa, tada će biti pozvan vaš presretač. Zahvaljujući ovoj funkciji, možete dodijeliti vlastite rukovaoce onim događajima koji se ne obrađuju u tipičnoj konfiguraciji.

Budući da obrađivači događaja u objektnim modulima imaju fiksna imena, a lista napomena je poznata, implementirali smo mali “servis” za vas. Kada kreirate rukovalac u ekstenziji, otvara se dijalog u kojem možete odabrati vrstu poziva. Nakon toga, u modulu se kreira stub procedure presretača.

Obrađivači događaja presretanja i prilagođeni rukovaoci u modulima obrasca

Presretanje bilo koje metode u ovim modulima se također izvodi na isti način kao što je opisano na početku. Međutim, čak i ovdje postoje značajke povezane s presretanjem rukovatelja događajima. Ove karakteristike su povezane sa činjenicom da su u ovim modulima svi rukovaoci događaja dodeljivi i nemaju fiksna imena. Kao što verovatno znate, da bi platforma razumela kako da rukuje ovim ili onim događajem, u konfiguratoru, na panelu sa svojstvima, mora postojati vezivanje određene procedure za određeni događaj.

Iz tog razloga, i samo kada presretate rukovaoce događajima na obrascu, trebate koristiti paletu svojstava umjesto napomena. Iako bilo koje druge metode modula koje nisu rukovaoci događajima, možete presresti pomoću napomena.

Eksterno, slušalac događaja u modulu forme izgleda ovako:

To jest, napomena se ne koristi, a tip presretača je naznačen u paleti svojstava. Ovo se radi prilično jednostavno. Kada kreirate rukovalac u ekstenziji klikom na dugme lupe, otvara se dijalog. Omogućava vam, pored konteksta, da navedete tip presretača (prije, poslije ili Umjesto toga).

Nakon kreiranja predloška procedure, ikona koja pokazuje tip presretanja pojavljuje se pored imena presretača u paleti svojstava.

Ako poništite obrađivač tipa (Umjesto), onda će to biti samo tačka.

Ako kreirate kuku prije ili poslije, to će biti tačka pored okomite trake. Lokacija tačke, prije ili iza crtice, označava tip presretača. Osim toga, drugo (prazno) polje pored ovog događaja pojavljuje se u paleti svojstava. Pomoću njega možete postaviti presretač para, ako postoji potreba da se tipični rukovalac uokviri sa parom Prije - Poslije.

Ovako definirane zakačice za događaje će raditi čak i ako ne postoji zadani rukovalac za ovaj događaj. Ovo je način na koji možete dodijeliti vlastite rukovaoce onim događajima obrasca koji se ne obrađuju u zadanoj konfiguraciji.

Kada govorimo o modulima forme, potrebno je dati još jednu malu napomenu. Malo smo promijenili ponašanje modula koji proširuju module forme koji su postojali prije. Kako bi odgovarao ponašanju drugih modula i osigurao stabilnost programskog koda.

Ranije su svi moduli koji proširuju modul forme, kao i sam modul obrasca, bili u istom prostoru imena. Tako je bilo moguće pozvati sa gornje ekstenzije ne samo metode tipične konfiguracije, već i metode ekstenzija koje leže ispod. Sada smo zatvorili ovu „rupu“, a metode ekstenzija u nastavku više nisu dostupne. Sada možete pristupiti samo metodama sadržanim u modulu tipa koji proširujete.

Opšti moduli

U proširenju možete kreirati bilo koje prilagođene zajedničke module. Postoje samo dva ograničenja:

  • Oni ne moraju biti globalni serveri;
  • Ne moraju biti privilegovani.

Kada proširite zajednički generički konfiguracijski modul, postoje i slična ograničenja:

  • Ne možete posuditi globalne serverske module;
  • Kôd iz Vaše ekstenzije će se izvoditi samo u neprivilegovanom načinu (osim ako je drugačije dozvoljeno u sigurnosnom profilu).

Sama operacija posuđivanja modula globalnog servera nije zabranjena u stablu konfiguracije, ali ćete dobiti grešku tokom koraka ažuriranja konfiguracije baze podataka i ažuriranje se neće izvršiti.

Serverske metode nisu uvijek proširene

Činjenica da je vaša ekstenzija uspješno povezana na tipičnu konfiguraciju ne znači da će sve zakačice koje se nalaze u vašoj ekstenziji biti primijenjene i da će početi da se izvršavaju. Ovdje postoje neke sigurnosne funkcije.

Ako primijenjeno rješenje radi u verziji datoteke ili u verziji klijent-server bez sigurnosnih profila, tada prilikom povezivanja ekstenzije:

  • U normalnom načinu izvršavanja ugrađenog jezika, sve metode standardnog rješenja će biti proširene, i klijent i server;
  • U sigurnom načinu izvršavanja jezika 1C:Enterprise, proširit će se samo klijentske metode i rukovaoci obrascima servera. Ekstenzija se neće primjenjivati ​​na druge serverske procedure/funkcije.

Kada primenjeno rešenje radi u režimu klijent-server i kada se ekstenzija poveže sa određenim sigurnosnim profilom, ili su profili normalnog i sigurnog režima dodeljeni bazi podataka, tada će se primeniti "serverski" deo ekstenzije. kako je navedeno u odgovarajućem profilu.

Najjednostavniji od njih je potvrdni okvir za proširenje svih modula u grupi Dozvoljen puni pristup. To "u jednom potezu" omogućava proširenje konteksta servera.

Postoji i preciznija postavka pomoću polja Dostupno za module proširenja i Nedostupno za module proširenja. Pretpostavljamo da ćete ih koristiti na sljedeći način:

  • Ako niste dozvolili puni pristup ekstenzijama, tada u polju Moduli dostupni za proširenje navodite imena onih modula za koje je proširenje konteksta servera prihvatljivo i nije opasno;
  • Ako ste dozvolili puni pristup ekstenzijama, tada u polju Moduli nedostupni za proširenje navodite neke module u kojima još uvijek ne morate dozvoliti proširenja konteksta servera.

Ispostavilo se veoma relevantno :)

Ok, učinimo i ovaj vikend korisnim.

Dakle, danas još jedna tema "primijenjene operacije 1C":

Mehanizam produžetka u platformi 8.3.6

o cemu pricamo?

U platformi 8.3.6 implementiran je novi mehanizam - mehanizam proširenja koji olakšava prilagođavanje aplikativnog rješenja za određenog kupca.

Kada koristite ekstenzije konfiguracija je finalizirana u novom entitetu– proširenje konfiguracije:

  • Proširenje je, u stvari, također konfiguracija, ali s nekim ograničenjima
  • Pripremljena ekstenzija se može povezati sa radnom bazom podataka korisnika u korisničkom modu
  • Najvažnija stvar - finaliziranu konfiguraciju ne treba ukloniti iz podrške, tj. ostaje standardno, nepromijenjeno
  • Ažuriranje izmijenjene konfiguracije korisnik može izvršiti automatski

Dakle, kupac kao rezultat prima mogućnost poboljšanja konfiguraciju i istovremeno jednostavno automatsko ažuriranje.

Kako biste se mogli detaljnije pozabaviti ovim, objavljujemo još nekoliko videa + PDF o ekstenzijama.

pa idemo:

Dodjela konfiguracijskih ekstenzija

Video pokriva novi mehanizam proširenja konfiguracije uveden na platformi 8.3.6. Namijenjen je usavršavanju, prilagođavanju rješenja tokom implementacije. Istovremeno, korisnik dobija jednostavno automatsko ažuriranje konfiguracije i mogućnost poboljšanja.

Objekti koji se mogu mijenjati u ekstenziji

Ovaj video govori o postojećim ograničenjima mehanizma proširenja. Trenutno se samo ograničen broj objekata može koristiti u ekstenzijama.

Rad sa ekstenzijama u konfiguratoru

Ovaj video pokriva razvoj ekstenzija u konfiguratoru. Proširenje je konfiguracija, iako donekle ograničena. Rad sa ekstenzijom se takođe izvodi u stablu metapodataka objekata. Rezultirajuća ekstenzija se može spremiti u datoteku na disku.

Posuđivanje objekata

Ovaj video prikazuje posuđivanje osnovnih konfiguracijskih objekata u ekstenziju. Ovo je glavni mehanizam potreban da bi se izvršio razvoj samog proširenja. Također govori o kontrolisanim svojstvima, čija se vrijednost provjerava kada se ekstenzija poveže.

Kreiranje vlastitih objekata u proširenju konfiguracije

Ovaj video pokazuje kako možete kreirati vlastite objekte u ekstenziji. Lista takvih objekata je i dalje ograničena - to su izvještaji, obrada i podsistemi. Razvoj takvih objekata u proširenju vrši se po analogiji s glavnom konfiguracijom.

Rad sa ekstenzijama u korisničkom modu

Ovaj video pokazuje kako spojiti pripremljeni nastavak na radnu bazu korisnika. U ovom slučaju, veza se može uspostaviti iz korisničkog načina rada bez pristupa konfiguratoru.

Rad s upravljanim obrascima u proširenjima konfiguracije

Ovaj video vas vodi kroz rad sa upravljanim obrascima u ekstenziji. Napominje se da originalni obrazac nije automatski sinhronizovan sa ekstenzijom. Objašnjava kako sistem generiše rezultirajući izgled obrasca u prisustvu ekstenzije.

Upravljani modul obrasca i rukovaoci događaja u proširenjima konfiguracije

Ovaj video vas vodi kroz rad s rukovaocima događaja u obrascima proširenja za upravljanu konfiguraciju.

Prikazan je redoslijed izvršavanja rukovatelja događajima u glavnoj konfiguraciji iu ekstenziji.

Glavni problem rada sa ekstenzijama je pristrasna procjena broja nadolazećih poboljšanja od strane programera / implementatora. Na osnovu poruke "da, imamo samo nekoliko dugmadi za promjenu na obrascu", počinje rad sa ekstenzijama. Broj poboljšanja raste, ekstenzije se i dalje koriste na osnovu poruke "već koristimo ekstenzije, idemo dalje kroz njih."

Zatim postoji potreba za dodavanjem novih entiteta u bazu podataka, proširenjem strukture postojećih. Ili promijenite princip rada bilo kojeg tipičnog podsistema. Rad sa ekstenzijama postaje sve teži ili čak nemoguć. Konfiguracija uključuje mogućnost promjene i počinje "meko" ili "tvrdo" usavršavanje tipične konfiguracije, ovisno o kvalifikacijama programera.

Ovo je trenutak u koji dolazi tehnološki zoološki vrt. Heterogenost, koja već živi u korporativnom sistemu, radosno trlja ruke, shvatajući da je stekla tako dobro uporište zbog jasnoće i jednostavnosti.

Naravno, u ovom trenutku možete se riješiti jedne od životinja u tehnološkom zoološkom vrtu i ispravno prenijeti sve promjene u konfiguraciju. Uostalom, dalje ćete morati "paziti" na dvije životinje - i proširenja i poboljšanja u najtipičnijoj konfiguraciji. Počistite za njima, nahranite ih, nekako se pomirite jedni s drugima da ništa ne pokvare u procesu zajedničkog rada, dodajte još jednu liniju na listu zahtjeva za programere u Headhunter slobodnim radnim mjestima.

Pa, tako to treba da se radi. Ali Heterogenost zna da su ljudi lijeni, da se boje dodirnuti ono što nekako funkcionira, uvijek „nemaju vremena“, a vlasti nisu u stanju da procijene potrebu za refaktoriranjem u ovom trenutku, što je ključno za napuštanje nepotrebne tehnologije. . Poboljšanja promjena napravljenih putem ekstenzija i dalje se vrše putem ekstenzija. Poboljšanja napravljena u konfiguraciji - nastavljaju se raditi u konfiguraciji. Glavni neprijatelj arhitekture poslovnog softvera je čvrsto ukorijenjen u zarobljenim uporištu.

Općenito, bolje je dobro razmisliti prije nego počnete koristiti visoko specijaliziranu tehnologiju. Ako postoji rizik da se struktura objekata mora promijeniti ili dodati novi objekti baze podataka, potrebno je početi otklanjanje grešaka često i bez problema, postoje ljudi koji razumiju kako u početku promijeniti konfiguraciju bez problema za naknadna ažuriranja, onda je bolje odmah odlučiti da se ne proizvodi zoološki vrt. Niko nije oduzeo module koji se mogu redefinisati, programsku modifikaciju obrazaca i pretplate na događaje. Ako je kompanija mala i zaposlenima je važno da se konfiguracija ažurira jednim dugmetom sada i uvek u budućnosti, velikih promena definitivno neće biti (zaista siguran?), onda neće biti ni zoološkog vrta sa ekstenzijama.

I naravno za male dodatke, ekstenzije su dobre. Postoje primjeri dobre upotrebe na IP-u kada se ekstenzije objavljuju umjesto cf-datoteke s uputama za poređenje-kombiniranje. Ali ovo je opet specifično područje, a za zgodnu trajnu upotrebu, bolje je prenijeti funkcionalnost u konfiguraciju kako se pokretanje u poslovnom modu ne bi usporavalo.

Top Related Articles