1c 8.2 ღონისძიებების გამოწერების დამუშავება. მოვლენის დამმუშავებლების მინიჭება ღონისძიების გამოწერების გამოყენებით. Event Study პროგრამის გამოყენების ინსტრუქცია

1C:Enterprise 8.x პლატფორმაზე აპლიკაციის გადაწყვეტილებების შემუშავებისას ან მოდიფიცირებისას, ძალიან ხშირად საჭიროა გარკვეული სტანდარტული მოქმედების შესრულება კონფიგურაციის ობიექტების ჯგუფისთვის (მაგალითად, დირექტორიები). იმისათვის, რომ არ აღწეროს თითოეული ობიექტის მოდულში შესრულებული მოქმედებები, დეველოპერს შეუძლია გამოიყენოს სტანდარტული პლატფორმის მექანიზმი - მოვლენის გამოწერა.

ღონისძიების გამოწერები საშუალებას გაძლევთ ჩაჭრათ კონფიგურაციის ობიექტების მოვლენები, როგორიცაა დირექტორიები, დოკუმენტები, დამახასიათებელი ტიპების გეგმები და სხვა. დღეს სტატიაში განვიხილავთ მოვლენების გამოწერის დამმუშავებლების შესრულების თანმიმდევრობის საკითხს და ასევე გავაანალიზებთ პლატფორმის ქცევას რამდენიმე მოვლენის გამოწერით ერთი მოქმედებისთვის (მაგალითად, ჩაწერისას).

სტანდარტული ქცევა

მოდით ჩვენს მაგალითში გამოიყენოს გარკვეული დირექტორია "SimpleDirectory". მას აქვს ღონისძიების გამოწერები შექმნილი თითოეული მოვლენისთვის, რომელზედაც დეველოპერს შეუძლია ჩაერიოს. მოვლენის დამმუშავებლის პროცედურები განთავსებულია სერვერის შესაბამის საერთო მოდულში.

გამოწერის დამმუშავებლების გამოძახების თანმიმდევრობა იგივეა, რაც პლატფორმის სტანდარტულ ქცევაში ამ ობიექტთან მუშაობისას. ვინაიდან ჩვენს მაგალითში განვიხილავთ დირექტორიასთან მუშაობას, მე ვთავაზობ განიხილოს დამმუშავებლების გამოძახების სქემა, რაც დამოკიდებულია ობიექტთან მოქმედებებზე (იხილეთ შემდეგი ეკრანის სურათი).

როგორც ვხედავთ, საწყის ეტაპზე მოვლენის დამმუშავებლებს „ProcessingFill“ (ახალი ელემენტის შესაქმნელად) ან „კოპირების შესახებ“ (არსებულზე დაფუძნებული ელემენტის შესაქმნელად) ეწოდება. ორივე შემთხვევაში, დასახელებული დამმუშავებლების გამოძახების შემდეგ, შესრულებულია პროცედურა „OnInstallNewCode“, სადაც დეველოპერს შეუძლია დააყენოს პრეფიქსი კოდში ან გადააჭარბოს პლატფორმის ქცევას ახალი კოდის მინიჭებისას.

დირექტორიაში ელემენტის დაწერისას, იქნება ეს ახალი ელემენტი თუ არსებული, სამ დამმუშავებელს უწოდებენ: “ProcessingFillCheck” (ამ ეტაპზე დამმუშავებელს შეუძლია შეამოწმოს შეყვანილი მონაცემების სისწორე და შეცდომების შემთხვევაში უარი თქვას ჩაწერაზე). "BeforeWrite" (სანამ ობიექტი არ დაიწერება მონაცემთა ბაზაში, შეგიძლიათ დაარეგულიროთ დეტალების მნიშვნელობები და შეამოწმოთ ნებისმიერი დამატებითი პირობები) და შემდეგ "OnRecord" (ჩანაწერი გაკეთდა მონაცემთა ბაზაში, მაგრამ ტრანზაქცია არ არის დახურული. , დეველოპერს შეუძლია გადაამოწმოს მონაცემები ჩანაწერის შემდეგ და საჭიროების შემთხვევაში გააუქმოს ტრანზაქცია).

მოვლენა „Delete“ ხდება მხოლოდ იმ შემთხვევაში, თუ ობიექტი პირდაპირ წაიშლება ინფობაზიდან. როგორც წესი, არცერთ მომხმარებელს არ აქვს პირდაპირ წაშლის უფლება რეფერენციალური მთლიანობის შემოწმების გარეშე. წაშლა ყოველთვის უნდა განხორციელდეს "მონიშნული ობიექტების წაშლა" დამუშავების გამოყენებით. ამ უკანასკნელ შემთხვევაში ასევე უწოდებენ "BeforeDelete" დამმუშავებელს.

ამრიგად, თუ ჩვენ შევქმნით დირექტორიას ერთეულს და ჩავწერთ მას ინფობაზაში, პლატფორმა გამოიძახებს შემდეგი მოვლენების დამმუშავებლებს მითითებული თანმიმდევრობით:

სხვა კონფიგურაციის ობიექტებთან დაკავშირებით, ღონისძიების გამოწერის მექანიზმის მოქმედება მსგავსი იქნება, მხოლოდ მოვლენები და მათი თანმიმდევრობა შეიძლება განსხვავდებოდეს. დამატებითი ინფორმაციისთვის იხილეთ სინტაქსის დამხმარე.

