Modulis darbam ar klientiem 1s. Kopējie moduļi. Ārējais pievienošanās karogs

Raksts turpina sēriju “Pirmie soļi attīstībā 1C”, tajā detalizēti aplūkoti šādi jautājumi:

  • Kas ir programmatūras modulis un no kādām sadaļām tas sastāv?
  • Kam paredzēts lietojumprogrammas modulis? Kāpēc viņi ir divi? Kad kurš tiek palaists? Kādi ir darba smalkumi?
  • Kādi notikumi ir saistīti ar sistēmas darbības sākumu, kā un kur tos apstrādāt?
  • Kam paredzēts ārējā savienojuma modulis? Kad un kā to lietot?
  • Kad tiek izmantots sesijas modulis?
  • Kādi ir izplatītākie moduļi? Kādas ir tās īpašības un darbības noteikumi? Kāpēc izmantot rekvizītu “Atgriezto vērtību atkārtota izmantošana”?
  • Kad tiek izmantots veidlapas modulis un kādus notikumus tajā var apstrādāt?
  • Kam paredzēts objekta modulis? No kādām sadaļām tas sastāv? Kā es varu redzēt pieejamos moduļa notikumus?
  • Kādi ir smalkumi darbā ar vērtību pārvaldnieka moduļiem (konstantēm) un ierakstu kopas moduļiem (reģistriem)?
  • Kādas ir atšķirības starp objekta moduli un pārvaldnieka moduli? Kad jums vajadzētu izmantot pēdējo?

Piemērojamība

Rakstā ir apskatīta 1C: Enterprise platforma 8.3.4.496. Materiāls attiecas arī uz pašreizējām platformas izlaidumiem.

Moduļi programmā "1C:Enterprise 8.3"

Moduļi ir tie objekti, kas satur programmas kodu.

Platformā ir diezgan liels skaits moduļu veidu, no kuriem katram ir savs mērķis un funkcijas.

Jebkurai koda rindiņai ir jābūt kādā modulī. Ir vispārējas nozīmes moduļi un objektu moduļi. Dažus moduļus var kompilēt gan Klientā, gan serverī, bet dažus tikai serverī.

Modulis var sastāvēt no vairākām sadaļām. Mainīgo apraksta sadaļā ir aprakstīti šī moduļa lokālie mainīgie, kurus pēc tam var izmantot jebkurā procedūrā.

Katrā procedūrā varat piekļūt moduļa mainīgajam. Turklāt pašā procedūrā var būt cita mainīgā deklarācija ar tādu pašu nosaukumu. Tas būs šīs procedūras lokālais mainīgais.

Neskatoties uz to pašu nosaukumu, tie ir divi dažādi mainīgie: viens tiek izmantots konkrētas procedūras ietvaros, bet otrs tiek izmantots ārpus tās.

Dažos moduļos mainīgie var norādīt kompilācijas vietu (pieejamību) Serverī vai Klientā. Piemēram:

Sadaļai, kas apraksta mainīgos, seko procedūru un funkciju sadaļa, kurā norādītas šī moduļa lokālās metodes. Dažos moduļos ir jānorāda, kur tiks apkopota procedūra vai funkcija.

Principā apkopošanas direktīvu var izlaist. Šajā gadījumā noklusējuma kompilācijas direktīva ir serveris. Tomēr programmas koda analīzes ērtībai ir ieteicams skaidri norādīt, kur tiks apkopota dotā procedūra. Procedūru aprakstīšanas secībai nav nozīmes.

Moduļa beigās pēc visu procedūru un funkciju aprakstīšanas ir galvenās programmas sadaļa, kurā var būt daži operatori un inicializēti formas moduļa lokālie mainīgie. Šī sadaļa tiek izpildīta, piekļūstot modulim.

Tātad, piemēram, atverot elementu formu, vispirms tiek izpildīta formas moduļa galvenā programmas sadaļa.

Jāņem vērā, ka mainīgā deklarācijas sadaļa un galvenā programmas sadaļa nepastāv visiem moduļiem (t.i., šīs sadaļas dažos moduļos nav derīgas). Sadaļa procedūru un funkciju aprakstam var pastāvēt pilnīgi jebkurā modulī.

Lietojumprogrammas modulis

Šis modulis ir paredzēts, lai apstrādātu lietojumprogrammas palaišanas un pārtraukšanas notikumus. Piemēram, palaižot lietojumprogrammu, varat lejupielādēt valūtu kursus no interneta. Pārtraucot lietojumprogrammas darbību, varat ar lietotāju apstiprināt, ka viņš vai viņa plāno atmest.

Arī lietojumprogrammu modulī ir īpaši apstrādātāji, kas ļauj pārtvert ārējos notikumus no iekārtas.

Tie varētu būt notikumi no magnētisko karšu lasītāja vai nodokļu reģistratūras. Un šos notikumus var arī kaut kādā veidā apstrādāt.

Lūdzu, ņemiet vērā, ka lietojumprogrammas modulī tiek uzraudzīta sistēmas interaktīvā palaišana.

Lietojumprogrammas modulis nedarbosies, ja programma 1C tiks palaista, piemēram, com savienojuma režīmā. Šajā gadījumā programmas logs netiek izveidots.

Jāatzīmē, ka platformā 8.3 ir divi dažādi lietojumprogrammu moduļi: pārvaldītās lietojumprogrammas modulis un parastās lietojumprogrammas modulis. Pārvaldītās lietojumprogrammas moduļa notikumi tiek apstrādāti, kad tiek palaistas pārvaldītās lietojumprogrammas plānais un biezais klients un tīmekļa klients.

Modulis Regulāra pielietošana darbojas, palaižot Thick Client režīmā Regulāra pielietošana, kas satur parasto komandu interfeisu formā Galvenā izvēlne.

Ja lietojumprogramma darbojas Pārvaldīts, un režīmā Regulāra pielietošana, tad jāapraksta apdarinātāja procedūras kā modulim Pārvaldīta lietojumprogramma, un modulim Regulāra pielietošana.

Modulis Pārvaldīta lietojumprogramma var izvēlēties no saknes konfigurācijas mezgla konteksta izvēlnes.

Šo moduli var atvērt arī no saknes konfigurācijas elementa rekvizītu paletes.

Lai atvērtu moduli Regulāra pielietošana, jums vajadzētu atsaukties uz konfigurācijas iestatījumiem (command Iespējas izvēlnē apkalpošana).

Veidlapa tiks atvērta Iespējas. Uz grāmatzīmes Ir izplatītas ir jānorāda konfigurācijas rediģēšanas režīms Pārvaldīta lietojumprogramma Un Regulāra pielietošana.

Šajā gadījumā modulis Regulāra pielietošana to varēs atvērt arī no saknes mezgla īpašībām.

To notikumu saraksts, kurus var apstrādāt Pārvaldīts Un Regulāra pielietošana ir tāds pats.

Šajā modulī var būt mainīga deklarācijas sadaļa, patvaļīgu procedūru un funkciju apraksta sadaļa un galvenā programmas sadaļa. Bet papildus patvaļīgām procedūrām un funkcijām modulī var atrasties īpaši notikumu apstrādātāji.

Pieejamo apdarinātāju sarakstu var apskatīt, izsaucot pašreizējā moduļa procedūru un funkciju sarakstu, kad modulis ir atvērts.

Atvērtajā logā Procedūras un funkcijas tiek parādītas visas šī moduļa procedūras un funkcijas, kā arī notikumi, kuriem vēl nav izveidoti apstrādātāji.

Ir divi notikumi, kas saistīti ar sistēmas palaišanu (“pirms” un “pie”). Divi notikumi, kas saistīti ar sistēmas izslēgšanu (“pirms” un “pie”). Un arī ārējo notikumu apstrāde (piemēram, komerciekārtu pasākumi).

Kad tiek izpildīts notikumu apstrādātājs "pirms", tiek uzskatīts, ka darbība vēl nav notikusi. Kad tiek izpildīts notikumu apstrādātājs “at”, darbība jau ir pabeigta.

Pasākums Pirms sistēmas palaišanas notiek brīdī, kad tiek palaista Enterprise 8.3, bet pati programma vēl nav parādījusies ekrānā. Šim notikumam ir šāds parametrs: Atteikums.

Ja šis parametrs ņem vērtību Taisnība, tad programma netiks startēta. Pasākums Startējot sistēmu pieņem, ka darbība jau ir pabeigta, logs jau ir izveidots, un šajā gadījumā mēs varam, piemēram, parādīt kādu īpašu formu. Atteikt palaišanu vairs nav iespējams.

Tāpat pirms sistēmas izslēgšanas lietojumprogramma joprojām ir atvērta, un jūs varat atteikties to aizvērt. Kad sistēma izslēdzas, lietojumprogrammas logs jau ir aizvērts. Ir iespējams veikt tikai papildu darbības, piemēram, dzēst dažus failus vai nosūtīt e-pastu.

Modulī Pārvaldīta lietojumprogramma Norādījumi par procedūru un funkciju apkopošanu nav norādīti, jo modulis ir pilnībā kompilēts Klienta pusē. Tas nozīmē, ka moduļa procedūrās un funkcijās mēs nevarēsim tieši piekļūt, piemēram, uzziņu grāmatām.

Ja no moduļa Pārvaldīta lietojumprogramma nepieciešams veikt servera zvanu, tad šim jums būs jāizveido īpašs ar karogu .

