Proširenja konfiguracije - kako dodati funkcionalnost tipičnoj konfiguraciji bez uklanjanja podrške (20 minuta videa). Promjena ili onemogućavanje načina kompatibilnosti Prednosti korištenja proširenja

U ovom članku predlažem razmotriti što je "konfiguracijsko proširenje", kako dodati proširenje ili ga onemogućiti. Počevši od verzije 1C Dana 8.3.6.1977. u platformu je uveden novi mehanizam - proširenja konfiguracije. Prvo, malo teorije.

Proširenja u 1C su nešto poput paralelnih konfiguracija koje se automatski spajaju s glavnom konfiguracijom dobavljača. Štoviše, u proširenjima možete dodati i svoje objekte i posuditi objekte iz glavne konfiguracije.

Čemu služe ekstenzije?

Prije svega, ekstenzije su stvorene kako bi se olakšale promjene u programu. To jest, ako korisnici zatraže dodavanje neke funkcije, tada su prije pojave proširenja programeri morali ukloniti konfiguraciju iz pune podrške i promijeniti tipičnu konfiguraciju.

Uklanjanje potpune podrške podrazumijeva niz neugodnosti:

  • nestaje mogućnost automatskog ažuriranja, što dovodi barem do povećanja vremena za ;
  • potreban visoka kvalifikacija stručnjak koji opslužuje program;
  • ako su napravljene promjene na standardnim objektima tipične konfiguracije, tada tijekom ažuriranja mogu nestati, odnosno mogu se ponovno zamijeniti standardnim od dobavljača.

Kada koristite proširenja, prilikom izmjena, programer neće dirati standardnu ​​konfiguraciju. Sve promjene će se izvršiti pomoću ekstenzija, koje su (kao što sam gore napisao) također konfiguracije. Stoga će glavna konfiguracija ostati s punom podrškom.

Nakon ažuriranja glavne konfiguracije, ako postoje bilo kakve promjene u novom izdanju s objektom koji je prethodno izmijenjen proširenjem, promjene će se i dalje preuzimati iz proširenja. To jest, proširenja imaju prednost nad glavnom konfiguracijom.

Video - proširenja u 1C u 45 minuta

Besplatno nabavite 267 1C video lekcija:

Primjer dodavanja proširenja u 1C

Da bismo pokazali što je proširenje, bolje je dati primjer njegovog stvaranja u 1C konfiguratoru.

U konfiguratoru idite na izbornik "Konfiguracija" i odaberite stavku "Proširenja konfiguracije". Otvorit će se prozor s popisom proširenja (ako postoje). Pritisnite gumb "Dodaj" i dodajte novo proširenje. Sada možete otvoriti konfiguraciju proširenja:

Kao što vidite, konfiguracija proširenja ima potpuno istu strukturu kao i glavna. Samo što je u početku potpuno čista, bez predmeta.

Nedavno sam napisao članak o tome kako napraviti svoj vlastiti. Koristeći njezin primjer, želim to učiniti inline pomoću proširenja.

U obradi imam polje s vezom na imenik "Organizacije". Zato mi treba ovaj vodič. Ali nećemo izraditi novi imenik organizacija, pogotovo jer platforma to ne dopušta. Ne možete imati objekte u konfiguraciji proširenja koji imaju isti naziv kao objekti u glavnoj konfiguraciji.

Stoga ćemo posuditi imenik iz glavne konfiguracije:

Sada ćemo desnom tipkom miša kliknuti na "Obrada" i odabrati "Umetni vanjsku obradu, izvješće ..." Tako ćemo dodati novu obradu u konfiguraciju proširenja. Ako koristite moju obradu, odmah je preimenujte, jer glavna konfiguracija već ima obradu s tim nazivom.

Pa, posljednji dodir. Želim da se moja obrada odražava u izborniku "Administracija". Da bismo to učinili, posuditi ćemo podsustav glavne konfiguracije istog imena. Ne zaboravite u obradi naznačiti da pripada ovom podsustavu.

