
جاء العنوان الرئيسي جذابًا ، لكنه يغلي. يجب أن أقول على الفور أننا سنتحدث عن 1C. عزيزي ألقاب 1C ، أنت لا تعرف كيفية التعامل مع المعاملات ولا تفهم ما هي الاستثناءات. توصلت إلى هذا الاستنتاج بالنظر إلى كمية كبيرة من كود 1C ، ولدت في براري المؤسسة المحلية. في التكوينات النموذجية ، يعد هذا أمرًا جيدًا جدًا ، ولكن الكمية المروعة من التعليمات البرمجية المخصصة مكتوبة بشكل غير كفء من حيث العمل مع قاعدة البيانات. هل رأيت خطأ "حدثت أخطاء بالفعل في هذه المعاملة"؟ إذا كان الأمر كذلك ، فإن عنوان المقال ينطبق عليك. دعنا نلقي نظرة على القطع ، أخيرًا ، ما هي المعاملات وكيفية التعامل معها بشكل صحيح عند العمل مع 1C.
لماذا تحتاج إلى دق ناقوس الخطر
بادئ ذي بدء ، دعنا نكتشف ما يشكل الخطأ "حدثت أخطاء بالفعل في هذه المعاملة". هذا ، في الواقع ، أمر بسيط للغاية: أنت تحاول العمل مع قاعدة بيانات داخل معاملة تم إلغاؤها بالفعل (تم إلغاؤها). على سبيل المثال ، تم استدعاء طريقة إلغاء المعاملة في مكان ما ، وتحاول الالتزام بها.
لماذا هذا سيء؟ لأن هذا الخطأ لا يخبرك بأي شيء عن مكان حدوث المشكلة بالفعل. عندما تأتي لقطة شاشة بمثل هذا النص إلى الدعم من المستخدم ، وخاصةً لرمز الخادم الذي لا يتفاعل معه الأشخاص بشكل تفاعلي ، فإن هذا ... أردت كتابة "خطأ فادح" ، لكنني اعتقدت أنها كلمة طنانة لا يهتم بها أحد ... هذا الحمار. هذا خطأ في البرمجة. هذا ليس فشل عرضي هذه دعامة يجب إعادة بنائها على الفور. لأنه عندما تستيقظ عمليات خادم الخلفية ليلاً وتبدأ الشركة في خسارة الأموال بسرعة ، فإن "الأخطاء التي حدثت بالفعل في هذه المعاملة" هي آخر ما تريد رؤيته في سجلات التشخيص.
هناك بالطبع إمكانية أن السجل التكنولوجي للخادم (مدرج في الإنتاج ، أليس كذلك؟) بطريقة ما يساعد في تشخيص المشكلة ، ولكن لا يمكنني الآن أن أخمن مرة واحدة كيف أجد السبب الحقيقي للخطأ المشار إليه فيه. لكن السبب الحقيقي هو واحد - حصل المبرمج Vasya على استثناء داخل المعاملة وقرر ذلك مرة واحدة وليس كاراباس "فكر ، خطأ ، دعنا ننتقل".
ما هي المعاملات في 1C
من المحرج أن تكتب عن حقائق أولية ، ولكن ، على ما يبدو ، سيتعين علينا قليلاً. المعاملات في 1C هي نفسها المعاملات في DBMS. هذه ليست بعض المعاملات "1C" الخاصة ، هذه معاملات في DBMS. وفقًا للفكرة العامة للمعاملات ، يمكن إما تنفيذها بالكامل أو عدم تنفيذها على الإطلاق. يمكن التراجع عن جميع التغييرات التي تم إجراؤها على جداول قاعدة البيانات التي تم إجراؤها داخل المعاملة ، كما لو لم يكن هناك شيء.
بعد ذلك ، تحتاج إلى فهم أن 1C لا يدعم المعاملات المتداخلة. في الواقع ، لا يتم دعمها ليس "في 1C" ، ولكنها غير معتمدة على الإطلاق. على الأقل ، أنظمة إدارة قواعد البيانات (DBMS) التي يستطيع 1C العمل معها. المعاملات المتداخلة ، على سبيل المثال ، غير موجودة في MS SQL و Postgres. تؤدي كل مكالمة "متداخلة" لبدء المعاملة إلى زيادة عداد المعاملات ، وكل استدعاء إلى "تنفيذ المعاملة" يقلل هذا العداد. يتم وصف هذا السلوك في العديد من الكتب والمقالات ، ولكن الاستنتاجات من هذا السلوك ، على ما يبدو ، ليست مفهومة جيدًا. بالمعنى الدقيق للكلمة ، في SQL هناك ما يسمى SAVEPOINT ، ولكن 1C لا تستخدمها ، والشيء محدد تمامًا.
فيما يلي ، خاصة بالنسبة لـ Warriors of True Faith ، الذين يعتقدون أن الرمز يجب كتابته باللغة الإنجليزية فقط ، تحت المفسدين سيتم إعطاؤه نظيرًا للرمز في بناء الجملة الإنجليزية 1C.
()
();
= .();
. = " ";
.();
;
();
, ? . , . ? , . — . — deadlock, , , , . : deadlock .
, . 1- . , , 3 . , , 1 :)
, . 1 , "" "". , , :). , . , IT- .
, , ( ), . " ". , , . , . , , , ELK- 1 … (, , , :))
, , . , , ".()". ( ) , .
, .
, (, "()") . "" , , - -, . , : , , .

. 1 SonarQube . , 1, , …
? 90% . , 1 . , 1, .
:
()
= ();
();
, . - , . — - . — … , ? "" , . , . , , , " -…"
"-" : . . , , , - , . .
:
()
= ();
();
();
// , .
— . , ( — ) , . -, , .
, 3- . — .
. , , , .
1-
1 , . , . , :
()
();
= .();
. = " ";
.();
.(" %1", );
;
;
;
();
, , ? , . . — , , " ", . , .
, 1- , , . , . "()" 1 , . 1 (, -), "" . , " ".
, , , - "" . , - . , , .
, , . . .
1
, 1 . :
3 , . — , .
. ( ) , . , , .
? : : , , .
? :
();
();
();
, — . - , "" . , :
();
();
// ?
;
();
, , ? ? , , . ? ? , . "" . - throw.
();
();
;
;
();
, … , ? : .
();
();
();
;
;
();
, , . , , (). , ? , , ? , , . , , . - .
, , "-" . :
**UPD: , . , -.
();
();
();
()
();
;
;
;
, "" . "" ""? , : , , . , . . . , . . . "" . , , , "" .
-
, .
:
();
();
();
"" , .
:
()
()
. , . . , . . .
:
()
()
: — . ? , - ? .
:
()
.()
//
//
;
();
- deadlock
- "",
:
()
.()
.();
(" ");
;
;
();
. . , . .
, , , , , 1 . , , , Highload, , . ORM, GUI, -, Reporting, . , , — 1, — . , , , , , -, . 1 . 20 / -. , , . - 1 , , . - "()"....
— , . 1 - . , . " 1" — . .