Modulī Regulāra pielietošanaŠādu ierobežojumu nav, jo šis modulis tiks apkopots, ielādējot biezo klientu. Gandrīz visa veida dati ir pieejami Thick Client.

Lietojumprogrammas moduļa procedūras, funkcijas un mainīgos lielumus var raksturot kā eksportu.

Tā kā modulis ir pilnībā kompilēts uz Klienta, tas nozīmē, ka klienta procedūrās mēs varam piekļūt šai metodei un šim rekvizītam.

Piemēram, varat izsaukt lietojumprogrammas moduļa procedūru vai funkciju no objekta formas moduļa. Tomēr, lai aprakstītu vispārīgus algoritmus, ieteicams izmantot parastos moduļus. Lietojumprogrammas moduļa galvenais mērķis ir apstrādāt sākuma punktu un beigu punktu.

Pēc analoģijas ar lietojumprogrammas moduli šis modulis ir paredzēts programmas atvēršanas un izslēgšanas notikumu apstrādei.

Atšķirībā no aplikācijas moduļa, kas tiek iniciēts aplikācijas interaktīvās palaišanas brīdī, ārējā savienojuma modulis darbojas COM savienojuma režīmā, t.i. kad tiek izveidots 1C:Enterprise 8 objekts un savienots ar noteiktu datu bāzi.

Šajā modulī ir notikumi: Startējot sistēmu Un Pēc sistēmas izslēgšanas.

Ārējā savienojuma moduli var atvērt, izmantojot konteksta izvēlni saknes konfigurācijas objekta līmenī vai rekvizītu paleti saknes mezglam.

Pats ārējā savienojuma process ir programmatisks darbs ar informācijas bāzi, nevis interaktīvs. Attiecīgi šobrīd nevar izmantot dialoga formas vai parādīt brīdinājuma ziņojumus, jo nav lietotāja interfeisa.

Ārējā savienojuma modulī ir iespējams aprakstīt eksporta mainīgos un eksportēšanas metodes, kas būs pieejamas tajā pusē, kur notiek ārējais izsaukums uz 1C:Enterprise 8.3.

Tā kā ārējā savienojumā nav lietotāja interfeisa, ārējā savienojuma modulis tiek pilnībā kompilēts serverī.

Sesijas modulis

Šis modulis ir nepieciešams, lai inicializētu sesijas parametrus. Sesijas parametri ir ātri globāli mainīgie, kuru vērtības ir pieejamas jebkurā konfigurācijas vietā.

Sesijas moduli var atvērt, izmantojot konteksta izvēlni vai saknes mezgla rekvizītu paleti.

Sesijas modulis nodrošina notikumu SettingSessionParameters.

Kad lietojumprogramma sākas, vispirms tiek izsaukta šī procedūra. Sesijas parametri ir nepieciešami jebkurai lietojumprogrammas darbībai: gan palaižot interaktīvi, gan palaižot ārējā savienojuma režīmā.

Sesijas modulis apraksta dažādas darbības, lai inicializētu sesijas parametrus atkarībā no dažādiem apstākļiem.

Šis modulis, kā likums, apraksta vairākas procedūras, kas tiek izsauktas no procedūras SettingSessionParameters. Tāpēc visas šīs procedūras ir sadalītas atsevišķā modulī.

Sesijas modulis vienmēr darbojas priviliģētā režīmā. Tas nozīmē, ka, piekļūstot datu bāzei, netiks veikta atļauju pārbaude. Sesijas modulis tiek kompilēts Serverī, t.i. Ir iespējams piekļūt jebkurai servera metodei (ieskaitot vērtību nolasīšanu no datu bāzes).

Sesijas modulī iespējams definēt tikai procedūras un funkcijas, t.i. nav mainīgo aprakstu sadaļas un nav galvenās programmas sadaļas. Jūs nevarat definēt eksportēšanas metodes sesijas modulī.

Ja, startējot sistēmu, nepieciešams veikt kādas darbības Serverī, piemēram, izveidot direktorijas elementu, tad kā opciju iespējams izmantot Sesijas moduli, jo tas tiek apkopots serverī un vienmēr tiek droši izpildīts sistēmas startēšanas laikā. Tomēr ir jāņem vērā šādi punkti:

  • procedūru SettingSessionParameters tiek izpildīts ne tikai sistēmas startēšanas laikā, bet arī piekļūstot neinicializētiem sesijas parametriem. Tie. SetSessionParameters apdarinātāju var izsaukt atkārtoti lietojumprogrammas darbības laikā;
  • ja elementu skaits sesijas parametru masīvā ir nulle (obligāto parametru masīvam ir datu tips Undefined), tad šis ir lietojumprogrammas palaišanas brīdis;
  • tā kā Sesijas modulis darbojas priviliģētā režīmā un piekļuves tiesības netiks pārbaudītas, ļoti rūpīgi jāstrādā ar datu bāzes objektiem, jo ​​lietotājs var piekļūt datiem, kurus viņam nevajadzētu sniegt;
  • Kad sistēma startē, vēl nav droši zināms, vai lietojumprogramma tiks palaista. Šādā gadījumā notikumu apdarinātājā SetSessionParameters var tikt veiktas nevajadzīgas darbības.

Šie moduļi attēlo dažu vispārīgu algoritmu aprakstu, t.i. procedūras un funkcijas, kuras var izsaukt no dažādām vietām.

Loģiski saistītās metodes var grupēt dažādos kopējos moduļos. Šie moduļi tiek izveidoti sadaļā Vispārīgi.

Varat pievienot neierobežotu skaitu koplietotu moduļu. Lai Common Module metodes būtu pieejamas citur konfigurācijā, tās jādefinē ar atslēgvārdu Eksportēt. Kopējo moduļu klientu procedūras būs pieejamas Klientā, bet servera – Serverī.

Vispārējos moduļos ir pieejama tikai sadaļa, kurā aprakstītas procedūras un funkcijas. Tie. Vispārējā modulī nevar aprakstīt mainīgos lielumus un nevar aprakstīt galvenās programmas sadaļu.

Ja ir nepieciešams globālais mainīgais, varat izmantot sesijas parametrus vai lietojumprogrammas moduļa eksporta mainīgos.

Vispārīgajiem moduļiem varat iestatīt dažus parametrus, kas ietekmēs šī moduļa darbību. Ja vispārīgajam modulim ir iestatīts rekvizīts Globālais, šajā modulī deklarētās eksportēšanas metodes būs pieejamas tieši no ārpuses, bez papildu norādījumiem.

Tie. uz Vispārējais modulis piedalīsies globālās konfigurācijas konteksta veidošanā.

Īpašums Globāli vispārīgiem moduļiem tas var būt noderīgi. Tomēr nevajadzētu to izmantot visur visiem izplatītajiem moduļiem.

Tie , kas ir apzīmēti ar zīmi Globāli, tiks apkopots sistēmas startēšanas laikā. Jo vairāk šādu moduļu, jo lēnāk programma tiks startēta.

Ja karogs Globāli Priekš Vispārējais modulis nav norādīts, tad šī moduļa kompilācija tiks veikta pirmā izsaukuma brīdī (t.i., pēc sistēmas palaišanas).

Turklāt globālo kopējo moduļu izmantošana ietekmē koda izpratni. Ar nosaukumu tiek izsauktas neglobāla kopējā moduļa metodes Vispārējais modulis un metodes nosaukums, piemēram:
Izmaksu aprēķināšanas modulis.DistributeIndirectCosts();

Šajā gadījumā kopējo moduļu nosaukumiem ir jāatspoguļo tajos aprakstīto procedūru saturs. Kopējā moduļa nosaukuma norādīšana, izsaucot procedūru, palīdz labāk izprast kodu.

Priekš Vispārējais modulis V Rekvizītu palete jūs varat iestatīt īpašumu Priviliģēts.

Priviliģētais modulis nekontrolē piekļuves tiesības. Tas ir nepieciešams, ja Vispārējais modulis Nepieciešams veikt masveida datu apstrādi, iegūstot datus no datu bāzes.

Piekļuves tiesību kontrole palielina laiku, kas nepieciešams, lai piekļūtu datubāzei, un masu algoritmiem bieži ir jādarbojas pēc iespējas ātrāk.

Piemēram, algu uzskaite ir resursietilpīga darbība. Tas jādara pēc iespējas ātrāk. Lai to izdarītu, algoritmi, kas aprēķina algas, tiek ievietoti priviliģētajos .

Tajā pašā laikā ārpus tām ir visas procedūras, kas nodrošina algas dokumentu aizpildīšanu Kopējie moduļi. Tieši šajās procedūrās tiek veikta piekļuves tiesību kontrole.

Tādā veidā var panākt ievērojamus veiktspējas uzlabojumus. Tas jo īpaši attiecas uz tabulu ierakstu piekļuves kontroles mehānismu.

Ja Common Module ir priviliģēts, tad šī moduļa procedūras var kompilēt tikai serverī.

Pastāv situācijas, kad kādam objektam jābūt lietotājam nepieejamam, piemēram, noteiktam direktorijam. Bet, veicot jebkuru dokumentu, ir nepieciešama atsauce uz šo rokasgrāmatu.

Tie. Ir nepieciešams īslaicīgi paplašināt lietotāju tiesības un pēc tam atgriezt tās sākotnējā stāvoklī. Šo efektu var iegūt, izmantojot priviliģēto Kopējie moduļi.