დაუსაბუთებელი მხარე

ახლა მოდით შევხედოთ საინტერესო სიტუაციას. ვთქვათ, რომ ჩვენი დირექტორია "SimpleDirectory" სამი გამოწერაა "BeforeRecord" ღონისძიებაზე:

როგორ ფიქრობთ, რა თანმიმდევრობით გამოიძახებენ ამ გამოწერების დამმუშავებლებს? ნუ გამოვიცნობთ. მე მივცემ ელემენტის ჩაწერის შედეგს, სადაც თითოეული გამოწერის დამმუშავებელი აჩვენებს შეტყობინებას გამოძახებული გამოწერის სახელწოდებით (იხილეთ შემდეგი ეკრანის სურათი).

სკრინშოტიდან ძნელი მისახვედრი არ არის, რომ ღონისძიების გამოწერის დამმუშავებლის პროცედურების გამოძახების თანმიმდევრობა შეესაბამება მეტამონაცემების ობიექტების თანმიმდევრობას "მოვლენის გამოწერების" ფილიალში. ეს ფუნქცია არ არის აღწერილი არცერთ საცნობარო ლიტერატურაში 1C:Enterprise პლატფორმაზე, ამიტომ ფრთხილად უნდა იყოთ მისი კონფიგურაციის გამოყენებისას, რადგან არადოკუმენტირებული ფუნქციები შეიძლება შეიცვალოს ვერსიიდან ვერსიამდე 1C:Enterprise და ამავე დროს არ იყოს პროგრამის ცვლილებების სია.

უკან დახევა

თქვენ შეიძლება იკითხოთ: "რატომ შექმნათ მრავალი გამოწერა ერთი კონფიგურაციის ობიექტის მოვლენისთვის?" პასუხი მარტივია. თუ რამდენიმე ადამიანი მონაწილეობს განვითარებაში, მაშინ ჩარევამ ერთმანეთის შექმნილ მექანიზმებში შეიძლება გამოიწვიოს პროგრამის არასწორი ფუნქციონირება. ასეთ შემთხვევებში, ყველაზე ლოგიკური იქნება თითოეული დეველოპერისთვის ცალკეული ღონისძიების გამოწერების შექმნა, დავალების შესაბამისად. რა თქმა უნდა, შესაძლებელია, რომ მომავალში ისინი გაერთიანდნენ ერთი დამმუშავებლის პროცედურაში.

ეს სტატია არის ახალი ფუნქციონირების განცხადება.
არ არის რეკომენდებული ამ სტატიის შინაარსის გამოყენება ახალი ფუნქციების შესასწავლად.
ახალი ფუნქციონირების სრული აღწერა წარმოდგენილი იქნება შესაბამისი ვერსიის დოკუმენტაციაში.
ახალ ვერსიაში ცვლილებების სრული სია მოცემულია v8Update.htm ფაილში.

განხორციელებული EDT ვერსია 1.7.0.567.

1C: Enterprise Development Tools (EDT)-ში ჩვენ განვახორციელეთ ახალი ხელსაწყოს პროტოტიპი. ამ ხელსაწყოს სამუშაო სახელია რედაქტორი ყველა ღონისძიების გამოწერა. ის დაგეხმარებათ მოხერხებულად გააანალიზოთ გამოწერები ყველა მოვლენის შესახებ, რომელიც არსებობს აპლიკაციის გადაწყვეტაში.

ღონისძიების გამოწერები

1C: Enterprise პლატფორმა საშუალებას გაძლევთ შექმნათ ხელმოწერები კონფიგურაციის ობიექტების მოვლენებზე აპლიკაციის გადაწყვეტაში. გამოწერა არის პროცედურა, რომელიც შესრულდება ორიგინალური მოვლენის დამმუშავებლის შესრულების შემდეგ. ხელმოწერის მოხერხებულობა მდგომარეობს იმაში, რომ ერთი პროცედურა შეიძლება იყოს „გამოწერილი“ მოვლენაზე, რომელიც ეკუთვნის სხვადასხვა კონფიგურაციის ობიექტს. ამრიგად, თუ არსებობს ალგორითმი, რომელიც უნდა შესრულდეს როგორც ორგანიზაციის ჩაწერისას, ასევე განყოფილების ჩაწერისას, ის შეიძლება განთავსდეს გამოწერაში, და მაშინ თქვენ არც კი მოგიწევთ ამ მოვლენის დამმუშავებლების შეცვლა თავად ობიექტებში.

გამოდის, რომ გამოწერა მოსახერხებელი და უნივერსალური მექანიზმია. მაგრამ დიდი აპლიკაციის გადაწყვეტილებებში ღონისძიების გამოწერების რაოდენობამ შეიძლება მიაღწიოს რამდენიმე ასეულს. არასასიამოვნო ხდება მათი ანალიზი კონფიგურაციის ხეში, ხაზოვან სიაში. მაგალითად, აპლიკაციის გადაწყვეტაში 1C: საწარმოს მენეჯმენტი (ERP) 340-ზე მეტი ღონისძიების გამოწერა.

EDT გარკვეულწილად აადვილებს ხელმოწერებთან მუშაობას მათ პანელში ჩვენებით სქემა, როდესაც იხსნება ზოგიერთი აპლიკაციის ობიექტის მოდული.


