1s ichida hodisa ishlov beruvchisi nima. Barcha tadbir obunalari. "Hujjatni joylashtirganda" tadbiriga obuna bo'lish

Ushbu maqola yangi funksiyalarning e'lonidir.
Yangi funksiyalarni o'rganish uchun ushbu maqolaning mazmunidan foydalanish tavsiya etilmaydi.
Yangi funksiyaning to'liq tavsifi tegishli versiya uchun hujjatlarda taqdim etiladi.
Yangi versiyadagi o'zgarishlarning to'liq ro'yxati v8Update.htm faylida keltirilgan.

EDT 1.7.0.567 versiyasida amalga oshirilgan.

1C: Enterprise Development Tools (EDT) da biz yangi vositaning prototipini joriy qildik. Ushbu vositaning ishchi nomi muharrir Barcha tadbir obunalari. Bu sizga ilova yechimida mavjud bo'lgan barcha voqealarga obunalarni qulay tahlil qilishga yordam beradi.

Tadbir obunalari

1C: Enterprise platformasi sizga dastur yechimidagi konfiguratsiya ob'ektlarining hodisalariga obuna yaratish imkonini beradi. Obuna - bu asl hodisa ishlov beruvchisi bajarilgandan keyin bajariladigan protsedura. Obunalarning qulayligi shundaki, bitta protsedura turli xil konfiguratsiya ob'ektlariga tegishli hodisaga "obuna bo'lishi" mumkin. Shunday qilib, agar tashkilotni ro'yxatdan o'tkazishda ham, bo'limni qayd etishda ham bajarilishi kerak bo'lgan algoritm mavjud bo'lsa, u obunada joylashgan bo'lishi mumkin va keyin siz ob'ektlarning o'zida ushbu hodisa uchun ishlov beruvchilarni o'zgartirishingiz shart emas.

Ma'lum bo'lishicha, obuna qulay va universal mexanizmdir. Ammo yirik dastur yechimlarida voqealar obunalari soni bir necha yuzga yetishi mumkin. Ularni konfiguratsiya daraxtida, chiziqli ro'yxatda tahlil qilish noqulay bo'ladi. Masalan, dastur yechimida 1C: Korxona boshqaruvi (ERP) 340 dan ortiq tadbir obunalari.

EDT obunalarni panelda ko'rsatish orqali ular bilan ishlashni biroz osonlashtiradi Sxema, ba'zi bir dastur ob'ektining moduli ochilganda.


Obunalarning ushbu ko'rinishi modulni tahrirlash bilan bog'liq bir qator vazifalar uchun qulaydir. Ammo ma'lum bir voqea sodir bo'lganda obunalarda bajariladigan barcha algoritmlarni tezda topish va tahlil qilish kerak bo'lganda, u hali ham mos kelmaydi.

Barcha tadbir obunalari

Yuqorida sanab o'tilgan noqulayliklardan xalos bo'lish uchun biz obuna algoritmlari amalga oshiriladigan obunalar, hodisalar, konfiguratsiya ob'ektlari va protseduralarini ifodalashning universal usulini joriy qildik.


Natijada siz muharrirga qo'ng'iroq qilishingiz mumkin Barcha tadbir obunalari butun konfiguratsiya uchun yoki faqat bitta ob'ekt uchun - farq faqat qandaydir tarzda filtrlangan ma'lumotlar tarkibida bo'ladi.


Chap tomonda muharrir barcha voqealarni va har bir voqeada uning barcha obunalarini ko'rsatadi. Muayyan obunani tanlaganingizda, yuqori o'ng tomonda obuna "obuna" bo'lgan konfiguratsiya ob'ektlari ro'yxati ko'rsatiladi. Va obuna algoritmi joylashgan modul va protsedura pastki o'ngda ko'rsatilgan. Protsedurani ikki marta bosish orqali siz uni o'rnatilgan til muharririda ochishingiz mumkin.

Tahrirlovchida siz nafaqat alohida obunalarni, balki bitta voqea bilan bog'liq barcha obunalarni ham tahlil qilishingiz mumkin. Agar siz hodisani tanlasangiz, muharrir barcha modullarni va ushbu hodisani qayta ishlash uchun imzolangan barcha protseduralarni ko'rsatadi.


