डीबगिंग 1C- 1C 8.3 प्लॅटफॉर्मची एक अतिशय शक्तिशाली आणि कार्यात्मक यंत्रणा, जी आपल्याला प्रोग्राम कोडमध्ये त्वरीत त्रुटी शोधण्याची परवानगी देते (इतर प्रोग्रामिंग भाषांमध्ये याला इंग्रजी "डीबग" मधून "डीबग" म्हणतात).
खाली आम्ही विशिष्ट उदाहरण वापरून व्यावहारिक सूचनांच्या स्वरूपात डीबगिंग यंत्रणा वापरण्याच्या मुख्य पद्धतींचा विचार करू.
लक्ष द्या!आपण क्लायंट-सर्व्हर मोड (सर्व्हरवर) वापरत असल्यास, आपल्याला आवश्यक आहे.
1C मध्ये डीबगिंग सुरू करण्याचा सर्वात सोपा मार्ग म्हणजे 1C मोडमध्ये उघडणे आणि तेथून इच्छित ऑपरेटिंग मोडमध्ये डीबगिंग मोड सुरू करणे (पातळ/जाड, व्यवस्थापित/नियमित):
पार्श्वभूमी जॉब डीबग करण्यात सक्षम होण्यासाठी, तुम्हाला "डीबगिंग - कनेक्शन" मेनूवर जाण्याची आवश्यकता आहे. उघडणाऱ्या विंडोमध्ये, “स्वयंचलित कनेक्शन” बटणावर क्लिक करा:
या विंडोमध्ये तुम्ही संबंधित ध्वज सेट करू शकता.
पार्श्वभूमी जॉब्स व्यतिरिक्त, या विंडोमध्ये तुम्ही बाह्य कनेक्शनचे डीबगिंग सक्षम करू शकता, http आणि .
डीबगिंगची दुसरी पायरी म्हणजे ब्रेकपॉइंट सेट करणे (इतर प्रोग्रामिंग भाषांमध्ये - ब्रेकपॉइंट).
उदाहरणार्थ, मी डीबगिंगसाठी दस्तऐवज फॉर्मवर "ऑन चेंज" हँडलर निवडला आहे:
ब्रेकपॉइंट सेट करण्यासाठी, तुम्हाला इच्छित प्रोग्राम कोड शोधण्याची आणि कोड एंट्री फील्डच्या डावीकडील फील्डवर डबल-क्लिक करणे आवश्यक आहे (किंवा F9 बटण दाबा):
सर्व स्थापित केलेल्यांची सूची पाहण्यासाठी, तुम्हाला डीबग मेनूवर जाणे आवश्यक आहे - ब्रेकपॉइंट्सची सूची (alt + F9):
1C वर 267 व्हिडिओ धडे विनामूल्य मिळवा:
1C मध्ये नेहमीच्या ब्रेकपॉईंट व्यतिरिक्त, आणखी एक प्रकारचा ब्रेकपॉइंट आहे - एका अटीसह. ग्राफिकदृष्ट्या, असा बिंदू निळ्या रंगात प्रदर्शित केला जातो. जेव्हा तुम्हाला लूपवरून जाताना विशिष्ट पुनरावृत्ती पकडण्याची आवश्यकता असते तेव्हा हा ब्रेकपॉइंट खूप उपयुक्त आहे. विशिष्ट अट पूर्ण झाल्यावर डीबगिंग चालू होईल.
उदाहरणार्थ, ओळ क्रमांक 25 वर लूप थांबवू:
राखाडी ब्रेकपॉइंट म्हणजे ते सक्रिय नाही आणि सिस्टम त्या ब्रेकपॉइंटवर थांबणार नाही. तुम्ही "ब्रेकपॉइंट अक्षम करा" पॅनेलवरील विशेष बटणावर क्लिक करून ते निष्क्रिय करू शकता (shift+ctrl+F9):
त्रुटीमुळे सिस्टम थांबू शकते, हे करण्यासाठी, तुम्हाला डीबग - त्रुटी मेनूमध्ये संबंधित ध्वज सेट करणे आवश्यक आहे:
तसेच, एरर स्टॉपमध्ये सशर्त ब्रेकपॉइंट सारखी कार्यक्षमता असते - ते तुम्हाला विशिष्ट त्रुटी मजकूरासह अपवाद फिल्टर करण्यास अनुमती देते.
ब्रेकपॉइंट सेट केल्यानंतर, आपण इच्छित प्रोग्राम कोडची अंमलबजावणी सुरू करणे आवश्यक आहे जेणेकरून सिस्टम चरण-दर-चरण कोड अंमलबजावणीमध्ये प्रवेश करेल. बाणाचे प्रदर्शन चरण-दर-चरण कोड अंमलबजावणी मोडची सुरूवात दर्शवते:
पुढील ओळीत एक पाऊल टाकण्यासाठी, तुम्ही “F11″ (स्टेप इन) बटण दाबले पाहिजे.
जर तुम्ही प्रोग्राम कोडच्या ओळींमधून पाऊल टाकले आणि ओळीवर एक प्रक्रिया किंवा कार्य असेल, तर तुम्ही या प्रक्रियेमध्ये (किंवा फंक्शन) "पडाल".
"अयशस्वी" न होण्यासाठी, F11 (स्टेप इन) ऐवजी F10 (स्टेप थ्रू) बटणासह ओळींमधून उडी मारणे पुरेसे आहे;
सध्याच्या कर्सरच्या स्थानावरून इच्छित स्थानावर जाण्यासाठी, कोडच्या मध्यवर्ती ओळींना मागे टाकून, तुम्हाला कर्सर इच्छित ओळीवर ठेवावा लागेल आणि shift + F10 (कर्सरवर जा) दाबा.
आपण विशिष्ट मूल्यांची मूल्ये वेगवेगळ्या प्रकारे पाहू शकता:
जेव्हा तुम्ही व्हेरिएबलवर फिरता, तेव्हा सिस्टम व्हेरिएबलची मूल्ये "हायलाइट" करते:
या दोन विश्लेषण पद्धती खूप समान आहेत, मुख्य फरक इंटरफेसमध्ये आहेत. निर्देशकांच्या गटासाठी स्कोअरबोर्ड आणि एकल निर्देशकांसाठी अभिव्यक्ती वापरणे अधिक सोयीचे आहे.
या पद्धती वापरण्यास अतिशय सोप्या आहेत. टेबलमध्ये इच्छित व्हेरिएबलचे नाव प्रविष्ट करणे पुरेसे आहे. अनियंत्रित गणनेचा एक मोठा प्लस म्हणजे आपण अभिव्यक्तीमध्ये आपला स्वतःचा डेटा जोडू शकता.
उदाहरणार्थ:
अभिव्यक्ती मूल्यमापन वापरणे आणि क्वेरी चालवणे, ते मूल्यांच्या टेबलवर अपलोड करणे आणि ते पहाणे खूप उपयुक्त आहे.
बऱ्याचदा आपल्याला हे समजून घेणे आवश्यक आहे की एखादी विशिष्ट प्रक्रिया किंवा कार्य कोठून आणि कोणत्या पॅरामीटर्ससह कॉल केले गेले. या उद्देशासाठी, 1C एक विशेष कार्य प्रदान करते - "कॉल स्टॅक". कॉल स्टॅक लाँच करण्यासाठी, तुम्ही हॉटकी - Ctrl + Alt + C किंवा मेनूद्वारे (डीबगिंग - कॉल स्टॅक) दाबा.
ते वापरुन, आपण प्रक्रिया कोठून आणि कोणत्या पॅरामीटर्ससह कॉल केली गेली हे तपशीलवार शोधू शकता:
डीबगिंग दरम्यान कार्यक्षमतेचे मूल्यमापन करण्यात तुम्हाला स्वारस्य असल्यास - .
1C मध्ये डीबगिंगवर विहंगावलोकन व्हिडिओ देखील पहा:
कदाचित, 1C 8.3 किंवा 8.2 वरील एकही गंभीर कॉन्फिगरेशन नियमित आणि पार्श्वभूमी कार्ये वापरल्याशिवाय करू शकत नाही. ते अतिशय सोयीस्कर आहेत, कारण ते वापरकर्ता किंवा प्रोग्रामरच्या हस्तक्षेपाशिवाय स्पष्टपणे परिभाषित वेळापत्रकानुसार कार्यान्वित केले जातील.
उदाहरणार्थ, आपल्याला दिवसातून एकदा दुसर्या प्रोग्रामसह डेटाची देवाणघेवाण करणे आवश्यक आहे. नियमित आणि पार्श्वभूमी कार्ये वापरुन, 1C या क्रिया स्वतंत्रपणे करण्यास सक्षम असेल, उदाहरणार्थ, गैर-कामाच्या वेळेत. ही पद्धत वापरकर्त्याच्या अनुभवावर कोणत्याही प्रकारे परिणाम करणार नाही आणि वेळ वाचविण्यात मदत करेल.
प्रथम, त्यांचा अर्थ काय आहे आणि त्यांच्यातील फरक काय आहे ते शोधूया:
समजू की आमची कंपनी काहीतरी विकते आणि तिची स्वतःची वेबसाइट आहे ज्यावर किंमती आहेत. प्रासंगिकता राखण्यासाठी आम्ही त्यांना दिवसातून एकदा अपलोड करू इच्छितो.
कॉन्फिगरेशन उघडा आणि शेड्यूल केलेले कार्य जोडा.
चला सर्वात महत्वाचे पॅरामीटर्स पाहू ज्यात त्याच्या गुणधर्मांमध्ये भरणे आवश्यक आहे.
गुणधर्म पॅलेटमधील संबंधित हायपरलिंक वापरून साइटवर आमच्या अपलोडसाठी शेड्यूल सेट करणे ही अंतिम पायरी आहे.
तुम्हाला 1C 8.3 मध्ये ठराविक वेळापत्रक सेटिंग दिसेल. येथे काहीही क्लिष्ट नाही. या उदाहरणात, आम्ही दररोज सकाळी पाच ते सात या वेळेत साइटवर आमच्या किमती अपलोड करण्याचे लाँच सेट केले. नियोजित कार्य 7:00 च्या आधी पूर्ण करण्यासाठी वेळ नसल्यास, ते दुसऱ्या दिवशी पूर्ण केले जाईल.
"1C एंटरप्राइझ सर्व्हरचे व्यवस्थापन करणे" मानक उपयुक्तता चालवा आणि इन्फोबेसचे गुणधर्म उघडा जिथे तुम्ही नियमित कार्य तयार केले आहे (1C च्या क्लायंट-सर्व्हर आवृत्त्यांसाठी).
उघडणाऱ्या विंडोमध्ये (माहिती सुरक्षिततेमध्ये प्रवेश करण्यासाठी तुमचा लॉगिन आणि पासवर्ड एंटर केल्यानंतर), "नियमित कार्ये अवरोधित करणे सक्षम केले आहे" चेकबॉक्स निवडलेला नाही हे तपासा. जर तुम्हाला अशी परिस्थिती आली जिथे कार्य कार्य करत नाही, तर प्रथम ही सेटिंग तपासा.
त्याच प्रकारे, आपण 1C 8.3 मध्ये नियमित कार्ये पूर्णपणे अक्षम करू शकता. विशिष्ट पार्श्वभूमी नोकऱ्या अक्षम करण्यासाठी, तुम्ही नवीनतम रिलीझमध्ये तयार केलेली “पार्श्वभूमी जॉब कन्सोल” प्रक्रिया वापरू शकता.
या मोडमध्ये, ही कार्ये सेट करणे आणि लाँच करणे अधिक कठीण आहे. बर्याचदा, एक अतिरिक्त खाते तयार केले जाते, ज्याचे सत्र नेहमीच खुले असते.
या प्रकरणात, "RunTaskProcessing()" पद्धत वापरून नियमित कार्ये सक्रिय केली जातात.
आपण खालील बांधकाम देखील वापरू शकता:
प्रक्रियेचे नाव म्हणून, तुम्ही क्लायंट प्रक्रियेचे नाव निर्दिष्ट केले पाहिजे जी कार्यान्वित केली जाईल. अंतराल किती सेकंदांनंतर अंमलबजावणी होईल हे दर्शविते. "एक वेळ" पॅरामीटर आवश्यक नाही. ही प्रक्रिया एकदा किंवा अनेक वेळा केली जाईल की नाही हे प्रतिबिंबित करते.
तुम्ही लॉगमध्ये बॅकग्राउंड जॉबची प्रगती, तसेच संभाव्य त्रुटींची उपस्थिती पाहू शकता. फिल्टरमध्ये, निवड "पार्श्वभूमी जॉब" अनुप्रयोगावर सेट करा आणि आवश्यक असल्यास, स्वारस्याचे महत्त्व निवडा, उदाहरणार्थ, फक्त "त्रुटी".
लॉग तुमच्या निवडीशी जुळणाऱ्या सर्व नोंदी दर्शवेल, त्या टिप्पणीसह तुम्हाला त्रुटीचे कारण समजण्यास मदत होईल.
कधीकधी पार्श्वभूमी (नियमित) काम डीबग करण्याची आवश्यकता असते. तंतोतंत येथे समस्या अनेकदा उद्भवते.
कधीकधी पार्श्वभूमी (नियमित) काम डीबग करण्याची आवश्यकता असते. तंतोतंत येथे समस्या अनेकदा उद्भवते. आणि ही समस्या अशी आहे की डीबगर सर्व्हरच्या बाजूला चालू असलेल्या प्रक्रियेशी कनेक्ट होऊ शकत नाही.
या समस्येचे निराकरण करण्यासाठी आपल्याला दोन समस्यांचे निराकरण करण्याची आवश्यकता आहे:
1. 1C सर्व्हरवर डीबगिंग सक्षम करा. डीफॉल्टनुसार, सर्व्हरवरील डीबगिंग अक्षम केले आहे आणि ते सक्षम करण्यासाठी, आपण हे करणे आवश्यक आहे: "" मध्ये लिहून विंडोज नोंदणी सुरू करा अंमलात आणा"आज्ञा REGEDIT. ओळ शोधा
"C:\Program Files\1cv81\bin\ragent.exe" -srvc -एजंट
(1C:एंटरप्राइज 8.1 सर्व्हर एजंट सेवेच्या स्टार्टअप पॅरामीटर्समधून घेतलेले). (हे प्लॅटफॉर्म आवृत्ती ८.१ साठी आहे)
शेवटी की जोडा -डीबग (-debug कीच्या आधी जागा ठेवण्यास विसरू नका)
उदाहरण
. "ImagePath"= होते "C:\Program Files\1cv81\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv81\server" टाकणे "C:\Program Files\1cv81\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -डीबग-d "C:\Program Files\1cv81\server"
सर्व्हर एजंट रीस्टार्ट करा. तयार. आता आपण सर्व्हर एक्झिक्युशन थ्रेड्स डीबग करू शकतो.
2. 1C सर्व्हरशी क्लायंट कनेक्शनमधील सर्व्हरच्या नावाची अक्षरे आणि डेटाबेस नावाची केस तंतोतंत जुळली पाहिजे.
योग्य कनेक्शन:चुकीचे कनेक्शन:
पार्श्वभूमी नोकरी क्लायंट - Srvr="SERVER-NAME";Ref="Base_Name";
बॅकग्राउंड जॉब डेटाबेसला कोणत्या पॅरामीटर्ससह कनेक्ट करते हे आपण कसे शोधू शकता? तुम्ही वेगवेगळ्या मार्गांचा विचार करू शकता, पार्श्वभूमी जॉब चालू असताना या पॅरामीटर्सला लॉग करणे यापैकी एक आहे.
कोड खालीलप्रमाणे आहे:
कार्यपद्धती WriteConnectionWithBase() निर्यात करा
जर्नल एंट्री नोंदणी(,InformationBaseConnectionString());
प्रक्रिया समाप्त
बॅकग्राउंड जॉब चालू असताना, बॅकग्राउंड जॉबद्वारे वापरलेल्या डेटाबेस कनेक्शन पॅरामीटर्ससह एक ओळ लॉगवर लिहिली जाईल.
आता आम्ही पार्श्वभूमी जॉबसाठी स्वयंचलित कनेक्शन निर्दिष्ट करतो.
अशा हाताळणी केल्यानंतर, तुम्ही पार्श्वभूमी जॉब डीबग करू शकता.
तुम्ही अजून वाचले नाही का? तुम्हाला स्वारस्य असू शकते...