ხელმოწერების ეს ჩვენება მოსახერხებელია მოდულის რედაქტირებასთან დაკავშირებული რიგი ამოცანებისთვის. მაგრამ ეს ჯერ კიდევ არ არის შესაფერისი, როდესაც საჭიროა სწრაფად იპოვოთ და გაანალიზოთ ყველა ალგორითმი, რომელიც შესრულებულია გამოწერაში, როდესაც ხდება კონკრეტული მოვლენა.

ყველა ღონისძიების გამოწერა

ზემოთ ჩამოთვლილი უხერხულობის თავიდან ასაცილებლად, ჩვენ განვახორციელეთ გამოწერების, მოვლენების, კონფიგურაციის ობიექტებისა და პროცედურების წარმოჩენის უნივერსალური გზა, რომლებშიც დანერგილია გამოწერის ალგორითმები.


შედეგად, შეგიძლიათ დარეკოთ რედაქტორთან ყველა ღონისძიების გამოწერამთელი კონფიგურაციისთვის, ან მხოლოდ ერთი ობიექტისთვის - განსხვავება იქნება მხოლოდ მონაცემების შემადგენლობაში, გარკვეულწილად გაფილტრული.


მარცხენა მხარეს, რედაქტორი აჩვენებს ყველა მოვლენას და თითოეულ ღონისძიებაში მის ყველა გამოწერას. როდესაც ირჩევთ კონკრეტულ გამოწერას, ზედა მარჯვენა კუთხეში ნაჩვენებია კონფიგურაციის ობიექტების სია, რომელთა მოვლენებზეც გამოწერა არის "გამოწერილი". და მოდული და პროცედურა, რომელშიც განთავსებულია გამოწერის ალგორითმი, ნაჩვენებია ქვედა მარჯვენა კუთხეში. პროცედურაზე ორჯერ დაწკაპუნებით, შეგიძლიათ გახსნათ ის ჩაშენებულ ენობრივ რედაქტორში.

რედაქტორში ყოფნისას შეგიძლიათ გაანალიზოთ არა მხოლოდ ინდივიდუალური გამოწერა, არამედ ყველა გამოწერა, რომელიც დაკავშირებულია ერთ მოვლენასთან. თუ თქვენ აირჩევთ მოვლენას, რედაქტორი აჩვენებს ყველა მოდულს და ყველა პროცედურას, რომელიც ხელმოწერილია ამ მოვლენის დასამუშავებლად.


თუ თქვენ დაურეკავთ რედაქტორს კონფიგურაციის ობიექტისთვის, ნაჩვენები იქნება მხოლოდ ამ ობიექტის მოვლენები და გამოწერები, ხოლო თავად ობიექტი ყოველთვის იქნება მონიშნული წითლად წყაროს სიაში. ამ გზით შეგიძლიათ სწრაფად შეამოწმოთ, მაგალითად, რომ თქვენს მიერ არჩეული გამოწერა მუშაობს ყველა კონფიგურაციის ობიექტზე, რისთვისაც ის საჭიროა.


რედაქტორის გამოძახება კონტექსტური ბრძანების გამოყენებით (კონფიგურაციის ობიექტზე) საშუალებას გაძლევთ დაუყოვნებლივ შეამციროთ რედაქტორში ნაჩვენები გამოწერების რაოდენობა. მაგალითად, თქვენ შეგიძლიათ ნახოთ ხელმოწერები მხოლოდ იმ მოვლენებისთვის, რომლებიც მუშავდება ობიექტის მოდულში ან მენეჯერის მოდულში.


გარდა ამისა, რედაქტორი შეიცავს უნივერსალურ ფილტრს, რომლითაც შეგიძლიათ ნებისმიერი გზით მოარგოთ ობიექტების, მოვლენებისა და პროცედურების შემადგენლობა.


გაითვალისწინეთ, რომ ამ ფილტრის საშუალებით შეგიძლიათ აირჩიოთ არა მხოლოდ კონკრეტული ობიექტები, რომლებიც წარმოადგენენ მოვლენების წყაროს, არამედ ისეთი ტიპების კომპლექტს, როგორიცაა DirectoryObject, DocumentObjectდა სხვა. ტიპების ასეთი ნაკრები მოიცავს ყველა დირექტორიას ან ყველა დოკუმენტს, რომლებიც კონფიგურაციაშია.

სტრიქონით ძიებით, თქვენ შეგიძლიათ სწრაფად იპოვოთ მხოლოდ ის ხელმოწერები, რომლებიც დაკავშირებულია თქვენთვის საინტერესო მექანიზმთან.


ნებისმიერ დროს, შეგიძლიათ სწრაფად გაფილტროთ შინაარსი რედაქტორში ნაჩვენები მოვლენის ან წყაროს მიხედვით. მაგალითად, თქვენ იპოვეთ გამოწერა შეამოწმეთ გაანგარიშების ფორმულა. მისი წყაროა გაანგარიშების ტიპების გეგმა ფლობს.


გამოთვლის ტიპების გეგმაზე კონტექსტური ბრძანების გამოყენებით, შეგიძლიათ სწრაფად ნახოთ მხოლოდ ის გამოწერები, რომლებიც დაკავშირებულია მის მოვლენებთან.


წყვეტის წერტილების ავტომატურად დამატება