Ovo je struktura koju sam dobio:

Da vidimo što imamo. Ažuriramo konfiguraciju baze podataka i pokrećemo program u načinu rada 1C: Enterprise i idemo na izbornik "Administracija". Da, skoro sam zaboravio, konfiguracija proširenja mora biti zatvorena, inače se program neće pokrenuti:

Cijena rada i mogućnosti prijevoda iz različitih izdanja

Prijevod 8.1 → 8.2.13 Prijevod 8.2.13 → 8.2.16 Prijevod 8.2.16 → 8.3.10
cijena, utrljati. * 54 000 ₽ 12 000 ₽ 76 800 ₽

Popis svih promjena u različitim verzijama platforme dostupan je na poveznicama:
Za platformu 8.2:
http://downloads.v8.1c.ru/content/Platform/8_2_19_106/1cv8upd.htm

Prije početka rada na prijevodu na 8.3 potrebno je:

Provjerite upravljani način blokiranja. Ako se koristi "Automatski", prijelaz na 8.3 može zahtijevati dodatne troškove za prebacivanje na način kontroliranog zaključavanja.
Ako se koristi način kompatibilnosti s 8.2.16 i novijim, trebate provjeriti jesu li tablice restrukturirane
Odredite koje se vrste klijenata koriste (tanki, debeli, web klijent)
Odredite postoje li strojevi koji rade pod Linuxom

Prijevod konfiguracije 8.1 → 8.2.13

Cijena rada: 54 000 rub.

Prijevod konfiguracije 8.2.13 → 8.2.16 (uključujući restrukturiranje)

Ključne promjene:
Promijenjen je način pohranjivanja konstanti i postavki akumulacijskih registara. Svaki objekt ima vlastitu tablicu baze podataka
Implementacija mehanizma upravljane brave je redizajnirana.
Za događaj tehnološkog dnevnika "TLOCK", svojstvo "Txt" je zapisano samo u načinu kompatibilnosti s verzijom 8.2.13
Smanjen je učinak načina otklanjanja pogrešaka na brzinu rada u načinu rada 1C:Enterprise za tanki klijent, debeli klijent, poslužitelj i vanjsku vezu.
Optimizirano izvršavanje upita poput "ValueType(Field1) = ValueType(Field2)" ako "Field1" i "Field2" sadrže vrijednosti referentnog tipa.
Za upravljana polja obrasca koja prikazuju atribut složenog tipa, otvaranje popisa za brzi odabir je ubrzano u slučajevima kada složeni tip uključuje referentne tipove s različite postavke brz odabir.
Za nove neovisne i ne periodični registar informacija, indeks po dimenzijama je grupiran

Promjene koje zahtijevaju promjene konfiguracije:

Kada je način rada kompatibilnosti onemogućen, parametar "Period" metode "Get()" upravitelja registra periodičnih informacija je obavezan. U načinu rada kompatibilnosti s verzijom 8.2.13 i verzijom 8.1, ponašanje se nije promijenilo (metoda se može koristiti bez navođenja parametra, ali rezultat je nedefiniran).
Kada se istovremeno koriste metode "SetValue()" i "UseFromDataSource()" objekta "DataLockItemItem", izbacuje se iznimka. U načinu rada kompatibilnosti s verzijom 8.2.13, ponašanje se nije promijenilo (prioritet se daje vrijednosti postavljenoj metodom "UseFromDataSource()").
Pohranjivanje vrijednosti podataka koje ne podržavaju serijalizaciju nije podržano. U načinu rada kompatibilnosti ponašanje se nije promijenilo.
Ako je baza podataka datoteka, tada se infobaza mora pretvoriti. Nakon što pretvorba započne, rad s ovom informacijskom bazom s prethodnim verzijama platforme 1C:Enterprise 8 bit će nemoguć. Ako se razvoj izvodi pomoću repozitorija konfiguracije, morate napraviti kopiju repozitorija prije pretvaranja infobaze