Lai to izdarītu priviliģētā vietā Vispārējais modulis Jums vajadzētu izveidot procedūru, kas piekļūst nepieciešamajiem datiem.

Šī procedūra tiks izsaukta no atbilstošā dokumenta. Tie. lietotājam faktiski tiek piešķirtas paplašinātas tiesības brīdī, kad tiek izsaukta šī procedūra.

Priekš Kopējie moduļi Ir iespējams norādīt kompilācijas vietu. Karogi tiek izmantoti, lai noteiktu, vai kopējais modulis būs pieejams Klientā (pārvaldītā lietojumprogrammā), serverī vai ārējā savienojuma režīmā.

Turklāt, ja pārslēdzat konfigurācijas rediģēšanas režīmu uz Managed application un parasto pieteikumu, tad būs iespējams cits kompilācijas konteksts - Klients (parastā lietojumprogramma).

Tādējādi programmas darbībai ir četras iespējas. Atkarībā no darbojošās lietojumprogrammas, atkarībā no klienta vai servera veiktā darba, noteikti kopējie moduļi būs pieejami vai nebūs pieejami.

Papildus iespējai norādīt kompilācijas karogus, ir iespējams norādīt kompilācijas direktīvas procedūrām un funkcijām, kas atrodas kopējā modulī.

Ja metodei ir norādīta kompilācijas direktīva, tad, lai gan kopējais modulis ir pieejams visos norādītajos kontekstos, konkrētās metodes pieejamību ierobežos kompilācijas direktīva.

Šajā gadījumā procedūrai nevar piekļūt kontekstā, kas nav pieejams visam modulim.

Ja procedūrai (funkcijai) nenorādīsiet kompilācijas direktīvu, tā tiks kompilēta visos modulim definētajos kontekstos.

Tie. Būtībā tiks izgatavotas vairākas procedūras kopijas. Konkrētas kompilētās instances izvēle ir atkarīga no tā, kur procedūra tiek izsaukta (pēc tuvākā izsaukuma likuma). Jāņem vērā, ka šādas procedūras kods jāraksta, ņemot vērā tā pieejamību visos modulim definētajos kontekstos.

Vispārīgie moduļi, kas vienlaikus ir pieejami vairākos dažādos kontekstos, galvenokārt ir paredzēti, lai izveidotu procedūras, kas ir pieejamas vairākos kontekstos.

Veidojot vispārējo moduli, tiek uzskatīts par labu praksi nenorādīt apkopošanas direktīvas. Tie. Procedūru un funkciju pieejamība ir jānosaka pēc paša moduļa īpašībām.

Izmantojot šo pieeju, klienta procedūras tiks izvietotas atsevišķos kopējos moduļos, un servera procedūras tiks izvietotas atsevišķos kopējos moduļos.

Moduļi, kuriem ir iestatīti vairāki kompilācijas karodziņi, praksē tiek izmantoti ārkārtīgi reti. Šīs ir dažas izplatītas darbības, kas pieejamas gan Klientā, gan serverī. Parasti tie ir daži vienkārši aprēķini.

Svarīgs! Klientam ir iespēja piekļūt kopējā moduļa eksporta servera metodēm, taču tikai tad, ja šis kopējais modulis ir kompilēts tikai uz Servera. Šajā gadījumā tiek nodrošināts īpašs karogs, lai nodrošinātu piekļuvi no Klienta .

Neglobālajiem Common moduļiem ir iespējams saglabāt funkciju atgrieztās vērtības kešatmiņā. Tie. Pēc pirmās funkcijas izsaukšanas sistēma var atcerēties tās izpildes rezultātu. Ja šī funkcija tiek izsaukta vēlreiz ar tiem pašiem parametriem, sistēma atgriezīs vērtību no kešatmiņas.

Šī mehānisma mērķis ir paātrināt atkārtotus zvanus. Lai konfigurētu šo darbību, jums ir nepieciešams Rekvizītu palete moduli, iestatiet atbilstošo vērtību īpašumam Atgriezto vērtību atkārtota izmantošana.

Pēc noklusējuma šis rekvizīts ir iestatīts uz Nelietot. Citas iespējamās vērtības: cache Sarunas laikā, vai Uz sesijas laiku.

Šo rekvizītu ir jēga izmantot tikai tām funkcijām, kuru rezultāti ir atkarīgi tikai no ievades parametriem. Šis mehānisms ir pieejams tikai neglobālajiem kopējiem moduļiem.

Ja ir atlasīta atbilstošā parametra vērtība Zvana ilgumam, kešatmiņa darbosies tik ilgi, kamēr darbosies procedūra, no kuras tika izsaukta vispārējā moduļa metode. Ja ir atlasīta vērtība Sesijas ilgumam, tad nosacīti tiek pieņemts, ka kešatmiņa darbosies, kamēr lietotājs strādā.

Tomēr ir noteikti laika ierobežojumi. Kešatmiņa tiek automātiski notīrīta 20 minūtes pēc vērtības ievadīšanas kešatmiņā.

Veidlapas modulis

Šis modulis ir paredzēts lietotāja darbību apstrādei. Piemēram, aprakstiet algoritmu tam, kā programma reaģē, kad tiek nospiesta poga. Vai, piemēram, ievadot vērtību laukā, nekavējoties pārbaudiet pareizību.

Papildus notikumiem, kas saistīti ar veidlapas vadīklām (pogām, ievades laukiem), ir arī notikumi, kas ir saistīti tieši ar pašu veidlapu.

Piemēram, varat apstrādāt veidlapas atvēršanas notikumu un veikt sākotnējo inicializēšanu. Varat arī apstrādāt veidlapas aizvēršanas notikumu un pārbaudīt, vai lietotājs visu ievadījis pareizi.

Ir kontrolētas formas un parastās formas. Šo veidlapu moduļi galvenokārt atšķiras ar to, ka pārvaldītās formas modulis ir skaidri sadalīts kontekstā. Katrai procedūrai (funkcijai) jābūt kompilācijas direktīvai. Parastā formā viss kods tiek izmantots Klientā.

Pārvaldītās formas modulī varat deklarēt procedūras un funkcijas, varat deklarēt mainīgos un aprakstīt galvenās programmas sadaļu.

Galvenās programmas programmas kods tiks izpildīts formas inicializācijas brīdī, t.i. kad lietotājs sāk to atvērt. Attēlā parādīts pārvaldītās veidlapas standarta notikumu saraksts.

Pārvaldītās formas notikumu saraksts ir redzams arī tieši pašas formas rekvizītu sarakstā. Šis saraksts tiek izsaukts pārvaldīto formu redaktorā.

Pārvaldītā formā varat apstrādāt vienuma rakstīšanas notikumu. Šis notikums ir pieejams tikai objektu formām (direktoriji, dokumenti un daži citi). Ja forma nav saistīta ar konkrētu objektu, tad rakstīšanas notikuma nav.

Parastās formas modulim standarta notikumu saraksts ir nedaudz mazāks, jo pārvaldītā formā daudzi notikumi tiek savienoti pārī (viens tiek izpildīts Klientā un otrs serverī). Parastajā formā viss kods tiek izpildīts Klientā.

Objekta modulis

Šie moduļi ir raksturīgi direktorijiem, dokumentiem, aprēķinu veidu plāniem, kontu plāniem un daudziem citiem objektiem. Objekta modulis ir paredzēts standarta notikumu apstrādei. Piemēram, notikums direktorija elementa ievadīšanai, notikums elementa rakstīšanai, dzēšanai, dokumenta ievietošanai utt.

Principā rakstīšanas notikums pastāv arī veidlapas modulī. Bet rakstīšanas notikums Form Module notiek interaktīvā ierakstīšanas procesā, strādājot ar konkrētu formu.

Rakstīšanas notikums objektu modulī tiks izpildīts jebkuram ierakstam no jebkuras dotā objekta formas. Turklāt, ja objekts ir ierakstīts programmatiski, tiks aktivizēts objekta moduļa notikums.

Objekta moduļa rakstīšanas gadījumā jūs varat iekļaut visas ierakstāmo datu pareizības pārbaudes, jo šī procedūra tiks izpildīta pilnīgi jebkura ierakstīšanas laikā.

Šī objekta moduli var izsaukt, izmantojot konteksta izvēlni, no Objekta rekvizītu paletes un no objekta rediģēšanas loga.

Tālāk esošajā attēlā parādīts pieejamo direktoriju moduļa notikumu saraksts.

Objekta modulī var ievietot sadaļu mainīgo aprakstīšanai, patvaļīgu funkciju aprakstīšanai, kuras var nebūt saistītas ar notikumu, kā arī galvenās programmas sadaļu.

Programmas galvenajā sadaļā varat, piemēram, inicializēt dotā moduļa lokālos mainīgos. Šis programmas kods tiks izpildīts, kad tiks piekļūts šim objekta modulim.

Jāņem vērā, ka visas Objekta moduļa procedūras tiek apkopotas serverī. Attiecīgi kompilācijas norādījumi objekta moduļa procedūrām un funkcijām nav nepieciešami. Dažiem konfigurācijas objektiem nav objektu moduļu.

Tas ir saistīts ar pašu objektu īpašībām. Pie šādiem objektiem pieder Konstantes Un Reģistri. Priekš Pastāvīgi nav objekta moduļa, bet ir ļoti līdzīgs modulis ar nosaukumu Vērtību pārvaldnieka modulis.

IN Vērtību pārvaldnieka modulis jūs varat rakstīt notikumus Konstantes un uzpildes verifikācijas apstrāde.

Viss moduļa konteksts tiek izpildīts serverī.

Reģistriem ir ierakstu kopas modulis.

Šim modulim ir arī iespēja apstrādāt notikumu rakstīšanu un veikt noslodzes pārbaudes.

Objektu moduļos, vērtību pārvaldnieka moduļos (konstantēm) un ierakstu kopas moduļos (reģistriem) varat aprakstīt metodes, kuras var eksportēt, un šīs metodes būs pieejamas no ārpuses.

Tie. Papildus objektu klases fiksēto metožu izmantošanai objekta modulī varat izveidot objektam papildu metodes. Šajā modulī ir jāapraksta atbilstošā procedūra ar atslēgvārdu Eksportēt.

Tad šai procedūrai būs iespējams piekļūt no ārpuses. Turklāt šī metode tiks parādīta konteksta rīka padomos. Jaunās metodes konteksta rīkpadomā ir izceltas ar zilu fontu (zila ikona p() procedūrām un f() funkcijām).

Līdzīgi varat izveidot jaunu rekvizītu, deklarējot mainīgo ar atslēgvārdu Eksportēt. Šim īpašumam var piekļūt arī no ārpuses.

Tādā veidā ir iespējams paplašināt objektu funkcionalitāti (definēt jaunas metodes un jaunas īpašības). Tomēr rekvizīti ir dinamiski un netiek saglabāti datu bāzē.

Ja jums ir jāizmanto rekvizīts objektam, kas tiks saglabāts datu bāzē, jums ir jāizveido objekta atribūts.

Pārvaldnieka modulis

Šis modulis pastāv daudziem objektiem (direktorijiem, dokumentiem, reģistriem utt.). Modulis tiek atvērts, izmantojot objekta kontekstizvēlni vai caur Rekvizītu palete, vai caur rediģēšanas logu.

Pārvaldnieka modulī varat ignorēt dažus standarta notikumus, piemēram, in ProcessingReceivingSelectionData, kad no direktorija ir atlasīts elements, var veikt papildu filtrēšanu vai pārbaudi.

Turklāt pārvaldnieka modulī varat izveidot papildu metodes un norādīt, ka tās ir eksportēšanas metodes. Šajā gadījumā šīm metodēm ir iespējams piekļūt no ārpuses.

Lai veiktu šo zvanu, ir jāiegūst datu tips Directory Manager.

Atšķirība starp pārvaldnieka moduļa un objekta moduļa eksporta metodēm ir tāda, ka, lai piekļūtu objekta moduļa metodei, vispirms ir jāiegūst pats objekts (tas ir, kaut kādā veidā jāiegūst saite un pēc tam šī saite jāpārvērš objektā) .

Pēc tam būs pieejami objektu moduļa mainīgie un metodes. Pārziņa modulim zvans ir vienkāršāks, piemēram:
Katalogi. Darījumu puses. Metodes nosaukums

Šīs ir divas dažādas apelācijas. Konvertēt no atsauces uz objektu (metode GetObject) ir diezgan nopietna darbība sistēmai, jo, saņemot objektu, tiek nolasīti absolūti visi šī objekta dati, kas var būt diezgan garš.

Otrā atšķirība ir tā Objekta modulis ko sauc konkrēta elementa kontekstā. Attiecīgi mēs varam pieņemt, ka tas ir piemērojams konkrētam elementam (vairumā gadījumu tieši tā ir izmantota loģika).

Kas attiecas uz pārvaldnieka moduli, tas apraksta dažas kopīgas darbības grupai vai visiem direktorija vai kāda dokumenta elementiem. Piemēram, ja nepieciešams izdrukāt direktorijas vienumu, varat izmantot objektu moduli.

Bet pārvaldnieka modulī ir iespējams izveidot universālāku mehānismu, kas cita starpā izdrukās elementu grupu.

Turklāt piekļuve objektam modulim joprojām ir ilgāka darbība. Tāpēc vēlams šo problēmu atrisināt pārvaldnieka modulī.

Tas noslēdz mūsu iepazīšanos ar moduļiem 1C: Enterprise sistēmas konfigurācijā. Ja mēs īsi apkopojam visu iepriekš minēto, secinājumi ir šādi:

  • Programmatūras modulis ir konfigurācijas daļa, kurā var būt tikai teksts iebūvētajā 1C valodā
  • Programmatūras moduļi tiek klasificēti atbilstoši šajā rakstā aplūkotajiem veidiem. Katru skatu nosaka tā izvietojums un pieejamais programmas konteksts.
  • Moduļa struktūra sastāv no vairākām sadaļām, kuras ir sakārtotas noteiktā secībā. Sekciju sastāvu nosaka moduļa veids.

Ņemiet vērā arī to, ka mēs apzināti izlaidām viena veida moduļus, proti, komandu moduli. Tas nav nekas ievērojams, un mēs aicinām jūs iepazīties ar tā funkcionalitāti.

Līdz šim visu mūsu programmas kodu esam izskatījuši atsevišķi no lietojumprogrammas risinājuma, un, kā likums, mēs to ierakstījām kādā nelielā mūsu pašu testa konfigurācijā. Vai jūs zināt, ka “jūs nevarat vienkārši aiziet” un sākt rediģēt standarta konfigurācijas kodu? Nē? Tad nākamajā rakstā mēs to visu izskaidrosim!

1.1. Kopīgi moduļi ir izveidoti, lai īstenotu procedūras un funkcijas, kas apvienotas pēc kāda rakstura. Parasti vienas konfigurācijas apakšsistēmas procedūras un funkcijas (pārdošana, pirkšana) vai līdzīgas funkcionalitātes procedūras un funkcijas (darbs ar virknēm, vispārējs mērķis) tiek ievietotas vienā kopējā modulī.

1.2. Izstrādājot koplietotus moduļus, jāizvēlas viens no četriem koda izpildes kontekstiem:

Kopējais moduļa veids Vārda piemērs Servera zvans Serveris Ārējais savienojums Klients
(regulāra lietošana)
Klients
(pārvaldīta lietojumprogramma)
1. ServerisVispārēja nolūka (vai vispārējas nozīmes serveris)
2. Serveris, uz kuru zvanīt no klientaGeneral PurposeCallServer
3. KlientsVispārēja mērķa klients (vai vispārēja mērķa globāls)
4. Klients-serverisGeneral PurposeClientServer

2.1. Servera kopējie moduļi ir paredzēti servera procedūru un funkciju mitināšanai, kuras nav pieejamas lietošanai no klienta koda. Tie īsteno visu lietojumprogrammas iekšējo servera biznesa loģiku.
Lai konfigurācija darbotos pareizi ārējā savienojumā, pārvaldītajos un regulāros lietojumprogrammu režīmos, servera procedūras un funkcijas jāievieto kopējos moduļos ar šādiem raksturlielumiem:

  • Serveris(izvēles rūtiņa Servera zvans atiestatīt),
  • Klients (regulāra pieteikšanās),
  • Ārējais savienojums.

Šajā gadījumā iespēja izsaukt servera procedūras un funkcijas ar mainīgu tipu parametriem (piemēram, DirectoryObject, DocumentObject un tā tālāk.). Parasti tas ir:

  • apdarinātāji dokumentu, direktoriju utt. notikumu abonēšanai, kas kā parametru izmanto mainīgu vērtību (objektu).
  • servera procedūras un funkcijas, kurām kā parametrs tiek nodots objekts no direktoriju, dokumentu u.c. moduļiem, kā arī no moduļiem ar notikumu abonementiem.

Servera puses koplietotie moduļi tiek nosaukti saskaņā ar vispārīgiem metadatu objektu nosaukšanas noteikumiem.
Piemēram: Darbs ar failiem, Vispārīgs mērķis

Dažos gadījumos var pievienot postfix, lai novērstu nosaukumu konfliktus ar globālā konteksta rekvizītiem "Serveris".
Piemēram: RoutineTasksServer, Datu apmaiņas serveris.

2.2. Servera kopējie moduļi zvanīšanai no klienta satur servera procedūras un funkcijas, kuras var izmantot no klienta koda. Tie veido lietojumprogrammu servera klienta programmēšanas saskarni.
Šādas procedūras un funkcijas ir ievietotas kopējos moduļos ar šādu funkciju:

  • Serveris(izvēles rūtiņa Servera zvans uzstādīts)

Servera puses kopējie moduļi izsaukšanai no klienta tiek nosaukti saskaņā ar vispārējiem metadatu objektu nosaukšanas noteikumiem, un tie jānosauc ar postfix "Zvanu serveris".
Piemēram: Darbs ar FilesCalling serveri

Lūdzu, ņemiet vērā, ka eksportēšanas procedūrās un funkcijās šādos koplietotajos moduļos nedrīkst būt mainīga tipa parametri ( DirectoryObject, DocumentObject utt.), jo to pārsūtīšana no (vai uz) klienta kodu nav iespējama.

Skatīt arī:Ierobežojums “Server Call” karoga iestatīšanai parastajiem moduļiem

2.3. Klientu kopējie moduļi satur klienta biznesa loģiku (funkcionalitāte definēta tikai klientam), un tai ir šādas īpašības:

  • Klients (pārvaldīta lietojumprogramma))
  • Klients (regulāra pieteikšanās)

Izņēmums ir gadījumi, kad klienta procedūrām un funkcijām jābūt pieejamām tikai pārvaldītās lietojumprogrammas režīmā (tikai parastajā lietojumprogrammas režīmā vai tikai ārējā savienojuma režīmā). Šādos gadījumos ir pieņemama cita šo divu īpašību kombinācija.

