1 soniyada mijozlar bilan ishlash moduli. Umumiy modullar. Tashqi qo'shilish bayrog'i

Maqolada "1C-da rivojlanishning birinchi qadamlari" turkumi davom etadi, unda quyidagi masalalar batafsil muhokama qilinadi:

  • Dasturiy ta'minot moduli nima va u qanday bo'limlardan iborat?
  • Ilova moduli nima uchun? Nega ulardan ikkitasi bor? Qaysi biri qachon ishga tushadi? Ishning qanday nozik tomonlari bor?
  • Tizim ishining boshlanishi bilan qanday hodisalar bog'liq, ularni qanday va qayerda qayta ishlash kerak?
  • Tashqi ulanish moduli nima uchun? Qachon va qanday foydalanish kerak?
  • Seans moduli qachon ishlatiladi?
  • Umumiy modullar nima? Uning xususiyatlari va ishlash qoidalari qanday? Nima uchun "Qaytish qiymatlarini qayta ishlatish" xususiyatidan foydalanish kerak?
  • Form moduli qachon ishlatiladi va unda qanday hodisalarni qayta ishlash mumkin?
  • Ob'ekt moduli nima uchun? U qanday bo'limlardan iborat? Mavjud modul hodisalarini qanday ko'rishim mumkin?
  • Qiymat menejeri modullari (konstantalar uchun) va yozuvlar to'plami modullari (registrlar uchun) bilan ishlashning qanday nozik tomonlari bor?
  • Ob'ekt moduli va menejer moduli o'rtasidagi farq nima? Ikkinchisini qachon ishlatish kerak?

Qo'llanilishi

Maqolada 1C: Enterprise platformasi 8.3.4.496 muhokama qilinadi. Material platformaning joriy versiyalari uchun ham tegishli.

"1C: Enterprise 8.3" da modullar

Modullar - bu dastur kodini o'z ichiga olgan ob'ektlar.

Platformada juda ko'p turdagi modullar mavjud bo'lib, ularning har biri o'z maqsadi va xususiyatlariga ega.

Har qanday kod satri ba'zi modulda bo'lishi kerak. Umumiy maqsadli modullar va ob'ekt modullari mavjud. Ba'zi modullarni ham mijoz, ham serverda, ba'zilari esa faqat serverda kompilyatsiya qilish mumkin.

Modul bir nechta bo'limlardan iborat bo'lishi mumkin. O'zgaruvchilar tavsifi bo'limi ushbu modulning mahalliy o'zgaruvchilarini tavsiflaydi, keyinchalik ular har qanday protsedurada ishlatilishi mumkin.

Har bir protsedura doirasida siz modul o'zgaruvchisiga kirishingiz mumkin. Bundan tashqari, protseduraning o'zida bir xil nomdagi boshqa o'zgaruvchan deklaratsiya bo'lishi mumkin. Bu ushbu protseduraning mahalliy o'zgaruvchisi bo'ladi.

Xuddi shu nomga qaramay, bu ikki xil o'zgaruvchidir: biri ma'lum bir protsedura ichida, ikkinchisi esa undan tashqarida ishlatiladi.

Ba'zi modullarda o'zgaruvchilar Server yoki Mijozda kompilyatsiya joyiga (mavjudligi) ega bo'lishi mumkin. Masalan:

O'zgaruvchilarni tavsiflovchi bo'limdan keyin ushbu modulning mahalliy usullari ko'rsatilgan protseduralar va funktsiyalar bo'limi keladi. Ba'zi modullar protsedura yoki funksiya qayerda kompilyatsiya qilinishini ko'rsatishi kerak.

Asosan, kompilyatsiya direktivasi o'tkazib yuborilishi mumkin. Bunday holda, standart kompilyatsiya direktivasi Server hisoblanadi. Biroq, dastur kodini tahlil qilish qulayligi uchun, berilgan protsedura qayerda kompilyatsiya qilinishini aniq ko'rsatish tavsiya etiladi. Jarayonlarni tasvirlash tartibi muhim emas.

Modul oxirida barcha protseduralar va funksiyalar tavsiflangandan so'ng, asosiy dasturning bo'limi mavjud bo'lib, u ba'zi operatorlarni o'z ichiga olishi va forma modulining mahalliy o'zgaruvchilarini ishga tushirishi mumkin. Ushbu bo'lim modulga kirishda bajariladi.

Demak, masalan, element formasini ochishda birinchi navbatda forma modulining asosiy dastur bo'limi bajariladi.

