Dom

ostalo Implementirano u verziji 8.3.6.1977. Implementirali smo temeljno novi mehanizam prilagodbe

aplikativna rješenja

za određenog potrošača - produžni mehanizam. Za što su ekstenzije dobre? Proširenja nude drugačiju strategiju za promjenu standardnih konfiguracija od postojeće. Koristeći ovo nova strategija uvelike će olakšati održavanje

standardna rješenja , koju želite prilagoditi potrebama konkretne izvedbe, konkretnog kupca. Kako taj proces sada izgleda? Postoji standardna konfiguracija. U potpunosti je podržan od strane dobavljača. To znači da se ne može promijeniti. Dobavljač povremeno izdaje nove (poboljšane) verzije ove konfiguracije. U takvoj situaciji ažurirajte

stara verzija

Konfiguracija za novu verziju vrši se potpuno automatski. Ovo je praktično i ne zahtijeva nikakve posebne vještine ili znanje od kupca. Ali često kupac želi nešto dodati ili promijeniti u standardnoj konfiguraciji "za sebe". Da biste to učinili, mijenja se način podrške, konfiguracija se uklanja iz pune podrške. Implementacijski partner ili klijentovi vlastiti IT stručnjaci čine potrebne izmjene u njemu. Od ove točke nadalje, potpuno automatsko ažuriranje standardne konfiguracije na novu verziju koju je izdao dobavljač postaje nemoguće. Sada ažuriranje konfiguracije zahtijeva sudjelovanje stručnjaka. Štoviše, ako su promjene napravljene na zahtjev kupca bile značajne, stručnjaku koji vrši ažuriranje konfiguracije može biti potrebno dosta vremena. A često može biti potrebno mnogo

Strategija koju nude proširenja je sljedeća. Ako želite promijeniti standardnu ​​konfiguraciju, ne dirate samu konfiguraciju. Sve promjene vršite u ekstenziji, koja je zapravo i konfiguracija.

U načinu rada 1C:Enterprise jednostavno povezujete svoje proširenje sa standardnom konfiguracijom. Platforma automatski, u načinu rada 1C:Enterprise, kombinira vaše proširenje sa standardnom konfiguracijom. Kao rezultat toga, kupac radi sa standardnim rješenjem modificiranim prema njegovim željama.

Kada dobavljač objavi novu verziju referentne konfiguracije, dolazi do automatskog ažuriranja jer se način podrške referentne konfiguracije nije promijenio. Ostala je u potpunosti podržana od dobavljača. A kada pokrenete ažurirano aplikacijsko rješenje, platforma će ponovno automatski spojiti promijenjenu standardnu ​​konfiguraciju s vašim proširenjem. A kupac će nastaviti raditi s standardnim rješenjem modificiranim prema svojim željama.

Kada biste trebali koristiti ekstenzije?

Mehanizam produljenja primamljiv je zbog svoje svestranosti. Stoga je važno imati ispravnu predodžbu o tome koje zadatke namjerava riješiti.

Prvo, proširenja su nezamjenjiva kada aplikacijsko rješenje radi u načinu dijeljenja podataka. Na primjer, u servisnom modelu. Jedan od pretplatnika želi imati nekoliko dodatnih izvješća. Dok drugi pretplatnici žele raditi s nepromijenjenom standardnom konfiguracijom.

Tada za ovog pretplatnika možete razviti ekstenziju u kojoj možete implementirati sve njegove želje. Pretplatnik će spojiti ovo proširenje i radit će s promijenjenom konfiguracijom. Dok za ostale pretplatnike neće doći do promjena. Budući da su sva proširenja povezana i pokrenuta na temelju trenutnih vrijednosti separatora.

Druga situacija je kada se standardna konfiguracija modificira za određenog kupca tijekom implementacije. Ili izmjene standardne konfiguracije koje informatički stručnjaci kupca sami izvode za sebe. Ako se sva ova poboljšanja uvedu u proširenje, tada će standardna konfiguracija ostati u potpunosti podržana, što će uvelike pojednostaviti njeno daljnje održavanje.

Postoji napast da se ekstenzije koriste za stvaranje masovno proizvedenih aplikacijskih rješenja, ali to se ne bi trebalo činiti. Prvo, jer proširenja nisu dizajnirana za takve zadatke. I drugo, zato što drugi mehanizmi platforme, kao što su mehanizmi isporuke i podrške, ne znaju ništa o ekstenzijama.

Ako pogledate malo u povijest pojavljivanja ekstenzija, onda smo, naravno, vidjeli prije, a vidimo sada, da konfiguracije postaju sve složenije. Vidimo da je potrebna dodatna podrška za različite razine razvoj: knjižnica, modularni i industrijski, itd. Analizirali smo sve te zadatke i došli do zaključka da je najveći prioritet u trenutku je prilagodba konfiguracija željama korisnika tijekom implementacija.

Upravo za ovaj zadatak stvorili smo mehanizam produljenja. Naravno, u njemu se mogu uočiti i drugačija obilježja ostalih navedenih područja razvoja. Ali oni nisu njegova glavna svrha i ne bi vas trebali zbuniti.

Što sada možete promijeniti pomoću proširenja?