Klientu kopējie moduļi tiek nosaukti ar postfix "Klients".
Piemēram: Darbs ar FilesClient, General PurposeClient

Skatiet arī: klienta darbības koda minimizēšana

2.4. Dažos gadījumos ir pieļaujams izveidot klienta-servera kopīgus moduļus ar procedūrām un funkcijām, kuru saturs ir vienāds gan serverī, gan klientā. Šādas procedūras un funkcijas ir ievietotas kopējos moduļos ar šādiem raksturlielumiem:

  • Klients (pārvaldīta lietojumprogramma)
  • Serveris(izvēles rūtiņa Servera zvans atiestatīt)
  • Klients (regulāra pieteikšanās)
  • Ārējais savienojums

Parastie šāda veida moduļi tiek nosaukti ar postfix "Klientu serveris".
Piemēram: Darbs ar FilesClient, General PurposeClientServer

Kopumā nav ieteicams definēt kopīgus moduļus gan serverim, gan klientam (pārvaldītai lietojumprogrammai). Klientam un serverim definēto funkcionalitāti ieteicams ieviest dažādos kopējos moduļos - skatīt rindkopas. 2.1. un 2.3. Šo nepārprotamo klienta un servera biznesa loģikas nošķiršanu nosaka apsvērumi par lietojumprogrammu risinājuma modularitātes palielināšanu, izstrādātāja kontroles vienkāršošanu pār klienta un servera mijiedarbību un kļūdu riska samazināšanu, ko rada būtiskas atšķirības klienta un servera izstrādes prasībās. kods (nepieciešamība samazināt klientam izpildīto kodu, atšķirīga objektu un platformu veidu pieejamība utt.). Šajā gadījumā jums jāpatur prātā, ka konfigurācijā neizbēgami palielinās kopējo moduļu skaits.

Īpašs jaukto klienta-servera moduļu gadījums ir formu un komandu moduļi, kas ir īpaši izstrādāti servera un klienta biznesa loģikas ieviešanai vienā modulī.

3.1. Ieteicams parasto moduļu nosaukumos ievērot vispārīgos metadatu objektu nosaukumu piešķiršanas noteikumus. Vispārējā moduļa nosaukumam jāsakrīt ar tās apakšsistēmas vai atsevišķa mehānisma nosaukumu, kuras procedūras un funkcijas tas īsteno. Izplatīto moduļu nosaukumos ieteicams izvairīties no tādiem vispārīgiem vārdiem kā “Procedūras”, “Funkcijas”, “Apdarītāji”, “Modulis”, “Funkcionalitāte” utt. un izmantot tos tikai izņēmuma gadījumos, kad tie pilnīgāk atklāj moduļa mērķi.

Lai atšķirtu vienas apakšsistēmas kopīgus moduļus, kas radīti dažādos kontekstos veikto procedūru un funkciju ieviešanai, ieteicams tiem piešķirt iepriekš punktos aprakstītos postfiksus. 2.1-2.4.

Kas ir moduļi un kam tieši tie paredzēti? Modulis satur programmas kodu. Turklāt ir vērts atzīmēt, ka atšķirībā no 7.7 platformas, kur kods varētu atrasties formas elementu īpašībās un izkārtojuma tabulu šūnās, 8.x platformā jebkurai koda rindiņai ir jāatrodas kādā modulī. . Parasti modulis sastāv no trim sadaļām - sadaļas mainīgo lielumu aprakstīšanai, sadaļas procedūru un funkciju aprakstīšanai un sadaļas galvenajai programmai. Šī struktūra ir raksturīga gandrīz visiem platformas moduļiem, ar dažiem izņēmumiem. Dažiem moduļiem nav mainīgā apraksta sadaļas vai galvenās programmas sadaļas. Piemēram, sesijas modulis un jebkurš vispārīgais modulis.

Moduļu izpildes konteksts parasti ir sadalīts klientā un serverī. Turklāt dažus moduļus var apkopot gan klienta, gan servera pusē. Un daži ir tikai servera vai klienta pusē. Tātad:

Lietojumprogrammas modulis

Modulis ir paredzēts, lai uztvertu lietojumprogrammas palaišanas (konfigurācijas ielādes) un tā darbības pārtraukšanas brīžus. Un pārbaudes procedūras var ievietot attiecīgajos pasākumos. Piemēram, startējot lietojumprogrammu, atjauniniet dažus atsauces konfigurācijas datus un, pabeidzot darbu, pajautājiet, vai ir vērts to vispār atstāt, varbūt darba diena vēl nav beigusies. Turklāt tas pārtver notikumus no ārējām iekārtām, piemēram, tirdzniecības vai fiskālā. Ir vērts atzīmēt, ka lietojumprogrammas modulis pārtver aprakstītos notikumus tikai tad, kad tas tiek palaists interaktīvi. Tie. kad tiek izveidots pats programmas logs. Tas nenotiek, ja lietojumprogramma tiek palaista com savienojuma režīmā.

8.2 platformā ir divi dažādi lietojumprogrammu moduļi. Tie ir parastās lietojumprogrammas modulis un pārvaldītās lietojumprogrammas modulis. Tie tiek aktivizēti, kad tiek palaisti dažādi klienti. Šādi tiek aktivizēts pārvaldītās lietojumprogrammas modulis, kad tīmekļa klients, plāns klients un biezais klients tiek palaists pārvaldītās lietojumprogrammas režīmā. Un parastais lietojumprogrammas modulis tiek aktivizēts, kad biezais klients tiek palaists parastā lietojumprogrammas režīmā.

Lietojumprogrammas modulis var saturēt visas sadaļas – mainīgo, procedūru un funkciju aprakstus, kā arī galvenās programmas aprakstus. Lietojumprogrammas modulis ir apkopots klienta pusē, tāpēc tas ievērojami ierobežo daudzu veidu datu pieejamību. Lietojumprogrammas moduļa kontekstu var paplašināt, izmantojot parasto moduļu metodes, kurām ir iestatīts rekvizīts “Servera izsaukums”. Visi mainīgie un metodes, kas ir atzīmētas kā eksportētas, būs pieejami jebkurā konfigurācijas modulī, kas darbojas klienta pusē. Tomēr, lai cik vilinoši tas nebūtu, jums nevajadzētu šeit ievietot lielu skaitu metožu. Jo vairāk koda tajā ir, jo ilgāks ir kompilācijas laiks un līdz ar to arī lietojumprogrammas palaišanas laiks, kas lietotājiem ir ļoti kaitinoši.

Kā minēts iepriekš, lietojumprogrammas modulis apstrādā lietojumprogrammas palaišanas un pārtraukšanas notikumus. Lai apstrādātu katru no šiem notikumiem lietojumprogrammas modulī, ir pāris apdarinātāji Pirms... un Kad... Atšķirības starp tiem ir tādas, ka, izpildot kodu apdarinātājā Pirms..., darbība vēl nav veikta. un mēs varam atteikties to izpildīt. Šim nolūkam ir paredzēta opcija Noraidīt. Ieslēgtajā apdarinātājā darbība jau ir notikusi, un mēs nevaram atteikties palaist lietojumprogrammu vai iziet no tās.

Ārējā savienojuma modulis

Moduļa mērķis ir līdzīgs lietojumprogrammas moduļa mērķim. Tas apstrādā lietojumprogrammas sākuma un beigu punktus. Ārējais savienojuma modulis tiek aktivizēts, kad lietojumprogramma tiek palaista com savienojuma režīmā. Pats ārējais savienošanas process ir neinteraktīvs process. Šajā režīmā notiek programmatisks darbs ar informācijas bāzi un lietojumprogrammas logs netiek atvērts, kas uzliek noteiktus ierobežojumus interaktīvajam darbam paredzēto metožu izmantošanai. Šajā režīmā nevar izmantot dialoga formu izsaukumus, brīdinājuma ziņojumus utt. Viņi vienkārši nedarbosies.

Tāpat kā lietojumprogrammas modulī, šeit ir pieejamas sadaļas mainīgo lielumu, metožu aprakstīšanai un sadaļas galvenajai programmai. Varat arī deklarēt eksporta mainīgos un metodes. Atšķirība ir tāda, ka com savienojuma režīmā viss darbs ar informācijas bāzi notiek servera pusē, tāpēc ārējā savienojuma modulis tiek kompilēts tikai serverī. Attiecīgi tajā nav pieejami parasto klientu moduļu eksporta mainīgie un metodes.

Sesijas modulis

Šis ir ļoti specializēts modulis, un tas ir paredzēts tikai sesijas parametru inicializācijai. Kāpēc jums bija jāizveido savs modulis šim nolūkam? Tas ir saistīts ar faktu, ka inicializācijas procesam var būt nepieciešama noteikta koda izpilde, turklāt lietojumprogramma var tikt palaista ar dažādiem klientiem (kas noved pie dažādu lietojumprogrammu moduļu vai ārējā savienojuma moduļa izpildes), kā arī sesijas parametri ir jāveic jebkurā palaišanas režīmā. Tāpēc bija nepieciešams papildu modulis, kas darbojas jebkurā lietojumprogrammas palaišanas režīmā.