VAŽNO. Da biste dobili učinak promjene načina kompatibilnosti, morate izvršiti restrukturiranje kroz konfigurator: "Administracija → Testiranje i popravljanje → Restrukturiranje tablica infobaze".

Prvo morate izvršiti restrukturiranje na testnoj bazi i izmjeriti vrijeme izvršenja ove operacije.
Ako se koristi verzija 1C poslužitelja starija od 8.2.19, na primjer, verzija 8.3, tada se tijekom restrukturiranja mogu pojaviti sljedeće pogreške:

U tom slučaju morate učiniti sljedeće:
Zasebno instalirajte 1C server verzije 8.2.19 i na njemu implementirajte bazu podataka koja se proučava
Otvorite bazu podataka u konfiguratoru na 1C poslužitelju verzije 8.2.19, promijenite način kompatibilnosti na "Ne koristi"
Izvršite restrukturiranje tablica infobaze
Nakon dovršetka restrukturiranja premjestite informacijsku bazu na izvorni poslužitelj 1C verzije 8.3

Cijena prijenosa konfiguracije iz načina kompatibilnosti 8.2.13 u način rada 8.2.16 (način nekompatibilnosti kada se koristi platforma 8.2.16, 8.2.19 i način kompatibilnosti 8.2.16 kada se koristi platforma 8.3) iznosi 12 000 rub.

Obrazac ugovora o radu možete preuzeti.

Prijevod konfiguracije 8.2.16 → 8.3.10

Prijevod konfiguracije uključuje sljedeća poboljšanja konfiguracije:

1. Uklonite sukobe imena svojstava. Promjena naziva varijabli kako bi odgovarala novim svojstvima koja su se pojavila u 1C:Enterprise 8.3.
2. Uklonite sukob naziva slika. Preimenovanje naziva slika s imenima koja odgovaraju imenima iz biblioteke slika.
3. Dorada koda pri promjeni svojstava fiksne strukture. Zamjena indikacije svojstava fiksne strukture ponovnim stvaranjem fiksne strukture ili zamjenom njezine upotrebe sličnom vrstom "strukture".
4. Zamjena vrijednosti koje se ne mogu serijalizirati u privremenoj pohrani kodom podržanim u 1C:Enterprise 8.3.
5. Zamjena upotrebe pozivanja metode “Prikaži” za atribute upravljanog obrasca, korištenjem svojstava “TrenutniElement”, “Trenutnastranica”, metoda “Aktiviraj”
6. Zamjena naziva objekata metapodataka duljine veće od 80 znakova s ​​imenima duljine imena 80 znakova ili manje za objekte metapodataka
7. Preimenovanje metoda i svojstava, prema metodologiji za prelazak na verziju 8.3.
8. Usavršavanje mehanizama za rad s odabirima, uvjetnim dizajnom, grupiranjima i redoslijedom u dinamičkim listama.
9. Usavršavanje koda za zahtjeve s ključnom riječi "RESULTS ON GENERAL", istovareno u modu
"Zaobilaženje rezultata upita. Grupiranjem", kako bi se očuvala stara logika rada.
10. Promjene u imenima klasa COM objekata. Zamjena naziva "V82.COMConnector" s "V83.COMConnector" i "V82.Application" s "V83.Application".
11. Odbijanje u kodu programa od događaja "Start of SelectionFromList" za polja za unos u načinu odabira s popisa
12. Odbijanje u programskom kodu svojstva "SelectionListButton" za polja za unos postavljanjem svojstva "DropdownListButton".
13. Promjena koda uzimajući u obzir promjenu vrste vrijednosti koju vraća metoda globalnog konteksta "SafeMode ()"
14. Promjena koda uzimajući u obzir promjenu rezultata upita prema konstantama (prilikom pristupa polju “Value” tablice konstanti, ako konstanta pohranjuje vrijednost “ValueStorage”, “UniqueIdentifier” ili “ExternalDataSourceTableReference” tip).
15. Zamjena konfiguracijskog svojstva "MainRole" s "MainRoles"
16. Odbacivanje svojstava "User" i "Password" za objekt "InternetProxy" i zamjena s metodama "Set()", "User()", "Password()".
17. Dorada koda za podršku naredbi "Prikaži u listi", prema metodologiji za prelazak na verziju 8.3.
18. Dorada koda za održavanje prethodne logike rada sustava s promijenjenom povratnom vrijednošću svojstva SystemInformation.OSVersion,
19. Dorada koda za održavanje stare logike sustava kada se ne koristi sistemska enumeracija WindowOpeningVariant, koja više nije dostupna u verziji 8.3.
20. Usavršavanje koda uzimajući u obzir odbijanje korištenja modalnih prozora.
21. Dorada koda podrške web klijenta, odnosno odbijanje poziva poslužitelja i otvaranje prozora u "Prije zatvaranja", odbijanje poziva poslužitelja u "Prilikom zatvaranja".
22. Dorada koda za mogućnost ispravnog korištenja funkcije RoleAvailable(), kada se funkcija prosljeđuje kao parametar ulozi koja nedostaje.
23. Za upravljanu aplikaciju: počevši od verzije 8.3.8 u rukovateljima događaja upravljane aplikacije BeforeSystem Shutdown, OnSystem Shutdown, kao i u rukovateljima događaja upravljanog obrasca koji su u zatvorenom načinu rada, BeforeClose, OnClose, zabranjeno je otvaranje prozora i upućivanje bilo kakvih poziva poslužitelju. Potrebno je doraditi konfiguraciju kako bi se zatvaranje obrazaca odvijalo korektno – bez poziva poslužitelja.
24. Sukob imena varijable: Ne možete koristiti ime varijable FormParameters u modulu obrasca. Stoga je potrebno finalizirati sve module upravljanih obrazaca koji koriste varijable pod nazivom FormParameters preimenovanjem tih varijabli.

