Koti / Pelikonsolit / Moduulit 1s yrityksessä. Yleiset moduulit. Lippu "Ulkoliitos"

Moduulit 1s yrityksessä. Yleiset moduulit. Lippu "Ulkoliitos"

Yleiset moduulit 1C- konfiguraatiometatietojen 1C 8.3 ja 8.2 objekti, joka tallentaa konfiguraatiossa usein kutsutun ohjelmakoodin. Toiminto/proseduuri voidaan kutsua mistä tahansa kokoonpanosta (jos se on viety).

Kuinka käyttää jaettua moduulia

On hyvä käytäntö laittaa proseduuri tai funktio yhteiseen moduuliin, jos sitä kutsutaan useammassa kuin yhdessä paikassa. Ensinnäkin, jos menettelyä korjataan, se tarvitsee korjata vain yhdessä paikassa. Toiseksi se saavuttaa paremman järjestyksen koodissa.

Tyypillinen esimerkki yleisestä moduulista on kirjauksen käsittely jonkin rekisterin mukaan, eron suuruuden saaminen työpäivinä, valuuttakurssien muuntaminen, määrän/hinnan/summan uudelleenlaskenta taulukkoosiossa ja muut toiminnot.

Yleiset moduulin ominaisuudet

Yksi tärkeimmistä eroista jaettujen moduulien ja muiden moduulien välillä on, että et voi ilmoittaa jaettuja muuttujia.

Hanki 267 1C -videotunteja ilmaiseksi:

Katsotaanpa tarkemmin yhteisen moduulin ominaisuuspalettia:

  • Maailmanlaajuinen- jos lippu on asetettu, tämän moduulin toiminnot ja menettelyt tulevat saataville globaalissa kontekstissa. Nuo. niitä voidaan kutsua missä tahansa kokoonpanossa ilman yhteisen moduulin nimeä. Lisätään kuitenkin ehto - tämän yleisen moduulin toimintojen ja funktioiden nimien on oltava ainutlaatuisia globaalissa kontekstissa.
  • Palvelin- Tämän yhteisen moduulin menettelyt ja toiminnot voidaan suorittaa palvelimella.
  • Ulkoinen liitos- tämän yhteisen moduulin ohjelmakoodit voidaan suorittaa, kun ne on kytketty ulkoiseen lähteeseen (esim. COM).
  • Asiakas (hallittu sovellus)— Tämän yleisen moduulin proseduureja ja toimintoja voidaan käyttää paksussa asiakaskoneessa hallitussa sovellustilassa.
  • Asiakas (tavallinen sovellus)— tämän yleisen moduulin ohjelmakoodeja voidaan käyttää paksussa asiakaskoneessa normaalissa sovellustilassa.
  • Palvelimen puhelu- lippu, jonka avulla asiakas voi käyttää tämän yhteisen moduulin menettelyjä ja toimintoja.
  • - Jos arvoksi on asetettu True, käyttöoikeuksien tarkistus poistetaan käytöstä tässä yhteisessä moduulissa.
  • Uudelleenkäyttö— määrittää palautettujen arvojen asetukset, jos vaihtoehto on käytössä, niin järjestelmä muistaa ensimmäisen suorituksen jälkeen näiden syöttöparametrien arvon ja palauttaa valmiin arvon. Se voi ottaa seuraavat arvot: ei käytetty- sammuttaa, puhelun aikaan- tietyn menettelyn ajaksi, istunnon aikana- kunnes käyttäjä on sulkenut istunnon (ohjelman).

Jos olet aloittamassa 1C-ohjelmoinnin oppimista, suosittelemme ilmaista kurssiamme (älä unohda

1.1. Yhteiset moduulit luodaan toteuttamaan proseduureja ja toimintoja, jotka yhdistetään joidenkin kriteerien mukaan. Pääsääntöisesti yhden konfigurointialijärjestelmän proseduurit ja toiminnot (myynti, ostot) tai vastaavan toiminnallisuuden menettelyt ja toiminnot (työskentely merkkijonojen kanssa, yleiskäyttö) sijoitetaan yhteen yhteiseen moduuliin.

1.2. Kun kehität jaettuja moduuleja, sinun tulee valita yksi neljästä koodin suorituskontekstista:

Yleinen moduulityyppi Esimerkki nimeämisestä Palvelimen puhelu Palvelin Ulkoinen liitos Asiakas
(säännöllinen sovellus)
Asiakas
(hallittu sovellus)
1. PalvelinYleiskäyttöinen (tai yleiskäyttöinen palvelin)
2. Palvelin soittaa asiakkaaltaGeneral PurposeCallServer
3. AsiakasGeneral Purpose Client (tai General Purpose Global)
4. Asiakas-palvelinGeneral PurposeClientServer

2.1. Palvelimen yhteiset moduulit on tarkoitettu isännöimään palvelinproseduureja ja toimintoja, jotka eivät ole käytettävissä asiakaskoodista. Ne toteuttavat sovelluksen kaiken sisäisen palvelinliiketoiminnan logiikan.
Jotta kokoonpano toimisi oikein ulkoisissa yhteystiloissa, hallituissa ja tavallisissa sovelluksissa, palvelinproseduureissa ja toiminnoissa tulee olla yhteisiä moduuleita, joilla on seuraavat ominaisuudet:

  • Palvelin(valintaruutu Palvelimen puhelu pudonnut),
  • Asiakas (tavallinen sovellus),
  • Ulkoinen liitos.

Tässä tapauksessa taataan, että palvelinproseduureja ja -funktioita voidaan kutsua muuttuvilla tyyppiparametreilla (esim. DirectoryObject, DocumentObject ja niin edelleen.). Pääsääntöisesti tämä on:

  • käsittelijät asiakirjojen, hakemistojen jne. tapahtumien tilauksille, jotka ottavat muuttuvan arvon (objektin) parametrina.
  • palvelinproseduurit ja toiminnot, joille objekti välitetään parametrina hakemistojen, dokumenttien jne. moduuleista sekä moduuleista, joissa on tapahtumatilauksia.

Palvelimen yleiset moduulit nimetään yleisten metatieto-objektien nimeämissääntöjen mukaisesti.
Esimerkiksi: Työskentely tiedostojen kanssa, Yleinen tarkoitus

Joissakin tapauksissa voidaan lisätä postfix estämään nimiristiriidat globaalien kontekstin ominaisuuksien kanssa. "Palvelin".
Esimerkiksi: ScheduledTasksServer, Data ExchangeServer.

2.2. Palvelimen yhteiset moduulit, jotka kutsutaan asiakkaalta sisältää palvelinproseduureja ja -toimintoja, jotka ovat käytettävissä asiakaskoodista. Ne muodostavat sovelluspalvelimen asiakassovellusliittymän.
Tällaiset menettelyt ja toiminnot sijoitetaan yhteisiin moduuleihin määritteellä:

  • Palvelin(valintaruutu Palvelimen puhelu asennettu)

Asiakkaalta kutsuttavat palvelimen yleiset moduulit nimetään yleisten metatietoobjektien nimeämissääntöjen mukaisesti ja ne on nimettävä postfixilla "Palvelinpuhelu".
Esimerkiksi: Työskentely FilesCalling The Server -sovelluksella

Huomaa, että vientimenettelyt ja toiminnot tällaisissa yleisissä moduuleissa eivät saa sisältää muuttuvia tyyppiparametreja ( DirectoryObject, DocumentObject jne.), koska niiden siirto asiakaskoodista (tai siihen) on mahdotonta.

Katso myös:Rajoitus "Palvelinkutsu"-lipun asettamiseen yleisille moduuleille

2.3. Asiakkaan jaetut moduulit sisältävät asiakkaan liiketoimintalogiikkaa (vain asiakkaalle määritetty toiminnallisuus) ja niillä on seuraavat ominaisuudet:

  • Asiakas (hallittu sovellus)
  • Asiakas (tavallinen sovellus)

Poikkeuksena on tilanne, jossa asiakasprosessien ja toimintojen pitäisi olla käytettävissä vain hallitussa sovellustilassa (vain tavallisessa sovellustilassa tai vain lähtevässä tilassa). Tällaisissa tapauksissa toinen näiden kahden ominaisuuden yhdistelmä on hyväksyttävä.

Asiakkaan yleiset moduulit on nimetty jälkiliitteellä "Asiakas".
Esimerkiksi: WorkFilesClient, Yleiskäyttöinen asiakas

Katso myös: asiakaspuolen koodin minimointi

2.4. Joissain tapauksissa on mahdollista luoda asiakas-palvelin yhteisiä moduuleja proseduureineen ja funktioineen, joiden sisältö on sama sekä palvelimella että asiakkaalla. Tällaiset menettelyt ja toiminnot on sijoitettu yhteisiin moduuleihin, joissa on seuraavat ominaisuudet:

  • Asiakas (hallittu sovellus)
  • Palvelin(valintaruutu Palvelimen puhelu nollaa)
  • Asiakas (tavallinen sovellus)
  • Ulkoinen liitos

Tämän tyyppiset yleiset moduulit on nimetty jälkiliitteellä "Asiakaspalvelin".
Esimerkiksi: WorkFilesClient, General PurposeClientServer

Yleisesti ottaen ei ole suositeltavaa määrittää yhteisiä moduuleja palvelimelle ja asiakkaalle (hallittavalle sovellukselle) samanaikaisesti. Asiakkaalle ja palvelimelle määritellyt toiminnot on suositeltavaa toteuttaa erilaisissa yleisissä moduuleissa - katso s. 2.1 ja 2.3. Tällaisen asiakkaan ja palvelimen liiketoimintalogiikan selkeän erottamisen sanelevat näkökohdat, jotka lisäävät sovelletun ratkaisun modulaarisuutta, yksinkertaistavat kehittäjän hallintaa asiakas-palvelin vuorovaikutuksessa ja vähentävät virheiden riskiä, ​​jotka johtuvat perustavanlaatuisista eroista asiakkaan ja palvelimen kehittämisen vaatimuksissa. koodi (tarve minimoida asiakkaalla suoritettava koodi, objektien ja alustatyyppien eri saatavuus jne.). Samalla on pidettävä mielessä yleisten moduulien määrän väistämätön lisääntyminen konfiguraatiossa.

Erikoistapaus seka-asiakas-palvelin-moduuleista ovat lomake- ja komentomoduulit, jotka on erityisesti suunniteltu toteuttamaan palvelimen ja asiakkaan liiketoimintalogiikka yhdessä moduulissa.

3.1. Yleisten moduulien nimet on suositeltavaa rakentaa yleisten metatieto-objektien nimeämissääntöjen mukaisesti. Yhteisen moduulin nimen on vastattava alijärjestelmän tai erillisen mekanismin nimeä, jonka menettelyjä ja toimintoja se toteuttaa. Yleisten moduulien nimissä on suositeltavaa välttää sellaisia ​​yleisiä sanoja kuin "Procedures", "Functions", "Handlers", "Module", "Functionality" jne. ja soveltaa niitä vain poikkeustapauksissa, kun ne paljastavat paremmin moduulin tarkoituksen.

Jotta voidaan erottaa yhden alijärjestelmän yleiset moduulit, jotka on luotu toteuttamaan eri yhteyksissä suoritettuja proseduureja ja toimintoja, on suositeltavaa antaa niille aiemmin kappaleissa kuvatut jälkiliitteet. 2.1-2.4.

1C:Enterprise-järjestelmäkokoonpanojen uusissa versioissa monia toimintoja ja proseduureja on siirretty objektimoduuleista (asiakirjat, hakemistot jne.) hallintamoduuleihin. Katsotaanpa näiden kahden moduulin eroja.

Olio-ohjelmoinnin teorian mukaan objektien menetelmät jaetaan kahteen ryhmään: staattisiin ja yksinkertaisiin. Yksinkertaisilla menetelmillä on pääsy vain tiettyyn luokan esiintymään. Staattisilla menetelmillä ei ole pääsyä objektitietoihin, vaan ne toimivat koko luokassa.

Jos käännämme kaiken tämän 1C: Enterprise -järjestelmän termeiksi, niin Objektimoduuli sisältää yksinkertaisia ​​menetelmiä. Jotta voit käyttää niitä, sinun on ensin hankittava tietty objekti: hakemiston elementti, asiakirja jne. Manager-moduuli sisältää staattisia menetelmiä. Sen käyttöä varten ei tarvitse hankkia jokaista kohdetta erikseen, sillä voit työskennellä koko kokoelman kanssa kerralla.

Objektimoduuli voi sisältää menettelyjä ja toimintoja, joita voidaan käyttää ulkoisesti. Tätä varten tällainen menettely tai toiminto merkitään sanalla Viedä.

Funktio NewFunction() Export

Jotta voit käyttää tällaista funktiota objektimoduulista, sinun on ensin hankittava se funktiolla, jolla on viittaus vaadittuun objektiin. GetObject().



Per = Objekti. Uusifunktio() ;

Vastaavasti voit luoda uusia muuttujia, joita voidaan käyttää erilaisista konfigurointiobjekteista.

Muuttujan uusi muuttuja vienti

DirectoryItem = Hakemistot. Nimikkeistö. FindByCode("000000001" );
Objekti = Hakemistoelementti. GetObject() ;
Esine. UusiMuuttuja= );