Do sada nije učinjeno puno toga što se planira učiniti. Mehanizam će se, naravno, razvijati. Ali ono što je već učinjeno može biti korisno u mnogim slučajevima tijekom implementacija. Sada:

  • Može se mijenjati upravljani oblici, postoji u standardnoj konfiguraciji;
  • Možete dodati nove podsustava. Možete promijeniti sastav podsustava dostupnih u standardnoj konfiguraciji;
  • Može se mijenjati uloge standardna konfiguracija, dodavanje objekata stvorenih u proširenju njima;
  • Može se mijenjati naredbeno sučelje tipična konfiguracija (glavna particija, podsustavi);
  • Možete dodati nove izvješća I obrada.

U budućnosti planiramo postupno povećavati funkcionalnost proširenja i bit će nam drago čuti vaše mišljenje o tome koja je funkcionalnost najtraženija u implementacijama s manjim izmjenama.

Kako funkcionira proširenje?

Proširenje je vrlo slično uobičajenoj konfiguraciji. Također je predstavljen kao stablo objekata. Za rad s ekstenzijom koriste se iste metode rada kao i kod redovne konfiguracije.

Važna značajka ekstenzije je prisutnost posuđenih predmeta. Možete posuditi bilo koji standardni konfiguracijski objekt pomoću naredbe kontekstnog izbornika:

Posuđeni predmeti nisu uvijek potrebni. To je najbolje objasniti na “svakodnevnom” primjeru, ako povučemo analogiju s ručkom u restoranu.

Prva situacija je kada su potrebni posuđeni predmeti.

Navikli ste ručati u istom restoranu. Uvijek naručiš biftek i čaj. Na primjer, jer su u ovom restoranu jako dobri. Ili iz drugog razloga. Nema veze. Važno je samo da ćete ih pojesti i ništa drugo.

Tada je restoran tipična informativna baza. Vi ste produžetak. Jelovnik restorana je proširiva standardna konfiguracija. Biftek i čaj posuđeni su predmeti. Posudili ste ih (sjetili se da su na jelovniku).

Kako se proširenje povezuje s konfiguracijom i radi? Dođete u restoran i tražite jelovnik. Na jelovniku vidite da ima biftek i čaj. To jest, uspostavljate korespondenciju između posuđenih objekata i objekata standardne konfiguracije. Naravno, slažete se imenom :). Donose ti biftek i čaj, ti ih pojedeš. Odnosno, proširenje se povezuje i radi.

Tjedan dana kasnije dolazite, ali jelovnik restorana je promijenjen (standardna konfiguracija je ažurirana). Ipak, biftek i čaj i dalje su na jelovniku. Oni su upravo ono što trebate. Oni ti ih donesu, ti ih pojedeš. Odnosno, proširenje nastavlja raditi s ažuriranom standardnom konfiguracijom.

Drugi tjedan kasnije dođete u restoran i vidite da su biftek i čaj nestali s jelovnika. Ustajete i odlazite (poruka o pogrešci povezivanja lokala). Jer si to htio. A o drugim jelima (predmetima) nemaš pojma. Programer vas nije naučio kako pravilno jesti puževe ili jastoge.

Još jedna situacija kada možete bez posuđenih predmeta.

Idete u restoran, ali vas dostupnost određenih jela ne zanima. Jer ih ionako nećete pojesti. Samo ih želite fotografirati. A znaš fotografirati svako jelo. Zatim se samo spojite na konfiguraciju i kažete: donesi sve grickalice koje imaš na jelovniku (dobiješ zbirku dokumenata iz metapodataka). Ja ću ih preusmjeriti (fotografirati).

Ako ovo opišemo suhim jezikom programera, ispada da trebate posuditi objekte:

  • Kada su potrebni za vizualni dizajn. Na primjer, proširite obrazac i dodate props obrasca poput ImenikValute.Veza. Onda biste, naravno, trebali posuditi priručnik Valute, tako da prilikom spajanja na standardnu ​​konfiguraciju možete biti sigurni da takav imenik još uvijek postoji u njoj.
  • Kada su potrebni za rad koda. Na primjer, u kodu proširenja pristupate atributu imenika Nomenklatura - Uvoznik. Tada se i ovaj atribut mora posuditi tako da prilikom povezivanja možete biti sigurni da u standardnoj konfiguraciji takav atribut još uvijek postoji u imeniku Nomenklatura.

Spajanje ekstenzije

Ekstenziju kreirate u konfiguratoru. Nakon što se otklone pogreške i testira, možete ga odbiti spremanjem ekstenzije u *.cfe datoteku.

Ovu datoteku možete poslati kupcu. Kupac će ga samostalno učitati u svoju informacijsku bazu u načinu rada 1C:Enterprise koristeći standardnu ​​funkciju Upravljanje proširenjima konfiguracije.

Rad s ekstenzijama dostupan je iz ugrađenog jezika, tako da u aplikativnom rješenju možete kreirati vlastitu obradu koja će učitavati ekstenzije. Kako bismo spriječili da se svi igraju s proširenjima, dodali smo novo pravo - Administriranje proširenja konfiguracije.

Kada učitate ekstenziju iz datoteke, ona se sprema u informacijska baza. Štoviše, sprema se u kontekstu trenutnih vrijednosti separatora korištenih u ovoj sesiji.

Da bi proširenje radilo, sesija se mora ponovno pokrenuti. Kada sesija započne, neposredno prije poziva događaja Postavljanje parametara sesije, sva proširenja pohranjena u infobazi i koja odgovaraju trenutnim vrijednostima separatora za ovu sesiju bit će povezana.