Cijena za ove radove je preliminarna, relevantna za većinu konfiguracija. Prije početka rada pri sklapanju ugovora provjeravamo konfiguraciju i nakon provjere potvrđujemo cijenu i uvjete rada. Provjera je nužna jer konfiguracije mogu biti vrlo različite, uključujući one uvelike prepisane.

Cijena rada: 76 800 RUB

Obrazac ugovora o radu možete preuzeti.

Cijena pretvorbe konfiguracije u način kompatibilnosti s 8.3.10 može biti povećana, ako:
Konfiguracija koristi upravljane obrasce
Potrebno je prestati koristiti modalitet
Potrebno je održavati operativnost konfiguracije u Linux OS-u

Objavljeno je novo izdanje platforme 8.3.11, koje vam omogućuje dodavanje i izmjenu objekata metapodataka putem proširenja. Možemo li doista sada implementirati neka poboljšanja bez uklanjanja konfiguracije iz podrške? Isplati li se klijentu bez ikakvih posljedica obećavati brda zlata?

Prije svega, morate biti svjesni ograničenja koja ekstenzije imaju.

Ograničenje stvorenih objekata

Na ovaj trenutak možete kreirati:

  • Referentne knjige
  • Dokumenti
  • Informacijski registri
  • Planovi razmjene

Detalje možete dodati na:

  • Referentne knjige
  • Dokumenti

Što ćemo dobiti na kraju? Ne mogu se dodati sve vrste metapodataka. Najčešći i najpopularniji, ali još uvijek ne svi. Osim toga, registrima informacija ne mogu se dodavati nove dimenzije i resursi. Možete kreirati samo potpuno novu knjigu.

Funkcionalnost proširenja ovisi o načinu kompatibilnosti konfiguracije na koju se proširenje primjenjuje.