მოვლენის გამოწერების ანალიზის ერთ-ერთი გავრცელებული გზაა ყველა მოწოდებული პროცედურის თანმიმდევრული ნახვა გამართულში იმ თანმიმდევრობით, რომლითაც ისინი შესრულდა. ამისთვის, რედაქტორი უზრუნველყოფს მოსახერხებელ ხელსაწყოს დამმუშავებლებს წყვეტის წერტილების ავტომატურად დასამატებლად.

უპირველეს ყოვლისა, შეგიძლიათ დარეკოთ ეს ინსტრუმენტი პირდაპირ რედაქტორში.


თქვენ შეგიძლიათ იპოვოთ და აირჩიოთ თქვენთვის საინტერესო ობიექტი, აირჩიოთ მისი ერთ-ერთი მოვლენა და მონიშნოთ, მაგალითად, ყველა დამმუშავებელი. დაწკაპუნების შემდეგ კარგიწყვეტის წერტილები დაემატება თითოეული შემოწმებული დამმუშავებლის პირველ შესრულებად ხაზს და ყველა ეს წყვეტის წერტილი გამოჩნდება პანელში შესვენების წერტილებიპერსპექტივაში გამართვა.


შესვენების წერტილების დამატების კიდევ ერთი გზა მოსახერხებელია, როდესაც უკვე იპოვნეთ თქვენთვის საინტერესო ობიექტი ან მოვლენა რედაქტორში. ამ შემთხვევაში, კონტექსტური მენიუდან შეგიძლიათ დარეკოთ თქვენთვის შესაფერისი ბრძანება.


და ბოლოს, მესამე გზა, რომლის გამოყენებაც შეგიძლიათ, არის შეცდომების გამართვისას წყვეტის წერტილების ავტომატურად დამატება. ამ შემთხვევაში, თქვენ არ გჭირდებათ რედაქტორის გახსნა, რადგან დამატება ბრძანება პირდაპირ პანელშია შესვენების წერტილები.


ასე რომ, რედაქტორი ყველა ღონისძიების გამოწერაარის უნივერსალური ინსტრუმენტი, რომელიც საშუალებას გაძლევთ გამოიყენოთ სხვადასხვა ანალიზის სცენარი. ეს სასარგებლო იქნება არა მხოლოდ დეველოპერებისთვის, რომლებმაც კარგად იციან აპლიკაციის გადაწყვეტა, არამედ იმპლემენტაციის სპეციალისტებისთვის ან IT სპეციალისტებისთვის, რომლებსაც სჭირდებათ უცნობი ფუნქციონირების გაგება.

მომხმარებლის სხვადასხვა პრობლემის გადაჭრის პროცესში, ზოგჯერ საჭირო ხდება უკვე გენერირებული დოკუმენტის მოძრაობა (კერძოდ, რეგისტრების გარკვეული ნაკრები) რაიმე სახის კორექტირებას დაექვემდებაროს.

"მოვლენის გამოწერა" ობიექტი ძალიან შესაფერისია ამ მიზნებისთვის, რომელიც საშუალებას გაძლევთ შეასრულოთ გარკვეული მოქმედებები, როდესაც გარკვეული მოვლენა ხდება დიდი რაოდენობით ობიექტებისთვის (მაგალითად, გადახდის დოკუმენტების ჩაწერისას ან გადასახადებთან დაკავშირებული დირექტორიებისთვის ახალი ნომრის დაყენებისას. აღრიცხვა).

ასევე, ღონისძიების გამოწერა მოსახერხებელია, რადგან ის საშუალებას გაძლევთ განახორციელოთ სხვადასხვა მოქმედებები სხვადასხვა მოდულში აღწერილი სტანდარტული მექანიზმების შეცვლის გარეშე.

მაგალითად, გაჩნდა დავალება - აუცილებელია გარკვეული მონაცემების (ინფორმაცია კომპანიის საქმიანობის შესახებ) ჩაწერა გადახდის დოკუმენტებში დოკუმენტის ძირითადი მოძრაობების ფორმირების შემდეგ (გენერირდება "დამუშავების დამუშავების" ღონისძიებაში). ჩვენ განვახორციელებთ დავალებას "Manufacturing Enterprise Management" კონფიგურაციის გამოყენებით, რედ. 1.3.

მოდით შევხედოთ გამოსავალს უფრო დეტალურად:

მოდით შევქმნათ ახალი გამოწერა ღონისძიებაზე „გადახდების მიმართულებების ჩაწერა“. გამოწერას აქვს მრავალი თვისება, რომელიც განსაზღვრავს მის ქცევას:

წყარო- ეს არის ობიექტი (მაგალითად, დოკუმენტი ან დოკუმენტების სია), რომლისთვისაც გამოიძახება მოქმედებები. ჩვენს შემთხვევაში, ჩვენ ვირჩევთ გადახდის დავალება გამავალი და გადახდის დავალება შემოსული

Ივენთი- თავად მოქმედება, რის შემდეგაც ჩვენი კოდი შესრულდება. პრობლემის პირობების მიხედვით ვირჩევთ დამუშავების ჩატარება

დამმუშავებელი- მითითება იმ პროცედურის შესახებ, რომელშიც მოხდება დამუშავება. მოდით ავირჩიოთ ზოგადი მოდული ამ მიზნებისთვის Ძირითადი მიზანი.