Sesijas modulī ir viens notikums “SettingSessionParameters”, kas tiek izpildīts pats pirmais, pat pirms lietojumprogrammas moduļa notikuma BeforeSystemStartOperation. Mainīgo deklarāciju sadaļa un galvenā programmas sadaļa tajā nav pieejama. Jūs arī nevarat deklarēt eksporta metodes. Modulis ir kompilēts servera pusē.

Jums nevajadzētu būt kārdinājumam, ka šis modulis tiek izpildīts ikreiz, kad tiek palaista lietojumprogramma, un tajā nevajadzētu ievietot kodu, kas nav tieši saistīts ar sesijas parametru inicializāciju. Tas ir saistīts ar faktu, ka SetSessionParameters apdarinātāju sistēmas darbības laikā var izsaukt atkārtoti. Piemēram, tas notiek gadījumos, kad mēs piekļūstam neinicializētiem parametriem. Un, lai gan ir iespējams noķert šī notikuma pirmās palaišanas brīdi (RequiredParameters ir tipa Undefined), tomēr jāņem vērā, ka šis modulis ir kompilēts priviliģētajā režīmā, t.i. tas nekontrolē piekļuves tiesības. Un otrs punkts ir tas, ka mēs joprojām nevaram būt simtprocentīgi pārliecināti, ka sistēma tiks iedarbināta. Pēkšņi lietojumprogrammas modulī rodas kļūme, un mēs cenšamies veikt dažas darbības ar datu bāzi.

Kopējie moduļi

Moduļi ir paredzēti, lai aprakstītu dažus izplatītus algoritmus, kas tiks izsaukti no citiem konfigurācijas moduļiem. Vispārējais modulis nesatur mainīgo apraksta sadaļu un galvenās programmas sadaļu. Tajā var deklarēt eksporta metodes, kuru pieejamības kontekstu noteiks kompilācijas karodziņi. Tā kā mainīgā apraksta sadaļa nav pieejama, globālos mainīgos nevar definēt kopējos moduļos. Lai to izdarītu, jums ir jāizmanto parasto moduļu funkcijas ar atgriešanas vērtību saglabāšanu kešatmiņā vai lietojumprogrammas modulis. Ir vērts paturēt prātā, ka pat tad, ja koplietojamā moduļa atkārtotas izmantošanas rekvizīts ir iestatīts uz “Uz sesijas ilgumu”, šajā gadījumā kešatmiņā saglabāto vērtību kalpošanas laiks nepārsniedz 20 minūtes no pēdējās piekļuves brīža. viņiem.
Kopējā moduļa darbība ir atkarīga no iestatītajiem parametriem (globāls vai nē, dažādi kompilācijas karodziņi, vai ir pieejams servera izsaukums utt.). Šajā rakstā mēs neapskatīsim visu veidu iestatījumus, kā arī uzvedības iezīmes un nepilnības, kas rodas, nepamatoti iestatot īpašumu karogus. Šī ir atsevišķa raksta tēma. Pakavēsimies tikai pie dažiem punktiem, kas būtu jāievēro, uzstādot karogus:

  • Labs noteikums ir neizmantot globālo karogu visur. Tas samazinās lietojumprogrammas palaišanas laiku, kā arī uzlabos koda lasāmību (protams, ja parastajam modulim ir pilnīgi jēgpilns nosaukums).
  • Nav vēlams izmantot vairāk kā vienu kompilācijas karogu. Nav daudz metožu, kas jāizpilda dažādos kontekstos, un, ja šādas metodes joprojām ir nepieciešamas, tad tām var piešķirt atsevišķu kopīgu moduli.
  • Karodziņam "Servera izsaukums" ir jēga tikai tad, ja modulis ir apkopots "Serverī". Tāpēc visi pārējie kompilācijas karodziņi ir jānoņem, lai izvairītos no dažādām problēmām.
  • Ja moduļa metodes ietver masīvu datu apstrādi, lasīšanu un ierakstīšanu datu bāzē, tad, lai palielinātu darba ātrumu, labāk ir atspējot piekļuves tiesību kontroli, uzstādot karogu “Privileģēts”. Šis režīms ir pieejams tikai koplietotiem moduļiem, kas apkopoti serverī.

Veidlapas modulis

Tas ir paredzēts lietotāja darbību apstrādei, t.i. dažādi notikumi, kas saistīti ar datu ievadi un to ievades pareizības apstrādi. Parastās formas modulis ir pilnībā sastādīts uz klienta. Pārvaldītās veidlapas modulis ir skaidri norobežots ar izpildes kontekstu, tāpēc visiem mainīgajiem un metodēm ir jābūt kompilācijas direktīvai. Ja direktīva nav skaidri norādīta, šis mainīgais vai metode tiks apkopota servera pusē. Veidlapas modulis satur sadaļas mainīgo lielumu un metožu aprakstiem, kā arī sadaļas galvenajai programmai.

Objekta modulis

Šis modulis ir raksturīgs daudziem konfigurācijas objektiem un parasti ir paredzēts objektu notikumu apstrādei. Piemēram, notikumi objektu ierakstīšanai un dzēšanai, notikumi dokumentu ievietošanai utt.

Daži objekta moduļa notikumi dublē formas moduļa notikumus. Piemēram, notikumi, kas saistīti ar ierakstu. Tomēr saprotiet, ka veidlapas moduļa notikumi tiks izpildīti tikai konkrētajā objekta formā. Kopumā var būt vairākas no šīm formām. Un objekta moduļa notikumi tiks izsaukti jebkurā gadījumā, pat programmatiskā darba brīdī ar objektu. Tāpēc, ja jums visos gadījumos ir jāizpilda kāds kods, labāk šim nolūkam izmantot objekta moduļa notikumu.

Objekta modulis tiek kompilēts tikai serverī. Tajā varat definēt eksporta mainīgos un metodes, kas būs pieejamas citos konfigurācijas moduļos. Izmantojot šīs īpašības un metodes, mēs varam ievērojami paplašināt objekta funkcionalitāti.

Objektu pārvaldnieka modulis

Šis modulis pastāv daudziem konfigurācijas objektiem. Šī moduļa galvenais mērķis ir no jauna definēt standarta atlases notikumu, kas notiek, ievadot rindu, un paplašināt pārvaldnieka funkcionalitāti. Modulis ir kompilēts servera pusē. Tas ļauj definēt eksportēšanas rekvizītus un metodes. Pārvaldnieka eksportēšanas metožu izsaukšanai nav nepieciešams izveidot pašu objektu.

Visam iepriekš minētajam varat pievienot attēlu ar dažiem konfigurācijas moduļiem un veidiem, kā savstarpēji izsaukt metodes pārvaldītās lietojumprogrammas režīmā. Bultiņa norāda virzienu, kurā varat griezties, lai izsauktu atbilstošo metodi. Kā redzams diagrammā, servera konteksts ir pilnībā slēgts. Bet no klienta konteksta ir iespējams piekļūt servera metodēm.

Diagrammas simboli: O.M. Klients - Klienta kopējais modulis; O.M. Serveris – servera koplietotais modulis; M.F. Klients - veidlapas moduļa klienta procedūras; M.F. Serveris — veidlapas moduļa servera procedūras.

Programmatūras moduļos ir izpildāms kods 1C valodā, kas nepieciešams, lai noteiktā veidā reaģētu uz sistēmas vai lietotāja darbībām, ja nepietiek ar vizuālās izstrādes rīkiem. Mēs varam arī aprakstīt savas metodes (procedūras un funkcijas) programmatūras moduļos.

Parasti programmatūras modulis sastāv no trim sadaļām:

  • mainīgā deklarācijas apgabals;
  • procedūru un funkciju apraksta apgabals;
  • programmas galvenais teksts.

Programmatūras moduļa struktūras piemērs:

//******************** MAINĪGĀ DEKLARĀCIJAS APgabals **********************

Perem Uzvārds Eksportēt; / /tas ir globāls mainīgais
Mainīt vārdu, uzvārdu; //šis ir moduļa mainīgais
Perem pilns vārds; //tas ir arī moduļa mainīgais, un tam var piekļūt

//no jebkuras mūsu moduļa procedūras un funkcijas

//*************** PROCEDŪRAS UN FUNKCIJAS APRAKSTS APRAKSTS ****************

Procedūra Procedūra1 ()
Mainīgais Kopējais ; / /Rezultāts ir lokāls mainīgais (procedūras mainīgais)

Kopā = Uzvārds + " "+ Vārds + " "+ Vidējais vārds;

Beigās Procedūra

Funkcija Funkcija 1()

// funkciju operatori

Return(Uzvārds + " "+ Vārds);

EndFunction

//******************** PROGRAMMAS GALVENAIS TEKSTS ***********************

Uzvārds = "Ivanovs";
Vārds = "Ivans";
Patronīms = "Ivanovičs";

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

Konkrētā programmatūras modulī var trūkt kāda no apgabaliem.
Mainīgā deklarācijas apgabals ievieto no moduļa teksta sākuma līdz pirmajam procedūras vai funkcijas priekšrakstam vai jebkuram izpildāmam priekšrakstam. Šajā sadaļā var būt tikai mainīgo mainīgo deklarācijas priekšraksti.

Procedūru un funkciju apraksta zona ievieto no pirmā procedūras vai funkcijas priekšraksta uz jebkuru izpildāmu paziņojumu ārpus procedūras vai funkcijas apraksta pamatteksta.

Galvenā programmas teksta zona tiek novietots no pirmā izpildāmā priekšraksta ārpus procedūru vai funkciju kopuma līdz moduļa beigām. Šajā sadaļā var būt tikai izpildāmi priekšraksti. Galvenā programmas teksta zona tiek izpildīta moduļa inicializācijas brīdī. Parasti galvenās programmas sadaļā ir lietderīgi ievietot operatorus mainīgo inicializēšanai ar jebkādām īpašām vērtībām, kas jāpiešķir pirms pirmā moduļa procedūru vai funkciju izsaukuma.

Programmatūras moduļi atrodas tajās konfigurācijas vietās, kurās var būt nepieciešams konkrētu darbības algoritmu apraksts. Šie algoritmi jāformalizē procedūru vai funkciju veidā, kuras pati sistēma izsauks iepriekš noteiktās situācijās (piemēram, atverot direktorija formu, nospiežot pogu dialoglodziņā, mainot objektu utt.) .

Katru atsevišķo programmatūras moduli sistēma uztver kā vienotu veselumu, tāpēc visas programmatūras moduļa procedūras un funkcijas tiek veiktas vienotā kontekstā.

Moduļa izpildes konteksts ir sadalīts klientā un serverī. Turklāt dažus programmatūras moduļus var apkopot gan klienta, gan servera pusē.

Lietojumprogrammas modulis (pārvaldīts vai parasts)

Lietojumprogrammas modulis apraksta notikumu procedūras (apdarinātājus), kas tiek inicializēti sistēmas sākumā un beigās. Piemēram, kad programma sāk darboties, jūs varat atjaunināt dažus konfigurācijas datus, un, izejot no programmas, varat jautāt, vai ir vērts vispār aizvērt programmu. Turklāt šis modulis pārtver notikumus no ārējām iekārtām, piemēram, tirdzniecības vai fiskālā. Ir vērts atzīmēt, ka lietojumprogrammas modulis tiek izpildīts tikai tad, kad programma tiek palaista interaktīvi, tas ir, kad tiek palaists programmas logs. Tas nenotiek, ja lietojumprogramma tiek palaista com savienojuma režīmā.
1C 8 platformā ir divi dažādi lietojumprogrammu moduļi. Tie ir parastās lietojumprogrammas modulis un pārvaldītās lietojumprogrammas modulis. Tie tiek aktivizēti, kad tiek palaisti dažādi klienti. Tādējādi pārvaldītās lietojumprogrammas modulis tiek aktivizēts, kad tīmekļa klients, plāns klients un biezais klients tiek palaists pārvaldītās lietojumprogrammas režīmā. Un parastais lietojumprogrammas modulis tiek aktivizēts, kad biezais klients tiek palaists parastā lietojumprogrammas režīmā. Lietojumprogrammas palaišanas režīma iestatījums ir norādīts konfigurācijas rekvizītā “Pamata palaišanas režīms”.

Lietojumprogrammas modulis var saturēt visas 3 sadaļas – mainīgo lielumu deklarācijas, procedūru un funkciju aprakstus, kā arī programmas galveno tekstu. Lietojumprogrammas modulis ir apkopots klienta pusē, kas ievērojami ierobežo daudzu datu veidu izmantošanu. Lietojumprogrammas moduļa kontekstu var paplašināt, izmantojot parasto moduļu metodes, kurām ir iestatīts rekvizīts “Servera izsaukums”. Visi lietojumprogrammu moduļu mainīgie un metodes, kas ir atzīmētas kā eksportētas, būs pieejami jebkurā konfigurācijas modulī, kas darbojas klienta pusē. Tomēr, lai cik vilinoši tas nebūtu, nevajadzētu šeit ievietot lielu skaitu procedūru un funkciju. Jo vairāk koda ir dotajā modulī, jo ilgāks ir kompilācijas laiks un līdz ar to arī lietojumprogrammas palaišanas laiks.

Kā minēts iepriekš, lietojumprogrammas modulis apstrādā lietojumprogrammas palaišanas un pārtraukšanas notikumus. Lai apstrādātu katru no šiem notikumiem lietojumprogrammas modulī, ir apdarinātāju pāris Pirms... un Kad... Atšķirības starp tiem ir šādas: izpildot kodu apdarinātājā Pirms..., darbība vēl nav veikta. un mēs varam atteikties to izpildīt. Šim nolūkam ir paredzēta opcija Noraidīt. Ieslēgtajā apdarinātājā darbība jau ir notikusi, un mēs nevaram atteikties palaist lietojumprogrammu vai iziet no tās.

Ārējā savienojuma modulis

  • var ietvert visas 3 zonas
  • atrodas konfigurācijas saknes sadaļā

Moduļa mērķis ir līdzīgs lietojumprogrammas moduļa mērķim. Tas apstrādā lietojumprogrammas sākuma un beigu notikumus. Ārējais savienojuma modulis tiek aktivizēts, kad lietojumprogramma tiek palaista com savienojuma režīmā. Pats ārējais savienošanas process nav interaktīvs process. Šajā režīmā notiek programmatisks darbs ar informācijas bāzi un lietojumprogrammas logs netiek atvērts, kas uzliek noteiktus ierobežojumus interaktīvajam darbam paredzēto metožu izmantošanai. Šajā režīmā nevar izmantot dialoga formu izsaukumus, brīdinājumus un ziņojumus lietotājam utt. Viņi vienkārši netiks izpildīti.

Tāpat kā lietojumprogrammu modulī, arī šeit ir pieejamas visas trīs jomas: mainīgo deklarācijas, procedūru un funkciju apraksti, kā arī programmas galvenais teksts. Galvenā atšķirība no lietojumprogrammas moduļa ir tāda, ka com-connection režīmā viss darbs ar informācijas bāzi notiek servera pusē, tāpēc ārējā savienojuma modulis tiek kompilēts servera pusē. Attiecīgi tajā nav pieejami parasto klientu moduļu eksporta mainīgie un metodes.

Sesijas modulis

  • darbojas servera pusē
  • atrodas konfigurācijas saknes sadaļā

Šis ir ļoti specializēts modulis, kas paredzēts tikai sesijas parametru inicializācijai. Kāpēc jums bija jāizveido savs modulis šim nolūkam? Tās lietošana ir saistīta ar to, ka pašu lietojumprogrammu var palaist dažādos režīmos (kā rezultātā tiek izpildīts vai nu pārvaldīts lietojumprogrammas modulis, parastais lietojumprogrammas modulis vai ārējais savienojuma modulis), un sesijas parametru inicializācija jāveic neatkarīgi no no startēšanas režīma. Lai nerakstītu vienu un to pašu programmas kodu visos trīs šajos moduļos, mums bija nepieciešams papildu modulis, kas darbojas neatkarīgi no lietojumprogrammas palaišanas režīma.

Sesijas modulī ir viens notikums “SettingSessionParameters”, kas tiek izpildīts pats pirmais, pat pirms lietojumprogrammas moduļa notikuma BeforeSystemStartOperation. Mainīgo deklarāciju sadaļa un galvenā programmas sadaļa tajā nav pieejama. Jūs arī nevarat deklarēt eksporta metodes. Modulis ir kompilēts servera pusē.

Kopējie moduļi

  • var ietvert apgabalu, kurā aprakstītas procedūras un funkcijas
  • izpildīts servera vai klienta pusē (atkarībā no moduļa iestatījumiem)
  • atrodas konfigurācijas objektu koka atzarā “Vispārīgi” - “Vispārīgie moduļi”

Parastie moduļi ir paredzēti, lai aprakstītu dažus izplatītus algoritmus, kas tiks izsaukti no citiem konfigurācijas moduļiem. Vispārējais modulis nesatur mainīgo deklarāciju apgabalus un programmas galveno tekstu. Tajā var deklarēt eksporta metodes, kuru pieejamību noteiks moduļa iestatījumi (kurā pusē tas tiek izpildīts: servera vai klienta pusē). Tā kā mainīgā apraksta sadaļa nav pieejama, globālos mainīgos nevar definēt kopējos moduļos. Šim nolūkam varat izmantot lietojumprogrammas moduli.

Kopējā moduļa darbība ir atkarīga no iestatītajiem parametriem (globāls vai nē, dažādi kompilācijas karodziņi, vai ir pieejams servera izsaukums utt.). Šeit ir daži padomi par parasto moduļu iestatīšanu.

Laba prakse ir neizmantot globālo karogu visur. Tas samazinās lietojumprogrammas palaišanas laiku, kā arī uzlabos koda lasāmību (protams, ja kopējam modulim ir pilnīgi jēgpilns nosaukums);
- Nav vēlams izmantot vairāk kā vienu kompilācijas karogu. Nav daudz metožu, kas jāizpilda dažādos kontekstos, un, ja šādas metodes joprojām ir nepieciešamas, tad tām var piešķirt atsevišķu kopīgu moduli;
- karogam “Zvanu serveris” ir jēga tikai tad, ja modulis ir kompilēts “Serverī”. Tāpēc visi pārējie kompilācijas karodziņi ir jānoņem, lai izvairītos no dažādām problēmām;
- ja moduļa metodes ietver masīvu datu apstrādi, nolasīšanu un rakstīšanu datu bāzē, tad, lai palielinātu darba ātrumu, labāk ir atspējot piekļuves kontroli, uzstādot karogu “Priviliģēts”. Šis režīms ir pieejams tikai koplietotiem moduļiem, kas apkopoti serverī.

Veidlapas modulis

  • var ietvert visas 3 zonas
  • izpildīts servera un klienta pusē