Način kompatibilnosti 8.3.8- možete mijenjati samo oblike objekata i njihovih modula, dodavati vlastita izvješća i obrade.

Način kompatibilnosti 8.3.10- možete mijenjati uobičajene module, module objekata i upravitelja, uloge, koristiti naredbe "Prije", "Nakon", "Umjesto" za sve module.

Način kompatibilnosti "Ne koristi"- možete koristiti sve funkcionalnosti proširenja, uključujući dodavanje novih objekata.

Trenutno tipični UT 11.3 ima način kompatibilnosti 8.3.8. U UT 11.4 način kompatibilnosti je 8.3.10, to jest, na primjer, za UT, većina funkcionalnost proširenja nije dostupna, uključujući stvaranje objekata metapodataka.

Čini se da ovo postavlja pitanje: zašto jednostavno ne poništite podršku za root, postavite način kompatibilnosti na "Ne koristi" i sigurno koristite proširenja? Kada promijenite način kompatibilnosti, ponašanje obrazaca, rezultati upita, tj. ponašanje sustava u cjelini. Toplo preporučujemo da ne mijenjate način rada kompatibilnosti bez prethodnog testiranja. No očito je da je moguće u cijelosti (ili barem dijelom korištenih dokumenata) testirati cijelo aplikativno rješenje. Stoga se ova opcija ne smije koristiti.

Prilikom povezivanja proširenja s tipičnom konfiguracijom, posuđivanjem tipičnih objekata, proširenje kontrolira način kompatibilnosti glavne konfiguracije i vrste posuđenih objekata i njihovih atributa. Ako se kontrolirana svojstva ne podudaraju, proširenje je onemogućeno i ne radi dok se uzrok ne otkloni. Odnosno, s velikim ažuriranjem postoji velika vjerojatnost da će se barem jedno od kontroliranih svojstava promijeniti i proširenje će izgubiti svoju funkcionalnost.


Osim toga, ako su poboljšanja značajna, mnoge procedure i funkcije standardne konfiguracije su zamijenjene, bit će potrebno pažljivo ih kontrolirati i, ako je potrebno, uskladiti sa standardnom konfiguracijom, zadržavajući ranije napravljene promjene.


U gore navedenim slučajevima i dalje vam je potrebna pomoć programera i, moguće, dosta vremena za reviziju (ali još uvijek manje nego kada ažurirate konfiguraciju koja je uklonjena iz podrške).

zaključke

  • Novo izdanje platforme dalo je nove mogućnosti za korištenje ekstenzija, postalo je moguće dodati objekte metapodataka, ali unatoč tome, funkcionalnost ima određena ograničenja.
  • Način kompatibilnosti konfiguracije na koju se primjenjuje proširenje ozbiljno ograničava opseg proširenja i ne preporučuje se mijenjati način kompatibilnosti.
  • Velika ažuriranja i dalje zahtijevaju pozornost programera jer postoji velika vjerojatnost promjena u kontroliranim svojstvima.

Implementirano u verziji 8.3.6.1977.

Implementirali smo temeljno novi mehanizam za prilagodbu primijenjenih rješenja konkretnom potrošaču - mehanizam proširenja.

Zašto su ekstenzije dobre?

Proširenja nude drugačiju strategiju od postojeće za promjenu tipičnih konfiguracija. Korištenje ove nove strategije uvelike će olakšati održavanje standardnih rješenja koja želite prilagoditi potrebama konkretne implementacije, konkretnog kupca.

Kako taj proces sada izgleda? Postoji tipična konfiguracija. Pod punom je podrškom 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 radi se potpuno automatski. Prikladan je i ne zahtijeva nikakve posebne vještine ili znanje od kupca.