ზემოაღნიშნული მიზნების შემდეგ იქმნება პროცედურა, რომელშიც აუცილებელია კოდის განთავსება მიმართულების მონაცემების შესავსებად (იმ პირობით, რომ ასეთი ინფორმაცია უკვე შეიცავს გადახდებს).

განვიხილოთ მისი პარამეტრები:

წყარო- DirectoryObject ან DocumentObject ტიპის ეს ობიექტი, რომლისთვისაც ხდება მოქმედება.

უარი- პარამეტრი, რომელიც საშუალებას გაძლევთ გააუქმოთ დოკუმენტის განთავსება გარკვეულ პირობებში.

რეჟიმი- განხორციელების ვარიანტები (ოპერატიული ან არაოპერაციული), რაც საშუალებას გაძლევთ შექმნათ დამუშავების ალგორითმები სხვადასხვა გზით.

მოდით ფოკუსირება პარამეტრზე წყარო. ჩვენი ამოცანისთვის, ამ პარამეტრის ტიპი იქნება - DocumentObject. ამ ტიპის კოლექცია ხელმისაწვდომია მოძრაობები, რომელიც შეიცავს რეესტრის ჩანაწერების ყველა კომპლექტს, რომლისთვისაც ეს დოკუმენტი არის ჩამწერი.

ეს კოლექცია შეიცავს ჩანაწერების კომპლექტს ანგარიშების ანგარიშსწორება კონტრაგენტებთან, რომელიც გვაინტერესებს. დავუშვათ, რომ რეესტრში შეიქმნა Direction განზომილება, რომელიც უნდა შეავსოთ დოკუმენტიდან.

მოდით დავწეროთ შემდეგი კოდი:

კომპლექტი = წყარო. მოძრაობები; გამოთვლები = კომპლექტი. ანგარიშსწორებები კონტრაგენტებთან; გამოთვლების ციკლის თითოეული გვერდისთვის. მიმართულება = წყარო. მიმართულება; Დაასრულე თუ ;

როგორც ვხედავთ, დანერგვა საკმაოდ მარტივია; დამუშავების შემდეგ, არ არის დამატებითი ზომების მიღება ნაკრების ჩასაწერად - ღონისძიების გამოწერა ხორციელდება ProcessingProcessing ღონისძიების ტრანზაქციის ფარგლებში, მისი დასრულების შემდეგ ნაკრები ავტომატურად დაიწერება. .

ამ მიდგომის უპირატესობები:მონაცემთა დამუშავება სტანდარტული ალგორითმების ფარგლებს გარეთ, ძიების და ცვლილებების გადაცემის მოცულობის შემცირება განახლებისას, მეტი ხილვადობა - ყველა კოდი ერთ პროცედურაში.

ამ მიდგომის მინუსი:დოკუმენტების წარმართვისა და დირექტორიების ელემენტების ჩაწერაზე დახარჯული დროის გაზრდა.

ვიმედოვნებ, რომ ეს ინფორმაცია სასარგებლო იქნება როგორც დამწყები პროგრამისტებისთვის, ასევე მათი უფრო გამოცდილი კოლეგებისთვის, როგორც მათი ჰორიზონტის გაფართოების გზა.

როდესაც მომხმარებელი ასრულებს რაიმე მოქმედებას, 1C პლატფორმა წარმოქმნის პროგრამის მოვლენებს. როგორც წესი, წარმოიქმნება არა ერთი მოვლენა, არამედ მოვლენების მთელი ჯაჭვი. პროგრამისტის ამოცანაა პროგრამის კოდის სწორად განთავსება მოვლენებში, რათა მიაღწიოს პროგრამიდან მოსალოდნელ ქცევას. თუმცა, ეს ადვილი არ იქნება დამწყები 1C პროგრამისტისთვის, ქვემოთ ჩამოთვლილი მიზეზების გამო.

მოვლენების გენერირება შესაძლებელია კონტროლირებადი ფორმით: On ReadingOnServer, OnCreatingOnServer, OnOpening და ა.შ.

მოვლენები კონტროლირებადი ფორმით გენერირდება კლიენტზე და სერვერზე: BeforeRecord, BeforeRecordOnServer.

მოვლენები იწოდება სხვადასხვა მოდულში: ElementForm, ObjectModule, ManagerModule.

ზოგიერთი მოვლენის გამოძახება შესაძლებელია რამდენჯერმე, თუ სიაში არის რამდენიმე დირექტორია ელემენტი, მაგალითად: ProcessingGetView.

მართული ფორმა შეიძლება გაიხსნას მომხმარებლის სხვადასხვა ქმედებების შედეგად და ღონისძიების ზარების ჯაჭვები განსხვავდება. მომხმარებლის ნებისმიერი შემდეგი ქმედება დირექტორიაში გახსნის კონტროლირებულ ფორმას: ახალი ელემენტის შექმნა, ელემენტის კოპირება, არსებული დირექტორიაში ელემენტის შეცვლა.

მოვლენები ასევე წარმოიქმნება ფორმის ელემენტებით: ცხრილის ნაწილზე მწკრივის დამატებისას, ცხრილის ნაწილში მწკრივის რედაქტირებისას, მწკრივის ან ველის გააქტიურებისას, შეყვანის ველში საძიებო ელემენტის არჩევისას და ა.შ.