Shuni ta'kidlash kerakki, o'zgaruvchan deklaratsiya bo'limi va asosiy dastur bo'limi barcha modullar uchun mavjud emas (ya'ni, bu bo'limlar ba'zi modullarda amal qilmaydi). Protseduralar va funktsiyalarni tavsiflash uchun bo'lim mutlaqo har qanday modulda mavjud bo'lishi mumkin.

Ilova moduli

Ushbu modul dasturni ishga tushirish va tugatish hodisalarini boshqarish uchun mo'ljallangan. Misol uchun, dasturni ishga tushirganingizda, siz valyuta kurslarini Internetdan yuklab olishingiz mumkin. Ilovani to'xtatganda, foydalanuvchi bilan uning chiqish niyati borligini tasdiqlashingiz mumkin.

Shuningdek, dastur modulida tashqi hodisalarni uskunadan ushlab turishga imkon beruvchi maxsus ishlov beruvchilar mavjud.

Bu magnit kartani o'quvchi yoki fiskal ro'yxatga oluvchidan kelgan voqealar bo'lishi mumkin. Va bu hodisalarni qandaydir tarzda qayta ishlash ham mumkin.

Iltimos, dastur modulida nazorat qilinadigan tizimning interaktiv ishga tushirilishi ekanligini unutmang.

Agar 1C dasturi ishga tushirilsa, masalan, com ulanish rejimida dastur moduli ishlamaydi. Bunday holda, dastur oynasi yaratilmaydi.

Shuni ta'kidlash kerakki, Platforma 8.3 da ikkita turli xil dastur modullari mavjud: boshqariladigan dastur moduli va oddiy dastur moduli. Boshqariladigan dastur moduli hodisalari Boshqariladigan Ilova Yupqa va Qalin mijoz va Veb mijoz ishga tushirilganda qayta ishlanadi.

Modul Doimiy ariza rejimda qalin mijozni ishga tushirganda ishlaydi Doimiy ariza, bu formada odatiy buyruq interfeysini o'z ichiga oladi Asosiy menyu.

Agar dastur ishlayotgan bo'lsa Boshqariladigan, va rejimida Doimiy ariza, keyin modul uchun bo'lgani kabi ishlov beruvchi protseduralarini tavsiflash kerak Boshqariladigan ilova, va modul uchun Doimiy ariza.

Modul Boshqariladigan ilova ildiz konfiguratsiya tugunining kontekst menyusidan tanlanishi mumkin.

Ushbu modul ildiz konfiguratsiya elementining xususiyatlar palitrasidan ham ochilishi mumkin.

Modul ochish uchun Doimiy ariza, siz konfiguratsiya sozlamalariga murojaat qilishingiz kerak (buyruq Variantlar menyuda Xizmat).

Shakl ochiladi Variantlar. Xatcho'pda Umumiy konfiguratsiyani tahrirlash rejimi belgilanishi kerak Boshqariladigan ilova Va Doimiy ariza.

Bu holda modul Doimiy ariza ildiz tugunining xususiyatlaridan ham ochish mumkin bo'ladi.

Qayta ishlash mumkin bo'lgan voqealar ro'yxati Boshqariladigan Va Doimiy ariza bir xil.

Ushbu modul o'zgaruvchilarni e'lon qilish bo'limi, ixtiyoriy protseduralar va funktsiyalar tavsifi bo'limi va asosiy dastur bo'limini o'z ichiga olishi mumkin. Ammo modulda ixtiyoriy protseduralar va funktsiyalardan tashqari, maxsus hodisalarni ishlov beruvchilar joylashishi mumkin.

Mavjud ishlov beruvchilar ro'yxatini modul ochiq bo'lganda joriy modulning protseduralari va funktsiyalari ro'yxatini chaqirish orqali ko'rish mumkin.

Ochilgan Protseduralar va Funksiyalar oynasi ushbu modulning barcha protseduralari va funktsiyalarini, shuningdek ishlov beruvchilar hali yaratilmagan voqealarni ko'rsatadi.

Tizimning boshlanishi bilan bog'liq ikkita hodisa mavjud ("oldin" va "at"). Tizimning o'chirilishi bilan bog'liq ikkita hodisa ("oldin" va "ot"). Shuningdek, tashqi hodisalarni qayta ishlash (masalan, tijorat uskunalari hodisalari).

“Avval” hodisa ishlovchisi bajarilganda, harakat hali amalga oshirilmagan deb hisoblanadi. "Ot" hodisasi ishlovchisi bajarilganda, harakat allaqachon tugallangan.

Tadbir Tizimni ishga tushirishdan oldin Enterprise 8.3 ishga tushirilganda sodir bo'ladi, ammo dasturning o'zi hali ekranda paydo bo'lmagan. Ushbu hodisa quyidagi parametrga ega: Rad etish.

Agar bu parametr qiymatni qabul qilsa To'g'ri, keyin dastur boshlanmaydi. Tadbir Tizimni ishga tushirishda harakat allaqachon tugallangan, oyna allaqachon yaratilgan deb taxmin qiladi va bu holda biz, masalan, qandaydir maxsus shaklni ko'rsatishimiz mumkin. Endi ishga tushirishni rad etish mumkin emas.

Xuddi shunday, tizimni o'chirishdan oldin, dastur hali ham ochiq va siz uni yopishdan bosh tortishingiz mumkin. Tizim yopilganda, dastur oynasi allaqachon yopilgan. Faqat qo'shimcha harakatlarni bajarish mumkin, masalan, ba'zi fayllarni o'chirish yoki elektron pochta xabarini yuborish.

Modulda Boshqariladigan ilova Protseduralar va funktsiyalarni kompilyatsiya qilish bo'yicha ko'rsatmalar aniqlanmagan, chunki modul to'liq Mijoz tomonida tuzilgan. Bu modulning protseduralari va funktsiyalarida biz, masalan, ma'lumotnomalarga to'g'ridan-to'g'ri kira olmaymiz.

Agar moduldan Boshqariladigan ilova Serverga qo'ng'iroq qilish kerak, keyin buning uchun siz maxsus yaratishingiz kerak bo'ladi bayroq bilan .

Modulda Doimiy ariza Bunday cheklovlar yo'q, chunki qalin mijozni yuklashda ushbu modul kompilyatsiya qilinadi. Qalin mijozda deyarli barcha turdagi ma'lumotlar mavjud.

Amaliy modulning protseduralari, funktsiyalari va o'zgaruvchilari eksport sifatida tavsiflanishi mumkin.

Modul butunlay Mijozda tuzilganligi sababli, bu mijoz protseduralarida biz ushbu usul va ushbu xususiyatga kirishimiz mumkinligini anglatadi.

Masalan, obyektning forma modulidan amaliy modulning protsedurasi yoki funksiyasini chaqirish mumkin. Biroq, umumiy algoritmlarni tavsiflash uchun Umumiy modullardan foydalanish tavsiya etiladi. Ilova modulining asosiy maqsadi boshlang'ich va yakuniy nuqtani qayta ishlashdir.

Ilova moduliga o'xshab, ushbu modul dasturni ochish va o'chirish hodisasini qayta ishlash uchun mo'ljallangan.

Ilovani interaktiv ishga tushirish vaqtida ishga tushiriladigan dastur modulidan farqli o'laroq, tashqi ulanish moduli MAQOMOTI ulanish rejimida ishlaydi, ya'ni. 1C: Enterprise 8 ob'ekti yaratilganda va ma'lum bir ma'lumotlar bazasiga ulanganda.

Ushbu modulda voqealar mavjud: Tizimni ishga tushirishda Va Tizim o'chirilganda.

Tashqi ulanish moduli konfiguratsiya obyekti darajasidagi kontekst menyusi yoki ildiz tugunining xususiyatlar palitrasi yordamida ochilishi mumkin.

Tashqi ulanish jarayonining o'zi interaktiv emas, balki axborot bazasi bilan dasturiy ishlash jarayonidir. Shunga ko'ra, hozirda siz dialog shakllaridan foydalana olmaysiz yoki ogohlantirish xabarlarini ko'rsata olmaysiz, chunki foydalanuvchi interfeysi mavjud emas.

Tashqi ulanish modulida 1C: Enterprise 8.3 ga tashqi qo'ng'iroq sodir bo'ladigan tomonda mavjud bo'lgan eksport o'zgaruvchilari va eksport usullarini tavsiflash mumkin.

Tashqi qo'shilishda foydalanuvchi interfeysi mavjud emasligi sababli, tashqi qo'shilish moduli to'liq Serverda tuzilgan.

Seans moduli

Ushbu modul seans parametrlarini ishga tushirish uchun kerak. Seans parametrlari - bu qiymatlari konfiguratsiyaning istalgan joyida mavjud bo'lgan tezkor global o'zgaruvchilar.

Seans modulini kontekst menyusi yoki ildiz tugunining xususiyatlar palitrasi orqali ochishingiz mumkin.

Sessiya moduli tadbirni taqdim etadi SettingSessionParameters.

Ilova ishga tushganda, birinchi navbatda ushbu protsedura chaqiriladi. Seans parametrlari har qanday dastur operatsiyasi uchun zarur: interaktiv ishga tushirilganda ham, tashqi ulanish rejimida ham ishga tushirilganda.

Seans moduli turli sharoitlarga qarab seans parametrlarini ishga tushirish uchun turli harakatlarni tavsiflaydi.

Ushbu modul, qoida tariqasida, protseduradan chaqiriladigan bir nechta protseduralarni tavsiflaydi SettingSessionParameters. Shuning uchun bu protseduralarning barchasi alohida modulga bo'lingan.

Seans moduli har doim imtiyozli rejimda ishlaydi. Bu shuni anglatadiki, ma'lumotlar bazasiga kirishda ruxsatnomalar tekshirilmaydi. Seans moduli Serverda tuzilgan, ya'ni. Har qanday server usullariga kirish mumkin (shu jumladan ma'lumotlar bazasidan qiymatlarni o'qish).

Sessiya modulida faqat protsedura va funktsiyalarni belgilash mumkin, ya'ni. o'zgaruvchilarni tavsiflash bo'limi va asosiy dastur bo'limi mavjud emas. Seans modulida eksport usullarini aniqlay olmaysiz.

Agar tizimni ishga tushirishda Serverda ba'zi amallarni bajarish, masalan, katalog elementini yaratish zarur bo'lsa, u holda variant sifatida Sessiya modulidan foydalanish mumkin, chunki u Serverda kompilyatsiya qilinadi va tizim ishga tushganda har doim ishonchli tarzda bajariladi. Biroq, quyidagi fikrlarni hisobga olish kerak:

  • tartib SettingSessionParameters nafaqat tizim ishga tushirilganda, balki ishga tushirilmagan seans parametrlariga kirishda ham amalga oshiriladi. Bular. SetSessionParameters ishlov beruvchisi dastur ishlashi davomida qayta-qayta chaqirilishi mumkin;
  • agar sessiya parametrlari massividagi elementlar soni nolga teng bo'lsa (kerakli parametrlar massivida Aniqlanmagan ma'lumotlar turi mavjud bo'lsa), u holda dastur ishga tushirilgan vaqt;
  • Seans moduli imtiyozli rejimda ishlayotganligi va kirish huquqlari tekshirilmaganligi sababli, ma'lumotlar bazasi ob'ektlari bilan juda ehtiyotkorlik bilan ishlashingiz kerak, chunki foydalanuvchi unga taqdim etilmasligi kerak bo'lgan ma'lumotlarga kirish huquqiga ega bo'lishi mumkin;
  • Tizim ishga tushganda, dastur ishga tushadimi yoki yo'qmi, hali aniq ma'lum emas. Bunday holda, SetSessionParameters hodisa ishlovchisida keraksiz harakatlar bajarilishi mumkin.

Ushbu modullar ba'zi umumiy algoritmlarning tavsifini ifodalaydi, ya'ni. turli joylardan chaqirilishi mumkin bo'lgan protseduralar va funktsiyalar.

Mantiqiy jihatdan bog'liq bo'lgan usullarni turli Umumiy Modullarga guruhlash mumkin. Ushbu modullar Umumiy bo'lim ichida yaratilgan.

Siz har qanday miqdordagi umumiy modullarni qo'shishingiz mumkin. Umumiy modul usullarini konfiguratsiyaning boshqa joylarida mavjud qilish uchun ular Eksport kalit so'zi bilan aniqlanishi kerak. Umumiy modullarning mijoz protseduralari mijozda va serverda - Serverda mavjud bo'ladi.

Umumiy modullarda faqat protseduralar va funktsiyalarni tavsiflovchi bo'lim mavjud. Bular. Umumiy modulda siz o'zgaruvchilarni tasvirlay olmaysiz va asosiy dasturning bo'limini tasvirlay olmaysiz.

Agar global o'zgaruvchi kerak bo'lsa, siz seans parametrlaridan yoki dastur modulining eksport o'zgaruvchilaridan foydalanishingiz mumkin.

Umumiy modullar uchun siz ushbu modulning ishlashiga ta'sir qiladigan ba'zi parametrlarni o'rnatishingiz mumkin. Agar Global xususiyat Umumiy modul uchun o'rnatilgan bo'lsa, unda ushbu modulda e'lon qilingan eksport usullariga hech qanday qo'shimcha ko'rsatmalarsiz tashqaridan to'g'ridan-to'g'ri kirish mumkin bo'ladi.

Bular. the Umumiy modul global konfiguratsiya kontekstini shakllantirishda ishtirok etadi.

Mulk Global umumiy modullar uchun foydali bo'lishi mumkin. Biroq, uni barcha umumiy modullar uchun hamma joyda ishlatmaslik kerak.

Bular belgisi bilan belgilangan Global, tizim ishga tushganda kompilyatsiya qilinadi. Bunday modullar qancha ko'p bo'lsa, dastur shunchalik sekin boshlanadi.

Agar bayroq Global Uchun Umumiy modul ko'rsatilmagan bo'lsa, ushbu modulning kompilyatsiyasi unga birinchi qo'ng'iroq paytida (ya'ni tizim ishga tushirilgandan keyin) amalga oshiriladi.

Bundan tashqari, global umumiy modullardan foydalanish kodni tushunishga ta'sir qiladi. Global bo'lmagan umumiy modulning usullari nom orqali chaqiriladi Umumiy modul va usulning nomi, masalan:
Xarajatlarni hisoblash moduli.DistributeIndirectCosts();

Bunday holda, Umumiy modullarning nomlari ularda tasvirlangan protseduralarning mazmunini aks ettirishi kerak. Jarayonni chaqirishda Umumiy modul nomini ko'rsatish kodni yaxshiroq tushunishga yordam beradi.

Uchun Umumiy modul V Xususiyatlar palitrasi mulkni sozlashingiz mumkin Imtiyozli.

Imtiyozli modul kirish huquqlarini nazorat qilmaydi. Bu zarur, agar Umumiy modul Ma'lumotlarni ommaviy qayta ishlashni amalga oshirish, ma'lumotlar bazasidan ma'lumotlarni olish talab qilinadi.

Kirish huquqlarini nazorat qilish ma'lumotlar bazasiga kirish vaqtini oshiradi va ommaviy algoritmlar ko'pincha imkon qadar tezroq ishlashi kerak.

Masalan, ish haqi to'lash - bu resursni ko'p talab qiladigan operatsiya. Buni imkon qadar tezroq qilish kerak. Bunga erishish uchun ish haqini hisoblaydigan algoritmlar imtiyozli tarzda joylashtirilgan .

Shu bilan birga, ish haqi hujjatlarini to'ldirishni ta'minlaydigan barcha tartiblar bulardan tashqarida Umumiy modullar. Aynan shu protseduralarda kirish huquqlarini nazorat qilish amalga oshiriladi.

Shu tarzda, sezilarli ishlash yaxshilanishiga erishish mumkin. Bu, ayniqsa, jadval yozuvlariga qatorga kirishni boshqarish mexanizmidan foydalanganda to'g'ri keladi.

Agar umumiy modul imtiyozli bo'lsa, u holda ushbu modulning protseduralarini faqat Serverda kompilyatsiya qilish mumkin.

Ba'zi bir ob'ekt foydalanuvchiga, masalan, ma'lum bir katalogga kirish mumkin bo'lmagan holatlar mavjud. Ammo biron bir hujjatni rasmiylashtirishda ushbu ma'lumotnomaga murojaat qilish kerak.

Bular. Foydalanuvchi huquqlarini vaqtincha kengaytirish va keyin ularni asl holatiga qaytarish zarurati mavjud. Bu ta'sir imtiyozli foydalanish orqali olinishi mumkin Umumiy modullar.

Buni imtiyozli qilish uchun Umumiy modul Kerakli ma'lumotlarga kirish uchun protsedura yaratishingiz kerak.

Ushbu protsedura tegishli hujjatdan chaqiriladi. Bular. Ushbu protsedura chaqirilgan paytda foydalanuvchiga haqiqatda kengaytirilgan huquqlar beriladi.

Uchun Umumiy modullar Kompilyatsiya joyini belgilash mumkin. Bayroqlar Umumiy modul mijozda (boshqariladigan ilova), Serverda yoki tashqi ulanish rejimida mavjudligini aniqlash uchun ishlatiladi.

Bunga qo'shimcha ravishda, agar siz konfiguratsiyani tahrirlash rejimini Boshqariladigan dastur va oddiy dasturga o'tkazsangiz, unda boshqa kompilyatsiya konteksti mumkin bo'ladi - Mijoz (muntazam dastur).

Shunday qilib, dasturning ishlashi uchun to'rtta variant mavjud. Ishlayotgan dasturga qarab, Mijoz yoki Serverdagi ishlarga qarab, ba'zi umumiy modullar mavjud yoki mavjud bo'lmaydi.

Kompilyatsiya bayroqlarini belgilash qobiliyatidan tashqari, Umumiy modulda joylashgan protseduralar va funktsiyalar uchun kompilyatsiya direktivalarini belgilash mumkin.

Agar metod uchun kompilyatsiya direktivasi ko'rsatilgan bo'lsa, umumiy modul barcha belgilangan kontekstlarda mavjud bo'lsa-da, maxsus usulning mavjudligi kompilyatsiya direktivasi bilan cheklanadi.

Bunday holda, protseduraga butun modul kirish imkoni bo'lmagan kontekstda kirish mumkin emas.

Agar protsedura (funktsiya) uchun kompilyatsiya direktivasini ko'rsatmasangiz, u modul uchun belgilangan barcha kontekstlarda kompilyatsiya qilinadi.

Bular. Asosan, protseduraning bir nechta nusxalari tayyorlanadi. Muayyan kompilyatsiya qilingan namunani tanlash protsedura qayerda chaqirilganiga bog'liq (eng yaqin qo'ng'iroq qoidasi bo'yicha). Shuni hisobga olish kerakki, bunday protsedura kodi modul uchun belgilangan barcha kontekstlarda mavjudligini hisobga olgan holda yozilishi kerak.

Bir vaqtning o'zida bir nechta turli kontekstlarda foydalanish mumkin bo'lgan umumiy modullar, birinchi navbatda, bir nechta kontekstlarda foydalanish mumkin bo'lgan protseduralarni yaratish uchun mo'ljallangan.

Umumiy modulni yaratishda kompilyatsiya direktivalarini belgilamaslik yaxshi amaliyot hisoblanadi. Bular. Protseduralar va funktsiyalarning mavjudligi modulning o'ziga xos xususiyatlari bilan belgilanishi kerak.

Bunday yondashuv bilan mijoz protseduralari alohida Umumiy modullarda, server protseduralari esa alohida Umumiy modullarda joylashtiriladi.

Bir nechta kompilyatsiya bayroqlari o'rnatilgan modullar amalda juda kam qo'llaniladi. Bular Mijoz va Serverda mavjud bo'lgan umumiy amallardir. Odatda bu oddiy hisob-kitoblar.

Muhim! Mijoz umumiy modulning eksport server usullariga kirishi mumkin, ammo bu Umumiy modul faqat Serverda kompilyatsiya qilingan taqdirdagina. Bunday holda, mijozdan kirishni ta'minlash uchun maxsus bayroq taqdim etiladi .

Global bo'lmagan umumiy modullar uchun funktsiyalar tomonidan qaytarilgan qiymatlarni keshlash mumkin. Bular. Funksiyaning birinchi chaqiruvidan keyin tizim uning bajarilishi natijasini eslay oladi. Agar bu funksiya yana bir xil parametrlar bilan chaqirilsa, tizim keshdagi qiymatni qaytaradi.

Ushbu mexanizmning maqsadi takroriy qo'ng'iroqlarni tezlashtirishdir. Ushbu xatti-harakatni sozlash uchun sizga kerak Xususiyatlar palitrasi modulida Qaytish qiymatlarini qayta ishlatish xususiyati uchun tegishli qiymatni o'rnating.

Odatiy bo'lib, bu xususiyat "Foydalanmaslik" ga o'rnatiladi. Boshqa mumkin bo'lgan qiymatlar: kesh Qo'ng'iroq paytida, yoki Sessiyaning davomiyligi uchun.

Bu xususiyatdan faqat natijalari faqat kirish parametrlariga bog'liq bo'lgan funksiyalar uchun foydalanish mantiqiy. Ushbu mexanizm faqat global bo'lmagan Umumiy modullar uchun mavjud.

Agar qo'ng'iroq davomiyligi uchun mos parametrning qiymati tanlansa, kesh umumiy modul usuli chaqirilgan protsedura ishlayotgan ekan ishlaydi. Agar sessiya davomiyligi uchun qiymati tanlangan bo'lsa, u holda kesh foydalanuvchi ishlayotgan vaqtda ishlaydi deb shartli ravishda qabul qilinadi.

Biroq, ma'lum vaqt cheklovlari mavjud. Qiymat keshga kirgandan keyin 20 daqiqadan so'ng kesh avtomatik ravishda tozalanadi.

Shakl moduli

Ushbu modul foydalanuvchi harakatlarini qayta ishlash uchun mo'ljallangan. Masalan, tugma bosilganda dastur qanday reaksiyaga kirishishi algoritmini tasvirlab bering. Yoki, masalan, maydonga qiymat kiritish paytida darhol to'g'riligini tekshiring.

Shakl boshqaruv elementlari (tugmachalar, kiritish maydonlari) bilan bog'liq hodisalardan tashqari, shaklning o'zi bilan bevosita bog'langan hodisalar mavjud.

Misol uchun, siz formaning ochilish hodisasini boshqarishingiz va ba'zi bir dastlabki ishga tushirishni amalga oshirishingiz mumkin. Shuningdek, siz formani yopish hodisasini boshqarishingiz va foydalanuvchi hamma narsani to'g'ri kiritganligini tekshirishingiz mumkin.

Nazorat qilinadigan shakllar va muntazam shakllar mavjud. Ushbu shakllarning modullari, birinchi navbatda, boshqariladigan shakl moduli kontekstga aniq bo'linganligi bilan farqlanadi. Har bir protsedura (funktsiya) kompilyatsiya direktivasiga ega bo'lishi kerak. Oddiy shaklda barcha kodlar mijozda qo'llaniladi.

Boshqariladigan shakl modulida siz protseduralar va funksiyalarni e'lon qilishingiz, o'zgaruvchilarni e'lon qilishingiz va asosiy dasturning bo'limini tavsiflashingiz mumkin.

Asosiy dasturning dastur kodi shaklni ishga tushirish vaqtida bajariladi, ya'ni. foydalanuvchi uni ochishni boshlaganda. Rasmda boshqariladigan shakl uchun standart hodisalar ro'yxati ko'rsatilgan.

Boshqariladigan shakl hodisalari ro'yxati to'g'ridan-to'g'ri shaklning o'zi uchun xususiyatlar ro'yxatida ham ko'rinadi. Ushbu ro'yxat boshqariladigan shakllar muharririda chaqiriladi.

Boshqariladigan shaklda siz elementning yozish hodisasini boshqarishingiz mumkin. Ushbu hodisa faqat ob'ekt shakllari (kataloglar, hujjatlar va boshqalar) uchun mavjud. Agar forma ma'lum bir ob'ektga bog'lanmagan bo'lsa, unda yozish hodisasi bo'lmaydi.

Oddiy shakldagi modul uchun standart hodisalar ro'yxati biroz kichikroq, chunki Boshqariladigan shaklda ko'plab hodisalar juftlashtiriladi (biri Mijozda, ikkinchisi Serverda bajariladi). Oddiy shaklda barcha kodlar mijozda bajariladi.

Ob'ekt moduli

Ushbu modullar ma'lumotnomalar, hujjatlar, hisob-kitoblar turlari bo'yicha rejalar, hisoblar sxemalari va boshqa ko'plab ob'ektlar uchun xosdir. Ob'ekt moduli standart hodisalarni boshqarish uchun mo'ljallangan. Masalan, katalog elementini kiritish hodisasi, elementni yozish, o'chirish, hujjatni joylashtirish uchun voqea va hokazo.

Printsipial jihatdan yozish hodisasi Form modulida ham mavjud. Lekin forma modulida yozish hodisasi interaktiv yozib olish jarayonida, ma'lum bir forma bilan ishlashda sodir bo'ladi.

Ob'ekt modulidagi yozish hodisasi berilgan ob'ektning istalgan shaklidan istalgan yozishda bajariladi. Bundan tashqari, agar ob'ekt dasturiy tarzda yozilsa, ob'ektning modul hodisasi yonadi.

Ob'ekt modulining yozish holatida siz yozilayotgan ma'lumotlarning to'g'riligi uchun barcha tekshiruvlarni o'rnatishingiz mumkin, chunki bu protsedura mutlaqo har qanday yozib olish vaqtida amalga oshiriladi.

Ushbu ob'ektning moduli kontekst menyusi orqali, Ob'ekt xususiyatlari palitrasidan va ob'ektni tahrirlash oynasidan chaqirilishi mumkin.

Quyidagi rasmda mavjud katalog moduli hodisalari ro'yxati ko'rsatilgan.

Ob'ekt modulida siz o'zgaruvchilarni tavsiflash, voqea bilan bog'lanmagan bo'lishi mumkin bo'lgan ixtiyoriy funktsiyalarni tavsiflash bo'limini, shuningdek, asosiy dasturning bo'limini joylashtirishingiz mumkin.

Asosiy dastur bo'limida siz, masalan, berilgan modulning mahalliy o'zgaruvchilarini ishga tushirishingiz mumkin. Ushbu dastur kodi ushbu ob'ekt moduliga kirishda bajariladi.

Shuni ta'kidlash kerakki, Ob'ekt modulining barcha protseduralari Serverda tuzilgan. Shunga ko'ra, Ob'ekt modulining protseduralari va funktsiyalari uchun kompilyatsiya direktivalari talab qilinmaydi. Ba'zi konfiguratsiya ob'ektlarida Ob'ekt modullari mavjud emas.

Bu ob'ektlarning o'ziga xos xususiyatlariga bog'liq. Bunday ob'ektlarga kiradi Konstantalar Va Registrlar. Uchun Doimiy ob'ekt moduli yo'q, lekin juda o'xshash modul mavjud Qiymat menejeri moduli.

IN Qiymat menejeri moduli hodisalarni yozishingiz mumkin Konstantalar va to'ldirishni tekshirish jarayoni.

Barcha modul konteksti Serverda bajariladi.

Registrlar uchun Recordset moduli mavjud.

Ushbu modul shuningdek, yozish hodisalarini boshqarish va bandlikni tekshirish qobiliyatiga ega.

Ob'ekt modullarida, qiymat menejeri modullarida (konstantalar uchun) va Yozuvlar to'plami modullarida (registrlar uchun) siz eksport qilish mumkin bo'lgan usullarni tasvirlashingiz mumkin va bu usullarga tashqaridan kirish mumkin bo'ladi.

Bular. Ob'ekt sinfining qat'iy usullaridan foydalanishdan tashqari, Ob'ekt modulida ob'ekt uchun qo'shimcha usullarni yaratishingiz mumkin. Ushbu modul tegishli protsedurani kalit so'z bilan tavsiflashi kerak Eksport.

Keyin ushbu protseduraga tashqaridan kirish mumkin bo'ladi. Bundan tashqari, ushbu usul kontekst asboblar panelida ko'rsatiladi. Kontekst asboblar panelidagi yangi usullar ko'k shriftda ta'kidlangan (ko'k belgi p() protseduralar uchun va f() funksiyalar uchun).

Xuddi shunday, kalit so'z bilan o'zgaruvchini e'lon qilish orqali yangi xususiyat yaratishingiz mumkin Eksport. Ushbu mulkka tashqaridan ham kirish mumkin.

Shunday qilib, ob'ektlarning funksionalligini kengaytirish mumkin (yangi usullar va yangi xususiyatlarni aniqlash uchun). Biroq, xususiyatlar dinamik va ma'lumotlar bazasida saqlanmaydi.

Agar siz ma'lumotlar bazasida saqlanadigan ob'ekt uchun xususiyatdan foydalanishingiz kerak bo'lsa, ob'ekt atributini yaratishingiz kerak.

Menejer moduli

Ushbu modul ko'plab ob'ektlar (kataloglar, hujjatlar, registrlar va boshqalar) uchun mavjud. Modul ob'ekt uchun kontekst menyusi orqali yoki orqali ochiladi Xususiyatlar palitrasi, yoki tahrirlash oynasi orqali.

Menejer modulida siz ba'zi standart hodisalarni bekor qilishingiz mumkin, masalan Tanlov ma'lumotlarini qayta ishlash, katalogdan element tanlanganda, ba'zi qo'shimcha filtrlash yoki tekshirish amalga oshirilishi mumkin.

Bundan tashqari, siz Menejer modulida qo'shimcha usullar yaratishingiz va ularning eksport usullari ekanligini ko'rsatishingiz mumkin. Bunday holda, ushbu usullarga tashqaridan kirish mumkin.

Ushbu qo'ng'iroqni amalga oshirish uchun ma'lumotlar turini olish kerak DirectoryManager.

Menejer moduli va ob'ekt modulining eksport usullari o'rtasidagi farq shundaki, Ob'ekt moduli usuliga kirish uchun siz avval ob'ektning o'zini olishingiz kerak (ya'ni qandaydir tarzda havolani oling va keyin bu havolani ob'ektga aylantiring) .

Shundan so'ng, eksport o'zgaruvchilari va Ob'ekt modulining usullari mavjud bo'ladi. Menejer moduli uchun qo'ng'iroq oddiyroq, masalan:
Directories.Counterparties. MethodName

Bu ikki xil murojaat. Malumotdan ob'ektga aylantirish (usul GetObject) - bu tizim uchun juda jiddiy harakat, chunki ob'ektni qabul qilishda ushbu ob'ektning barcha ma'lumotlari mutlaqo o'qiladi, bu juda uzoq bo'lishi mumkin.

Ikkinchi farq shundaki Ob'ekt moduli muayyan element kontekstida chaqiriladi. Shunga ko'ra, biz uni ma'lum bir element uchun qo'llash mumkinligini taxmin qilishimiz mumkin (ko'p hollarda, aynan shu mantiq qo'llaniladi).

Menejer moduliga kelsak, u bir guruh yoki katalogning barcha elementlari yoki ba'zi bir hujjat uchun ba'zi umumiy harakatlarni tavsiflaydi. Misol uchun, agar siz katalog elementini chop etishingiz kerak bo'lsa, siz Ob'ekt modulidan foydalanishingiz mumkin.

Ammo menejer modulida boshqa narsalar qatorida elementlar guruhini chop etadigan yanada universal mexanizmni yaratish mumkin.

Bundan tashqari, ob'ekt moduliga kirish hali ham uzoqroq amaldir. Shuning uchun bu muammoni menejer modulida hal qilish afzalroqdir.

Bu 1C: Enterprise tizim konfiguratsiyasidagi modullar bilan tanishuvimizni yakunlaydi. Agar biz yuqorida aytilganlarning barchasini qisqacha bayon qilsak, quyidagi xulosalar chiqariladi:

  • Dasturiy ta'minot moduli konfiguratsiyaning bir qismi bo'lib, u faqat o'rnatilgan 1C tilida matnni o'z ichiga olishi mumkin
  • Dasturiy ta'minot modullari biz ushbu maqolada muhokama qilgan turlarga ko'ra tasniflanadi. Har bir ko'rinish uning joylashuvi va mavjud dastur konteksti bilan belgilanadi.
  • Modulning tuzilishi ma'lum bir ketma-ketlikda joylashtirilgan bir nechta bo'limlardan iborat. Bo'limlar tarkibi modul turiga qarab belgilanadi.

Shuni ham yodda tutingki, biz bir turdagi modulni, ya'ni buyruq modulini ataylab o'tkazib yubordik. Bu ajoyib narsa emas va biz sizni uning funksionalligi bilan tanishishga taklif qilamiz.

Hozirgacha biz barcha dastur kodimizni amaliy yechimdan alohida ko'rib chiqdik va qoida tariqasida uni o'zimizning kichik sinov konfiguratsiyasida yozdik. "Siz shunchaki borolmaysiz" va standart konfiguratsiya kodini tahrirlashni boshlaysizmi? Yo'qmi? Keyin keyingi maqolada hammasini tushuntiramiz!

1.1. Umumiy modullar qandaydir xarakteristikalar bo'yicha birlashtirilgan protseduralar va funktsiyalarni amalga oshirish uchun yaratilgan. Qoidaga ko'ra, bitta konfiguratsiya quyi tizimining (sotish, sotib olish) protseduralari va funktsiyalari yoki shunga o'xshash funktsiyalarning protseduralari va funktsiyalari (satrlar bilan ishlash, umumiy maqsad) bitta umumiy modulga joylashtirilgan.

1.2. Umumiy modullarni ishlab chiqishda siz to'rtta kodni bajarish kontekstidan birini tanlashingiz kerak:

Umumiy modul turi Ismga misol Server qo'ng'irog'i Server Tashqi qo'shilish Mijoz
(odatiy ariza)
Mijoz
(boshqariladigan ilova)
1. ServerUmumiy maqsadli (yoki umumiy maqsadli server)
2. Mijozdan qo'ng'iroq qilish uchun serverGeneralPurposeCallServer
3. MijozUmumiy maqsadli mijoz (yoki umumiy maqsadli global)
4. Mijoz-serverUmumiy maqsadli mijoz serveri

2.1. Serverning umumiy modullari mijoz kodidan foydalanish mumkin bo'lmagan server protseduralari va funktsiyalarini joylashtirish uchun mo'ljallangan. Ular ilovaning barcha ichki server biznes mantiqini amalga oshiradilar.
Tashqi ulanishda konfiguratsiyaning to'g'ri ishlashi uchun boshqariladigan va muntazam dastur rejimlari, server protseduralari va funktsiyalari quyidagi xususiyatlarga ega umumiy modullarga joylashtirilishi kerak:

  • Server(tasdiqlash qutisi Server qo'ng'irog'i qayta o'rnatish),
  • Mijoz (muntazam dastur),
  • Tashqi qo'shilish.

Bunday holda, o'zgaruvchan turdagi parametrlarga ega server protseduralari va funktsiyalarini chaqirish imkoniyati kafolatlanadi (masalan, DirectoryObject, DocumentObject va h.k.). Odatda bu:

  • parametr sifatida o'zgaruvchan qiymatni (ob'ektni) qabul qiladigan hujjatlar, kataloglar va boshqalar hodisalariga obuna bo'lish uchun ishlov beruvchilar.
  • ob'ekt kataloglar, hujjatlar va boshqalar modullaridan, shuningdek hodisalar obunasi bo'lgan modullardan parametr sifatida uzatiladigan server protseduralari va funktsiyalari.

Server tomonidagi umumiy modullar metadata ob'ektlarini nomlashning umumiy qoidalariga muvofiq nomlanadi.
Masalan: Fayllar bilan ishlash, Umumiy maqsad

Ba'zi hollarda global kontekst xususiyatlari bilan nom ziddiyatlarini oldini olish uchun postfiks qo'shilishi mumkin "Server".
Masalan: RoutineTasksServer, Ma'lumotlar almashinuvi serveri.

2.2. Mijozdan qo'ng'iroq qilish uchun serverning umumiy modullari mijoz kodidan foydalanish mumkin bo'lgan server protseduralari va funktsiyalarini o'z ichiga oladi. Ular dastur serverining mijoz dasturlash interfeysini tashkil qiladi.
Bunday protseduralar va funktsiyalar quyidagi xususiyatga ega umumiy modullarga joylashtirilgan:

  • Server(tasdiqlash qutisi Server qo'ng'irog'i o'rnatilgan)

Mijozdan qo'ng'iroq qilish uchun server tomonidagi umumiy modullar metadata ob'ektlarini nomlashning umumiy qoidalariga muvofiq nomlanadi va postfiks bilan nomlanishi kerak. "Qo'ng'iroqlar serveri".
Masalan: FilesCalling Server bilan ishlash

E'tibor bering, bunday umumiy modullardagi eksport protseduralari va funktsiyalari o'zgaruvchan turdagi parametrlarni o'z ichiga olmaydi ( DirectoryObject, DocumentObject va hokazo), chunki ularni mijoz kodidan (yoki) o'tkazish mumkin emas.

Shuningdek qarang:Umumiy modullar uchun "Server qo'ng'irog'i" bayrog'ini o'rnatishdagi cheklov

2.3. Mijozning umumiy modullari mijozning biznes mantig'ini o'z ichiga oladi (funktsionallik faqat mijoz uchun belgilanadi) va quyidagi xususiyatlarga ega:

  • Mijoz (boshqariladigan ilova))
  • Mijoz (muntazam dastur)

