Kako postaviti pametne telefone i računala. Informativni portal
  • Dom
  • Windows 7, XP
  • Definicija funkcije funkcije očekuje se prije. Moduli za proširenje

Definicija funkcije funkcije očekuje se prije. Moduli za proširenje

Danas vam želimo reći o korištenju dodatnih izvješća i obrade, a posebno konfiguracijskih proširenja u modelu usluge. Tehnologije ne miruju, održavanje 1C baza podataka u oblaku postaje sve atraktivnija usluga. Što trebate znati kako bi funkcionalnost nužna vašoj tvrtki bila implementirana u zakupljenu bazu, te kako taj proces izgleda sa strane davatelja usluge - o tome možete saznati ispod.

Što su vanjska izvješća i obrada

1C obrada može biti različita, ali u svakom slučaju proširuju funkcionalnost konfiguracije i omogućuju vam brzi pristup informacijama pohranjenim u bazi podataka, bez promjene konfiguracije i bez uklanjanja iz podrške. Mogu se ugraditi izravno u konfiguraciju, dodati kao proširenje konfiguraciji ili biti vanjske datoteke.

Prema funkcionalnosti obrade dijele se na one koje mogu mijenjati podatke i one koje jednostavno analiziraju informacije i prikazuju rezultat u korisničkom obliku (izvješća). Kako se ne bi mijenjali standardni izgledi za ispis dokumenata, razvijaju se eksterni tiskarski oblici. Također, vanjska obrada može se izvesti prema određenom rasporedu na 1C aplikacijskom poslužitelju - to su zakazani zadaci.

Nekoliko desetaka tretmana razvijeno je u Buttonu, što našim računovođama omogućuje korištenje “praktične magije”. Primjerice, za analizu ispravnosti računovodstva u gumbu koristi se eksterno izvješće “Auto-revizija baza podataka”. U lako čitljivim tablicama prikazuje se analiza 120 kriterija stanja i prometa na računima, usklađenost podataka iz poreznih prijava i računovodstvenih podataka, analiza dugotrajne imovine i sl.

Primjer eksternog "ugovora o zajmu" koji se može ispisati u obliku koji su razvili naši odvjetnici. Postoje slučajevi kada poduzetnik uzima beskamatni zajam od svoje tvrtke kao pojedinac, ili obrnuto, prenosi vlastita sredstva na tvrtku, tada postoji mogućnost da odmah ispiše ugovor.

Otvara se obrazac za popunjavanje potrebnih podataka:

I prikazan je tiskani obrazac ugovora:

Koristimo planiranu obradu (planirane zadatke), na primjer, da ispravimo izvadak. U Buttonu se konfiguriraju integracije s glavnim bankama i posebni roboti učitavaju izvod izravno u 1C. Zahvaljujući tehnologiji strojnog učenja postotak pogrešaka tijekom izvoda sveden je na 3%. No, kao i uvijek, postoje iznimke, na primjer, kupci koji koriste agencijsku shemu za prodaju robe, u ovom slučaju pravila za izradu 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.

Što su konfiguracijske ekstenzije

Proširenje je mini konfiguracija koja nasljeđuje objekte iz glavne konfiguracije baze podataka i sadrži kod s dodacima ili popravcima objekata i modula. U ovom slučaju, glavna konfiguracija ostaje na podršci, ne morate omogućiti uređivanje, što uvelike olakšava proces ažuriranja.

Mehanizam pretpostavlja tri vrste upotrebe, koje su, zapravo, naznačene u polju "Svrha" prilikom izrade proširenja:

Središnja komponenta tehnologije je Voditelj usluge, pohranjuje sve informacije o pretplatnicima, korisnicima, aplikacijama, infobazama i vezama među njima, uz njegovu pomoć se upravlja eksternom obradom i konfiguracijskim proširenjima.

Sve datoteke za obradu učitavaju se u poseban direktorij upravitelja usluga. Ali prije nego što učitate datoteku u katalog, drugim riječima "objavite u servisu", ona mora biti pripremljena na poseban način.

Priprema vanjskih izvješća i procesora za objavu u modelu usluge

Dodatno izvješće ili obrada kreira se u konfiguratoru 1C: Enterprise 8 kao standardna eksterna izvješća i obrada i sprema se u datoteku s nastavkom - .epf (za dodatnu obradu) ili .erf (za dodatna izvješća).

Objektni modul treba sadržavati procedure i funkcije za definiranje parametara registracije.

Imajte na umu da je "Verzija" važan parametar. Ako ste izvršili promjene u obradi koja je prethodno prenesena u direktorij upravitelja usluga, svakako promijenite broj verzije, inače će upravitelj usluge odbiti preuzeti ovu datoteku. Prilikom izrade izvješća ili njegove obrade, treba imati na umu da korisnici rade u modelu usluge putem web klijenta (dobar članak u blogu 1C). Ako obrada sadrži obrasce, onda oni moraju raditi u web klijentu pod svim web preglednicima koji su podržani od strane tehnološke platforme 1C: Enterprise 8.

Prema standardima usluge 1cfresh.com, dodatno izvješće ili obrada mora biti potpuno operativna kada se izvršava u sigurnom načinu rada, odnosno raditi bez pristupa vanjskim objektima za konfiguraciju.

Dodatno izvješće ili obrada mora se pripremiti za učitavanje u uslugu kao komplet za dostavu. Distribucijski komplet je arhiva (zip datoteka) koja sadrži:

  • dodatno izvješće ili datoteka obrade;
  • xml manifest datoteka, koja sadrži dodatne meta informacije potrebne upravitelju usluge za objavljivanje dodatnog izvješća ili njegovu obradu u usluzi.
Priprema se izvodi u lokalno raspoređenoj infobazi konfiguracije za koju je namijenjeno dodatno izvješćivanje ili obrada. Koristimo posebnog pomoćnika za izradu kompleta za dostavu, vanjsku obradu Priprema dodatnih izvješća i obradu za publikacije u Service Model.epf. Više detalja možete pronaći u dokumentaciji o Tehnologiji izdavanja 1C Fresh rješenja.

Instaliranje dodatnih izvješća i obrada u model usluge

Posebnost tehnologije 1C Fresh je da se vanjsko izvješće ili obrada ne može učitati izravno u područje podataka. Dodavanje vrši samo administrator servisa preko upravitelja usluga. Nakon što je pripremljena zip arhiva s datotekom za obradu, ona se mora učitati u direktorij upravitelja usluga i instalirati za određenog pretplatnika usluge.

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

Aplikacije mogu imati različite 1C konfiguracije (Knjigovodstvo poduzeća, Upravljanje plaćama i osobljem, Menadžment naše tvrtke itd.), koje se mogu koristiti u modelu usluge. Dodatno izvješćivanje ili obrada može se instalirati samo u aplikaciji pretplatnika, koja je navedena prilikom preuzimanja datoteke.

Ovako izgleda obrazac svojstava dodatnog izvješća s verzijama. Pomoću hiperveze "Instaliraj / deinstaliraj" dolazimo do popisa aplikacija i odabiremo potrebne baze podataka.

Nakon učitavanja obrade i odabira aplikacije, upravitelj servisa kontaktira adresu aplikacije i daje naredbu za njezinu instalaciju u infobazu.

Krećemo u obradu prema rasporedu

Pri radu s velikim brojem računovodstvenih baza podataka potrebno je periodično raditi neke obrade. Na primjer, jednom mjesečno ili svakih nekoliko minuta. Također je važno automatizirati ručne i tipične korisničke operacije. Za to aktivno koristimo zakazane zadatke.

Planirani tretmani nemaju formu. Sva logika je zapisana u objektnom modulu i izgleda ovako.



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

Više o konfiguracijskim proširenjima

Paralelno s vanjskim izvješćima i obradom, koje je potrebno pripremati i administrirati „na starinski način“, počeli smo aktivno koristiti mehanizam konfiguracijskih proširenja. Počevši od platforme 1C Enterprise 8.3.10, ovaj mehanizam nam je uvelike olakšao život i omogućio pojednostavljenje prilagodbe konfiguracija značajkama Buttona.

Na primjer, gore smo pisali o rutinskim operacijama ispravljanja dokumenata za robote, koji su se pokretali svakih 10 minuta. Sada možete redefinirati kako moduli rade pomoću proširenja. Tako možemo odmah, prilikom snimanja ili objavljivanja dokumenta, izvršiti potrebne radnje. To je puno optimalnije, jer se red zadataka u bazi podataka ne začepljuje izvođenjem radnji svakih 10 minuta, i brže, jer se promjene vrše odmah.

Prilično je jednostavno pripremiti novi nastavak. Pogledajmo proces izrade ekstenzija na konkretnim primjerima.
Prema našem iskustvu, tiskani obrazac TORG-12 je vodeći u pogledu zahtjeva za prilagodbom. Na primjer, moramo napraviti proširenje za mogućnost ispisa teretnog lista u stranoj valuti (prema zadanim postavkama, može se generirati samo u rubljama).
Otvorite Izbornik → Konfiguracija → Proširenja konfiguracije
Izrađujemo novi nastavak sa zadatkom “Prilagodba”.

Proširenje izgleda kao poznato stablo konfiguracije, ali zasad bez objekata. Prije svega, dodajmo novi izgled TORG-12 u koji smo umetnuli stupce s iznosima u valuti.

Budući da je račun ispisan iz dokumenta „Prodaja robe usluga“, ovaj dokument ćemo dodati našem proširenju iz glavne konfiguracije i izvršiti potrebne izmjene u modulu upravitelja. Da biste to učinili, odaberite "dodaj u proširenje" u kontekstnom izborniku implementacije.

Sada možete modificirati modul upravitelja implementacije. Moramo dodati novi obrazac na popis obrazaca za ispis i ispuniti iznose u valuti.

Za promjenu tipičnih postupaka koristimo napomenu & After; također nam je potrebno nekoliko naših funkcija i procedura.

Pogledajmo pobliže bilješke. U proširenjima možete koristiti: & Prije, & Poslije, & Umjesto (vrlo pažljivo). Princip rada je jednostavan: želimo da se naši algoritmi iz ekstenzije prvi izvrše, stavljamo napomenu & Prije i u zagradama označavamo naziv procedure iz standardne konfiguracije. Ako prvo radi standardni modul, a zatim naš, koristimo & After.

Bilješke & prije i & poslije ne mogu se primijeniti na funkcije. Stoga, ako trebamo promijeniti algoritam funkcije iz glavne konfiguracije, upotrijebite & umjesto napomene.

Oznaku & Umjesto toga treba koristiti što je štedljivije, budući da u potpunosti zamjenjuje izvršavanje procedure i funkcije iz glavne konfiguracije s postupkom / funkcijom proširenja. S ovom metodom presretanja, procedura/funkcija iz glavne konfiguracije općenito će se prestati izvršavati 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 vanjskih izvješća/obrada. Na temelju našeg iskustva, oboje smo "za" širenje. Ovo je moderna i prilagodljivija tehnologija, ima mnogo više značajki, a njihovo objavljivanje je puno lakše. Proširenje sadrži samo nužni dio koda, također nema potrebe za dodatnim pisanjem procedura i funkcija za određivanje parametara registracije, praćenje verzija i izradu distribucijskog kompleta.

Za isto podatkovno područje može se koristiti više ekstenzija.
Za specifičnosti rada 1C Fresh u načinu dijeljenja podataka (jedna konfiguracija, mnogo neovisnih područja), metoda proširenja je izvrsno rješenje.

Implementirano u verziji 8.3.9.1818.

Ukratko, sada uz pomoć proširenja možete mijenjati module tipične konfiguracije i dodavati vlastite module.

A detaljnije, možete promijeniti sve module, osim modula redovnih obrazaca:

  • Zajednički moduli;
  • Objektni moduli (objektni modul, modul upravitelja, itd.) za sve vrste objekata;
  • Modul sesije;
  • Upravljani aplikacijski modul;
  • Vanjski priključni modul;
  • Zapovjedni moduli;
  • Moduli obrasca;
  • itd.

Treba napomenuti da ste možda i prije mijenjali module upravljanih obrazaca, ali sada smo unijeli neke promjene u ovaj proces.

Presretanje
Možete presresti bilo koje metode tipične konfiguracije, uokviriti ih vlastitim ili ih čak potpuno zamijeniti.

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

Prilagođeni moduli
Možete stvoriti vlastite zajedničke module u proširenju.

Poziv
I konačno, možete pozvati bilo koju od tipičnih metoda konfiguracije u svom proširenju.

Kada posudite i proširite generički modul, vaš će proširivač biti u istom imenskom prostoru kao i generički modul. Stoga, budući da ste u modulu proširenja, možete izravno pristupiti svim varijablama i metodama tipičnog modula.

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

Presretanje poziva metoda

Zadatak presretanja poziva, u ogromnoj većini slučajeva, je okružiti poziv metode tipa s nekim akcijama prije i/ili poslije. Istodobno, nismo isključili mogućnost potpunog preklapanja poziva metode type, te smo implementirali ovu mogućnost.

U potpunosti opisujete potrebu presretanja metode određene vrste u modulu proširenja. Zbog toga smo u ugrađeni jezik uveli novi strukturni element - anotaciju. Uz pomoć napomene koja se nalazi ispred definicije metode, pokazujete koji tip metode presreće procedura/funkcija i na koji način. Na primjer:

Napomena i prije ("Procedura1") znači da se presreće tipična procedura pod nazivom Procedure1. Naziv napomene Prije znači da će se prvo izvršiti vaša presretačka procedura Exp_Proc1 (), a zatim - tipična Procedure1 ().

Sažetak i prije

Bilješka s ovim imenom znači da će se vaš presretač izvršiti prije početka izvršavanja metode tipa.

Na dijagramu su tipični i prošireni moduli prikazani pravokutnicima, a strelica pokazuje slijed izvođenja ugrađenog jezika.

Sažetak i poslije

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

Sažetak & Umjesto toga

Ova bilješka samo implementira mogućnost potpunog preklapanja metode tipa. To jest, tipična metoda se uopće neće izvršiti. Umjesto toga, izvršit će se samo vaš presretač.

Za isti tipičan postupak, možete instalirati jednu od sljedećih kombinacija presretača u svoje proširenje:

  • &Ispred;
  • &Nakon;
  • &Umjesto;
  • & Prije i poslije.

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

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

Umjesto toga pozivanje metode prekrivene napomenom &

Ispada da je to neka nepravda. Možete preklapati ili uokviriti postupak. A funkcija je samo potpuno pokriti.

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

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

Na ovaj način vaša funkcija presretača je podijeljena na dva dijela. Dio koji se izvršava prije izvršavanja tipične funkcije i dio koji se izvršava nakon tipične.

Metodu ContinueCall () možete koristiti ne samo kada se funkcije preklapaju, već i kada se preklapaju postupci. U ovom slučaju, rezultat njegove primjene bit će isti 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. Ovo može biti zgodno u nekim situacijama. U ugrađenom jeziku, takav postupak presretača može izgledati ovako:

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

Uvijek je korisno imati na umu dvije stvari kada presretate tipične metode konfiguracije:

  • Nakon što napišete svoje proširenje, tipična konfiguracija će se promijeniti;
  • Vaš cilj je dodati vlastitu funkcionalnost, a ne trajno napustiti ono što jest i što će biti u tipičnoj konfiguraciji.

S ove točke gledišta, najpoželjnije je koristiti presretače & Prije i & Poslije. Jer kod njih će se metoda presretnutog tipa uvijek izvršavati, bez ikakvih uvjeta. A ako programeri tipične konfiguracije kasnije unesu promjene u ovu metodu, te će promjene sigurno funkcionirati kada koristite vaše proširenje.

Također je sasvim prihvatljivo koristiti metodu presretač & Instead of i ContinueCall (). Međutim, ovdje imate priliku i iskušenje nazvati tipičnu metodu ne uvijek, već ovisno o nekim vašim uvjetima. Ovome treba pristupiti s oprezom i zapamtite da u trenutku kada odbijete pozvati metodu tipa, odbijate pozvati ne samo metodu koja je sada u konfiguraciji, već i sve njene varijante koje će se pojaviti u budućnosti. A u budućnosti se, na primjer, mogu pojaviti važne i korisne promjene.

I, konačno, naj"loša" opcija je potpuno preklapanje metode tipa od strane presretača & Umjesto toga. U ovom slučaju, generički rukovatelj sigurno se neće izvršavati sada ili u budućim verzijama. To jest, vi preuzimate svu odgovornost za rad budućih verzija konfiguracije, za vaše proširenje. Zasigurno postoje situacije u kojima je takvo potpuno preklapanje potrebno, ali pozivamo vas da vrlo pažljivo i pažljivo pristupite njegovoj uporabi.

Slijed poziva kod metoda presretanja

Ovdje, prije nego što ispričamo priču, potrebno je napraviti malo objašnjenje. Važna, moglo bi se reći, "ideološka" karakteristika ekstenzija je njihova autonomija. Odnosno, ekstenzije trebaju biti dizajnirane tako da ne ovise jedna o drugoj.

Ali kada je aplikacija pokrenuta, prirodno je i očito da postoji određeni slijed pozivanja povezanih ekstenzija. Ovaj slijed je poznat i sada ćemo vam reći o njemu. Ali nećemo vam reći da na temelju njega stvarate međuovisne ekstenzije, ili ekstenzije koje podrazumijevaju jednu strogo definiranu sekvencu povezivanja. I tako da možete rastaviti nove probleme i otkloniti pogreške u programskom kodu.

Kada priključite ekstenzije na tipičnu konfiguraciju, formira se "slojeviti kolač". Na dnu ovog kolača je tipična konfiguracija, a na vrhu je zadnji uključeni nastavak.

Što je u konfiguratoru, što je u načinu 1C: Enterprise, posljednje povezano proširenje je posljednje na popisu.

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

Kada platforma naiđe na presretače definirane u ekstenzijama, proces izvođenja ugrađenog jezika ide od vrha do dna ovog kolača, u skladu s napomenama koje presretači imaju. Do razine do koje može doći. Nakon toga se vraća na vrh, ako postoje presretači, i vraća se na standardnu ​​konfiguraciju.

Primjer 1

Na primjer, ako je metoda istog tipa presretnuta (uokvirena) u dva proširenja, tada će slijed poziva rukovatelja biti sljedeći:

  • Presretač iz Extension2 će biti pozvan prvi, jer je na vrhu. Ovo će biti presretač & Prije, jer ima takvu bilješku;
  • Tada će biti pozvan presretač iz Extension1 jer je sljedeći u kolaču. Opet će biti & Prije, jer ima takvu napomenu;
  • Nakon toga će biti pozvana metoda tipa, jer više nema presretača koji bi spriječili njegovo izvršenje;
  • Zatim, obrnutim redoslijedom od kolača, pozvati će se & poslije presretač iz proširenja1 i presretač & poslije iz proširenja2.

Koristeći ovaj primjer, možete dobro razumjeti sljedeću značajku: ako se u jednom od presretača dogodi neobrađena iznimka, tada se cijeli lanac prekida i iznimka se nastavlja širiti.

Primjer 2

Ako se metoda ContinueCall () koristi u presretačima, primjenjuje se isti princip kolača.

  • Presretač iz Extension3 će biti pozvan prvi, jer je na vrhu. Ovo će biti presretač & Umjesto toga, jer ima takvu napomenu;
  • Ako pokušate pozvati generičku metodu, preostali kolač će biti raščlanjen. Analizirat će se na potpuno isti način kao što je opisano u prethodnom primjeru;
  • Kao rezultat toga, izvršenje koda će se vratiti na presretač & Umjesto toga, a nakon završetka - na standardnu ​​konfiguraciju.

Primjer 3

Važna točka koju treba razumjeti je činjenica da se prilikom preklapanja pomoću oznake & Instead, zapravo, ne preklapaju samo pozivi glavne metode, već i presretači koji su niže u "torti".

U ovom primjeru, samo će se presretač & izvršiti umjesto iz Extension2. Zato što se preklapa s tipičnom metodom, odnosno cijelom "tortom" koja se nalazi ispod.

Primjer 4

Ovo je, zapravo, varijacija na temu drugog primjera, ali kada postoji ekstenzija ispod gornjeg proširenja, to također "odbacuje" poziv tipične procedure.

Zapravo, to je samo još jedna vizualizacija činjenice da se poziv metode tipa primjenjuje na cijeli "toru" ispod ekstenzije. Zato će se nakon pozivanja presretača iz Ekstenzije2 pozvati presretač iz Ekstenzije1. Jer u preostaloj "torti" on je taj koji preklapa poziv metode tipa do koje se želi "dosegnuti" Extension2.

Presretanje rukovatelja događaja i prilagođenih rukovatelja u modulima objekata, upravitelja itd.

Presretanje bilo koje metode u ovim modulima izvodi se na isti način kao što je opisano na početku. Međutim, ako je presretnuti postupak rukovatelj događaja, postoje neke posebnosti. Ove značajke su posljedica činjenice da u ovim modulima svi rukovatelji događaja imaju fiksna imena.

Prvo, naziv događaja navodi se kao naziv metode koja se presreće. Na primjer, Prije snimanja:

Drugo, prisutnost generičkog rukovatelja za ovaj događaj nije obavezna. Ako nema generičkog rukovatelja, tada će biti pozvan vaš presretač. Zahvaljujući ovoj značajci, možete dodijeliti vlastite rukovatelje događajima koji se ne obrađuju u tipičnoj konfiguraciji.

Budući da obrađivači događaja u objektnim modulima imaju fiksne nazive, a popis napomena je poznat, za vas smo implementirali mali "servis". Kada se izradi rukovatelj u proširenju, otvara se dijaloški okvir u kojem možete odabrati vrstu poziva. Nakon toga u modulu se kreira predložak za proceduru presretača.

Presretanje rukovatelja događaja i prilagođenih rukovatelja u modulima obrasca

Presretanje bilo koje metode u ovim modulima također se izvodi na isti način kao što je opisano na početku. Međutim, postoje i neke posebnosti vezane uz presretanje rukovatelja događajima. Ove značajke su posljedica činjenice da se u ovim modulima svi rukovatelji događaja mogu dodijeliti i nemaju fiksna imena. Kao što vjerojatno znate, da bi platforma razumjela kako se nositi s ovim ili onim događajem, u konfiguratoru, na ploči svojstava, mora postojati vezanje određene procedure za određeni događaj.

Iz tog razloga, i samo kada presretate rukovaoce događajima na obrascu, trebate koristiti paletu Svojstva, a ne bilješke. Iako bilo koje druge metode modula koje nisu rukovatelji događajima, možete presresti pomoću bilješki.

Izvana, presretač događaja u modulu obrasca izgleda ovako:

To jest, bilješka se ne koristi, a tip presretača je naveden u paleti svojstava. To se radi vrlo jednostavno. Kada kreirate rukovatelj u proširenju klikom na gumb "povećalo", otvara se dijaloški okvir. Omogućuje vam, osim konteksta, da navedete vrstu presretača (prije, poslije ili Umjesto toga).

Nakon izrade predloška za proceduru u paleti svojstava, pored naziva presretača pojavljuje se ikona koja pokazuje vrstu presretanja.

Ako preklapate generički obrađivač (umjesto), to je samo točka.

Ako izradite presretač Prije ili Poslije, to će biti točka pored okomite trake. Mjesto točke, prije ili iza trake, označava vrstu presretača. Osim toga, drugo (prazno) polje pojavljuje se pored ovog događaja u paleti svojstava. Uz njegovu pomoć, možete definirati upareni presretač, ako postoji potreba za uokvirivanje tipičnog rukovatelja s parom Prije - Poslije.

Ovako definirane kuke za događaje će raditi čak i ako ne postoji generički rukovalac za ovaj događaj. Ovo je način na koji možete dodijeliti vlastite rukovaoce događajima forme koji se ne obrađuju u tipičnoj konfiguraciji.

Postoji još jedna mala napomena kada govorimo o modulima obrasca. Malo smo promijenili ponašanje modula koji proširuju module oblika koji su postojali prije. Kako bi odgovarao ponašanju ostalih modula i kako bi se osigurala stabilnost programskog koda.

Prije su svi moduli koji proširuju modul obrasca i sam modul obrasca bili u istom imenskom prostoru. Tako je bilo moguće pozvati s gornjeg proširenja ne samo metode standardne konfiguracije, već i metode temeljnih ekstenzija. Sada smo zatvorili ovu "rupu", a metode temeljnih ekstenzija više nisu dostupne. Sada možete pristupiti samo metodama sadržanim u generičkom modulu koji proširite.

Uobičajeni moduli

U proširenju možete stvoriti bilo koji od vlastitih zajedničkih modula. Postoje samo dva ograničenja:

  • Ne moraju biti na cijelom poslužitelju;
  • Ne moraju biti privilegirani.

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

  • Ne možete posuditi globalne poslužiteljske module;
  • Kôd s vašeg proširenja izvršavat će se samo u neprivilegiranom načinu (osim ako je drugačije dopušteno u sigurnosnom profilu).

Sama operacija posudbe globalnog poslužiteljskog modula nije zabranjena u stablu konfiguracije, ali u fazi ažuriranja konfiguracije baze podataka dobit ćete pogrešku i ažuriranje se neće izvršiti.

Metode na strani poslužitelja ne proširuju se uvijek

Činjenica da je vaše proširenje uspješno spojeno na tipičnu konfiguraciju ne znači da će se sve zakačice koje sadrži vaše proširenje primijeniti i početi izvršavati. Postoje neke sigurnosne značajke.

Ako primijenjeno rješenje radi u verziji datoteke ili u verziji klijent-poslužitelj bez sigurnosnih profila, tada kada povežete svoje proširenje:

  • U normalnom načinu izvršavanja ugrađenog jezika, sve metode standardnog rješenja, kako klijentske tako i poslužiteljske, bit će proširene;
  • U načinu sigurnog izvršavanja ugrađenog jezika - proširit će se samo metode na strani klijenta i rukovatelji obrascima na strani poslužitelja. Proširenje se neće primijeniti na ostale poslužiteljske procedure/funkcije.

Kada aplikacijsko rješenje radi u verziji klijent-poslužitelj i kada je proširenje spojeno, naveden je određeni sigurnosni profil ili se infobazi dodijele normalni i sigurni profili, "poslužiteljski" dio proširenja će se primijeniti kako je navedeno u odgovarajući profil.

Najjednostavniji od njih je potvrdni okvir za proširenje svih modula u grupi Puni pristup dopušten. To "u jednom potezu" omogućuje proširenje konteksta poslužitelja.

Postoji i preciznija postavka pomoću polja Moduli dostupni za proširenje i Moduli nisu dostupni za proširenje. Pretpostavljamo da ćete ih koristiti na sljedeći način:

  • Ako niste dopustili puni pristup proširenjima, tada u polju Moduli dostupni za proširenje navodite nazive onih modula za koje je proširenje konteksta poslužitelja prihvatljivo i nije strašno;
  • Ako ste dopustili puni pristup proširenjima, tada u polju Moduli nisu dostupni za proširenje navodite neke module u kojima još uvijek ne morate dopustiti proširenja konteksta poslužitelja.

Ispalo je dosta relevantno :)

Ok, uljepšajmo i ovaj vikend.

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

Produžni mehanizam u platformi 8.3.6

o čemu pričamo?

U platformi 8.3.6 implementiran je novi mehanizam - mehanizam proširenja koji olakšava prilagodbu rješenja aplikacije određenom kupcu.

Kada koristite ekstenzije finalizacija konfiguracije se provodi u novom entitetu- proširenje konfiguracije:

  • Proširenje je, zapravo, također konfiguracija, ali s nekim ograničenjima.
  • Pripremljeni nastavak se može povezati s proizvodnom bazom kupca u korisničkom načinu rada
  • Najvažnija stvar - izmijenjenu konfiguraciju ne treba ukloniti iz podrške, tj. ostaje tipično, nepromijenjeno
  • Ažuriranje izmijenjene konfiguracije korisnik može izvesti u automatskom načinu rada

Dakle, kupac dobiva kao rezultat mogućnost revizije konfiguraciju i istovremeno - jednostavno automatsko ažuriranje.

Kako biste to mogli detaljnije razumjeti, objavljujemo još nekoliko videa + PDF na proširenjima.

Pa, idemo:

Dodjela proširenja konfiguracije

Video govori o novom mehanizmu konfiguracijskih proširenja koji se pojavio na platformi 8.3.6. Namijenjen je reviziji, prilagodbi rješenja tijekom implementacije. Istodobno, korisnik dobiva jednostavno automatsko ažuriranje konfiguracije i mogućnost izvođenja poboljšanja.

Objekti koji se mogu mijenjati u proširenju

Ovaj video istražuje postojeća ograničenja mehanizma proširenja. Trenutno se u ekstenzijama može koristiti samo ograničen broj objekata.

Rad s ekstenzijama u konfiguratoru

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

Posuđivanje predmeta

Ovaj videozapis pokriva posuđivanje osnovnih konfiguracijskih objekata u proširenje. Ovo je glavni mehanizam potreban za razvoj samog proširenja. Također opisuje kontrolirana svojstva, čija se vrijednost provjerava kada je proširenje spojeno.

Stvaranje vlastitih objekata u proširenju konfiguracije

Ovaj video pokazuje kako možete stvoriti vlastite objekte u proširenju. Popis takvih objekata je još uvijek ograničen - to su izvješća, obrada i podsustavi. Razvoj takvih objekata u proširenju provodi se po analogiji s glavnom konfiguracijom.

Rad s ekstenzijama u korisničkom načinu rada

Ovaj video ispituje kako spojiti pripremljeno proširenje s proizvodnom bazom kupca. U tom slučaju, veza se može uspostaviti iz korisničkog načina bez pristupa konfiguratoru.

Rad s upravljanim obrascima u proširenjima konfiguracije

Ovaj video prikazuje kako raditi s upravljanim obrascima u proširenju. Napominje se da izvorni obrazac nije automatski sinkroniziran s ekstenzijom. Objašnjava kako sustav oblikuje rezultirajući izgled oblika kada postoji proširenje.

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

Ovaj vam videozapis pokazuje kako raditi s rukovaocima događaja u upravljanim oblicima proširenja konfiguracije.

Demonstrira kako izvršiti obrađivače događaja u glavnoj konfiguraciji i proširenju.

Glavni problem s radom s proširenjima je pristrana procjena broja nadolazećih poboljšanja od strane programera / implementatora. Polazeći od poruke "da, trebamo promijeniti samo nekoliko gumba na obrascu", rad počinje s proširenjima. Broj poboljšanja raste, proširenja se i dalje koriste na temelju poruke "već koristimo ekstenzije, idemo dalje kroz njih."

Tada postaje potrebno dodati nove entitete u bazu podataka, proširiti strukturu postojećih. Ili promijenite princip rada bilo kojeg tipičnog podsustava. Rad s ekstenzijama postaje sve teži ili čak nemoguć. U konfiguraciji se uključuje mogućnost promjene i počinje "meka" ili "tvrda" revizija tipične konfiguracije, ovisno o kvalifikacijama programera.

Ovo je trenutak u kojem dolazi zoološki vrt tehnologije. Heterogenost, koja već živi u korporativnom sustavu, zadovoljno trlja ruke, shvaćajući da je stekla dobro uporište jasnoćom i jednostavnošću.

Naravno, u ovom trenutku možete se riješiti jedne od životinja u tehnološkom zoološkom vrtu i inteligentno prenijeti sve promjene u konfiguraciju. Uostalom, tada ćete morati "paziti" na dvije životinje - i proširenja i modifikacije u najtipičnijoj konfiguraciji. Počistiti za njima, nahraniti ih, nekako se međusobno pomiriti da ništa ne pokvare u procesu zajedničkog rada, dodaj još jedan redak na popis zahtjeva za programere na slobodna radna mjesta na Headhunteru.

Na dobar način, to treba učiniti. Ali Heterogenost zna da su ljudi lijeni, da se boje dirati u nešto što nekako funkcionira, uvijek „nemaju vremena“, a šefovi nisu u stanju procijeniti potrebu za refaktoriranjem u ovom kritičnom trenutku za napuštanje nepotrebne tehnologije. Poboljšanja promjena unesenih putem proširenja nastavljaju se provoditi kroz proširenja. Promjene napravljene u konfiguraciji - nastavljaju se raditi u konfiguraciji. Glavni neprijatelj arhitekture korporativnog softvera čvrsto je ukorijenjen u osvojenom mostobranu.

Općenito, bolje je dobro razmisliti prije korištenja visoko specijalizirane tehnologije. Ako postoji rizik da će se struktura objekata morati promijeniti ili dodati novi objekti baze podataka, potrebno je početi otklanjati greške č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 ne uzgajati zoološki vrt. Nitko od nas nije preuzeo module koji se mogu preskočiti, programske izmjene obrazaca i pretplate na događaje. Ako je tvrtka mala i zaposlenicima je važno da se konfiguracija ažurira jednim gumbom, sada i uvijek u budućnosti, definitivno neće biti velikih promjena (stvarno sigurni?), onda neće biti ni zoološkog vrta s ekstenzijama.

I naravno za male dodatke, proširenja su dobra. Postoje primjeri dobre upotrebe na IS-u kada se ekstenzije objavljuju umjesto cf datoteke s uputama za usporedbu-spajanje. Ali ovo je opet specifično područje i za praktično trajno korištenje bolje je prenijeti funkcionalnost u konfiguraciju kako se pokretanje u poslovnom načinu rada ne bi usporavalo.

Vrhunski povezani članci