Ali često kupac želi nešto dodati ili promijeniti u tipičnoj konfiguraciji "za sebe". Da biste to učinili, mijenja se način podrške, konfiguracija se uklanja iz pune podrške. Implementacijski partner ili vlastiti informatički stručnjaci kupca čine potrebne izmjene na njemu. Od ove točke nadalje, potpuno automatsko ažuriranje tipične 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 po želji kupca bile značajne, tada stručnjaku koji vrši ažuriranje konfiguracije također može trebati dosta vremena. Često je potrebno vrlo dobro poznavanje i same tipične konfiguracije i učinjenih izmjena.

Strategija koju nude proširenja je sljedeća. Ako želite promijeniti zadanu konfiguraciju, ne dirate samu konfiguraciju. Sve promjene koje napravite u ekstenziji, koja je, zapravo, također 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 s tipičnom konfiguracijom. Kao rezultat toga, kupac radi s modificiranim, prema svojim željama, standardnim rješenjem.

Kada dobavljač objavi novu verziju generičke konfiguracije, izvršava se automatsko ažuriranje jer se način podrške generičke konfiguracije nije promijenio. Ostala je uz punu podršku dobavljača. A kada pokrenete ažurirano aplikacijsko rješenje, platforma će ponovno automatski spojiti promijenjenu tipičnu konfiguraciju s vašim proširenjem. A kupac će nastaviti raditi s modificiranim, prema svojim željama, standardnim rješenjem.

Kada biste trebali koristiti ekstenzije?

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

Prvo, proširenja su nezamjenjiva kada primijenjeno 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 proširenje u kojem ćete ostvariti sve njegove želje. Pretplatnik će sam sebi povezati ovu ekstenziju i raditi će s promijenjenom konfiguracijom. Dok za ostale pretplatnike neće doći do promjena. Budući da su sva proširenja povezana i pokrenuta u kontekstu trenutnih vrijednosti separatora.

Druga situacija je završetak tipične konfiguracije za određenog kupca pri njegovoj implementaciji. Ili poboljšanja standardne konfiguracije, koja za sebe obavljaju IT stručnjaci kupca sami. Ako se sva ova poboljšanja uvedu u proširenje, tada će tipična konfiguracija ostati u potpunosti podržana, što će uvelike pojednostaviti njeno daljnje održavanje.

Postoji napast da se proširenja koriste za stvaranje repliciranih aplikacijskih rješenja, ali to ne biste trebali činiti. Prvo, zato što 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 nastanka ekstenzija, onda smo, naravno, vidjeli prije, a vidimo sada, da konfiguracije postaju sve složenije. Vidimo da je potrebna veća podrška različite razine razvoj: knjižnica, modularni i industrijski, itd. Analizirali smo sve te zadatke i došli do zaključka da je trenutno najprioritetnija prilagodba konfiguracija željama korisnika tijekom implementacija.

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

Što se već sada može promijeniti uz pomoć ekstenzija?

Do sada nije napravljeno puno od onoga što je planirano. Mehanizam će se, naravno, razvijati. Ali ono što je već učinjeno može biti korisno u mnogim slučajevima u implementacijama. Sada:

  • Može se mijenjati upravljani oblici, postoje u tipičnoj konfiguraciji;
  • Možete dodati nove podsustava. Možete promijeniti sastav podsustava dostupnih u tipičnoj konfiguraciji;
  • Može se mijenjati uloge tipična konfiguracija dodavanjem objekata stvorenih u proširenju njima;
  • Može se mijenjati naredbeno sučelje tipična konfiguracija (glavna particija, podsustavi);
  • Možete dodati nove izvještaji 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 za implementacije uz manje izmjene.

Kako je proširenje strukturirano?

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

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

Posuđeni predmeti nisu uvijek potrebni. To se najbolje može objasniti na “kućanskom” 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 nekog 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 (sjetite se da su na jelovniku).

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

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

Tjedan dana 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 ih htio. A o drugim jelima (predmetima) nemaš pojma. Programer vas nije naučio kako pravilno jesti puževe ili jastoge.

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

Idete u restoran, ali vas ne zanima dostupnost određenih jela. Jer ih ionako nećete pojesti. Samo ih želite fotografirati. A znaš fotografirati svako jelo. Zatim se samo uključite u konfiguraciju i kažete donesi sve grickalice koje imate na jelovniku (preuzmite zbirku dokumenata iz metapodataka). Poslat ću ih (slikati).

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

  • Kada su potrebni za vizualni dizajn. Na primjer, proširite obrazac i dodate props obrasca poput Referentna valuta.Veza. Onda biste, naravno, trebali posuditi priručnik Valute, tako da prilikom spajanja na tipičnu 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 pozivate se na atribut reference Nomenklatura - Uvoznik. Tada se i ovaj atribut mora posuditi kako bismo bili sigurni da prilikom povezivanja u tipičnoj 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 primijenjenom 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.

Prilikom učitavanja ekstenzije iz datoteke, ona se pohranjuje u informacijska baza. Štoviše, sprema se u kontekstu trenutnih vrijednosti separatora koji se koriste u ovoj sesiji.

Da bi proširenje "radilo", sesija se mora ponovno pokrenuti. Na početku sesije, neposredno prije poziva događaja Postavljanje parametara sesije, bit će uključena sva proširenja pohranjena u informacijskoj bazi koja odgovaraju trenutnim vrijednostima graničnika sesije.

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, kontrolira se da postoje posuđeni objekti u tipičnoj konfiguraciji. Objekti se povezuju po imenu.

Osim toga, moguća je i finija kontrola. Možete kontrolirati ne samo postojanje objekata, već i stanje njihovih pojedinačnih svojstava. To jest, ako razmišljate o restoranu i odresku, možda vam nije važno samo prisustvo nekako kuhanog odreska, već činjenica da se ovdje kuha sirovo, "s krvlju".

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, za vaš algoritam važno je da ne postoji samo imenik Nomenklatura, ali i da je njegov kod tipa Crta.

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

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

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

Rad na proširenju

Možete 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.

Glavni "šarm" ekstenzija nije, naravno, u tome što tipičnoj konfiguraciji možete dodati nešto što u njoj nema. I činjenica da u proširenju možete promijeniti ono što je već u tipičnoj 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 sijeku", proširenje nadopunjuje konfiguraciju. Na onim mjestima gdje se "sijeku" - primjenjuje se produžetak.

To možete 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 spajanja.

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

Ako nije bilo promjena ili su bile samo u tipičnoj konfiguraciji, primjenjuje se vrijednost iz tipične konfiguracije. Inače se koristi 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 dobavljač promijeni naslov ove grupe u tipičnoj konfiguraciji.

Moduli obrazaca imaju drugačiji pristup. Za posuđeni obrazac, 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 rukovateljima svih događaja u modulu obrasca. Tako da nema podudaranja s rukovateljima iz tipične konfiguracije. Nakon toga se sekvencijalno i sinkrono pozivaju rukovatelji događajima i naredbama. Prvo, rukovatelj iz proširenja. Zatim iz tipične konfiguracije. Možete promijeniti ovaj slijed ili potpuno zabraniti izvođenje rukovatelja iz tipične konfiguracije.

Općenito, s obzirom na zajednički rad konfiguracije i proširenja u načinu rada 1C:Enterprise, oni postoje u zajedničkom prostoru imena. 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 tipičnu 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 dodavanjem objekata stvorenih u proširenju u njih. Ne možete ništa ukloniti ni 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 običnoj konfiguraciji. Stoga bih u zaključku želio reći nekoliko riječi o tome kako su proširenja integrirana s drugim mehanizmima platforme.

Proširenje (poput normalne konfiguracije) 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.

Ekstenziju možete ukloniti u datoteku (međutim, s drugom ekstenzijom *.cfe) i učitati iz datoteke. Ekstenzije se mogu istovariti/učitati u XML-u.

Mehanizmi globalnog pretraživanja, zamjene, uređivanja tekstova sučelja također rade s ekstenzijama.