Istisno shundaki, mijoz protseduralari va funktsiyalari faqat boshqariladigan dastur rejimida mavjud bo'lishi kerak (faqat oddiy dastur rejimida yoki faqat tashqi ulanish rejimida). Bunday hollarda, bu ikki xususiyatning yana bir kombinatsiyasi qabul qilinadi.

Mijozning umumiy modullari postfiks bilan nomlanadi "Mijoz".
Masalan: FilesClient bilan ishlash, Umumiy maqsadli mijoz

Shuningdek qarang: mijozda ishlaydigan kodni minimallashtirish

2.4. Ba'zi hollarda protsedura va funksiyalarga ega bo'lgan mijoz-server umumiy modullarini yaratishga ruxsat beriladi, ularning mazmuni serverda ham, mijozda ham bir xil. Bunday protseduralar va funktsiyalar quyidagi xususiyatlarga ega umumiy modullarga joylashtirilgan:

  • Mijoz (boshqariladigan ilova)
  • Server(tasdiqlash qutisi Server qo'ng'irog'i qayta o'rnatish)
  • Mijoz (muntazam dastur)
  • Tashqi qo'shilish

Ushbu turdagi umumiy modullar postfiks bilan nomlanadi "ClientServer".
Masalan: FilesClient bilan ishlash, Umumiy maqsadli mijoz serveri