Kao rezultat toga, kada radite u načinu dijeljenja podataka, proširenje će se primijeniti samo na korisnike ovog određenog pretplatnika. A ako se ne koristi odvajanje podataka, proširenje će raditi za sve korisnike infobaze.

Prilikom spajanja ekstenzije, kao što smo već rekli, provjerava se postoje li posuđeni objekti u standardnoj konfiguraciji. Objekti se povezuju po imenu.

Osim toga, moguća je finija kontrola. Možete kontrolirati ne samo samu činjenicu postojanja objekata, već i stanje njihovih pojedinačnih svojstava. Odnosno, ako razmišljate o restoranu i bifteku, ono što vam može biti važno nije samo prisutnost nekako pečenog bifteka, već upravo činjenica da se on ovdje kuha rare, “rare”.

Vraćajući se na proširenje, ono prema zadanim postavkama ne kontrolira svojstva posuđenih objekata. Ali ako je potrebno, neka svojstva možete učiniti kontroliranim. Na primjer, važno je za vaš algoritam ne samo da postoji direktorij Nomenklatura, ali i da njegov kod ima tip Linija.

Zatim, ako u tipičnoj konfiguraciji dobavljač promijeni vrstu koda ovog imenika u Broj, vaše proširenje će to otkriti u trenutku povezivanja i prijaviti pogrešku.

Zanimljiva točka povezana je s preimenovanjem standardnih konfiguracijskih objekata. Na primjer, došli ste u restoran, a umjesto Odrezak napisano Odrezak. Odnosno, prilikom povezivanja s konfiguracijom, proširenje ne pronalazi direktorij u njemu Nomenklatura, jer ga je dobavljač preimenovao u Roba.

Sada vam ova situacija ne predstavlja problem. I ne morate "lopatiti" sav kod proširenja kako biste umjesto toga Nomenklatura pisati Roba. Također radi. Stoga samo trebate promijeniti naziv posuđenog objekta u Roba, a platforma će sama napraviti ostale promjene u proširenju. Ili uz vašu minimalnu pomoć.

Operacija proširenja

Možete prilično dugo razgovarati o značajkama proširenja različitih objekata, o značajkama rada samih proširenja. No ograničeni smo opsegom preglednog članka, pa ćemo se dotaknuti samo ključnih točaka koje nam najviše otkrivaju.

Glavna "ljepota" proširenja nije, naravno, u tome što standardnoj konfiguraciji možete dodati nešto čega nema. A činjenica je da u proširenju možete promijeniti ono što je već u standardnoj konfiguraciji. Odnosno, možete promijeniti svojstva posuđenih objekata.

Osnovni koncept koji se koristi kada konfiguracija i proširenje rade zajedno može se opisati kako slijedi. Na onim mjestima gdje se ne presijecaju, proširenje nadopunjuje konfiguraciju. Na onim mjestima gdje se "sijeku", primjenjuje se ekspanzija.

To se može detaljnije vidjeti na primjeru upravljanih obrazaca. Možete posuditi obrazac iz glavne konfiguracije i uređivati ​​ga u proširenju bez ograničenja. Za vizualni dio obrasca i za njegov modul koriste se dvije različite strategije kombiniranja.

Vizualni dio obrasca fiksiran je u produžetku u trenutku njegove posudbe. A u načinu rada 1C:Enterprise, za svaki element obrasca, promjene u odnosu na ovo stanje analiziraju se u standardnoj konfiguraciji iu proširenju.

Ukoliko nije bilo promjena ili su bile samo u standardnoj konfiguraciji, primjenjuje se vrijednost iz standardne konfiguracije. U ostalim slučajevima koristi se vrijednost iz proširenja.

Dakle, ako ste dodali novu naredbu obrascu u proširenju, vidjet ćete je zajedno s ostalim naredbama obrasca. A ako ste promijenili naslov postojeće grupe, tada ćete vidjeti svoj naslov čak i ako naziv ove grupe u standardnoj konfiguraciji promijeni dobavljač.

Moduli obrazaca koriste drugačiji pristup. Za posuđeni oblik, proširenje stvara vlastiti modul s vlastitim rukovateljima za sve događaje. U načinu rada 1C:Enterprise, oba modula obrazaca (iz standardne konfiguracije i iz proširenja) kombiniraju se u jednom kontekstu. Iz tog razloga, svako proširenje ima svoj prefiks, koji se dodaje svim rukovateljima događajima u modulu obrasca. Kako ne bi bilo slučajnosti s rukovateljima iz standardne konfiguracije. Nakon toga se sekvencijalno i sinkrono pozivaju rukovatelji događajima i naredbama. Prvo rukovatelj iz proširenja. Zatim iz standardne konfiguracije. Možete promijeniti ovaj slijed ili potpuno zabraniti izvršavanje rukovatelja iz standardne konfiguracije.

Općenito, što se tiče suradnja konfiguracije i ekstenzije u 1C:Enterprise modu, postoje u zajedničkom imenskom prostoru. Ovo se ne odnosi samo na pojedinačne module, već i na sama stabla metapodataka. Stoga u načinu rada 1C:Enterprise ne postoji način da se utvrdi je li ovaj objekt "nativni" za standardnu ​​konfiguraciju ili je došao iz proširenja.

Što se tiče ostalih objekata koje možete koristiti u proširenju, njima sve izgleda puno jednostavnije.

U proširenju možete kreirati vlastite podsustave. Korištenjem posuđenih objekata možete proširiti postojeće podsustave: dodati im objekte i podsustave koji su već u standardnoj konfiguraciji ili one koje ste kreirali u proširenju. Ne možete ukloniti nešto iz postojećeg podsustava.

Uloge možete proširiti samo tako da im dodate objekte stvorene u proširenju. Također ne možete ništa izbrisati iz postojeće uloge. Isto vrijedi i za naredbeno sučelje.

Proširenje je gotovo konfiguracija

Rekli smo na početku da je ekstenzija slična uobičajenoj konfiguraciji. Stoga bih u zaključku želio reći nekoliko riječi o tome koliko su proširenja integrirana s drugim mehanizmima platforme.

Proširenje (kao i obična konfiguracija) ima glavnu konfiguraciju i konfiguraciju baze podataka. Mehanizam za usporedbu i spajanje konfiguracija radi s ekstenzijama na isti način kao i s običnim konfiguracijama.

Možete prenijeti ekstenziju u datoteku (iako s drugom ekstenzijom *.cfe) i učitati iz datoteke. Ekstenzije se mogu učitati/uploadati u XML-u.

Mehanizmi za globalno pretraživanje, zamjenu i uređivanje tekstova sučelja također rade s proširenjima.

Postoje novi parametri naredbenog retka za rad s ekstenzijama, kao i novi događaji u zapisniku.

U ugrađenom jeziku, glavni objekt za rad s proširenjima je ExtensionManagerConfiguration.

Mehanizam proširenja konfiguracije je poseban mehanizam dizajniran za izmjenu proširive konfiguracije bez mijenjanja ove konfiguracije (uključujući i bez uklanjanja podrške).

Kada se razmatra mehanizam proširenja konfiguracije, koristit će se sljedeći izrazi:

  • Proširiva konfiguracija– glavna konfiguracija infobaze za koju se proširenje koristi ili za koje se proširenje razvija.
  • Proširenje konfiguracije– skup konfiguracijskih objekata povezanih s proširivom konfiguracijom i koji sadrži skup objekata dodanih proširivoj konfiguraciji. Proširenje može uključivati ​​i objekte proširene konfiguracije i objekte koji nisu u proširenoj konfiguraciji.
  • Vlastiti objekt– samostalni konfiguracijski objekt koji se može nalaziti iu proširivoj konfiguraciji iu proširenju (izvješće, obrada ili podsustav).
  • Posuđeni predmet– prilagođeni objekt dodan proširenju konfiguracije.
  • Proširivi objekt– vlastiti objekt kojemu su u posuđenom objektu promijenjeni bilo koji parametri (svojstva, oblici i sl.).
  • Proširujući objekt je posuđeni objekt koji je izmijenjen u odnosu na objekt koji se proširuje. Posjedovanje samo kontroliranih svojstava u posuđenom objektu ne čini posuđeni objekt proširivim.
  • Objekt rezultata– ovo je vlastiti objekt plus unija svih ekstenzija (ako postoji nekoliko ekstenzija). Ako nema ekstenzivnih objekata za vlastiti objekt, on postaje rezultirajući "bez promjena". one. u konfiguraciji s kojom korisnik radi, svi objekti su rezultantni, bez obzira na prisutnost i broj instaliranih proširenja.
  • Širenje imovine– svojstvo posuđenog objekta koje mijenja istoimeno svojstvo proširenog objekta.
  • Kontrolirano vlasništvo– svojstvo posuđenog objekta, čija se vrijednost provjerava prilikom povezivanja proširenja s proširenom konfiguracijom. Ako prilikom povezivanja ekstenzije (u načinu rada 1C:Enterprise) vrijednost kontroliranog svojstva u ekstenziji ne odgovara vrijednosti istog svojstva u konfiguraciji koja se proširuje, ekstenzija se neće povezati.
  • Promjenjivo svojstvo– svojstvo posuđenog predmeta čija će se vrijednost u rezultirajućem objektu dobiti produljenjem.

Svojstvo posuđenog objekta ne može se kontrolirati niti mijenjati.

Glavna svrha proširenja konfiguracije je modificiranje aplikativnog rješenja tijekom implementacije (ili u “oblaku”) kako bi odgovaralo potrebama klijenta. U tom slučaju konfiguraciju koja se mijenja ne treba ukloniti iz podrške. Kao rezultat toga, i dalje je jednostavno ažurirati standardno aplikacijsko rješenje koje je podržano, uz potrebu za izmjenama. Kada razvijate proširenje, trebali biste razumjeti neke značajke rada proširenja konfiguracije. Stoga se proširiva konfiguracija može promijeniti u bilo kojem trenutku, na primjer, kao rezultat ažuriranja. Istodobno, programer proširenja ne može ni na koji način utjecati na mogućnost ili nemogućnost ažuriranja. Također biste trebali uzeti u obzir činjenicu da u sustavu može funkcionirati više od jednog proširenja, a autor svakog proširenja (općenito) ne zna kako drugo proširenje funkcionira.