Agar siz konfiguratsiya ob'ekti uchun muharrirga qo'ng'iroq qilsangiz, faqat o'sha ob'ekt voqealari va obunalari ko'rsatiladi va ob'ektning o'zi har doim manbalar ro'yxatida qizil rang bilan ajratib ko'rsatiladi. Shunday qilib, masalan, siz tanlagan obuna zarur bo'lgan barcha konfiguratsiya ob'ektlari uchun ishlashini tezda tekshirishingiz mumkin.


Kontekst buyrug'i (konfiguratsiya ob'ektida) yordamida tahrirlovchiga qo'ng'iroq qilish muharrirda ko'rsatilgan obunalar sonini darhol kamaytirish imkonini beradi. Masalan, obunalarni faqat ob'ekt modulida yoki menejer modulida qayta ishlangan voqealar uchun ko'rishingiz mumkin.


Bundan tashqari, muharrir universal filtrni o'z ichiga oladi, uning yordamida siz ob'ektlar, hodisalar va protseduralar tarkibini istalgan tarzda sozlashingiz mumkin.


Shuni esda tutingki, ushbu filtr yordamida siz nafaqat voqealar manbai bo'lgan aniq ob'ektlarni, balki bunday turlar to'plamini ham tanlashingiz mumkin. DirectoryObject, DocumentObject va boshqalar. Bunday turlar to'plamiga barcha kataloglar yoki konfiguratsiyadagi barcha hujjatlar kiradi.

Satr bo'yicha qidirish orqali siz faqat sizni qiziqtirgan mexanizmga tegishli obunalarni tezda topishingiz mumkin.


Istalgan vaqtda muharrirda ko'rsatilgan voqea yoki manba bo'yicha tarkibni tezda filtrlashingiz mumkin. Masalan, siz obuna topdingiz Hisoblash formulasini tekshiring. Uning manbasi hisob turlarining rejasidir Tutadi.


Hisoblash turlari rejasidagi kontekst buyrug'idan foydalanib, siz faqat uning voqealari bilan bog'liq bo'lgan obunalarni tezda ko'rishingiz mumkin.


To'xtash nuqtalarini avtomatik ravishda qo'shish

Hodisa obunalarini tahlil qilishning keng tarqalgan usullaridan biri tuzatuvchida barcha chaqirilgan protseduralarni bajarilish tartibida ketma-ket ko'rishdir. Buning uchun muharrir ishlov beruvchilarga avtomatik ravishda uzilish nuqtalarini qo'shish uchun qulay vositani taqdim etadi.

Avvalo, siz ushbu vositani to'g'ridan-to'g'ri tahrirlovchida chaqirishingiz mumkin.


Siz o'zingizni qiziqtirgan ob'ektni topishingiz va tanlashingiz, uning hodisalaridan birini tanlashingiz va, masalan, barcha ishlov beruvchilarni belgilashingiz mumkin. Bosgandan keyin KELISHDIKMI To'xtash nuqtalari har bir tekshirilgan ishlov beruvchining birinchi bajariladigan qatoriga qo'shiladi va bu barcha to'xtash nuqtalari panelda paydo bo'ladi. To'xtash nuqtalari nuqtai nazardan Nosozliklarni tuzatish.


To'xtash nuqtalarini qo'shishning yana bir usuli, siz o'zingizni qiziqtirgan ob'ekt yoki hodisani muharrirda allaqachon topganingizda qulaydir. Bunday holda, kontekst menyusidan sizga mos keladigan buyruqni chaqirishingiz mumkin.


Va nihoyat, siz foydalanishingiz mumkin bo'lgan uchinchi usul - disk raskadrovka paytida avtomatik ravishda to'xtash nuqtalarini qo'shishdir. Bunday holda siz tahrirlovchini ochishingiz shart emas, chunki qo'shish buyrug'i to'g'ri panelda joylashgan To'xtash nuqtalari.


Shunday qilib, muharrir Barcha tadbir obunalari turli tahlil stsenariylaridan foydalanish imkonini beruvchi universal vositadir. Bu nafaqat dastur yechimini yaxshi biladigan ishlab chiquvchilar uchun, balki notanish funksionallikni tushunishi kerak bo'lgan amalga oshirish bo'yicha mutaxassislar yoki IT mutaxassislari uchun ham foydali bo'ladi.