გამომწვევი მოვლენების ლოგიკისა და თანმიმდევრობის უკეთ გასაგებად, შეგიძლიათ გამოიყენოთ ამ სტატიას თანდართული „მოვლენების შესწავლა“. ღონისძიების ზარის კონტექსტის, მოვლენების თანმიმდევრობისა და მოქმედებების ცოდნა, რომელსაც მომხმარებელი შეასრულებს, უფრო ადვილი იქნება იმის გაგება, თუ რომელ ღონისძიების დამმუშავებელშია საუკეთესო თქვენი პროგრამის კოდის განთავსება.

Event Study პროგრამის გამოყენების ინსტრუქცია

Event Study პროგრამა აჩვენებს მოვლენებს, რომლებსაც 1C პლატფორმა ქმნის მომხმარებლის ინტერაქტიული მოქმედებების დროს. მუშაობის პრინციპი ასეთია: მომხმარებელი ხსნის დირექტორიას, პროგრამა აჩვენებს მოვლენების ჯაჭვს. მომხმარებელი აღნიშნავს დირექტორიას წასაშლელად და პროგრამა აჩვენებს მოვლენების თანმიმდევრობას. მოვლენები ნაგულისხმევად ნაჩვენებია 3 წამის მცირე დაგვიანებით, ეს აუცილებელია მოვლენების ერთი ჯაჭვის სხვა ჯაჭვისგან გამოყოფისთვის. ამიტომ, თქვენ უნდა შეასრულოთ ინტერაქტიული მოქმედებები "ნელა".

ყველა მოვლენა ნაჩვენებია სპეციალურ "უახლესი მოვლენების" ფანჯარაში. აქ შეგიძლიათ ჩართოთ ან გამორთოთ მოვლენის ჩაწერა. ნაგულისხმევად, მოვლენის ჩაწერა ჩართულია პირველად გახსნისას. მე გირჩევთ პროგრამის დაწყებისთანავე დაამაგროთ ეკრანის ბოლოში ფანჯარა „უახლესი მოვლენები“, მოვლენების მოსახერხებელი სანახავად.

თავად პროგრამას არ შეუძლია განსაზღვროს, თუ რა მოქმედებამ გამოიწვია მოვლენების ჯაჭვი; გირჩევთ, ველში "მოქმედების მიზეზი" ჩაწეროთ თქვენი ბოლო მოქმედებების სახელები, მაგალითად, "საქაღალდის სიის ფორმა ღიაა", "ელემენტი დირექტორიაში". სია მონიშნულია წასაშლელად“ და ა.შ. ეს გააადვილებს ქმედებებისა და მოვლენების გაანალიზებას.

მოვლენები ჩაიწერება და ნაჩვენებია მოვლენის კვალი განყოფილებაში განთავსებული ობიექტებისთვის, იმ პირობით, რომ მოვლენის ჩაწერა ჩართულია ბოლო მოვლენების ფორმაში.

ყველა ჩაწერილი მოვლენის ნახვა შესაძლებელია „მოვლენის ანგარიშის“ მეშვეობით, რომელიც მდებარეობს „სერვისის“ განყოფილებაში.

ყველა ჩაწერილი მოქმედებისა და მოვლენის სწრაფად გასასუფთავებლად, "სერვისის" განყოფილებაში აირჩიეთ "მოვლენებისა და მოქმედებების გასუფთავება".

მოვლენის გამოწერის მექანიზმი შექმნილია 1C:Enterprise პლატფორმის ერთი ან მეტი კონფიგურაციის ობიექტისთვის მოვლენის დამმუშავებლის მინიჭებისთვის. სტატიაში განხილულია ამ მექანიზმის გამოყენების რამდენიმე მაგალითი. სტატიის შესწავლის შემდეგ გაიგებთ:

  • რა არის ღონისძიების გამოწერა და როგორ გამოვიყენოთ იგი პრაქტიკაში?
  • როგორ შევამოწმოთ სახელის დუბლირება დირექტორიაში ელემენტის ჩაწერისას თავად დირექტორიაში მოდულების შეცვლის გარეშე?
  • როგორ უზრუნველვყოთ ღონისძიების გამოწერის გამოყენებით მოძრაობების ფორმირება დაგროვების რეესტრში დოკუმენტის განთავსებისას?
  • როგორ უზრუნველვყოთ დოკუმენტის ძირითადი ფორმის ჩანაცვლება?

გამოყენებადობა

სტატიაში განხილულია 1C: Enterprise პლატფორმის ვერსია 8.3. წარმოდგენილი ინფორმაცია შესაბამისია პლატფორმის მიმდინარე გამოშვებებისთვის.

ღონისძიების გამოწერები

სტატიაში განხილულია 1C:Enterprise 8 პლატფორმის ერთ-ერთი დამხმარე ობიექტის გამოყენების რამდენიმე მაგალითი - ღონისძიების გამოწერები.

მოვლენის გამოწერები საშუალებას გაძლევთ განათავსოთ გარე დამმუშავებლები საერთო მოდულებში, რომლებიც შესრულდება კონკრეტული მოვლენის დამმუშავებლის შესრულების შემდეგ ობიექტის მოდულში ან მენეჯერის მოდულში.

სადაც არ არის საჭიროშეიტანეთ ცვლილებები ობიექტის მოდულში ან მენეჯერის მოდულში. ამრიგად, შესაძლებელი ხდება დაპროგრამება მოდულების გაფართოება მათი შეცვლის გარეშე- ეს ძალიან სასარგებლო ტექნიკაა სტანდარტული გადაწყვეტილებების შეცვლისას.