Postoje nove opcije 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 Konfiguracija upravitelja proširenja.

Izdali smo novo izdanje telefonske ploče za 1C.

  • verzija 1.2.24.10 za obični aplikacije
  • verzija 1.4.26.17 za uspio aplikacije

U izdanju verzije za upravljanu aplikaciju, postalo je moguće ugraditi telefonsku ploču sa minimalne izmjene osnovna konfiguracija sa mehanizam za proširenje konfiguracija.

Prednosti korištenja proširenja

Proširenje je vrlo slično normalnoj konfiguraciji. Za rad s njim koriste se iste metode rada kao i kod uobičajene konfiguracije. Ekstenzije su stvorene prvenstveno kako bi se olakšale promjene u programu. Sada ne morate umetati "dijelove koda" u određene module i dodavati nove objekte metapodataka, samo dodajte proširenje konfiguraciji.

Velika prednost korištenja ekstenzija je automatsko ažuriranje glavna konfiguracija. Sada nema potrebe mijenjati postavke podrške za tipičnu konfiguraciju.

Značajke ugradnje telefonske ploče za 1C

Takve značajke postale su dostupne proširenjima za platformu, počevši od verzije 8.3.9.1818 . Stoga smo, kako bismo iskoristili ovu prednost, onemogućili način kompatibilnosti za proširenje, od verzije 8.3.9 još nije podržano. Sukladno tome, postaje potrebno onemogućiti način rada kompatibilnosti za glavnu konfiguraciju, inače će se pojaviti pogreška: " Način kompatibilnosti proširenja konfiguracije veći je od načina kompatibilnosti glavne konfiguracije".

2) U glavnoj konfiguraciji dodajemo ulogu MIKO_softfon, za koje uklanjamo sva prava.

Prilikom dodavanja novog objekta metapodataka, u ovom slučaju uloge, potrebno je ažurirati imenik Identifikatori metapodataka. Kada smo ovu ulogu dodali proširenju, tipične konfiguracije su je zanemarile, odnosno prilikom ažuriranja direktorija MetadataObjectIdentifiers, uloga se u njemu nije pojavila. Zbog toga mehanizam profila postavki telefonske ploče nije ispravno radio, došlo je do pogreške: " Identifikator objekta metapodataka nije pronađen za ulogu MIKO_Softphone".

Štoviše, ova se situacija nije dogodila u svim konfiguracijama, kao u "Upravljanje trgovinom, 11.2.3.218" i "Integrirana automatizacija, 2.0.3.222" nije bilo problema s ulogom kada je dodana u samo proširenje. Kako bismo pružili određenu svestranost u našem rješenju i osigurali nesmetan rad u većini konfiguracija koje podržavamo, odlučili smo dodati ulogu MIKO_softfon u glavnu konfiguraciju i posudite ga u proširenju, a zatim implementirajte postavke za ovu ulogu u proširenju.

Vrlo važna značajka je činjenica da ako nakon što ugradite naše proširenje, želite ugraditi panel prema našim starim uputama, morate onemogućiti proširenje i ukloniti MIKO_softphone ulogu. Ako želite ponovno koristiti proširenje, prvo morate dodati ulogu, a zatim dodati proširenje.

Sažimajući

Čak i uključujući mogućnost promjene glavne konfiguracije i minimalne izmjene konfiguracije, znatno smo olakšali proces ugradnje telefonske ploče. Sada ne morate mijenjati module upravljane aplikacije, dodavati obradu i podsustave konfiguraciji ili postavljati uloge. Ekstenzija će sve to učiniti umjesto vas! Nastavit ćemo poboljšavati proces ugradnje telefonske ploče za 1C!

Upute za ugradnju telefonske ploče za 1C pomoću mehanizma proširenja nalaze se.

Postavite svoja pitanja putem obrasca za povratne informacije.

© 2019. MIKO LLC Sva prava pridržana.