Foydalanuvchi har qanday harakatni amalga oshirganda, 1C platformasi dastur voqealarini yaratadi. Qoidaga ko'ra, bitta hodisa emas, balki butun voqealar zanjiri hosil bo'ladi. Dasturchining vazifasi dasturdan kutilgan xatti-harakatlarga erishish uchun dastur kodini voqealarga to'g'ri joylashtirishdir. Biroq, quyida keltirilgan sabablarga ko'ra, yangi boshlanuvchi 1C dasturchisi uchun buni qilish oson bo'lmaydi.

Hodisalar boshqariladigan shaklda yaratilishi mumkin: On ReadingOnServer, OnCreatingOnServer, OnOpening va boshqalar.

Boshqariladigan shakldagi hodisalar mijoz va serverda hosil bo'ladi: BeforeRecord, BeforeRecordOnServer.

Hodisalar turli modullarda chaqiriladi: ElementForm, ObjectModule, ManagerModule.

Ro'yxatda bir nechta katalog elementlari mavjud bo'lsa, ba'zi hodisalar bir necha marta chaqirilishi mumkin, masalan: ProcessingGetView.

Boshqariladigan shakl foydalanuvchining turli harakatlari natijasida ochilishi mumkin va voqea qo'ng'iroqlari zanjirlari farqlanadi. Katalog bilan quyidagi foydalanuvchi harakatlarining har biri boshqariladigan shaklni ochadi: yangi element yaratish, elementni nusxalash, mavjud katalog elementini o'zgartirish.

Hodisalar forma elementlari orqali ham hosil bo‘ladi: jadval qismiga qator qo‘shganda, jadval qismidagi qatorni tahrirlashda, qator yoki maydonni faollashtirishda, kiritish maydonida qidirish elementini tanlashda va hokazo.

Qo'zg'atilgan hodisalarning mantiqiyligi va ketma-ketligini yaxshiroq tushunish uchun siz ushbu maqolaga ilova qilingan "Hodisalarni o'rganish" ishlanmasidan foydalanishingiz mumkin. Voqea chaqiruvi kontekstini, voqealar ketma-ketligini va foydalanuvchi bajaradigan harakatlarni bilgan holda, qaysi hodisa ishlov beruvchisi dastur kodingizni joylashtirish yaxshiroq ekanligini tushunish osonroq bo'ladi.

Event Study dasturidan foydalanish bo'yicha ko'rsatmalar

Voqealarni o'rganish dasturi 1C platformasi foydalanuvchilarning interaktiv harakatlarida yaratadigan voqealarni ko'rsatadi. Ishlash printsipi quyidagicha: foydalanuvchi katalogni ochadi, dastur voqealar zanjirini ko'rsatadi. Foydalanuvchi o'chirish uchun katalog elementini belgilaydi va dastur sodir bo'lgan voqealar ketma-ketligini ko'rsatadi. Voqealar sukut bo'yicha 3 soniya biroz kechikish bilan ko'rsatiladi, bu bir hodisalar zanjirini boshqa hodisalar zanjiridan ajratish uchun kerak. Shuning uchun siz interaktiv harakatlarni "sekin" bajarishingiz kerak.

Barcha voqealar maxsus "So'nggi voqealar" oynasida ko'rsatiladi. Bu erda siz hodisani yozib olishni yoqishingiz yoki o'chirib qo'yishingiz mumkin. Odatiy bo'lib, birinchi ochilganda hodisani yozib olish yoqiladi. Voqealarni qulay ko'rish uchun dasturni ishga tushirganingizda darhol ekranning pastki qismidagi "So'nggi voqealar" oynasini mahkamlashingizni maslahat beraman.

Dasturning o'zi voqealar zanjiriga qanday harakat sabab bo'lganini aniqlay olmaydi; Men sizga "Harakat sababi" maydoniga oxirgi harakatlaringizning nomlarini yozishingizni maslahat beraman, masalan, "Katalog ro'yxati shakli ochiq", "Katalogdagi element" roʻyxat oʻchirish uchun belgilangan” va hokazo. Bu keyinchalik harakatlar va hodisalarni tahlil qilishni osonlashtiradi.

Voqealarni qayd etish "Oxirgi voqealar" shaklida yoqilgan bo'lsa, "Voqealar kuzatuvi" bo'limida joylashtirilgan ob'ektlar uchun qayd etiladi va ko'rsatiladi.

Barcha qayd etilgan voqealarni "Xizmat" bo'limida joylashgan "Voqealar hisoboti" orqali ko'rish mumkin.

Barcha qayd etilgan harakatlar va hodisalarni tezda tozalash uchun "Xizmat" bo'limida "Hodisalar va harakatlarni tozalash" ni tanlang.

Hodisaga obuna bo'lish 1C 8.3 va 8.2 - bu muayyan ob'ekt hodisasiga ishlov beruvchini belgilash imkonini beruvchi konfiguratsiya ob'ekti. Bunday ishlov beruvchi bir vaqtning o'zida bir nechta konfiguratsiya ob'ektlariga, masalan, bir vaqtning o'zida barcha hujjatlarga tayinlanishi mumkin.

Keling, ushbu metadata ob'ektini batafsil ko'rib chiqaylik.

  • Yangi raqamni o'rnatishda
  • Nusxa olayotganda
  • Qayta ishlash to'ldirish
  • Yozib olishdan oldin
  • Yozilayotganda
  • O'chirishdan oldin
  • Qayta ishlashni o'tkazish
  • Qayta ishlashOlib tashlash amalga oshirilmoqda
  • ProcessingCheckingFilling

Siz tadbirga obuna bo'lishingiz mumkin faqat ob'ektda, shaklda emas.

1C 8 da qo'ng'iroqlarni qayta ishlash tartibi

Voqealarga obuna ishlov beruvchilari ob'ekt ishlov beruvchisidan keyin chaqiriladi, ya'ni. agar voqea obunasi "ProcessingProcessing" hodisasiga o'rnatilgan bo'lsa, avval ob'ekt modulidan ishlov beruvchi, so'ngra obunadan ishlov beruvchi ishlaydi.

1C da 267 ta video darslarni bepul oling:

Agar bitta hodisaga bir nechta obuna bo'lsa, tajribaga ko'ra, birinchi navbatda konfiguratsiya daraxtida yuqoriroq bo'lgan obuna chaqiriladi. Garchi 1C kompaniyasining o'zi bu ustuvorlik aniqlanmaganligini xabar qilsa ham.

1C da voqea obunalaridan foydalanish

Obunalardan foydalanish, masalan, uchun o'zgarishlarni ro'yxatdan o'tkazish uchun juda qulay. Yoki turli xil konfiguratsiya ob'ektlari uchun bir xil bo'lgan boshqa harakatlar.

Standartni o'zgartirmaslik uchun tez-tez voqea obunalaridan foydalanaman. Bu juda qulay, masalan, obunada biz konfiguratsiyani o'zgartirmasdan hujjat harakatlarini sozlashimiz yoki yangi registrlarga harakat qo'shishimiz mumkin.

Tadbir obunasini sozlash

Obunani sozlash juda oddiy:

  • Manba— ishlov beruvchi o'rnatilgan ma'lumotlar turlari;
  • Tadbir— ishlov beruvchi o‘rnatilgan hodisa;
  • Ishlovchi— hodisa ishlov beruvchisi joylashgan protsedurani bildiradi.

1C: Enterprise 8.x platformasida amaliy echimlarni ishlab chiqish yoki o'zgartirishda ko'pincha konfiguratsiya ob'ektlari (masalan, kataloglar) guruhi uchun ba'zi standart harakatlarni bajarish kerak bo'ladi. Har bir ob'ektning modulida bajarilgan harakatlarni tasvirlamaslik uchun ishlab chiquvchi standart platforma mexanizmidan foydalanishi mumkin - voqea obunasi.

Voqealarga obuna bo'lish sizga konfiguratsiya ob'ektlarining hodisalarini, masalan, kataloglar, hujjatlar, xarakterli turdagi rejalar va boshqalarni ushlab turish imkonini beradi. Bugun maqolada biz hodisalarga obuna ishlovchilarni bajarish ketma-ketligi masalasini ko'rib chiqamiz, shuningdek, bitta harakat uchun bir nechta hodisalarga obuna bo'lgan platformaning xatti-harakatlarini tahlil qilamiz (masalan, yozib olishda).

Standart xatti-harakatlar

Bizning misolimizda ma'lum bir "SimpleDirectory" katalogidan foydalanaylik. Unda ishlab chiquvchi aralashishi mumkin bo'lgan har bir voqea uchun yaratilgan voqea obunalari mavjud. Voqealarni qayta ishlash protseduralari tegishli server umumiy modulida joylashgan.

Obuna ishlov beruvchilarini chaqirish tartibi ushbu ob'ekt bilan ishlashda platformaning standart xatti-harakati bilan bir xil. Bizning misolimizda biz katalog bilan ishlashni ko'rib chiqayotganimiz sababli, men ob'ekt bilan harakatlarga qarab ishlov beruvchilarni chaqirish sxemasini ko'rib chiqishni taklif qilaman (keyingi skrinshotga qarang).

Ko'rib turganimizdek, boshlang'ich bosqichda "ProcessingFill" (yangi element yaratish uchun) yoki "On Copying" (mavjud element asosida element yaratish uchun) hodisa ishlov beruvchilari chaqiriladi. Ikkala holatda ham, nomlangan ishlov beruvchilarni chaqirgandan so'ng, "OnInstallNewCode" protsedurasi bajariladi, bu erda ishlab chiquvchi kodga prefiks o'rnatishi yoki yangi kodni tayinlashda platformaning harakatini bekor qilishi mumkin.

Katalog elementini yozishda, xoh u yangi element bo'lsin, xoh mavjud bo'lsin, uchta ishlov beruvchi deyiladi: "ProcessingFillCheck" (bu bosqichda ishlov beruvchi kiritilgan ma'lumotlarning to'g'riligini tekshirishi va xatolar mavjud bo'lsa, yozishni rad etishi mumkin), "BeforeWrite" (ob'ekt ma'lumotlar bazasiga yozilgunga qadar, siz tafsilotlarning qiymatlarini sozlashingiz va har qanday qo'shimcha shartlarni tekshirishingiz mumkin) va keyin "OnRecord" (ma'lumotlar bazasiga yozuv kiritilgan, ammo tranzaktsiya yopilmagan) , ishlab chiquvchi yozuvdan keyin ma'lumotlarni tekshirishi va agar kerak bo'lsa, operatsiyani bekor qilishi mumkin).

"O'chirishdan oldin" hodisasi, agar ob'ekt to'g'ridan-to'g'ri ma'lumot bazasidan o'chirilgan bo'lsa sodir bo'ladi. Odatda, hech bir foydalanuvchi ma'lumotnoma yaxlitligini tekshirmasdan to'g'ridan-to'g'ri o'chirishga ruxsat bermaydi. Yo'q qilish har doim "Belgilangan ob'ektlarni o'chirish" ishlovi yordamida amalga oshirilishi kerak. Ikkinchi holda, "BeforeDelete" ishlov beruvchisi ham chaqiriladi.

Shunday qilib, agar biz katalog elementini yaratsak va uni ma'lumot bazasiga yozsak, platforma belgilangan tartibda quyidagi voqea ishlov beruvchilarini chaqiradi:

Boshqa konfiguratsiya ob'ektlariga kelsak, hodisalarga obuna bo'lish mexanizmining ishlashi o'xshash bo'ladi, faqat hodisalar va ularning tartibi farq qilishi mumkin. Batafsil ma'lumot uchun sintaksis yordamchisiga qarang.

Hujjatsiz tomon

Endi qiziqarli vaziyatni ko'rib chiqamiz. Aytaylik, bizning "SimpleDirectory" katalogimiz uchun "BeforeRecord" hodisasiga uchta obuna aniqlangan:

Sizningcha, ushbu obunalar uchun ishlov beruvchilar qanday tartibda chaqiriladi? Taxmin qilmaylik. Men elementni yozib olish natijasini beraman, unda har bir obuna uchun ishlov beruvchi chaqirilgan obuna nomi bilan xabarni ko'rsatadi (quyidagi skrinshotga qarang).