Umuman olganda, server va mijoz (boshqariladigan dastur) uchun umumiy modullarni belgilash tavsiya etilmaydi. Mijoz va server uchun aniqlangan funksiyalarni turli umumiy modullarda amalga oshirish tavsiya etiladi - paragraflarga qarang. 2.1 va 2.3. Mijoz va server biznes mantig'ining bunday aniq ajratilishi dastur yechimining modulligini oshirish, mijoz-server o'zaro aloqasi ustidan ishlab chiquvchi nazoratini soddalashtirish va mijoz va serverni rivojlantirish talablaridagi tub farqlar tufayli xatolar xavfini kamaytirish bilan bog'liq. kod (mijozda bajariladigan kodni minimallashtirish zarurati, ob'ektlarning turli xil mavjudligi va platformalar turlari va boshqalar). Bunday holda, konfiguratsiyadagi umumiy modullar sonining muqarrar ravishda ko'payishini yodda tutishingiz kerak.

Mijoz-server aralash modullarining alohida holati - bu server va mijoz biznes mantig'ini bir modulda amalga oshirish uchun maxsus ishlab chiqilgan shakl va buyruq modullari.

3.1. Umumiy modullarning nomlari metadata ob'ektlarini nomlashning umumiy qoidalariga rioya qilish tavsiya etiladi. Umumiy modul nomi quyi tizim yoki alohida mexanizm nomiga, u amalga oshiradigan protseduralar va funktsiyalarga mos kelishi kerak. Umumiy modullar nomlarida “Protseduralar”, “Funksiyalar”, “Handlerlar”, “Module”, “Funksionallik” kabi umumiy so‘zlardan qochish tavsiya etiladi. va ulardan faqat istisno hollarda modul maqsadini to'liqroq ochib berganda foydalaning.

Turli kontekstlarda bajariladigan protseduralar va funktsiyalarni amalga oshirish uchun yaratilgan bitta quyi tizimning umumiy modullarini farqlash uchun ularga paragraflarda ilgari tasvirlangan postfikslarni berish tavsiya etiladi. 2.1-2.4.

Modullar nima va ular aynan nima uchun mo'ljallangan? Modul dastur kodini o'z ichiga oladi. Bundan tashqari, shuni ta'kidlash kerakki, 7.7 platformasidan farqli o'laroq, kod shakl elementlarining xususiyatlarida va tartib jadvallari kataklarida joylashgan bo'lishi mumkin, 8.x platformasida har qanday kod qatori ba'zi modullarda joylashgan bo'lishi kerak. . Odatda, modul uchta bo'limdan iborat - o'zgaruvchilarni tavsiflash bo'limi, protseduralar va funktsiyalarni tavsiflash bo'limi va asosiy dastur uchun bo'lim. Ushbu tuzilma ba'zi istisnolardan tashqari deyarli barcha platforma modullari uchun xosdir. Ba'zi modullarda o'zgaruvchilarni tavsiflash bo'limi yoki asosiy dastur bo'limi mavjud emas. Masalan, Sessiya moduli va har qanday umumiy modul.

Modullarning bajarilishi konteksti odatda mijoz va serverga bo'linadi. Bundan tashqari, ba'zi modullar mijoz tomonida ham, server tomonida ham kompilyatsiya qilinishi mumkin. Va ba'zilari faqat server yoki mijoz tomonida. Shunday qilib:

Ilova moduli

Modul dasturni ishga tushirish (konfiguratsiyani yuklash) va uning ishlashini tugatish momentlarini ushlash uchun mo'ljallangan. Va tekshirish tartib-qoidalari tegishli hodisalarga joylashtirilishi mumkin. Masalan, dasturni ishga tushirayotganda, ba'zi ma'lumot konfiguratsiyasi ma'lumotlarini yangilang va ishni tugatgandan so'ng, uni umuman tark etishga arziydimi yoki yo'qligini so'rang, ehtimol ish kuni hali tugamagan. Bundan tashqari, u tashqi uskunalardan, masalan, savdo yoki fiskal hodisalardan to'sqinlik qiladi. Shuni ta'kidlash kerakki, dastur moduli tasvirlangan hodisalarni faqat interaktiv ishga tushirilganda ushlab turadi. Bular. dastur oynasining o'zi yaratilganda. Agar dastur com ulanish rejimida ishga tushirilsa, bu sodir bo'lmaydi.

8.2 platformasida ikki xil dastur moduli mavjud. Bular oddiy dastur moduli va boshqariladigan dastur modulidir. Ular turli mijozlar ishga tushirilganda ishga tushadi. Veb-mijoz, nozik mijoz va qalin mijoz boshqariladigan dastur rejimida ishga tushirilganda, boshqariladigan dastur moduli shu tarzda ishga tushiriladi. Oddiy dastur moduli esa qalin mijoz oddiy dastur rejimida ishga tushirilganda ishga tushadi.

Ilova moduli barcha bo'limlarni o'z ichiga olishi mumkin - o'zgaruvchilarning tavsiflari, protseduralar va funktsiyalar, shuningdek, asosiy dastur tavsiflari. Ilova moduli mijoz tomonida tuzilgan, shuning uchun bu bizni ko'p turdagi ma'lumotlar mavjudligini sezilarli darajada cheklaydi. "Server qo'ng'irog'i" xossalari to'plamiga ega bo'lgan umumiy modullar usullaridan foydalanib, dastur moduli kontekstini kengaytirishingiz mumkin. Eksport sifatida belgilangan barcha o'zgaruvchilar va usullar mijoz tomonida ishlaydigan har qanday konfiguratsiya modulida mavjud bo'ladi. Biroq, qanchalik jozibali bo'lmasin, bu erda juda ko'p usullarni joylashtirmaslik kerak. Unda qancha ko'p kod bo'lsa, kompilyatsiya vaqti shunchalik uzoqroq bo'ladi va shuning uchun dasturni ishga tushirish vaqti foydalanuvchilar uchun juda bezovta qiladi.

Yuqorida aytib o'tilganidek, dastur moduli dasturni ishga tushirish va tugatish hodisalarini boshqaradi. Ilova modulida ushbu hodisalarning har birini boshqarish uchun Old... va Qachon... bir juft ishlovchilar mavjud. Ularning orasidagi farqlar shundan iboratki, Oldin... ishlov beruvchisida kodni bajarishda amal hali bajarilmagan. sodir bo'ldi va biz uni bajarishdan bosh tortishimiz mumkin. Rad etish opsiyasi aynan shu maqsadda. On.. ishlov beruvchilarida amal allaqachon bajarilgan va biz dasturni ishga tushirish yoki undan chiqishni rad eta olmaymiz.

Tashqi ulanish moduli

Modulning maqsadi amaliy modulning maqsadiga o'xshaydi. U ilovaning boshlanish va tugash nuqtalarini qayta ishlaydi. Tashqi ulanish moduli ilova com ulanish rejimida ishga tushirilganda ishga tushadi. Tashqi qo'shilish jarayonining o'zi interaktiv jarayon emas. Ushbu rejimda ma'lumotlar bazasi bilan dasturiy ish sodir bo'ladi va dastur oynasi ochilmaydi, bu interfaol ishlash uchun mo'ljallangan usullardan foydalanishga ma'lum cheklovlar qo'yadi. Ushbu rejimda dialog shakllariga qo'ng'iroqlar, ogohlantirish xabarlari va boshqalarni ishlatib bo'lmaydi. Ular shunchaki ishlamaydi.

Ilova modulida bo'lgani kabi, bu erda o'zgaruvchilarni, usullarni tavsiflash bo'limlari va asosiy dastur uchun bo'lim mavjud. Shuningdek, eksport o'zgaruvchilari va usullarini e'lon qilishingiz mumkin. Farqi shundaki, com ulanish rejimida infobase bilan barcha ishlar server tomonida amalga oshiriladi, shuning uchun tashqi ulanish moduli faqat serverda tuzilgan. Shunga ko'ra, eksport o'zgaruvchilari va umumiy mijoz modullarining usullari unda mavjud emas.

Seans moduli

Bu juda ixtisoslashgan modul bo'lib, faqat seans parametrlarini ishga tushirish uchun mo'ljallangan. Nega buning uchun o'z modulingizni yaratishingiz kerak edi? Buning sababi shundaki, ishga tushirish jarayoni ba'zi kodlarni bajarishni talab qilishi mumkin va qo'shimcha ravishda, dastur turli xil mijozlar ostida ishga tushirilishi mumkin (bu turli xil dastur modullarini yoki tashqi ulanish modullarini bajarishga olib keladi) va ishga tushirishni ishga tushirish. sessiya parametrlari har qanday ishga tushirish rejimida bajarilishi kerak. Shuning uchun har qanday dasturni ishga tushirish rejimida ishlaydigan qo'shimcha modul talab qilindi.

Seans modulida "SettingSessionParameters" yagona hodisasi mavjud bo'lib, u juda birinchi bo'lib, hatto BeforeSystemStartOperation dastur moduli hodisasidan oldin ham amalga oshiriladi. O'zgaruvchilar deklaratsiyasi bo'limi va asosiy dastur bo'limi unda mavjud emas. Shuningdek, siz eksport usullarini e'lon qila olmaysiz. Modul server tomonida tuzilgan.

Ilova ishga tushirilganda ushbu modulning bajarilishi sizni vasvasaga solmaslik kerak va unda seans parametrlarini ishga tushirish bilan bevosita bog'liq bo'lmagan kodni joylashtirmaslik kerak. Buning sababi, tizimning ishlashi davomida SetSessionParameters ishlov beruvchisini qayta-qayta chaqirish mumkin. Misol uchun, bu ishga tushirilmagan parametrlarga kirishda sodir bo'ladi. Garchi ushbu hodisaning birinchi ishga tushirilgan vaqtini ushlash mumkin bo'lsa ham (RequiredParameters turi Undefined), bu modul imtiyozli rejimda tuzilganligini hisobga olish kerak, ya'ni. u kirish huquqlarini nazorat qilmaydi. Va ikkinchi nuqta shundaki, biz hali ham tizim ishga tushishiga yuz foiz ishonch hosil qila olmaymiz. To'satdan dastur modulida xatolik yuz beradi va biz ma'lumotlar bazasi bilan ba'zi harakatlarni bajarishga harakat qilmoqdamiz.

Umumiy modullar

Modullar boshqa konfiguratsiya modullaridan chaqiriladigan ba'zi umumiy algoritmlarni tavsiflash uchun mo'ljallangan. Umumiy modulda o'zgaruvchilarni tavsiflash bo'limi va asosiy dastur bo'limi mavjud emas. Unda siz eksport usullarini e'lon qilishingiz mumkin, ularning mavjudlik konteksti kompilyatsiya bayroqlari bilan belgilanadi. O'zgaruvchilarni tavsiflash bo'limi mavjud emasligi sababli, umumiy modullarda global o'zgaruvchilarni aniqlab bo'lmaydi. Buning uchun siz qaytariladigan qiymatlarni keshlash yoki dastur moduli bilan umumiy modullarning funktsiyalaridan foydalanishingiz kerak. Shuni yodda tutish kerakki, umumiy modulni qayta ishlatish xususiyati "Seans davomiyligi uchun" ga o'rnatilgan bo'lsa ham, bu holda keshlangan qiymatlarning ishlash muddati oxirgi kirish paytidan boshlab 20 daqiqadan oshmaydi. ular.
Umumiy modulning xatti-harakati o'rnatilgan parametrlarga bog'liq (global yoki yo'q, turli xil kompilyatsiya bayroqlari, server qo'ng'irog'i mavjudligi va boshqalar). Ushbu maqolada biz barcha turdagi sozlamalarni, shuningdek, mulk bayroqlarini asossiz ravishda o'rnatishda yuzaga keladigan xatti-harakatlar xususiyatlarini va tuzoqlarni ko'rib chiqmaymiz. Bu alohida maqola uchun mavzu. Keling, bayroqlarni o'rnatishda amal qilish kerak bo'lgan bir nechta fikrlarga to'xtalib o'tamiz:

  • Global bayroqni hamma joyda ishlatmaslik yaxshi qoidadir. Bu dasturni ishga tushirish vaqtini qisqartiradi, shuningdek, kodni o'qish qobiliyatini yaxshilaydi (albatta, agar umumiy modul to'liq mazmunli nomga ega bo'lsa).
  • Bir nechta kompilyatsiya bayroqlaridan foydalanish tavsiya etilmaydi. Turli xil kontekstlarda bajarilishi kerak bo'lgan juda ko'p usullar mavjud emas va agar bunday usullar hali ham talab qilinsa, ular uchun alohida umumiy modul ajratilishi mumkin.
  • "Server qo'ng'irog'i" bayrog'i, agar modul "Serverda" tuzilgan bo'lsa, mantiqiy bo'ladi. Shuning uchun, har xil muammolarni oldini olish uchun barcha boshqa kompilyatsiya bayroqlarini olib tashlash kerak.
  • Agar modul usullari katta hajmdagi ma'lumotlarni qayta ishlash, ma'lumotlar bazasiga o'qish va yozishni o'z ichiga olsa, ish tezligini oshirish uchun "Imtiyozli" bayroqni o'rnatish orqali kirish huquqlarini boshqarishni o'chirib qo'yish yaxshiroqdir. Ushbu rejim faqat serverda tuzilgan umumiy modullar uchun mavjud.

Shakl moduli

U foydalanuvchi harakatlarini qayta ishlash uchun mo'ljallangan, ya'ni. ma'lumotlarni kiritish va ularni kiritishning to'g'riligiga ishlov berish bilan bog'liq turli hodisalar. Odatiy shakldagi modul to'liq mijozda tuzilgan. Boshqariladigan shakl moduli ijro konteksti bilan aniq chegaralangan, shuning uchun barcha o'zgaruvchilar va usullar kompilyatsiya direktivasiga ega bo'lishi kerak. Agar direktiv aniq ko'rsatilmagan bo'lsa, bu o'zgaruvchi yoki usul server tomonida kompilyatsiya qilinadi. Shakl moduli o'zgaruvchilar va usullarni tavsiflash bo'limlarini, shuningdek, asosiy dastur uchun bo'limni o'z ichiga oladi.

Ob'ekt moduli

Ushbu modul ko'pgina konfiguratsiya ob'ektlari uchun odatiy bo'lib, odatda ob'ekt hodisalarini qayta ishlash uchun mo'ljallangan. Masalan, ob'ektlarni yozib olish va o'chirish voqealari, hujjatlarni joylashtirish voqealari va boshqalar.

Ba'zi ob'ekt moduli hodisalari forma moduli hodisalarini takrorlaydi. Masalan, yozuv bilan bog'liq voqealar. Biroq, shakl moduli hodisalari faqat ob'ektning maxsus shaklida bajarilishini tushuning. Umuman olganda, bu shakllarning bir nechtasi bo'lishi mumkin. Va ob'ekt modulining hodisalari har qanday holatda ham, ob'ekt bilan dasturiy ish paytida ham chaqiriladi. Shuning uchun, agar siz barcha holatlarda qandaydir kodni bajarishingiz kerak bo'lsa, buning uchun ob'ekt moduli hodisasidan foydalangan ma'qul.

Ob'ekt moduli faqat serverda tuzilgan. Unda siz boshqa konfiguratsiya modullarida mavjud bo'ladigan eksport o'zgaruvchilari va usullarini belgilashingiz mumkin. Ushbu xususiyatlar va usullardan foydalanib, biz ob'ektning funksionalligini sezilarli darajada kengaytirishimiz mumkin.

Ob'ekt menejeri moduli

Ushbu modul ko'plab konfiguratsiya ob'ektlari uchun mavjud. Ushbu modulning asosiy maqsadi qatorga kirishda yuzaga keladigan standart tanlash hodisasini qayta aniqlash va menejerning funksionalligini kengaytirishdir. Modul server tomonida tuzilgan. U eksport xususiyatlari va usullarini aniqlash imkonini beradi. Menejerning eksport usullarini chaqirish ob'ektning o'zini yaratishni talab qilmaydi.

Yuqoridagilarning barchasiga siz ba'zi konfiguratsiya modullarining rasmini va boshqariladigan dastur rejimida o'zaro qo'ng'iroq qilish usullarini qo'shishingiz mumkin. O'q mos keladigan usulni chaqirish uchun burilishingiz mumkin bo'lgan yo'nalishni ko'rsatadi. Diagrammadan ko'rinib turibdiki, server konteksti butunlay yopiq. Ammo mijoz kontekstidan server usullariga kirish mumkin.

Diagrammadagi belgilar: O.M. Mijoz - mijozning umumiy moduli; O.M. Server - Serverning umumiy moduli; M.F. Mijoz - forma modulining mijoz protseduralari; M.F. Server - forma modulining server protseduralari.

Dasturiy ta'minot modullarida vizual ishlab chiqish vositalari etarli bo'lmaganda tizim yoki foydalanuvchi harakatlariga ma'lum bir tarzda javob berish uchun zarur bo'lgan 1C tilida bajariladigan kod mavjud. Biz dasturiy ta'minot modullarida o'z uslublarimizni (protsedura va funksiyalarni) ham tasvirlashimiz mumkin.

Odatda dasturiy ta'minot moduli uchta bo'limdan iborat:

  • o'zgaruvchan deklaratsiya maydoni;
  • protseduralar va funktsiyalarni tavsiflash sohasi;
  • dasturning asosiy matni.

Dasturiy modul tuzilishiga misol:

//******************** OʻZGARCHI DEKLARATSIYA HAYoDI *********************

Perem familiyasini eksport qilish; / / bu global o'zgaruvchidir
Ism, ota ismini o'zgartirish; // bu modul o'zgaruvchisi
Peremning to'liq ismi; //bu ham modul oʻzgaruvchisi va unga kirish mumkin

//modulimizning istalgan protsedurasi va funksiyasidan

//**************** TARTIBIYoTLAR VA FUNKSIYALARNING HUDON TAVSIFI *****************

Jarayon tartibi 1 ()
O'zgaruvchan jami; / /Natija mahalliy o'zgaruvchidir (protsedura o'zgaruvchisi)

Jami = Familiya + " "+ Ism + " "+ Otasining ismi;

Jarayonning oxiri

Funktsiya Function1()

// funksiya operatorlari

Qaytish(Familiya + " "+ Ism);

EndFunction

//******************** DASTURNING ASOSIY MATNI ***********************

Familiya = "Ivanov";
Ism = "Ivan";
Otasining ismi = "Ivanovich";

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

Muayyan dasturiy ta'minot modulida har qanday maydon yo'qolishi mumkin.
O'zgaruvchan deklaratsiya maydoni modul matnining boshidan birinchi Protsedura yoki Funktsiya bayonotiga yoki har qanday bajariladigan bayonotga joylashtiriladi. Bu bo'lim faqat o'zgaruvchilar deklaratsiyasi bayonotlarini o'z ichiga olishi mumkin.

Protseduralar va funktsiyalarni tavsiflash uchun maydon birinchi Protsedura yoki Funktsiya bayonotidan protsedura yoki funktsiya tavsifining asosiy qismidan tashqari har qanday bajariladigan bayonotga joylashtiriladi.

Dasturning asosiy matn maydoni birinchi bajariladigan operatordan modulning oxirigacha protseduralar yoki funksiyalar tanasidan tashqarida joylashtiriladi. Bu bo'limda faqat bajariladigan bayonotlar bo'lishi mumkin. Dasturning asosiy matn maydoni modulni ishga tushirish vaqtida bajariladi. Odatda, asosiy dasturning bo'limida modulning protseduralari yoki funktsiyalariga birinchi qo'ng'iroq qilishdan oldin tayinlanishi kerak bo'lgan har qanday aniq qiymatlar bilan o'zgaruvchilarni ishga tushirish uchun operatorlarni joylashtirish mantiqan.

Dasturiy ta'minot modullari ma'lum operatsion algoritmlarning tavsifini talab qilishi mumkin bo'lgan konfiguratsiya joylarida joylashgan. Ushbu algoritmlar tizimning o'zi tomonidan oldindan belgilangan holatlarda chaqiriladigan protseduralar yoki funktsiyalar shaklida rasmiylashtirilishi kerak (masalan, katalog shaklini ochishda, dialog oynasidagi tugmani bosganda, ob'ektni o'zgartirishda va hokazo). .

Har bir alohida dasturiy modul tizim tomonidan bir butun sifatida qabul qilinadi, shuning uchun dasturiy modulning barcha protseduralari va funktsiyalari yagona kontekstda amalga oshiriladi.

Modulni bajarish konteksti mijoz va serverga bo'linadi. Bundan tashqari, ba'zi dasturiy modullar mijoz tomonida ham, server tomonida ham kompilyatsiya qilinishi mumkin.

Ilova moduli (boshqariladigan yoki oddiy)

Ilova moduli tizimning boshida va oxirida ishga tushiriladigan hodisalarning protseduralarini (ishlab chiqaruvchilarni) tavsiflaydi. Misol uchun, dastur ishlay boshlaganda, siz ba'zi konfiguratsiya ma'lumotlarini yangilashingiz mumkin va dasturdan chiqqaningizda, dasturdan umuman chiqishga arziydimi yoki yo'qligini so'rashingiz mumkin. Bundan tashqari, ushbu modul tashqi uskunalardan, masalan, savdo yoki fiskal hodisalardan to'xtatiladi. Shuni ta'kidlash kerakki, dastur moduli faqat ilova interaktiv ishga tushirilganda, ya'ni dastur oynasi ishga tushirilganda amalga oshiriladi. Agar dastur com ulanish rejimida ishga tushirilsa, bu sodir bo'lmaydi.
1C 8 platformasida ikki xil dastur moduli mavjud. Bular oddiy dastur moduli va boshqariladigan dastur modulidir. Ular turli mijozlar ishga tushirilganda ishga tushadi. Shunday qilib, boshqariladigan dastur moduli veb-mijoz, nozik mijoz va qalin mijoz boshqariladigan dastur rejimida ishga tushirilganda ishga tushadi. Oddiy dastur moduli esa qalin mijoz oddiy dastur rejimida ishga tushirilganda ishga tushadi. Ilovani ishga tushirish rejimi sozlamalari "Asosiy ishga tushirish rejimi" konfiguratsiya xususiyatida ko'rsatilgan.

Ilova moduli barcha 3 bo'limni o'z ichiga olishi mumkin - o'zgaruvchilar e'lonlari, protseduralar va funktsiyalar tavsifi, shuningdek, dasturning asosiy matni. Ilova moduli mijoz tomonida tuzilgan, bu ko'plab ma'lumotlar turlaridan foydalanishimizni sezilarli darajada cheklaydi. "Server qo'ng'irog'i" xossalari to'plamiga ega bo'lgan umumiy modullar usullaridan foydalanib, dastur moduli kontekstini kengaytirishingiz mumkin. Eksport sifatida belgilangan barcha dastur moduli o'zgaruvchilari va usullari mijoz tomonida ishlaydigan har qanday konfiguratsiya modulida mavjud bo'ladi. Biroq, qanchalik jozibali bo'lmasin, bu erda ko'p sonli protseduralar va funktsiyalarni joylashtirmaslik kerak. Berilgan modulda qancha ko'p kod mavjud bo'lsa, kompilyatsiya vaqti shunchalik ko'p bo'ladi va shuning uchun dasturni ishga tushirish vaqti.

Yuqorida aytib o'tilganidek, dastur moduli dasturni ishga tushirish va tugatish hodisalarini boshqaradi. Ilova modulida ushbu hodisalarning har birini boshqarish uchun Old... va Qachon... bir juft ishlovchilar mavjud. Ularning orasidagi farqlar quyidagicha: Oldin... ishlov beruvchisida kodni bajarishda amal hali bajarilmagan. sodir bo'ldi va biz uni bajarishdan bosh tortishimiz mumkin. Rad etish opsiyasi aynan shu maqsadda. On.. ishlov beruvchilarida amal allaqachon bajarilgan va biz dasturni ishga tushirish yoki undan chiqishni rad eta olmaymiz.

Tashqi ulanish moduli

  • barcha 3 sohani o'z ichiga olishi mumkin
  • konfiguratsiyaning ildiz qismida joylashgan

Modulning maqsadi amaliy modulning maqsadiga o'xshaydi. U ilovaning boshlanishi va tugash hodisalarini qayta ishlaydi. Tashqi ulanish moduli ilova com ulanish rejimida ishga tushirilganda ishga tushadi. Tashqi qo'shilish jarayonining o'zi interaktiv jarayon emas. Ushbu rejimda ma'lumotlar bazasi bilan dasturiy ish sodir bo'ladi va dastur oynasi ochilmaydi, bu interfaol ishlash uchun mo'ljallangan usullardan foydalanishga ma'lum cheklovlar qo'yadi. Ushbu rejimda dialog shakllariga qo'ng'iroqlar, ogohlantirishlar va foydalanuvchiga xabarlar va boshqalarni ishlatib bo'lmaydi. Ular shunchaki qatl qilinmaydi.

Ilova modulida bo'lgani kabi, bu erda ham uchta soha mavjud: o'zgaruvchan deklaratsiyalar, protseduralar va funktsiyalarning tavsiflari, shuningdek dasturning asosiy matni. Ilova modulidan asosiy farq shundaki, ulanish rejimida infobaza bilan barcha ishlar server tomonida amalga oshiriladi, shuning uchun tashqi ulanish moduli server tomonida tuzilgan. Shunga ko'ra, eksport o'zgaruvchilari va umumiy mijoz modullarining usullari unda mavjud emas.

Seans moduli

  • server tomonida ishlaydi
  • konfiguratsiyaning ildiz qismida joylashgan

Bu faqat seans parametrlarini ishga tushirish uchun mo'ljallangan juda ixtisoslashgan moduldir. Nega buning uchun o'z modulingizni yaratishingiz kerak edi? Uning ishlatilishi dasturning o'zi turli rejimlarda ishga tushirilishi (natijada boshqariladigan dastur moduli, oddiy dastur moduli yoki tashqi ulanish modulining bajarilishi) va sessiya parametrlarini ishga tushirishdan qat'iy nazar amalga oshirilishi kerakligi bilan bog'liq. ishga tushirish rejimidan. Ushbu uchta modulda bir xil dastur kodini yozmaslik uchun bizga dasturni ishga tushirish rejimidan qat'iy nazar ishlaydigan qo'shimcha modul kerak edi.

Seans modulida "SettingSessionParameters" bitta hodisasi mavjud bo'lib, u birinchi bo'lib, hatto BeforeSystemStartOperation dastur moduli hodisasidan oldin ham amalga oshiriladi. O'zgaruvchilar deklaratsiyasi bo'limi va asosiy dastur bo'limi unda mavjud emas. Shuningdek, siz eksport usullarini e'lon qila olmaysiz. Modul server tomonida tuzilgan.

Umumiy modullar

  • protseduralar va funktsiyalarni tavsiflovchi hududni o'z ichiga olishi mumkin
  • server yoki mijoz tomonida bajariladi (modul sozlamalariga qarab)
  • "Umumiy" - "Umumiy modullar" konfiguratsiya ob'ektlarining daraxt shoxchasida joylashgan.

Umumiy modullar boshqa konfiguratsiya modullaridan chaqiriladigan ba'zi umumiy algoritmlarni tavsiflash uchun mo'ljallangan. Umumiy modulda o'zgaruvchilarni e'lon qilish sohalari va asosiy dastur matni mavjud emas. Unda eksport usullarini e'lon qilishingiz mumkin, ularning mavjudligi modul sozlamalari bilan belgilanadi (u qaysi tomonda bajariladi: server yoki mijoz tomonida). O'zgaruvchilarni tavsiflash bo'limi mavjud emasligi sababli, umumiy modullarda global o'zgaruvchilarni aniqlab bo'lmaydi. Buning uchun dastur modulidan foydalanishingiz mumkin.

Umumiy modulning xatti-harakati o'rnatilgan parametrlarga bog'liq (global yoki yo'q, turli xil kompilyatsiya bayroqlari, server qo'ng'irog'i mavjudligi va boshqalar). Umumiy modullarni o'rnatish bo'yicha ba'zi maslahatlar:

Global bayroqni hamma joyda ishlatmaslik yaxshi amaliyotdir. Bu dasturni ishga tushirish vaqtini qisqartiradi, shuningdek, kodni o'qishni yaxshilaydi (albatta, agar umumiy modul to'liq mazmunli nomga ega bo'lsa);
- Bir nechta kompilyatsiya bayroqlaridan foydalanish tavsiya etilmaydi. Turli xil kontekstlarda bajarilishi kerak bo'lgan juda ko'p usullar mavjud emas va agar bunday usullar hali ham talab qilinsa, ular uchun alohida umumiy modul ajratilishi mumkin;
- "Call server" bayrog'i, agar modul "Serverda" tuzilgan bo'lsa, mantiqiy bo'ladi. Shuning uchun, har xil muammolarni oldini olish uchun barcha boshqa kompilyatsiya bayroqlarini olib tashlash kerak;
- agar modul usullari ommaviy ma'lumotlarni qayta ishlash, ma'lumotlar bazasiga o'qish va yozishni o'z ichiga olsa, ish tezligini oshirish uchun "Imtiyozli" bayroqni o'rnatish orqali kirishni boshqarishni o'chirib qo'yish yaxshiroqdir. Ushbu rejim faqat serverda tuzilgan umumiy modullar uchun mavjud.

Shakl moduli

  • barcha 3 sohani o'z ichiga olishi mumkin
  • server va mijoz tomonida bajariladi

Shakl moduli ushbu forma yordamida foydalanuvchi harakatlarini qayta ishlash uchun mo'ljallangan (tugmachani bosish hodisasini qayta ishlash, forma ma'lumotlarini o'zgartirish va hokazo). Shaklning o'zi bilan bevosita bog'liq hodisalar ham mavjud (masalan, uning ochilishi yoki yopilishi). Boshqariladigan va muntazam shakllarning modullari, birinchi navbatda, boshqariladigan shakl moduli kontekstga aniq bo'linganligi bilan farqlanadi. Har bir protsedura yoki funksiya kompilyatsiya direktivasiga ega bo'lishi kerak. Agar kompilyatsiya direktivasi ko'rsatilmagan bo'lsa, u holda bu protsedura yoki funksiya server tomonida bajariladi. Oddiy shaklda barcha kod mijoz tomonida bajariladi.

Boshqariladigan shakl strukturasi o'zgaruvchilarni e'lon qilish bo'limi, protseduralar va funktsiyalar tavsifi va dasturning asosiy matnini (shaklni ishga tushirish vaqtida bajariladi) o'z ichiga oladi. Biz standart shakl hodisalariga shaklning kutilgan protseduralari va funktsiyalari ro'yxati orqali kirishimiz mumkin (Ctrl+Alt+P), yoki shaklning xossalar palitrasi orqali.

Agar formada asosiy atribut tayinlangan bo'lsa, u holda asosiy atribut sifatida foydalaniladigan dastur ob'ektining xossalari va usullari forma modulida mavjud bo'ladi.

Ob'ekt moduli

  • barcha 3 sohani o'z ichiga olishi mumkin
  • server tomonida ishlaydi

Ushbu modul ko'pgina konfiguratsiya ob'ektlari uchun mavjud va odatda ob'ekt bilan bevosita bog'liq hodisalarni qayta ishlash uchun mo'ljallangan. Masalan, ob'ektlarni yozib olish va o'chirish, ob'ekt tafsilotlarini to'ldirishni tekshirish, hujjatni joylashtirish va boshqalar.

Ba'zi ob'ekt moduli hodisalari forma moduli hodisalarini takrorlaydi. Masalan, yozuv bilan bog'liq voqealar. Ammo shuni tushunish kerakki, shakl modulining hodisalari faqat ob'ektning o'ziga xos shaklida, ya'ni aniq shakl ochilganda bajariladi. Va ob'ekt modulining hodisalari har qanday holatda ham, ob'ekt bilan dasturiy ish paytida ham chaqiriladi. Shuning uchun, agar sizga ob'ektning ma'lum bir shakliga bog'lanmagan holda ob'ekt bilan bog'langan usullar kerak bo'lsa, buning uchun ob'ekt modulidan foydalangan ma'qul.

Ob'ekt menejeri moduli

  • barcha 3 sohani o'z ichiga olishi mumkin
  • server tomonida ishlaydi

Ob'ekt menejeri moduli faqat 1C 8.2 versiyasidan boshlab paydo bo'ldi. Menejer moduli barcha amaliy ob'ektlar uchun mavjud va bu ob'ektni konfiguratsiya ob'ekti sifatida boshqarish uchun mo'ljallangan. Menejer moduli ma'lumotlar bazasi ob'ektining ma'lum bir nusxasiga emas, balki konfiguratsiya ob'ektining o'ziga tegishli protseduralar va funktsiyalarni kiritish (yozish) orqali ob'ektning funksionalligini kengaytirishga imkon beradi. Obyekt menejeri moduli berilgan obyekt uchun umumiy protseduralar va funksiyalarni joylashtirish va ularga tashqaridan, masalan, qayta ishlashdan kirish imkonini beradi (albatta, agar ushbu protsedura yoki funksiya Export kalit so'ziga ega bo'lsa). Bu bizga qanday yangilikni beradi? Umuman olganda, protseduralarni ob'ektlar bo'yicha tashkil qilish va ularni alohida joylarda saqlashdan boshqa narsa - Ob'ekt menejeri modullari. Biz ushbu protseduralar va funktsiyalarni umumiy modullarga muvaffaqiyatli joylashtirishimiz mumkin, ammo 1C ob'ektlarning umumiy protseduralari va funktsiyalarini Ob'ektlar menejeri moduliga joylashtirishni tavsiya qiladi. Ob'ektlarni boshqarish modulining protseduralari va funktsiyalaridan foydalanishga misollar: ma'lum shartlarda ma'lumotnoma yoki hujjatning individual tafsilotlarini dastlabki to'ldirish, ma'lum shartlarda ma'lumotnoma yoki hujjat tafsilotlarini to'ldirishni tekshirish va boshqalar.

Buyruqlar moduli

  • protseduralar va funktsiyalarni tavsiflovchi bo'limni o'z ichiga olishi mumkin
  • mijoz tomonida amalga oshiriladi

Buyruqlar - bu dastur ob'ektlariga yoki umuman konfiguratsiyaga bo'ysunadigan ob'ektlar. Har bir buyruq buyruq moduliga ega bo'lib, unda ushbu buyruqni bajarish uchun oldindan belgilangan CommandProcess() protsedurasi tasvirlanishi mumkin.

1C: Enterprise tizim konfiguratsiyasining yangi versiyalarida ko'plab funktsiyalar va protseduralar ob'ekt modullaridan (hujjatlar, kataloglar va boshqalar) menejer modullariga o'tdi. Keling, ushbu ikki modul o'rtasidagi farqlarni ko'rib chiqaylik.

Ob'ektga yo'naltirilgan dasturlash nazariyasiga ko'ra, ob'ekt usullari ikki guruhga bo'linadi: statik va oddiy. Oddiy usullar faqat sinfning ma'lum bir nusxasiga kirish huquqiga ega. Statik usullar ob'ekt ma'lumotlariga kirish huquqiga ega emas, lekin butun sinf bilan ishlaydi.

Agar bularning barchasini 1C: Enterprise tizimi shartlariga tarjima qilsak, unda Ob'ekt moduli oddiy usullarni o'z ichiga oladi. Ulardan foydalanish uchun avvalo ma'lum bir ob'ektni olishingiz kerak: katalog elementi, hujjat va boshqalar. Menejer moduli statik usullarni o'z ichiga oladi. Uni ishlatish uchun har bir aniq ob'ektni alohida olishning hojati yo'q, bu sizga bir vaqtning o'zida butun to'plam bilan ishlash imkonini beradi.

Ob'ekt moduli tashqaridan foydalanish mumkin bo‘lgan protsedura va funksiyalarga ega bo‘lishi mumkin. Shu maqsadda bunday tartib yoki funktsiya so'z bilan belgilanadi Eksport.

Funktsiya NewFunction () Eksport

Ob'ekt modulidan bunday funktsiyadan foydalanish uchun siz birinchi navbatda kerakli ob'ektga havolaga ega bo'lishingiz va uni funktsiyadan foydalanib olishingiz kerak. GetObject().



Per = Ob'ekt. NewFunction();

Xuddi shunday, siz turli xil konfiguratsiya ob'ektlaridan foydalanish mumkin bo'lgan yangi o'zgaruvchilar yaratishingiz mumkin.

Yangi oʻzgaruvchini eksport qilish

Katalog elementi = Kataloglar. Nomenklatura. FindByCode("000000001" );
Ob'ekt = Katalog elementi. GetObject();
Ob'ekt. Newvariable=);

Shu tarzda siz ob'ektlarning standart protseduralari, funktsiyalari va xususiyatlarini (o'zgaruvchilari) to'ldirishingiz mumkin. Bunday o'zgaruvchilar dinamikdir, ular ma'lumot bazasida saqlanmaydi va faqat qabul qilingan ob'ekt bilan ishlashda mavjud.

Menejer moduli bir xil imkoniyatlarga ega, yagona farq shundaki, uni ishlatish uchun siz ma'lum bir ob'ektni olishingiz shart emas, boshqaruv moduli ma'lum turdagi ob'ektlarning butun to'plami bilan ishlashga imkon beradi;

Protsedura NewProcedure() eksporti

Katalog elementi = Kataloglar. Nomenklatura. NewProcedure();

Yoki o'zgaruvchi uchun:

Yangi oʻzgaruvchini eksport qilish

Katalog elementi = Kataloglar. Nomenklatura. newvariable;

Hujjatning bosma shaklini yaratish protsedurasi misolidan foydalanib, ob'ekt moduli va menejer modulidan foydalanishdagi farqlarni ko'rib chiqamiz.

Ob'ekt modulidan foydalanganda kod quyidagicha ko'rinadi:

Funktsiya Hujjatni chop etish (havola) eksporti
//Siz ushbu funktsiyaga ma'lum bir hujjatga havolani o'tkazishingiz kerak
TabDoc-ni qaytarish;
EndFunction

Hujjat shaklida siz hujjatga havolani chop etish funksiyasiga o'tkazadigan protsedura yaratishingiz kerak.

&OnClient
Chop etish tartibi (buyruq)
TabDoc = PrintOnServer();
TabDoc. Show();
Jarayonning oxiri
&Serverda
Funktsiya PrintOnServer()
Doc = FormAttributesValue("Ob'ekt" );
Hujjatni qaytarish. PrintDocument(Ob'ekt. Havola);
EndFunction

Ushbu usulning kamchiligi shundaki, u faqat bitta ob'ektni chop etadi. Agar bir vaqtning o'zida bir nechta hujjatlarni chop etishingiz kerak bo'lsa, unda siz ularning har birini olishingiz va keyin ob'ekt modulidan funktsiyani chaqirishingiz kerak. Bu muhim tizim resurslarini talab qiladi, chunki ob'ekt olinganda butun ob'ekt RAMga joylashtiriladi.

Ishlash nuqtai nazaridan, iloji boricha menejer modulidan foydalanish yaxshiroqdir. Bizning misolimizda muammoning yechimi shunday ko'rinadi.
Funktsiya PrintOnServer()
Hujjatlarni qaytarish. Bizning hujjatimiz. PrintDocument(ArrayLinks);
EndFunction

Agar siz menejer modulidan foydalansangiz, bosib chiqarish protsedurasini massivdagi bir nechta hujjatlarga havolalarni uzatib, hujjat shaklidan ham, ro'yxat shaklidan ham chaqirish mumkin. Bunday holda, tizim har bir hujjatni massivdan olishi shart emas, bu tizim resurslarini sezilarli darajada tejaydi.

Xo'sh, qachon ob'ekt modulidan va qachon menejer modulidan foydalanish kerak?

Hammasi vazifaga bog'liq. Agar ob'ektga havola uni bajarish uchun etarli bo'lsa (masalan, chop etish vazifasi), u holda menejer modulidan foydalangan ma'qul. Agar vazifa ma'lumotlarni o'zgartirish bo'lsa, masalan, hujjatni to'ldirish, keyin siz uni olishingiz va ob'ekt modulidan foydalanishingiz kerak.