Veidlapas modulis ir paredzēts lietotāja darbību apstrādei ar šo veidlapu (pogas klikšķa notikuma apstrāde, veidlapas informācijas mainīšana utt.). Ir arī notikumi, kas tieši saistīti ar pašu formu (piemēram, tās atvēršana vai aizvēršana). Pārvaldīto un parasto formu moduļi atšķiras, pirmkārt, ar to, ka pārvaldītās formas modulis ir skaidri sadalīts kontekstā. Katrai procedūrai vai funkcijai ir jābūt kompilācijas direktīvai. Ja kompilācijas direktīva nav norādīta, tad šī procedūra vai funkcija tiek izpildīta servera pusē. Parastajā formā viss kods tiek izpildīts klienta pusē.

Pārvaldāmās formas struktūrā ir sadaļa mainīgo lielumu deklarācijām, procedūru un funkciju aprakstiem un programmas pamattekstam (tiek izpildīts veidlapas inicializācijas brīdī). Mēs varam piekļūt standarta veidlapas notikumiem, izmantojot veidlapas paredzamo procedūru un funkciju sarakstu (Ctrl+Alt+P) vai izmantojot pašas veidlapas rekvizītu paleti.

Ja formai ir piešķirts galvenais atribūts, veidlapas modulī kļūst pieejami lietojumprogrammas objekta rekvizīti un metodes, kas tiek izmantotas kā galvenais atribūts.

Objekta modulis

  • var ietvert visas 3 zonas
  • darbojas servera pusē

Šis modulis ir pieejams lielākajai daļai konfigurācijas objektu un parasti ir paredzēts ar objektu tieši saistītu notikumu apstrādei. Piemēram, objektu ierakstīšanas un dzēšanas notikumi, objekta detaļu pabeigšanas pārbaude, dokumenta ievietošana utt.

Daži objekta moduļa notikumi dublē formas moduļa notikumus. Piemēram, notikumi, kas saistīti ar ierakstu. Tomēr jāsaprot, ka formas moduļa notikumi tiks izpildīti tikai konkrētajā objekta formā, tas ir, kad tiks atvērta konkrētā forma. Un objekta moduļa notikumi tiks izsaukti jebkurā gadījumā, pat programmatiskā darba brīdī ar objektu. Tāpēc, ja jums ir nepieciešamas metodes, kas saistītas ar objektu, nesaistot to ar noteiktu objekta formu, tad labāk šim nolūkam izmantot objekta moduli.

Objektu pārvaldnieka modulis

  • var ietvert visas 3 zonas
  • darbojas servera pusē

Objektu pārvaldnieka modulis parādījās tikai sākot ar versiju 1C 8.2. Pārvaldnieka modulis pastāv visiem lietojumprogrammu objektiem un ir paredzēts, lai pārvaldītu šo objektu kā konfigurācijas objektu. Pārvaldnieka modulis ļauj paplašināt objekta funkcionalitāti, ieviešot (rakstīšanas) procedūras un funkcijas, kas attiecas nevis uz konkrētu datu bāzes objekta gadījumu, bet gan uz pašu konfigurācijas objektu. Objektu pārvaldnieka modulis ļauj izvietot vispārīgas procedūras un funkcijas dotajam objektam un piekļūt tām no ārpuses, piemēram, no apstrādes (protams, ja šai procedūrai vai funkcijai ir atslēgvārds Export). Ko jaunu tas mums sniedz? Kopumā nekas, izņemot procedūru organizēšanu pēc objektiem un glabāšanu atsevišķās vietās - objektu pārvaldnieka moduļos. Tikpat veiksmīgi šīs procedūras un funkcijas varam ievietot vispārīgajos moduļos, taču 1C iesaka objektu pārvaldnieka modulī ievietot vispārīgās procedūras un objektu funkcijas. Objektu pārvaldnieku moduļa procedūru un funkciju izmantošanas piemēri: direktorija vai dokumenta atsevišķu rekvizītu sākotnējā aizpildīšana noteiktos apstākļos, direktorija vai dokumenta detaļu aizpildīšanas pārbaude noteiktos apstākļos utt.

Komandu modulis

  • var saturēt sadaļu, kurā aprakstītas procedūras un funkcijas
  • izpildīts klienta pusē

Komandas ir objekti, kas ir pakārtoti lietojumprogrammas objektiem vai konfigurācijai kopumā. Katrai komandai ir komandu modulis, kurā var aprakstīt iepriekš definētu CommandProcess() procedūru šīs komandas izpildei.

Jaunajās 1C:Enterprise sistēmas konfigurāciju versijās daudzas funkcijas un procedūras ir pārvietotas no objektu moduļiem (dokumenti, direktoriji utt.) uz pārvaldnieka moduļiem. Apskatīsim atšķirības starp šiem diviem moduļiem.

Saskaņā ar objektorientētās programmēšanas teoriju objektu metodes iedala divās grupās: statiskās un vienkāršas. Vienkāršām metodēm ir piekļuve tikai noteiktam klases gadījumam. Statiskajām metodēm nav piekļuves objektu datiem, bet tās darbojas ar klasi kopumā.

Ja mēs to visu pārtulkosim 1C:Enterprise sistēmas terminos, tad Objekta modulis satur vienkāršas metodes. Lai tos izmantotu, vispirms jāiegūst konkrēts objekts: direktorijas elements, dokuments utt. Pārvaldnieka modulis satur statiskas metodes. Lai to izmantotu, nav nepieciešams atsevišķi iegūt katru konkrēto objektu, tas ļauj strādāt ar visu kolekciju uzreiz.

Objekta modulis var būt procedūras un funkcijas, kuras var izmantot ārēji. Šim nolūkam šādu procedūru vai funkciju apzīmē ar vārdu Eksportēt.

Funkcija NewFunction() Eksportēt

Lai izmantotu šādu funkciju no objekta moduļa, vispirms ir jāiegūst saite uz vajadzīgo objektu, izmantojot funkciju GetObject().



Per = objekts. NewFunction() ;

Tāpat jūs varat izveidot jaunus mainīgos, ko var izmantot no dažādiem konfigurācijas objektiem.

Mainīgais JaunsMainīgais eksports

Direktorija elements = Katalogi. Nomenklatūra. FindByCode("000000001" );
Objekts = direktorija elements. GetObject() ;
Objekts. JaunsMainīgais= );

Tādā veidā var papildināt objektu standarta procedūras, funkcijas un īpašības (mainīgos). Šādi mainīgie ir dinamiski, tie netiek saglabāti informācijas bāzē un pastāv tikai strādājot ar saņemto objektu.

Pārvaldnieka modulis ir visas vienādas iespējas, vienīgā atšķirība ir tā, ka, lai to izmantotu, nav jāiegūst konkrēts objekts, pārvaldnieka modulis ļauj strādāt ar visu noteikta veida objektu kolekciju.

Procedūra NewProcedure() Eksportēt

Direktorija elements = Katalogi. Nomenklatūra. NewProcedure();

Vai mainīgajam:

Mainīgais JaunsMainīgais eksports

Direktorija elements = Katalogi. Nomenklatūra. jaunsMainīgais;

Apskatīsim atšķirības objekta moduļa un pārvaldnieka moduļa lietošanā, izmantojot dokumenta drukātās formas izveides procedūras piemēru.

Izmantojot objekta moduli, kods izskatīsies šādi:

Funkcija Drukāt dokumentu (saiti) Eksportēt
//Šai funkcijai ir jānodod saite uz konkrētu dokumentu
Atgriezt TabDoc;
EndFunction

Dokumenta veidlapā ir jāizveido procedūra, kas nodod saiti uz dokumentu drukāšanas funkcijai.

&OnClient
Procedūras drukāšana (komanda)
TabDoc = PrintOnServer();
TabDoc. Show() ;
Beigās Procedūra
&Serverī
Funkcija PrintOnServer()
Doc = FormAttributesValue("Objekts") ;
Atgriezties Doc. DrukātDokuments(Objekts.Saite) ;
EndFunction

Šīs metodes trūkums ir tāds, ka tā drukā tikai vienu objektu. Ja jums ir jādrukā vairāki dokumenti vienlaikus, jums ir jāiegūst katrs no tiem un pēc tam jāizsauc funkcija no objekta moduļa. Tas prasa ievērojamus sistēmas resursus, jo, izgūstot objektu, viss objekts tiek ievietots RAM.

No veiktspējas viedokļa daudz labāk ir izmantot pārvaldnieka moduli, kad vien iespējams. Mūsu piemērā problēmas risinājums izskatīsies šādi.
Funkcija PrintOnServer()
Atgriezt dokumentus. MūsuDokuments. PrintDocument (ArrayLinks);
EndFunction

Ja izmantojat pārvaldnieka moduli, drukāšanas procedūru var izsaukt gan no dokumenta formas, gan no saraksta formas, nododot saites uz vairākiem dokumentiem masīvā. Šajā gadījumā sistēmai nav jāiegūst katrs dokuments no masīva, kas ievērojami ietaupa sistēmas resursus.

Tātad, kad izmantot objekta moduli un kad izmantot pārvaldnieka moduli?

Tas viss ir atkarīgs no uzdevuma. Ja tā pabeigšanai pietiek ar atsauci uz objektu (piemēram, drukas uzdevums), tad labāk izmantot pārvaldnieka moduli. Ja uzdevums ir mainīt datus, piemēram, aizpildīt dokumentu, tad tas ir jāiegūst un jāizmanto objekta modulis.