Skrinshotdan hodisaga obunani qayta ishlash protseduralarini chaqirish tartibi "Voqealar obunalari" bo'limidagi metadata ob'ektlari tartibiga mos kelishini taxmin qilish qiyin emas. Ushbu xususiyat 1C: Enterprise platformasidagi hech qanday ma'lumotnomada tasvirlanmagan, shuning uchun uni konfiguratsiyada ishlatishda ehtiyot bo'lishingiz kerak, chunki hujjatsiz xususiyatlar 1C: Enterprise versiyasidan versiyasiga o'zgarishi va shu bilan birga dasturda bo'lmasligi mumkin. dastur o'zgarishlar ro'yxati.

Chekinish

Siz so'rashingiz mumkin: "Nega bitta konfiguratsiya ob'ekti hodisasi uchun bir nechta obunani yaratish kerak?" Javob oddiy. Agar bir nechta odam ishlab chiqishda ishtirok etsa, u holda bir-birining yaratilgan mexanizmlariga aralashish dasturning noto'g'ri ishlashiga olib kelishi mumkin. Bunday hollarda, eng mantiqiy narsa, har bir ishlab chiquvchi uchun topshirilgan vazifaga muvofiq alohida hodisa obunalarini yaratish bo'ladi. Albatta, kelajakda ular bitta ishlov beruvchi protsedurasiga birlashtirilishi mumkin.

Foydalanuvchi tugmani bosganda, forma ochiladi yoki yopiladi, hujjat yoziladi, voqea sodir bo'ladi.

Har bir hujjatni yozib olishdan oldin, biz ushbu tafsilot to'ldirilganligini tekshirmoqchimiz.

Buni qanday qilish kerak?

1C tadbirlariga obuna bo'lish

1C voqealariga obuna bo'lib, u Umumiy/1C voqealariga obunalar konfiguratsiyasi bo'limida joylashgan.

1C hodisasiga obuna bo'lish sizga bir nechta ob'ektlar (kataloglar, hujjatlar) uchun voqea sodir bo'lganda ishlov beruvchini tayinlash imkonini beradi.

Keling, 1C hodisasiga yangi obuna qo'shamiz va nomni o'rnatamiz.

1C hodisasiga obuna bo'lish xususiyatida Manba - siz bir yoki bir nechta hujjatlarni, kataloglarni - biz ishlov beruvchini joylashtirgan ob'ektlarni tanlashingiz kerak.

1C Event obunasi xususiyatida siz tanlangan hujjatlar va kataloglar bilan sodir bo'lishi mumkin bo'lgan standart hodisalar uchun variantlardan birini tanlashingiz kerak.

Biz "hujjatlar va ma'lumotnomalar" deb soddalashtiramiz - aslida siz ko'plab 1C ob'ektlaridan foydalanishingiz mumkin. Afsuski, siz 1C shaklidagi voqealarga obuna bo'lolmaysiz - masalan, ko'plab dasturchilar afsuslanadigan shaklni ochishda.

Mumkin bo'lgan hodisalar to'plami ob'ektga bog'liq. Ehtiyot bo'ling, chunki agar siz bir nechta (bir nechta) ob'ektlarni tanlasangiz, voqealar ro'yxati faqat tanlangan ob'ektlarning har birida bo'lishi mumkin bo'lgan voqealarni o'z ichiga oladi (ya'ni barcha tanlangan ob'ektlar uchun umumiy hodisalar).

Shundan so'ng, faqat ishlov beruvchi funktsiyasini yaratish qoladi. Buning uchun konfiguratsiyada xususiyatlarda Server katagiga belgi qo'yilishi kerak. "Katta oyna" tugmasini bosganingizda, funktsiya yaratiladi - ishlov beruvchi.

Hammasi! Biz hozirgina barcha hujjatlar uchun 1C BeforeRecording tadbiriga obuna bo'ldik. Endi har qanday hujjatni yozib olishda bizning funksiyamiz bajariladi, bu chekni o'z ichiga oladi.

Agar tekshiruv salbiy bo'lsa, hujjat yozishni rad etish uchun siz funktsiya parametrini o'rnatishingiz kerak