ღონისძიების გამოწერებიაღწერილია თემაში Საერთოაკონფიგურაციის ობიექტის ფანჯრები (ნახ. 1).

თუ რაიმე ობიექტის მოვლენის გამოწერა იქმნება კონფიგურაციაში, მაგალითად მოვლენა ადრე დაწერა ()დოკუმენტის ობიექტი, მაშინ როდესაც ეს მოვლენა ხდება, პლატფორმა ასრულებს მოქმედებების შემდეგ თანმიმდევრობას.

  1. ღონისძიების დამმუშავებელი მუშაობს ადრე დაწერა ()დოკუმენტის ობიექტის მოდულში.
  2. თუ დამმუშავებლის შესრულებისას პარამეტრი უარიიღებს ღირებულებას მართალიაან ჩნდება გამონაკლისი, ღონისძიების დამუშავება წყდება.
  3. თუ ღონისძიების დამუშავება არ შეწყვეტილა მეორე ეტაპზე, მაშინ შესრულებულია ღონისძიებისთვის განსაზღვრული გარე დამმუშავებლები (ღონისძიების გამოწერები). ადრე დაწერა ().
  4. თუ გარე დამმუშავებლის შესრულებისას პარამეტრი უარიიღებს ღირებულებას მართალიაან გამონაკლისი არის დაშვებული, გარე დამმუშავებლის შესრულება წყდება.

ღონისძიების გამოწერებით შეგიძლიათ მოაწყოთ სხვადასხვა შემოწმების ჩატარება, შესრულებულია, როდესაც ობიექტები იწერება მონაცემთა ბაზაში.

პრობლემა 1

შეამოწმეთ სახელის გაორმაგება დირექტორიის ელემენტის "კონტრაქტორები" ჩაწერისას - თავად დირექტორიას მოდულების შეცვლის გარეშე.

პრობლემის გადასაჭრელად თქვენ უნდა შექმნათ საერთო მოდული ღონისძიების გამოწერის დამმუშავებლები. დააყენეთ დროშა მოდულის თვისებების პალიტრაში სერვერი და კლიენტი (რეგულარული აპლიკაცია). მეორე დროშა საჭიროა ღონისძიების გამოწერისთვის, რომ იმუშაოს ჩვეულებრივ აპლიკაციაში.

დროშა კლიენტი (რეგულარული აპლიკაცია)ხელმისაწვდომია, თუ რედაქტირების რეჟიმი დაყენებულია კონფიგურატორის პარამეტრებში მართული აპლიკაცია და რეგულარული აპლიკაცია.

ძაფში Საერთოაკონფიგურაციის ობიექტების ფანჯარა შექმენით ახალი მოვლენის გამოწერა. თვისებების პალიტრაში შეიყვანეთ გამოწერის სახელი დირექტორიას სახელის შემოწმება. შერჩევის ველში წყარომონიშნეთ მონაცემთა ტიპი DirectoryObject.Counterparties. შერჩევის ველში ღონისძიებააირჩიეთ ღონისძიება ადრე დაწერა (). ამ მოვლენის დამუშავების შემდეგ ამოქმედდება ღონისძიების გამოწერის დამუშავების პროცედურა (ნახ. 2).

შერჩევის ველში დამმუშავებელიმიუთითებს ზოგად მოდულზე, რომელშიც მდებარეობს მოვლენის გამოწერის დამმუშავებელი. დააჭირეთ ღილაკს გახსნა ამ ველში და აირჩიეთ მოდული ღონისძიების გამოწერის დამმუშავებლებიდა დააჭირეთ კარგი. სისტემა ავტომატურად შექმნის პროცედურას ზოგად მოდულში პარამეტრებით წყაროდა უარი. პარამეტრში წყაროობიექტი, რომლისთვისაც შეიქმნა მოვლენის გამოწერა, გადაცემულია - DirectoryObject. . პარამეტრში უარიელემენტის დაწერაზე უარის თქმის ნიშანი გადაეცემა.

პროცედურაში დირექტორიაNameBeforeWriting() შემოწმებადირექტორიაში მოთხოვნა შესრულებულია კონტრაგენტები. ჩასაწერი დირექტორია ელემენტის სახელი გადაეცემა მოთხოვნის პარამეტრად კონტრაგენტები. თუ იგივე სახელის ელემენტი უკვე არის მონაცემთა ბაზაში, მაშინ პარამეტრი უარიდაყენებულია მნიშვნელობაზე მართალია(ელემენტის შეყვანა გაუქმებულია) და გამოჩნდება შესაბამისი დიაგნოსტიკური შეტყობინება.

პროცედურების ჩამონათვალი დირექტორიაNameBeforeWriting() შემოწმება

პრაქტიკაში, სტანდარტულ კონფიგურაციებში დოკუმენტების განთავსებისას შეიძლება წააწყდეთ მოძრაობების შესრულებას დამატებით რეესტრებზე. დამატებითი რეესტრების შექმნა საშუალებას გაძლევთ თავიდან აიცილოთ არსებული რეესტრების ცვლილება და ამავდროულად მიიღოთ დამატებითი მონაცემების დამუშავების შესაძლებლობა სტანდარტული დოკუმენტების დამუშავებისას.

პრობლემა 2