Ekstenzija se kreira u konfiguratoru, pohranjuje u infobazu i može se spremiti u datoteku. Da biste dodali (povezali) ekstenziju spremljenu u datoteku na određeno klijentsko aplikacijsko rješenje, nema potrebe za korištenjem konfiguratora. Proširenje možete povezati pomoću posebne standardne funkcije (Sve funkcije – Standardno – Upravljanje konfiguracijskim proširenjima). Proširenje također možete povezati pomoću paketa alata za aplikacijsko rješenje, koji koristi programsko sučelje koje pruža platforma. Povezivanje proširenja (interaktivno ili iz ugrađenog jezika) moguće je ili u nezaštićenom načinu rada ili u slučaju kada sigurnosni profil pod kojim se izvodi sesija dopušta pristup povezanom proširenju.

Proširivi objekti mogu biti:

  • Upravljani obrasci;
  • Uloge;
  • Podsustavi;
  • Postavke za početnu stranicu (desktop) aplikacijskog rješenja;
  • Opći moduli;
  • Objektni moduli za sve vrste objekata;
  • Upravljački moduli za sve vrste objekata;
  • Modul sesije;
  • Modul upravljane aplikacije;
  • Vanjski priključni modul;
  • Naredbeni moduli.

Sljedeće može djelovati kao vaši vlastiti objekti proširenja:

  • Podsustavi;
  • Obrada;
  • izvješća;
  • Pojedinosti, tabelarnih dijelova i pojedinosti tabelarnih dijelova u posuđenim obradama i izvješćima;
  • Uloge;
  • XDTO paketi;
  • Web usluge;
  • HTTP usluge;
  • WS veze;
  • Opći izgledi;
  • Opće naredbe;
  • Zajednički moduli (osim za globalni poslužitelj i privilegirane zajedničke module);
  • Timske grupe;
  • Općenite slike;
  • Obrasci, rasporedi i naredbe posuđenih objekata:
  • Planovi razmjene;
  • Kriteriji odabira;
  • Pohrana postavki;
  • Imenici;
  • Dokumenti;
  • Dnevnici dokumenata;
  • Transferi;
  • izvješća;
  • Obrada;
  • Registri informacija;
  • Registri akumulacije;
  • Računovodstveni registri;
  • Računski registri;
  • Planovi za vrste karakteristika;
  • Kontni planovi;
  • Planovi za vrste obračuna;
  • Poslovni procesi;
  • Zadaci;
  • Stolovi vanjski izvori podaci;
  • Kocke vanjskih izvora podataka;
  • Dimenzijske tablice iz vanjskih izvora podataka.

Među kontroliranim svojstvima posebno treba istaknuti:

  • Sastav plana razmjene;
  • Predefinirani elementi za priručnike, planove karakterističnih vrsta, kontne planove i planove kalkulacijskih vrsta.

Osnovne verzije aplikacijskih rješenja ne podržavaju rad s ekstenzijama.

Počevši od izdanja 8.3.6 platforme 1C:Enterprise, u njoj se pojavio mehanizam proširenja konfiguracije.

Omogućuje uvođenje novih i redefiniranje postojećih funkcija bez mijenjanja glavne (proširive) konfiguracije. Dakle, imamo puno novih mogućnosti koje su prije bile nedostupne.

Nove značajke

Ograničenja

Naravno, postoje ograničenja:

  • Proširenja mogu dodati samo ograničen skup novih metapodataka. To su podsustavi, uloge, izvještaji, obrade i neki drugi.
  • U nekim situacijama može doći do problema s otklanjanjem pogrešaka.

Primjer upotrebe

Pogledajmo primjer kako možete nadjačati uobičajenu proceduru modula pomoću konfiguracijskog proširenja. Odnosno, ovo je slučaj kada trebamo brzo popraviti neku grešku bez izdavanja izdanja i ažuriranja glavne konfiguracije. Dakle, recimo da imamo zajednički modul professia1c_ry_Extensions.

I sadrži najjednostavniji postupak koji prikazuje poruku:

Procedura OutputMessage() Export Message = New MessageToUser; Poruka. Tekst ="Ovo je osnovna konfiguracija"

; Poruka. Izvješće() ;


Kraj postupka Prikažimo sada drugu poruku pomoću proširenja. Prije svega, naravno, moramo kreirati samo proširenje. U izborniku konfiguratora odaberite Konfiguracija - Proširenje konfiguracije U prozoru koji se otvori kliknite gumb I Dodati i popunite polja sa svojstvima ekstenzije. Polja Ime Sinonim nisu potrebni komentari. Prefiks će se koristiti za naziv procedure proširenja koja će zamijeniti izvornu. I na popisu Svrha od tri:

moguće opcije (Ispravak, Adaptacija, Dodatak) odaberite I Ispravak:


Ovako smo napravili proširenje. Ali ako ga otvorimo dvoklikom, vidjet ćemo da je njegovo stablo metapodataka prazno. A sada moramo dodati opći modul proširenju.

Da biste to učinili, u stablu metapodataka glavne konfiguracije desnom tipkom miša kliknite željeni zajednički modul i odaberite "Dodaj proširenju":


A sada će naše proširenje izgledati ovako:

Ali ako pogledamo kod zajedničkog modula proširenja, vidjet ćemo da je prazan. Sljedeći korak je dodati mu proceduru. Opet idemo na glavnu konfiguraciju, otvaramo kod zajedničkog modula, desnom tipkom miša kliknemo proceduru, ponovno odabiremo stavku "Dodaj proširenju" te u prozoru koji se otvori odaberite vrstu poziva Nazovi umjesto toga:

Kao rezultat toga, općem modulu proširenja bit će dodan postupak sa sljedećim kodom:

&Umjesto ("Izlazna poruka") Procedura Messages_OutputMessage() // Umetnite sadržaj metode. NastaviPoziv() ;

Kraj postupka

&Umjesto ("Izlazna poruka") Kao što vidite, naziv procedure sadrži prefiks koji je naveden prilikom stvaranja proširenja. Sada sve što preostaje je modificirati kod procedure prema potrebi:

Procedura Messages_OutputMessage_() Poruka = ​​Nova PorukaKorisniku;

Poruka. Text = "Ovo je proširenje" ;

Poruka. Izvješće() ;

  • Kraj postupka
  • I sada se možemo lako uvjeriti da ćemo pokrenuti prošireni kod umjesto glavnog konfiguracijskog koda ako pokrenemo sljedeći kod: Professia1c_ry_Extensions. Izlazna poruka() ; Proučavajući iskustva korištenja prijašnjih verzija programa, te uzimajući u obzir činjenicu da koliko god određeno rješenje bilo univerzalno i sveobuhvatno, u konačnici u 90% slučajeva zahtijeva modifikaciju za krajnjeg korisnika. Programeri verzije 8 programa 1C implementirali su nekoliko temeljno novih rješenja kako bi smanjili potrebu za promjenom standardnih konfiguracijskih mehanizama:
  • Doslovno od prvih verzija programa, elementi mnogih imenika sada imaju mogućnost stvaranja dodatnih svojstava i kategorija koristeći odgovarajući plan za vrste karakteristika i registar informacija;
  • Dodatni

Što su proširenja konfiguracije 1C, kako raditi s njima, ograničenja u upotrebi - to je niz pitanja koja ćemo pokušati pokriti u našem članku.

Malo teorije

Prije pojave mehanizma proširenja, proces ažuriranja standardnih konfiguracija uvelike je ovisio o tome je li konfiguracija bila pod podrškom ili su u njoj napravljene promjene. U potonjem slučaju, programer je morao:

  1. Usporedite tipičnu i postojeću strukturu metapodataka;
  2. Ako postoje značajne razlike između standardnih elemenata, osigurajte da su ispravno ažurirani;
  3. Napravite odgovarajuće izmjene nakon ažuriranja.

Sve je to uvelike kompliciralo proces ažuriranja, povećavajući vrijeme obrade i, često, lišavajući organizaciju mogućnosti ažuriranja standardnih modula po skupoj cijeni. softver.

Mehanizam proširenja omogućuje izmjenu mnogih njegovih elemenata bez uklanjanja standardne konfiguracije iz podrške.

Zapravo, programer na temelju standardnog rješenja stvara vlastitu konfiguraciju, koja je ljuska za standardno rješenje. U ovom slučaju, proces ažuriranja standardnog dijela odvija se automatski, a kada ga pokrene krajnji korisnik, platforma kombinira oba rješenja za korisnika.

Situacije u kojima se ekstenzije mogu koristiti

  • Kao i svaki drugi alat, mehanizam proširenja ima niz karakteristika i ograničenja koja određuju opseg njihove uporabe:
  • Proširenja mogu raditi s upravljanim obrascima;
  • Mehanizam podržava modifikaciju i dodavanje postojećih podsustava;
  • Prije izdanja platforme 8.3.8, proširenja su mogla mijenjati samo postojeće uloge nakon ažuriranja, dopuštala su dodavanje novih, ograničavajući pristup čak i glavnim objektima baze podataka; Postojeći mehanizam dopušta po volji
  • promijeniti naredbeno sučelje podsustava i glavni konfiguracijski odjeljak;
  • Ovaj vam alat također omogućuje dodavanje obrade i izvješća bez izmjena strukture baze podataka;

U verziji platforme 8.3.9.718, mehanizam za dijagnosticiranje kompatibilnosti ekstenzije i glavne konfiguracije značajno je redizajniran.

  1. Iz gore navedenog postaje jasno da:
  2. Kada radite s regularnim obrascima, funkcionalnost proširenja značajno je ograničena;
  3. Preporučljivo je koristiti ovaj mehanizam u slučajevima kada postoji potreba za razlikovanjem izgled i funkcionalnosti koje koriste različiti korisnici ili kada se standardna konfiguracija koja je podržana sama mijenja.

Prijeđimo na praksu. Kao početnu bazu koristit ćemo konfiguraciju “Plaće i upravljanje ljudskim resursima” verziju 3.1.3.223, rad će se odvijati na platformi 8.3.10.2561, način rada je datoteka.

Izrada proširenja

U konfiguratoru idite na izbornik Konfiguracija->Proširenja konfiguracije, otvorit će se forma (slika 1).

Ovdje možete stvoriti novo proširenje. Pritisnite gumb "Dodaj". Evo prozora novog proširenja (slika 2)

sl.2

Pogledajmo njegove elemente:

  • Naziv – za razliku od ostalih konfiguracijskih elemenata, nije kreiran prema standardima sustava, tj. može započeti brojem ili simbolom, može sadržavati razmak;
  • Sinonim – kao i za druge elemente metapodataka, sadrži izraz koji predstavlja objekt;
  • Prefiks – omogućuje vam identificiranje rukovatelja događajima u modulu obrasca, budući da se glavni konfiguracijski modul obrasca i modul obrasca proširenja kombiniraju kada platforma radi u zajedničkom kontekstu (prema zadanim postavkama prvo se obrađuje proširenje, to jest rukovatelji s prefiks, zatim glavni rukovatelji);
  • Svrha.

Popis polja “Odredište” sastoji se od tri vrijednosti koje ćemo opisati redoslijedom izvršavanja:

  1. Ispravak - proširenja ove namjene stvorena su za ispravljanje manjih netočnosti i pogrešaka u posuđenim objektima;
  2. Adaptacija – zadana vrijednost, ekstenzije ove vrste su dizajnirane za prilagodbu standardnih objekata zahtjevima određenog korisnika (ako je ekstenzija kreirana u verziji programa nižoj od 8.3.9, nakon ažuriranja platforme imat će upravo tu svrhu) ;
  3. Dodatak – uvode potpuno novu funkcionalnost u standardno rješenje.

Pokretanje proširenja

Duplim klikom na naziv proširenja u prozoru sa slike 1 otvara se prozor proširenja (slika 3)


Kao što vidimo, radi se o stablu sličnom stablu glavne konfiguracije. I tu se postavlja jedno pitanje: u kojim slučajevima treba posuditi predmet?

Posuditi je potrebno samo one objekte (imenike, dokumente, detalje i sl.) koji će se koristiti u ekstenziji forme, odnosno u kodu njenog modula, a bez čijeg posuđivanja može doći do greške u radu ekstenzije.

Odnosno, ako naš razvoj zahtijeva pojedinosti „TIN” imenika " Pojedinci", ako se koristi u modulu obrasca, moramo ga posuditi iz glavne baze podataka. U tom slučaju, svaki put kada se ekstenzija pokrene, provjerit će se prisutnost ovog atributa u glavnom konfiguracijskom direktoriju i korespondencija tipa podataka u izvornoj bazi podataka i ekstenziji.

Ako nakon ažuriranja ili tijekom razvoja nove funkcionalnosti dođe do nedosljednosti između tipova podataka proširenja i konfiguracije ili bilo koje druge pogreške, sustav će o tome obavijestiti korisnika (Sl. 4)

Prozor u donjem desnom kutu označava nestandardna situacija pri spajanju ekstenzije otvara se dupli klik na nju detaljne informacije. U ovom slučaju jednostavno smo promijenili vrstu vrijednosti atributa TIN iz vrijednosti “String” u vrijednost “Boolean” za posuđeni objekt, ali puno češće se događa suprotna situacija - kada ažuriranje standardnog proizvoda dovodi do promjene ili uklanjanje glavnog atributa baze podataka.

Nakon što ste radili i testirali proširenje na kopiji baze podataka, možete ga učitati u zasebnu datoteku da biste to učinili, u prozoru (slika 5) morate kliknuti gumb "Konfiguracija" i odabrati "Spremi u datoteku"; ” opcija. Za razliku od običnih konfiguracijskih datoteka koje imaju cf ekstenziju, konfiguracijska dodatna datoteka imat će *.cfe masku.

Kao što možete vidjeti na gornjoj slici, novu funkcionalnost možete preuzeti iz istog prozora ili iz glavnog prozora programa.

Za povezivanje ekstenzije u načinu rada 1C.Enterprise, korisnik mora imati omogućen način rada "Sve funkcije" i prijaviti se u program s pravima administratora.

Put za povezivanje izmjene je sljedeći: Sve funkcije->Standardno->Upravljanje proširenjima konfiguracije. Prozor koji se otvara prikazan je na sl. 6

sl.6

Klikom na gumb “Dodaj” otvara se dijaloški okvir za odabir datoteke u kojem trebate odabrati naš upload. Ako je potvrdni okvir za obradu označen (Sl. 7), a proširenje sadrži pogrešku, funkcionalnost će biti poništena i program će prijaviti iznimku.

sl.7

Kako bi naša funkcionalnost radila nakon uspješnog dodavanja, potrebno je ponovno pokrenuti program.

Posuđivanje objekata i redoslijed aktiviranja modula

Kako bismo pratili redoslijed izvršavanja rukovatelja, omogućit ćemo mogućnost promjene naše konfiguracije i dodavanja novi tretman, čija će se funkcionalnost sastojati samo od jedne stvari - javljat će da je pokrenut iz glavne konfiguracije, kod je na slici 8.

sl.8

Dodajmo ovu obradu proširenju.

Da biste to učinili:

  • Desnom tipkom miša aktivirajte kontekstni izbornik obrasca za obradu (Slika 9);

Sl.9

  • Odaberite "Dodaj proširenju";
  • U dodatnom konfiguracijskom stablu pojavit će se i sam tretman i duplikat njegovog oblika;
  • Nakon što smo otvorili formu, nalazimo da je naredba koja uzrokuje poruku također tu, ali joj nije dodijeljen rukovatelj;
  • Dodavanjem radnje naredbe otvara se dijaloški okvir (Sl. 10) u kojem, osim glavnih naredbi za izvršavanje naredbe, postoji i grupa “Vrsta poziva”.

Sl.10

Za postojeći postupak imamo tri vrste poziva;

  • Pozovi prije – izvršavanje koda ekstenzije započet će prije nego što se izvrši glavna konfiguracija;
  • Call after – modificirana procedura bit će broj dva;
  • Umjesto toga pozovite – postupak iz glavne konfiguracije uopće se neće izvršiti.

Ostavimo vrstu poziva na poziciji “Poziv nakon” i dodajmo proceduru “Ext1_NotifyAfter(Command)” (slika 11).

Sl.11

Rezultat pokretanja naše obrade bit će dvije fraze prijavljene jedna za drugom (Sl. 12), odnosno dodatna konfiguracijska poruka bit će prikazana nakon glavne. Da smo odabrali "Umjesto", uopće ne bismo vidjeli prvi redak.

sl.12

Počevši od verzije 8.3.9.1818, funkcionalnost programa uključivala je mehanizam za promjenu standardnih modula, kao i dodavanje vlastitih modula. I ovdje su se programeri suočili s vrlo specifičnim zadatkom: kako odrediti kojim bi se redoslijedom posuđene procedure i funkcije trebale izvršavati ne samo u odnosu na glavnu konfiguraciju, već i u odnosu na proširenja koja su već povezana u konfiguraciji.

Motor za napomene

Zamislimo situaciju da je više ekstenzija spojeno na jednu konfiguraciju, odnosno prozor za odabir istih u konfiguratoru izgleda kao na (Sl. 13)

sl.13

Prilikom dodavanja svake nove ekstenzije, sustav samostalno gradi redoslijed njihovog izvođenja.

Redoslijed izvršavanja dodatnih modula konfigurira se ne samo na temelju vremena kada je modul dodan (kasnije dodan, kasnije izvršen), već i na temelju svrhe izmjene ("Izvršenje" će uvijek doći prije "Prilagođavanja").

Osim toga, redoslijed izvršavanja postupaka dodanih modula može se prilagoditi pomoću napomena:

  • &Prije("Naziv postupka");
  • &Nakon("Naziv postupka");
  • &Umjesto ("Naziv postupka").

Kao što vidite, njihov je skup sličan onome što je prikazano u prethodnom odjeljku, a slična je i funkcionalnost.

Budući da su posuđeni modul i donatorski modul u istom prostoru imena, u ovom slučaju nisu potrebne dodatne definicije za varijable tipa i metode.

Situacija s funkcijama je nešto drugačija nego s procedurama. Činjenica je da se izvođenje standardne procedure može tako reći oivičiti ekstenzijskim kodom, odnosno možete umetnuti neke akcije prije koda procedure, neke algoritme nakon, ali to neće raditi za funkcije. Ako se glavna funkcija izvrši nakon koda proširenja, povratna vrijednost zamjenske funkcije neće biti primljena, ali ako je prije modificiranog algoritma, vrijednost glavne funkcije neće biti primljena, a napomena &After radit će kao &Umjesto.

Kako bi se otklonila ova “nepravda”, kreirana je metoda ContinueCall().

Općenito govoreći, korištenje oznake "Umjesto" malo je netočno, iako je ponekad neophodno. Njegovom uporabom značajno ograničavamo funkcionalnost koju je moguće značajno mijenjati i modificirati u standardnim konfiguracijama.

Izrada promjena na objektnom modulu

Mehanizam pretplate na događaje uvelike je olakšao rad programerima, ali postojalo je jedno ozbiljno ALI.

Ali da biste ga koristili, često ste morali stvoriti vlastiti zajednički modul koji bi pohranjivao procedure za obradu određenih radnji s podacima. Trenutačno je korištenje proširenja omogućilo značajnu reviziju ove funkcionalnosti.

Recimo da smo tijekom našeg rada morali dodati neku obradu za standardni dokument“Unajmljivanje” prilikom snimanja. Prije bismo otišli u pretplate i radili od tamo, sada možemo dodati ovaj dokument proširenju:

  • Odaberimo "Recepcija za posao" u konfiguratoru i iz njegovog kontekstnog izbornika ćemo ga dodati našem proširenju (usput, ovaj mehanizam ima kombinaciju tipki prečaca Alt+Shift+F2);
  • Nakon odabira odgovarajućeg dodatka, dobit ćemo sliku kao na slici 14;

sl.14

  • Zanimat će nas element “Object Module” koji je označen žutom bojom; otvorit ćemo ga tako da prvo aktiviramo odgovarajući potvrdni okvir (Slika 15);

sl.15

  • Dobit ćemo prazna ploča softverski modul, obratimo pozornost na gornju ploču, točnije, na element prikazan na slici 16, padajući popis ovdje predstavlja događaje koji se mogu obraditi za ovaj objekt;

sl.16

  • Pokušajmo prikazati broj dokumenta u poruci kada je snimljena odabirom odgovarajućeg događaja;
  • Primit ćemo obrazac za odabir vrste poziva (slika 17), odrediti kada će se broj prikazati;

Sl.17

  • Šifra postupka prikazana je na slici 18;

Sl.18

U nekim slučajevima, zbog označenog potvrdnog okvira "Safe Mode", proširenje se ne može povezati.

Mala najava

U skoroj budućnosti 1C planira izdati platformu 8.3.11, u kojoj su najavili mogućnost dodavanja vlastite:

  • Dokumenti;
  • Imenici;
  • Planovi razmjene;
  • Registri informacija.

Treba također implementirati mogućnost dodavanja detalja i tabličnih dijelova. Istodobno, programeri su uzeli u obzir mogućnost promjene standardnih rješenja, što bi moglo dovesti do kvara proširenja.

Podaci uneseni u ekstenziju neće se nigdje izgubiti i sve dok se problem kompatibilnosti ne riješi, glavni konfiguracijski direktorij koji je modificirao ekstenziju neće se moći pisati.