Siten on mahdollista täydentää objektien vakiomenettelyjä, toimintoja ja ominaisuuksia (muuttujia). Tällaiset muuttujat ovat dynaamisia, niitä ei tallenneta tietokantaan ja ne ovat olemassa vain työskennellessäsi vastaanotetun objektin kanssa.

Manager-moduuli sillä on kaikki samat ominaisuudet, ainoa ero on, että sinun ei tarvitse hankkia tiettyä objektia käyttääksesi sitä, hallintamoduulin avulla voit työskennellä koko tietyn tyyppisen objektikokoelman kanssa.

Procedure NewProcedure() Export

DirectoryItem = Hakemistot. Nimikkeistö. UusiProcedure() ;

Tai muuttujalle:

Muuttujan uusi muuttuja vienti

DirectoryItem = Hakemistot. Nimikkeistö. uusiMuuttuja;

Tarkastellaanpa objektimoduulin ja hallintamoduulin käytön eroja asiakirjan painetun muodon luontimenettelyn esimerkissä.

Objektimoduulia käytettäessä koodi näyttää tältä:

Toiminto PrintDocument (Link) Export
//Tälle funktiolle on välitettävä linkki tiettyyn asiakirjaan
Palauta TabDoc;
EndFunctions

Asiakirjalomakkeelle on luotava toiminto, joka välittää linkin asiakirjaan tulostustoimintoon.

&AtClient
Toimenpidetulostus (komento)
TabDoc = PrintOnServer() ;
TabDoc. Näytä() ;
EndProcedure
&Palvelimella
Funktio PrintOnServer()
Doc = FormAttributeToValue("Objekti" ) ;
Palauta Doc. TulostaDokumentti(Objekti. Linkki) ;
EndFunctions

Tämän menetelmän haittana on, että sen avulla voit tulostaa vain yhden objektin. Jos sinun on tulostettava useita asiakirjoja kerralla, sinun on hankittava niistä jokainen ja kutsuttava sitten funktio objektimoduulista. Tämä vaatii huomattavia järjestelmäresursseja, koska kun objekti vastaanotetaan, se mahtuu kokonaan RAM-muistiin.

Suorituskyvyn kannalta on paljon parempi käyttää managerimoduulia aina kun mahdollista. Esimerkissämme ongelman ratkaisu näyttää tältä.
Funktio PrintOnServer()
Palauta asiakirjat. Asiakirjamme. PrintDocument(ArrayReferences) ;
EndFunctions

Hallintamoduulia käytettäessä tulostusproseduuri voidaan kutsua sekä dokumenttilomakkeesta että luettelolomakkeesta välittäen linkkejä useisiin taulukon dokumentteihin. Tässä tapauksessa järjestelmän ei tarvitse vastaanottaa jokaista asiakirjaa taulukosta, mikä säästää merkittävästi järjestelmäresursseja.

Joten milloin sinun tulee käyttää objektimoduulia ja milloin hallintamoduulia?

Kaikki riippuu tehtävästä. Jos viittaus objektiin riittää sen suorittamiseen (esimerkiksi tulostustehtävä), on parempi käyttää hallintamoduulia. Jos tehtävänä on muuttaa tietoja, esimerkiksi täyttämällä dokumentti, sinun on hankittava se ja käytettävä objektimoduulia.

Ohjelmistomoduulit sisältävät suoritettavaa koodia 1C-kielellä, joka on tarpeen vastatakseen tietyllä tavalla järjestelmän tai käyttäjän toimiin, kun visuaaliset kehitystyökalut eivät riitä. Myös ohjelmamoduuleissa voimme kuvata omia menetelmiämme (menettelytapoja ja toimintoja).

Tyypillisesti ohjelmistomoduuli koostuu kolmesta osasta:

  • muuttuva ilmoitusalue;
  • menettely- ja toimintokuvausalue;
  • ohjelman pääteksti.

Esimerkki ohjelmamoduulin rakenteesta:

//******************** MUUTTUVA ILMOITUSALUE *************************

Rem sukunimi vienti; / /tämä on globaali muuttuja
Muuttujan nimi, Isännimi; //tämä on moduulimuuttuja
Vaihtaa nimeä; //tämä on myös moduulimuuttuja ja sitä voidaan käyttää

// mistä tahansa moduulimme menettelystä ja toiminnosta

//*************** MENETTELY JA TOIMINNAN KUVAUSALUE ****************

Menettely Menettely 1 ()
Muuttuva Yhteensä ; / /Total on paikallinen muuttuja (menettelymuuttuja)

Yhteensä = Sukunimi + "" + Etunimi + " "+ Isännimi;

EndProcedure

Toiminto Funktio1 ()

// funktiolausekkeet

Return(Sukunimi + " " + Etunimi );

EndFunctions

//**************************** OHJELMAN PÄÄTEKSTI ******************** *

Sukunimi = "Ivanov";
Nimi = "Ivan";
Toinen nimi = "Ivanovich";

//******************************************************************************

Tietyssä ohjelmamoduulissa mikä tahansa alueista voi puuttua.
Muuttuva ilmoituksen laajuus sijoitetaan moduulitekstin alusta Proseduurin tai Function-käskyn tai minkä tahansa suoritettavan käskyn ensimmäiseen lauseeseen. Tämä osio voi sisältää vain muuttujamäärityksiä.

Menettelyjen ja toimintojen kuvausalue sijoitetaan Procedure- tai Function-käskyn ensimmäisestä käskystä mihin tahansa suoritettavaan käskyyn proseduurin tai funktion ilmoituksen rungon ulkopuolella.

Pääohjelman tekstialue sijoitetaan ensimmäisestä suoritettavasta käskystä proseduurien tai funktioiden rungon ulkopuolelle moduulin loppuun. Tämä osio voi sisältää vain suoritettavia lausekkeita. Ohjelman päätekstin alue suoritetaan moduulin alustuksen yhteydessä. Yleensä pääohjelman osioon on järkevää sijoittaa lauseita muuttujien alustamiseksi tietyillä arvoilla, jotka on määritettävä ennen ensimmäistä kutsua moduulin toimintoihin tai toimintoihin.

Ohjelmamoduulit sijaitsevat kokoonpanossa niissä paikoissa, jotka saattavat vaatia tiettyjen toimintaalgoritmien kuvauksen. Nämä algoritmit tulee suunnitella proseduureiksi tai funktioiksi, joita järjestelmä itse kutsuu ennalta määrätyissä tilanteissa (esimerkiksi avattaessa viitelomaketta, kun napsautetaan valintaikkunan painiketta, kun muutetaan objektia jne.).

Järjestelmä havaitsee jokaisen erillisen ohjelmamoduulin kokonaisuutena, joten kaikki ohjelmamoduulin toimenpiteet ja toiminnot suoritetaan yhdessä kontekstissa.

Moduulien suorituskonteksti on jaettu asiakas- ja palvelinkontekstiin. Lisäksi joitain ohjelmistomoduuleja voidaan kääntää sekä asiakas- että palvelinpuolella.

Sovellusmoduuli (hallittu tai tavallinen)

Sovellusmoduuli kuvaa järjestelmän alussa ja lopussa alustavien tapahtumien proseduurit (käsittelijät). Esimerkiksi kun käynnistät sovelluksen, voit päivittää joitain konfiguraatiotietoja ja poistuessasi voit kysyä, pitäisikö sinun poistua ohjelmasta ollenkaan. Lisäksi tämä moduuli sieppaa tapahtumia ulkoisista laitteista, kuten kaupankäynti- tai verotuslaitteista. On syytä huomata, että sovellusmoduuli suoritetaan vain, kun sovellus käynnistetään interaktiivisesti, eli kun ohjelmaikkuna käynnistetään. Tätä ei tapahdu, jos sovellus käynnistetään tilassa com-yhteyksiä.
1C 8 -alustassa on kaksi erilaista sovellusmoduulia. Nämä ovat Common Application -moduuli ja Managed Application -moduuli. Ne käynnistyvät, kun eri asiakkaita käynnistetään. Esimerkiksi Managed Application -moduuli käynnistyy, kun verkkoasiakasohjelma käynnistetään, laiha asiakas ja paksu asiakas hallitussa sovellustilassa. Ja tavallinen sovellusmoduuli laukeaa, kun paksu asiakas käynnistetään normaalissa sovellustilassa. Sovelluksen käynnistystilan asetus asetetaan "Pääkäynnistystila"-määritysominaisuuteen.

Sovellusmoduuli voi sisältää kaikki 3 osaa - muuttujien ilmoitukset, menettelyjen ja toimintojen kuvaukset sekä ohjelman pääteksti. Sovellusmoduuli on käännetty asiakaspuolelle, mikä rajoittaa vakavasti monentyyppisten tietojen käyttöä. Voit laajentaa sovellusmoduulin kontekstia jaettujen moduulien menetelmillä, joilla on Call Server -ominaisuus asetettu. Kaikki vienniksi merkityn sovellusohjelmamoduulin muuttujat ja menetelmät ovat käytettävissä missä tahansa asiakaspuolen konfigurointimoduulissa. Kuitenkin niin houkuttelevaa kuin se onkin, sinun ei pitäisi sijoittaa tähän suurta määrää toimenpiteitä ja toimintoja. Mitä enemmän koodia tietyssä moduulissa on, sitä pidempi on käännösaika ja sitä kautta sovelluksen käynnistysaika.

Kuten edellä mainittiin, sovellusmoduuli käsittelee sovelluksen aloitus- ja lopputapahtumat. Kunkin tapahtuman käsittelemiseksi sovellusmoduulissa on pari käsittelijää Ennen ... ja Kun ... Niiden väliset erot ovat seuraavat: kun käsittelijän Ennen ... koodi suoritetaan, toiminnolla on ei ole vielä tapahtunut, ja voimme kieltäytyä toteuttamasta sitä. Tätä varten Kieltäytyminen -vaihtoehto on tarkoitettu. On-käsittelijöissä toiminto on jo tapahtunut, emmekä voi kieltäytyä käynnistämästä sovellusta tai poistumasta siitä.

Ulkoinen liitäntämoduuli

  • voi sisältää kaikki 3 aluetta
  • sijaitsee kokoonpanon juuriosassa

Moduulin tarkoitus on samanlainen kuin sovellusmoduulin tarkoitus. Se käsittelee sovelluksen aloitus- ja lopputapahtumat. Ulkoinen liitäntämoduuli laukeaa, kun sovellus käynnistetään verkkoyhteystilassa. Itse ulompi liitosprosessi ei ole interaktiivinen prosessi. Tässä tilassa ohjelma toimii tietokanta ja sovellusikkuna ei avaudu, mikä asettaa tiettyjä rajoituksia interaktiiviseen työhön tarkoitettujen menetelmien käytölle. Tässä tilassa et voi käyttää dialogilomakkeiden kutsuja, varoituksia ja viestejä käyttäjälle jne. He eivät yksinkertaisesti juokse.

Kuten sovellusmoduulissa, kaikki kolme aluetta ovat käytettävissä: muuttujamääritykset, menettelyjen ja toimintojen kuvaukset sekä ohjelman pääteksti. Suurin ero sovellusmoduuliin on se, että com-yhteystilassa kaikki työ tietokannan kanssa tapahtuu palvelinpuolella, joten ulkoinen yhteysmoduuli käännetään palvelinpuolelle. Näin ollen yhteisten asiakasmoduulien vientimuuttujia ja menetelmiä ei ole saatavilla siinä.

istuntomoduuli

  • suoritetaan palvelinpuolella
  • sijaitsee kokoonpanon juuriosassa

Tämä on erittäin erikoistunut moduuli, joka on suunniteltu yksinomaan istunnon parametrien alustamiseen. Miksi sinun piti tehdä oma moduuli tätä varten? Sen käyttö johtuu siitä, että itse sovellus voidaan käynnistää sisään erilaisia ​​tiloja(jolloin joko hallittu sovellusmoduuli, normaali sovellusmoduuli tai ulkoinen yhteysmoduuli suoritetaan), ja istunnon parametrit on alustettava käynnistystilasta riippumatta. Tarvittiin, jotta kaikkiin kolmeen moduuliin ei kirjoitettaisi samaa ohjelmakoodia lisämoduuli, joka suoritetaan riippumatta sovelluksen käynnistystilasta.

Istuntomoduulissa on yksi "SetSessionParameters" -tapahtuma, joka käynnistetään aivan ensimmäisenä, jopa ennen sovellusmoduulin PreSystemBegin-tapahtumaa. Siinä ei ole muuttujan ilmoitusosaa ja pääohjelman osaa. Ja myös vientimenetelmien ilmoittaminen on mahdotonta. Moduuli on käännetty palvelinpuolelle.

Yleiset moduulit

  • voi sisältää alueen toimenpiteitä ja toimintoja varten
  • suoritetaan palvelimella tai asiakaspuolella (riippuu moduulin asetuksista)
  • sijaitsee konfigurointiobjektien puun haarassa "Yleiset" - "Yleiset moduulit"

Yleiset moduulit on tarkoitettu kuvaamaan joitain yleisiä algoritmeja, joita kutsutaan muista konfigurointimoduuleista. Yleismoduuli ei sisällä muuttuvia ilmoitusalueita ja ohjelman runkoa. Voit ilmoittaa siinä vientimenetelmiä, joiden saatavuus määräytyy moduulin asetusten mukaan (millä puolella se suoritetaan: palvelimen vai asiakkaan puolella). Koska muuttujien ilmoitusosio ei ole käytettävissä, ei ole mahdollista määrittää globaaleja muuttujia jaetuissa moduuleissa. Voit käyttää tähän sovellusmoduulia.

Jaetun moduulin käyttäytyminen riippuu asetetuista parametreista (globaali vai ei, erilaiset käännösliput, onko palvelinkutsu saatavilla jne.). Tässä on joitain vinkkejä jaettujen moduulien määrittämiseen:

On hyvä käytäntö olla käyttämättä "Globaali"-lippua kaikkialla. Tämä lyhentää sovelluksen käynnistysaikaa sekä parantaa koodin luettavuutta (tietysti, jos yhteisellä moduulilla on täysin merkityksellinen nimi);
- Ei ole suositeltavaa käyttää useampaa kuin yhtä kokoelmalippua. Eri yhteyksissä suoritettavia menetelmiä ei ole niin paljon, ja jos sellaisia ​​kuitenkin tarvitaan, niille voidaan varata erillinen yhteinen moduuli;
- "Palvelimen kutsu" -lipulla on järkeä vain, jos moduuli on käännetty "palvelimella". Siksi kaikki muut käännösliput tulisi poistaa erilaisten ongelmien välttämiseksi;
- jos moduulimenetelmissä tapahtuu tietojen massakäsittelyä, lukemista ja kirjoittamista tietokantaan, työn nopeuden lisäämiseksi on parempi poistaa pääsynhallinta käytöstä asettamalla "Etuoikeutettu" -lippu. Tämä tila on käytettävissä vain palvelimelle käännetyille jaetuille moduuleille.

Lomake moduuli

  • voi sisältää kaikki 3 aluetta
  • suoritetaan palvelin- ja asiakaspuolella

Lomakemoduuli on suunniteltu käsittelemään käyttäjän toimia tällä lomakkeella (painikkeen napsautustapahtuman käsittely, lomakemääritteen muuttaminen jne.). Mukana on myös suoraan itse lomakkeeseen liittyviä tapahtumia (esimerkiksi sen avaaminen tai sulkeminen). Hallittujen ja säännöllisten lomakkeiden moduulit eroavat ensisijaisesti siinä, että moduuli hallitulla lomakkeella kontekstin mukaan selvästi erotettuna. Jokaisella menettelyllä tai funktiolla on oltava käännösohje. Jos käännösohjetta ei ole määritetty, tämä toiminto tai toiminto suoritetaan palvelinpuolella. Tavallisessa muodossa kaikki koodi suoritetaan asiakaspuolella.

Hallitun lomakkeen rakenne sisältää muuttujan ilmoitusosion, toimintojen ja toimintojen kuvaukset sekä ohjelman rungon (suoritetaan lomakkeen alustuksen yhteydessä). Voimme käyttää vakiolomaketapahtumia lomakkeen odotettavissa olevien menettelyjen ja toimintojen luettelon kautta (Ctrl+Alt+P) tai itse lomakkeen ominaisuuspaletin kautta.

Jos lomakkeelle on määritetty pääattribuutti, pääattribuuttina käytetyn sovellusobjektin ominaisuudet ja menetelmät tulevat saataville lomakemoduulissa.

Objektimoduuli

  • voi sisältää kaikki 3 aluetta
  • suoritetaan palvelinpuolella

Tämä moduuli on saatavana useimmille konfigurointiobjekteille ja se on yleensä tarkoitettu suoraan objektiin liittyvien tapahtumien käsittelyyn. Esimerkiksi kohteiden tallennus- ja poistotapahtumat, kohteen tietojen täytön tarkistaminen, dokumentin kirjaaminen jne.

Jotkut objektimoduulitapahtumat kopioivat lomakemoduulin tapahtumia. Esimerkiksi levyyn liittyvät tapahtumat. On kuitenkin ymmärrettävä, että lomakemoduulin tapahtumat suoritetaan vain objektin tietyssä muodossa, eli kun tietty lomake avataan. Ja objektimoduulin tapahtumat kutsutaan joka tapauksessa, jopa silloin, kun ohjelma työstetään objektin kanssa. Siksi, jos tarvitset objektiin liittyviä menetelmiä ilman, että ne on sidottu objektin tiettyyn muotoon, on parempi käyttää objektimoduulia tähän.

Objektinhallintamoduuli

  • voi sisältää kaikki 3 aluetta
  • suoritetaan palvelinpuolella

Objektinhallintamoduuli ilmestyi vasta versiosta 1C 8.2 alkaen. Hallintamoduuli on olemassa kaikille sovellusobjekteille, ja se on suunniteltu hallitsemaan tätä objektia konfigurointiobjektina. Hallintamoduulin avulla voit laajentaa objektin toimintoja ottamalla käyttöön (kirjoitus) proseduureja ja toimintoja, jotka eivät koske tietokantaobjektin tiettyä esiintymää, vaan itse konfigurointiobjektia. Objektinhallintamoduulin avulla voit sijoittaa yhteisiä proseduureja ja toimintoja tietylle objektille ja käyttää niitä ulkopuolelta, esimerkiksi käsittelystä (tietysti, jos tämä toiminto tai toiminto on Export-avainsanalla). Mitä tämä antaa meille uutta? Yleensä ei muuta kuin toimintojen organisointi objektien mukaan ja niiden tallentaminen erillisiin paikkoihin - Object Manager -moduulit. Voimme yhtä hyvin sijoittaa nämä proseduurit ja toiminnot yleisiin moduuleihin, mutta 1C neuvoo sijoittamaan objektien yhteiset toiminnot ja toiminnot Object Manager -moduuliin. Esimerkkejä Object Managers -moduulin menettelyjen ja toimintojen käytöstä: hakemiston tai asiakirjan yksittäisten tietojen alustava täyttö tietyissä olosuhteissa, hakemiston tai asiakirjan tietojen täyttämisen tarkistaminen tietyissä olosuhteissa jne.

Komentomoduuli

  • voi sisältää osion, jossa kuvataan menettelyjä ja toimintoja
  • toteutetaan asiakkaan puolella

Komennot ovat objekteja, jotka ovat alisteisia sovellusobjekteille tai kokoonpanolle kokonaisuudessaan. Jokaisessa komennossa on komentomoduuli, jossa voit kuvata ennalta määritetyn CommandProcess()-proseduurin kyseisen komennon suorittamiseksi.

Mitä moduulit ovat ja mihin ne on tarkoitettu? Moduuli sisältää ohjelmakoodin. Lisäksi on syytä huomata, että toisin kuin 7.7-alustassa, jossa koodi voi sijaita sekä lomakeelementtien ominaisuuksissa että asettelutaulukoiden soluissa, 8.x-alustassa mikä tahansa koodirivi on sijoitettava jossain moduulissa. Tyypillisesti moduuli koostuu kolmesta osasta - muuttujien kuvaileva osio, toimintojen ja toimintojen kuvaus ja pääohjelman osa. Tämä rakenne on tyypillinen lähes kaikille alustamoduuleille, joitain poikkeuksia lukuun ottamatta. Joissakin moduuleissa ei ole muuttujan ilmoitusosaa ja pääohjelmaosaa. Esimerkiksi istuntomoduuli ja mikä tahansa yleinen moduuli.

Moduulien suorituskonteksti on yleensä jaettu asiakas- ja palvelinkontekstiin. Lisäksi joitain moduuleja voidaan kääntää sekä asiakas- että palvelinpuolella. Ja jotkut ovat puhtaasti palvelin- tai asiakaspuolella. Niin:

Sovellusmoduuli

Moduuli on suunniteltu ottamaan kiinni sovelluksen käynnistyksen (konfiguraation lataamisen) ja sen valmistumisen hetket. Ja vastaavissa tapahtumissa voit järjestää varmennusmenettelyt. Esimerkiksi sovelluksen alussa päivitä mahdolliset konfigurointiviitetiedot, työn lopussa kysy kannattaako se jättää ollenkaan, ehkä työpäivä ei ole vielä päättynyt. Lisäksi se sieppaa tapahtumia ulkoisista laitteista, kuten kaupankäynti- tai verotuslaitteista. On syytä huomata, että sovellusmoduuli sieppaa kuvatut tapahtumat vain interaktiivisen käynnistyksen yhteydessä. Nuo. kun itse ohjelmaikkuna luodaan. Tätä ei tapahdu, jos sovellus käynnistetään com-yhteystilassa.

8.2-alustassa on kaksi erilaista sovellusmoduulia. Nämä ovat Common Application -moduuli ja Managed Application -moduuli. Ne käynnistyvät, kun eri asiakkaita käynnistetään. Näin hallittu sovellusmoduuli käynnistyy, kun verkkoasiakas, ohut asiakas ja paksu asiakas käynnistetään hallitussa sovellustilassa. Ja tavallinen sovellusmoduuli laukeaa, kun paksu asiakas käynnistetään normaalissa sovellustilassa.

Sovellusmoduuliin voidaan sijoittaa kaikki osiot - muuttujien, menettelyjen ja toimintojen kuvaukset sekä pääohjelman kuvaukset. Sovellusmoduuli on käännetty asiakaspuolelle, joten tämä rajoittaa voimakkaasti monentyyppisten tietojen saatavuutta. Voit laajentaa sovellusmoduulin kontekstia jaettujen moduulien menetelmillä, joilla on Call Server -ominaisuus asetettu. Kaikki vientiin merkityt muuttujat ja menetelmät ovat käytettävissä kaikissa asiakaspuolen konfigurointimoduuleissa. Mutta niin houkuttelevaa kuin se onkin, älä laita tähän liikaa menetelmiä. Mitä enemmän koodia se sisältää, sitä pidempi käännösaika ja siten sovelluksen käynnistysaika, mikä on erittäin ärsyttävää käyttäjille.

Kuten edellä mainittiin, sovellusmoduuli käsittelee sovelluksen aloitus- ja lopputapahtumat. Kunkin tapahtuman käsittelemiseksi sovellusmoduulissa on pari käsittelijää Ennen ... ja Kun ... Niiden välinen ero on se, että kun käsittelijän Ennen ... koodi suoritetaan, toimintoa ei ole vielä tehty. tapahtui ja voimme kieltäytyä toteuttamasta sitä. Tätä varten Kieltäytyminen -vaihtoehto on tarkoitettu. On-käsittelijöissä toiminto on jo tapahtunut, emmekä voi kieltäytyä käynnistämästä sovellusta tai poistumasta siitä.

Ulkoinen liitäntämoduuli

Moduulin tarkoitus on samanlainen kuin sovellusmoduulin tarkoitus. Se käsittelee sovelluksen aloitus- ja loppupisteet. Ulkoinen liitäntämoduuli laukeaa, kun sovellus käynnistetään verkkoyhteystilassa. Itse ulompi liitosprosessi ei ole interaktiivinen prosessi. Tässä tilassa tapahtuu ohjelmallista työskentelyä tietokannan kanssa ja sovellusikkuna ei avaudu, mikä asettaa tiettyjä rajoituksia interaktiiviseen työhön tarkoitettujen menetelmien käytölle. Tässä tilassa et voi käyttää dialogimuotokutsuja, varoitusviestejä jne. Ne eivät vain toimi.

Kuten sovellusmoduulissa, tässä ovat muuttujien, menetelmien ja pääohjelman kuvailevat osiot. Voit myös ilmoittaa vientimuuttujia ja -menetelmiä. Erona on, että com-yhteystilassa kaikki työ tietokannan kanssa tapahtuu palvelinpuolella, joten ulkoinen yhteysmoduuli käännetään yksinomaan palvelimelle. Näin ollen yhteisten asiakasmoduulien vientimuuttujia ja menetelmiä ei ole saatavilla siinä.

istuntomoduuli

Tämä on erittäin erikoistunut moduuli, ja se on tarkoitettu yksinomaan istuntoparametrien alustamiseen. Miksi sinun piti tehdä oma moduuli tätä varten? Tämä johtuu siitä, että alustusprosessi saattaa vaatia jonkin koodin suorittamista, ja lisäksi sovellus voidaan käynnistää eri asiakkaiden alla (mikä johtaa eri sovellusmoduulien tai ulkoisen yhteysmoduulin suorittamiseen), ja istuntoparametreja on alustetaan missä tahansa käynnistystilassa. Siksi tarvittiin lisämoduuli, joka suoritetaan missä tahansa sovelluksen käynnistystilassa.

Istuntomoduulissa on yksi "SetSessionParameters" -tapahtuma, joka käynnistetään aivan ensimmäisenä, jopa ennen sovellusmoduulin BeforeSystemStart-tapahtumaa. Siinä ei ole muuttujan ilmoitusosaa ja pääohjelman osaa. Ja myös vientimenetelmien ilmoittaminen on mahdotonta. Moduuli on käännetty palvelinpuolelle.

Vältä houkutusta, että tämä moduuli suoritetaan joka kerta, kun sovellus käynnistetään, ja sijoita siihen koodia, joka ei liity suoraan istunnon parametrien alustukseen. Tämä johtuu siitä, että SetSessionParameters-käsittelijää voidaan kutsua toistuvasti järjestelmän toiminnan aikana. Tämä tapahtuu esimerkiksi, kun käytämme alustamattomia parametreja. Ja vaikka on mahdollista saada kiinni tämän tapahtuman ensimmäisen käynnistyksen hetkestä (RequiredParameters on tyyppiä Undefined), on kuitenkin huomattava, että tämä moduuli on käännetty etuoikeutetussa tilassa, ts. se ei hallitse käyttöoikeuksia. Ja toinen kohta, emme vieläkään voi olla sataprosenttisesti varmoja siitä, että järjestelmä käynnistetään. Yhtäkkiä sovellusmoduuli epäonnistuu, ja yritämme suorittaa joitain toimintoja tietokannan kanssa.

Yleiset moduulit

Moduulit on tarkoitettu kuvaamaan joitain yleisiä algoritmeja, joita kutsutaan muista konfigurointimoduuleista. Yleinen moduuli ei sisällä muuttujamäärittelyosaa ja pääohjelmaosaa. Siinä voit ilmoittaa vientimenetelmiä, joiden saavutettavuuskonteksti määräytyy käännöslippujen avulla. Koska muuttujien ilmoitusosio ei ole käytettävissä, ei ole mahdollista määrittää globaaleja muuttujia jaetuissa moduuleissa. Tätä varten sinun on käytettävä yleisten moduulien toimintoja palautusarvon välimuistilla tai sovellusmoduulia. On pidettävä mielessä, että vaikka yhteisen moduulin uudelleenkäyttö-ominaisuuden arvoksi on asetettu "Istunnon ajaksi", välimuistissa olevien arvojen käyttöikä ei tässä tapauksessa ylitä 20 minuuttia niiden alkamishetkestä. viimeksi käytetty.
Jaetun moduulin käyttäytyminen riippuu asetetuista parametreista (globaali vai ei, erilaiset käännösliput, onko palvelinkutsu saatavilla jne.). Tässä artikkelissa emme käsittele kaikenlaisia ​​asetuksia, kuten myös käyttäytymisominaisuuksia ja sudenkuoppia, joita syntyy, kun ominaisuusliput asetetaan kohtuuttomasti. Tämä on erillisen artikkelin aihe. Pysähdytään vain muutamaan kohtaan, joita tulee noudattaa lippujen asettamisessa:

  • On hyvä peukalosääntö olla käyttämättä "Globaali"-lippua kaikkialla. Tämä lyhentää sovelluksen käynnistysaikaa sekä parantaa koodin luettavuutta (tietysti, jos yleisellä moduulilla on täysin merkityksellinen nimi).
  • Ei ole suositeltavaa käyttää useampaa kuin yhtä kokoelmalippua. Eri yhteyksissä suoritettavia menetelmiä ei ole niin paljon, ja jos sellaisia ​​kuitenkin tarvitaan, niille voidaan varata erillinen yhteinen moduuli.
  • "Soita palvelin" -lipulla on merkitystä vain, jos moduuli on käännetty "palvelimella". Siksi kaikki muut käännösliput tulisi poistaa erilaisten ongelmien välttämiseksi.
  • Jos moduulimenetelmiä käytetään massatietojen käsittelyyn, lukemiseen ja tietokantaan kirjoittamiseen, työn nopeuden lisäämiseksi on parempi poistaa kulunvalvonta käytöstä asettamalla "Etuoikeutettu" -lippu. Tämä tila on käytettävissä vain palvelimelle käännetyille jaetuille moduuleille.

Lomake moduuli

Se on tarkoitettu käsittelemään käyttäjän toimia, esim. erilaisia ​​tietojen syöttämiseen ja syöttämisen oikeellisuuden käsittelyyn liittyviä tapahtumia. Moduuli säännöllinen muoto koottu kokonaan asiakkaalle. Hallitun lomakkeen moduuli puolestaan ​​on selkeästi rajattu suorituskontekstiin, joten kaikilla muuttujilla ja menetelmillä on oltava käännösohje. Jos direktiiviä ei ole erikseen määritelty, tämä muuttuja tai menetelmä käännetään palvelinpuolelle. Lomakemoduulissa ovat muuttujien ja menetelmien kuvailevat osiot sekä osio pääohjelmaa varten.

Objektimoduuli

Tämä moduuli on tyypillinen monille konfigurointiobjekteille ja on yleisesti tarkoitettu objektitapahtumien käsittelyyn. Esimerkiksi objektien kirjoittamisen ja poistamisen tapahtumat, asiakirjojen lähetystapahtumat jne.

Jotkut objektimoduulitapahtumat kopioivat lomakemoduulin tapahtumia. Esimerkiksi levyyn liittyvät tapahtumat. On kuitenkin ymmärrettävä, että lomakemoduulin tapahtumat suoritetaan vain tietylle lomakeobjektille. Yleensä näitä muotoja voi olla useita. Ja objektimoduulin tapahtumat kutsutaan joka tapauksessa, jopa silloin, kun ohjelma työstetään objektin kanssa. Siksi, jos on tarpeen suorittaa jokin koodi kaikissa tapauksissa, on parempi käyttää objektimoduulitapahtumaa tähän.

Objektimoduuli käännetään yksinomaan palvelimelle. Siinä voit määrittää vientimuuttujia ja -menetelmiä, jotka ovat käytettävissä muissa konfigurointimoduuleissa. Näiden ominaisuuksien ja menetelmien avulla voimme merkittävästi laajentaa kohteen toimivuutta.

Objektinhallintamoduuli

Tämä moduuli on olemassa monille konfigurointiobjekteille. Tämän moduulin päätarkoituksena on määritellä uudelleen standardivalintatapahtuma, joka tapahtuu rivikohtaisen syöttämisen yhteydessä, ja laajentaa johtajan toimintoja. Moduuli on käännetty palvelinpuolelle. On mahdollista määritellä vientiominaisuuksia ja -menetelmiä. Managerin vientimenetelmien kutsuminen ei edellytä itse objektin luomista.

Kaikkeen yllä olevaan voit lisätä kuvan joistakin konfigurointimoduuleista ja tavoista kutsua toisiaan menetelmiä hallitussa sovellustilassa. Nuoli osoittaa suunnan, johon voit mennä kutsumaan vastaavaa menetelmää. Kuten kaaviosta näkyy, palvelinkonteksti on täysin suljettu. Mutta asiakaskontekstista on mahdollista päästä käsiksi palvelinmenetelmiin.

Symbolit kaaviossa: O.M. Asiakas - Asiakkaan yhteinen moduuli; O.M. Palvelin - Palvelimen yhteinen moduuli; M.F. Asiakas - Lomakemoduulin asiakasproseduurit; M.F. Palvelin - Lomakemoduulin palvelinmenettelyt.