შექმენით „ფულადი სახსრების გადინების“ მოცირკულირე დაგროვების რეესტრი და უზრუნველყოთ მოძრაობის ფორმირება ამ რეესტრში დოკუმენტის „ნაღდი ფულის დახარჯვის ორდერის“ განთავსებისას ღონისძიების გამოწერის მექანიზმის გამოყენებით.

შექმენით ახალი შეთანხმების რეესტრი სახელით ნაღდი ფული. აირჩიეთ "ნაღდი ფულის გადინების ორდერი" რეგისტრატორი. დაამატეთ რეგისტრის ზომები:

შექმენით რეესტრის რესურსი:

ჯამი, ტიპი ნომერი, სიგრძე – 15, სიზუსტე – 2.

დოკუმენტში „ნაღდი ფულის ხარჯვის დავალება“ შექმენით დეტალები სტატია მოძრაობებიმონაცემთა ტიპით DirectoryLink.ArticlesMoneyMovements.

სახელი - მოძრაობები ნაღდი ფულის განკარგვაზე;
წყარო - DocumentObject.RKO;
ღონისძიება - დამუშავების ჩატარება.

ზოგად მოდულში ღონისძიების გამოწერის დამმუშავებლებიდამმუშავებლის შექმნა . პროცესორი გვერდს უვლის დოკუმენტის ცხრილის ნაწილს „ნაღდი ფულის გამავალი დავალება“ და წარმოქმნის მოძრაობებს დაგროვების რეესტრში. ნაღდი ფული.

პროცედურების ჩამონათვალი Movements on disposal of CashProcessingProcessing()

ტიპიურ კონფიგურაციებში შეიძლება საჭირო გახდეს ზოგიერთი ობიექტის ძირითადი ფორმის შეცვლა, მაგალითად, დოკუმენტი. ამ პრობლემის მოგვარება შესაძლებელია ღონისძიების გამოწერების გამოყენებით. ეს ქმნის მთავარი დოკუმენტის ფორმის ასლს. ახალ ფორმაში შეტანილია აუცილებელი ცვლილებები. ღონისძიების გამოწერის მექანიზმი უზრუნველყოფს ძირითადი ფორმის ნაცვლად ახალი ფორმის გახსნას. ამ შემთხვევაში, მხარდაჭერილი ძირითადი ფორმა უცვლელი რჩება.

პრობლემა 3

უზრუნველყოს დოკუმენტის „ნაღდი ფულის ხარჯვის ორდერი“ ძირითადი ფორმის შეცვლა.

შექმენით ახალი დოკუმენტი "ნაღდი ფულის მიღების ორდერი" სახელით DocumentFormClient. შეიტანეთ თვითნებური ცვლილებები ფორმაში, მაგალითად, შეცვალეთ კონტროლის რიგი. ამ ფორმის დასარეკად თქვენ უნდა გამოიყენოთ ღონისძიების გამოწერა ProcessGetForm()დოკუმენტების მენეჯერის მოდულში „ნაღდი ფულის მიღების შეკვეთა“.

შექმენით ახალი ღონისძიების გამოწერა:

სახელი - MainFormRKO;
წყარო - DocumentManager.RKO;
ღონისძიება - ProcessingFormReceiving.

ზოგად მოდულში ღონისძიების გამოწერის დამმუშავებლებიდამმუშავებლის შექმნა . დამმუშავებელში პარამეტრად შერჩეული ფორმაგადაცემულია გასახსნელი ფორმის სახელი.
Პარამეტრი სტანდარტული დამუშავებადაყენებულია მნიშვნელობაზე ტყუილიძირითადი ფორმის გახსნის გამორთვა.

პროცედურების ჩამონათვალი MainFormRKOFormReceivingProcessing()

კონფიგურაციის ობიექტისთვის განსაზღვრული მოვლენის გამოწერების საპოვნელად, შეგიძლიათ გამოიყენოთ ობიექტის მითითების საძიებელი მექანიზმი. ამისათვის აირჩიეთ ობიექტი კონფიგურაციის ობიექტების ფანჯარაში და შეასრულეთ ბრძანება კონტექსტურ მენიუში ობიექტზე მითითებების პოვნა. ბრძანების შესრულების შედეგად სერვისის შეტყობინების ფანჯარაში გამოჩნდება ობიექტების სია, რომლებიც შეიცავს ბმულებს სასურველ ობიექტთან.

ამრიგად, მოვლენის ხელმოწერები იძლევა ახალი ფუნქციების დამატების შესაძლებლობას არსებული ობიექტის მოდულების შეცვლის გარეშე. ღონისძიების გამოწერის ნაკლოვანებები მოიცავს:

  • ალგორითმების სირთულის გაზრდა.
  • თქვენ შეგიძლიათ გამოიწეროთ მხოლოდ ობიექტების და ობიექტების მენეჯერების ღონისძიებები.

თუ საჭიროა რაიმე ფორმის მოვლენის შეცვლა, მაშინ ღონისძიების გამოწერის მექანიზმი მიუწვდომელია. ამ შემთხვევაში, თქვენ უნდა შეიტანოთ ცვლილებები თავად ფორმაში ან დააკოპიროთ ფორმა და შეიტანოთ ცვლილებები ახალ ობიექტში.



გაქვთ შეკითხვები?

შეატყობინეთ შეცდომას

ტექსტი, რომელიც გაეგზავნება ჩვენს რედაქტორებს: