النقطة الزمنية والحدود والغرض وأمثلة الاستخدام. الحجب التلقائي والتحكم فيه




لحظة من الزمن:
تصفها الشركة 1C بهذه الطريقة:
مصممة لتلقي وتخزين نقطة زمنية لكائن في قاعدة البيانات. يحتوي على التاريخ والوقت، بالإضافة إلى مرجع لكائن قاعدة البيانات. يتم استخدامها كقيم خصائص ومعلمات أسلوب لكائنات أخرى من نوع Instant of Time.
يتم استخدام النقطة الزمنية في الحالات التي يكون فيها من المهم التمييز بين النقاط الزمنية للكائنات التي لها نفس التاريخ والوقت، على سبيل المثال، لمقارنة مواضع المستندات على محور الوقت.

وبكلماتك الخاصة:
النقطة الزمنية هي مزيج من التاريخ والإشارة إلى المستند. يتيح لك تقسيم المستندات وتنظيمها خلال ثانية واحدة، وترتيب جميع المستندات بتسلسل لا لبس فيه. إن استلام البيانات عند الترحيل في وقت ما يضمن أن الحركات التي تتم في نفس ثانية المستند الذي يتم ترحيله، ولكنها موجودة أمامه، ستؤخذ في الاعتبار.
ولكن هناك خصوصية - يتم ترتيب المستندات المنشورة في نفس الثانية بترتيب عشوائي، وليس بترتيب إنشائها المادي (كما كان الحال في 7.7).

InstantTime() هي اللحظة التي تسبق موضع المستند مباشرة (مماثلة لـ CalculateRegistersOn(CurrentDocument() في 7)، وإذا كنت تريد الحصول على اللحظة مباشرة بعد موضع المستند، فاستخدم كائن Border
الكود 1C v 8.x لحظة مباشرة بعد المستند = حدود جديدة (DocumentLink,BorderView.Included)

Code 1C v 8.x // ينشئ المثال نقطة زمنية باستخدام تاريخ ورابط لكائن في قاعدة البيانات.
Moment = New Moment(TekDocument.Date, TechDocument.Link);

عند استلام الأرصدة:
"النقطة الزمنية" هي حقل افتراضي، غير مخزن في قاعدة البيانات. يحتوي على كائن "نقطة زمنية" (الذي يتضمن تاريخًا ورابط مستند)
<Виртуальная>جدول الأرصدة لا يتم تخزينه في قاعدة البيانات، بل يتم بناؤه وقت الوصول إليه.
1. حدد نقطة زمنية أكبر من أو تساوي قيمة المعلمة التي يتم حساب الأرصدة لها
2. في هذه اللحظة يتم الحصول على الباقي من جدول الإجماليات
3. إذا كانت النقطة الزمنية التي يتم فيها حساب الأرصدة لا تتطابق مع النقطة الزمنية للمجاميع، يتم حساب الأرصدة حسب الحركات.

حدود:
مصممة لتلقي وتخزين حدود نطاق معين من القيم. تحتوي على القيمة الحدية للفاصل الزمني، بالإضافة إلى علامة تضمين أو استبعاد القيمة الحدية في الفاصل الزمني.
تُستخدم كقيم خصائص ومعلمات أسلوب لكائنات أخرى من النوع الحدودي.
يتم استخدام الحدود في الحالات التي يكون فيها تحديد تضمين أو استبعاد قيمة حدية أمرًا مهمًا، على سبيل المثال، عند الحصول على أرصدة وانعطافات سجلات التراكم والشرائح وقيم سجل المعلومات، لتعيين فترات الاستعلام.

نوع الحدود - يحدد مجموعة من أنواع الحدود فيما يتعلق بقيمة الحدود:
BoundaryView.Include - تتضمن الحدود قيمة الحدود.
BoundaryView.Exclusion - يستبعد الحد قيمة الحدود.
الكود 1C v 8.x Border = New Border(Date, BorderType.Includer);
Request.SetParameter("ConBorder"، Border);

مثال للحصول على الأرصدة اعتبارا من تاريخ المستند بما في ذلك حركاتها
طلب.نص =
"يختار

|من

Request.SetParameter("MomTime"، New Boundary(MomTime.InstantTime(), BorderType.Included));

مثال للحصول على أرصدة في تاريخ المستند ولكن قبل حركاته
الكود 1C v 8.x الطلب = طلب جديد؛
طلب.نص =
"يختار
| التسويات المتبادلة مع موظفي المنظمات الأرصدة الأفراد،
| التسويات المتبادلة مع موظفي المنظمات الأرصدة مبلغ التسويات المتبادلة الرصيد
|من
| سجل التراكمات. التسويات المتبادلة مع موظفي المؤسسات. الأرصدة (&MomTime، فرد = &فرد) AS التسويات المتبادلة مع موظفي المؤسسات أرصدة";
MomTime = Documents.Payroll for Organizational Staff.Find By Number("00012"،"12/31/2009 23:59:59");
Request.SetParameter("MomTime"، New Boundary(MomTime.InstantTime(), BorderType.Exclusion));
// أو مثل هذا: Request.SetParameter("MomTime", MomTime.Instance());
Request.SetParameter("فيزيائي"، Directorys.Individuals.FindByCode("365"));
OutputResult(Query.Run());

المعلومات مأخوذة من الموقع

نظرًا لوجود خبرة كافية في تنفيذ SCP، أود أن أشير إلى أنه في كل مشروع، كان من الضروري عاجلاً أم آجلاً نقل قسم المحاسبة كقسم للعمل في البرنامج. هناك عدد غير قليل من الصعوبات في هذه العملية. على وجه الخصوص، أود أن أشير إلى الانتقال من BP 2.0 إلى UPP. على الرغم من أن BP 3.0 قد تم إصداره بالفعل، أعتقد أن هذا السؤال سيظل شائعًا لبعض الوقت. إذن ما هي الصعوبة؟

يجب أن نبدأ بحقيقة أن قسم المحاسبة في الإصدار 1.3 أقرب إلى قسم محاسبة المؤسسات في الإصدار 1.6 منه إلى الإصدار 2.0، على الرغم من أن جميع الوظائف تتوافق بالطبع مع الحقائق الحديثة. ومع ذلك، يُنظر إلى هذا على أنه عودة إلى شيء قديم عفا عليه الزمن من الناحية الأخلاقية. والأهم من ذلك أن هناك قدرًا لا بأس به من الحقيقة في هذا.

بالطبع، بالنسبة للمهام المحاسبية، فإن التكوين (المشار إليه فيما يلي باسم BP) 2.0 له مزايا ووسائل راحة، ولكن مع ذلك، فإن أهم ما يميز UPP هو دائرة الإنتاج الخاصة به، والتي ليس لها نظائرها في أي حل 1C (باستثناء). ومن المؤسف أنه من الصعب عكس هذه الميزة النفسية؛ ولا يمكن تحقيق هذا إلا من خلال اتخاذ قرار قوي الإرادة من جانب الإدارة يقضي بفصل أولئك الذين لا يتدربون من جديد.

الاختلافات بين 1C UPP و1C المحاسبة

النقاط السلبية الرئيسية التي تميز UPP عن BP والتي واجهتها عمليًا:

  • إنشاء فاتورة باستخدام رابط (في BP يتم إدخال هذه الفاتورة في علامة تبويب منفصلة).
  • ظهور التقارير (من المؤكد أن التقارير المحاسبية في UPP تبدو مملة، على عكس التقارير الجميلة في BP ذات الرأس الأخضر والعديد من الإعدادات).
  • الاختلافات في دفاتر يومية المستندات (تختلف أسماء وتكوين دفاتر يومية المستندات التي اعتاد عليها المحاسبون في شركة BP).
  • توفر حقول بحث إضافية في نماذج دفتر اليومية.

احصل على 267 درس فيديو على 1C مجانًا:

الآن يجب أن نتحدث بمزيد من التفصيل عن هذه الإمكانيات الفنية وغيرها التي قد تؤثر على المحاسبة. وأيضًا ما هي البدائل التي تقدمها لنا 1C UPP؟

الفرق الأكثر أهمية في مبادئ المحاسبة في UPP و BP بالنسبة للمحاسب، في رأيي، هو استحالة (ربما كمية محدودة للغاية) من التفكير المعاملات التجارية « شهادات المحاسبة" في بعض الشركات، يتم بناء نصف المحاسبة على استخدام "العمليات". تنشأ هذه الميزة من الاستخدام الواسع النطاق للسجلات المحاسبية في UPP، وليس فقط السجلات المحاسبية. في UPP، يتم تنفيذ الغالبية العظمى من العمليات باستخدام وثائق متخصصة.

على سبيل المثال: يعكس معظم المحاسبين الفائدة على القروض الصادرة باستخدام العملية، مع الإشارة إلى المراسلات Dt91 Kt76، ومع ذلك، في 1C UPP، لن يؤثر هذا النهج، على سبيل المثال، على سجل التسويات المتبادلة مع الأطراف المقابلة. يجب عليك استخدام وثيقة مبيعات السلع والخدمات.

ومن الجدير بالذكر بشكل منفصل أنه من الممكن استخدام وثيقة العملية، ولكن فقط بالتزامن مع وثيقة تعديل السجل، وهذه الوثيقة يمكن أن تربك أي مستخدم غير مستعد.

علاوة على ذلك، تجدر الإشارة إلى وجود اختلافات في المحاسبة الفرعية لبعض الحسابات المحاسبية واستحالة الحصول على المعلومات ذات الأهمية باستخدام الطرق القياسية. على سبيل المثال، لا يحتوي الحساب 60 على حساب فرعي ثالث "مستندات التسويات مع الطرف المقابل"، والذي بموجبه تنعكس وثيقة المسجل في BP؛ وبالتالي، لن يكون من الممكن رؤية هذه المستندات باستخدام المعيار ورقة التوازن. جزء من المخرج من هذا الموقف هو استخدام تقرير "بيان التسويات المتبادلة مع الأطراف المقابلة".

عدم وجود بعض الحسابات "خارج الميزانية العمومية" في 1C UPP، على سبيل المثال، حسابات MC. في الواقع، يتم أخذ المواد قيد التشغيل بعين الاعتبار في حساب BP في حساب MC. في UPP، يتم أخذ المعلومات المتعلقة بالمواد المنقولة إلى التشغيل بعين الاعتبار في سجل "المواد قيد التشغيل"، ويمكن الحصول على معلومات عنها باستخدام تقرير "بيان المواد قيد التشغيل".

عدم وجود إجراء إغلاق نهاية الشهر، وهو قريب جدًا ومفهوم. نعم، هذه المعالجة غير مدرجة في SCP. يتم تنفيذ إغلاق الشهر باستخدام عملية الأعمال "إجراء إغلاق الشهر"، والتي تستخدم عنصر دليل "إعداد إغلاق الشهر".

ربما تكون هذه النقطة حالة خاصة تمامًا. ومع ذلك، فمن الجدير بالذكر. وثيقة "حركة الأصول الثابتة" - تكمن الصعوبة هنا في أن قسم المحاسبة يشير من أين وأين يتم نقل كائن الأصل الثابت، أما SCP فهو يشير فقط إلى المكان الذي تم نقل الكائن إليه. يتم تحديد الموقع الحقيقي للكائن عن طريق إدخال السجل في وقت معين.

يحتوي تقرير ورقة الإهلاك في UPP على عرض تقديمي مختلف ولا يعكس حركة الأصول الثابتة؛ وبدلاً من ذلك، يمكنك استخدام تقرير حديث.

زيادة عدد التفاصيل المطلوب ملؤها. وبطبيعة الحال، زاد عدد التفاصيل. ومع ذلك، وبفضل إعدادات المستخدم، يمكن ملء الغالبية العظمى من هذه التفاصيل تلقائيًا.

طرق الخروج من هذا الوضع

كقاعدة عامة، معظم المشاكل التي نواجهها لها عدة حلول. وفي هذه الحالة يمكنني أن أسلط الضوء، على سبيل المثال، على ما يلي:

في إحدى الشركات، كان موقف قسم المحاسبة قويًا جدًا، ولم يرغبوا حقًا في العودة إلى الماضي في 1C UPP 1.3، وكان المشروع في خطر الفشل... ولحسن الحظ، كانت الشركة ممتازة الفرص المالية... وكانت النتيجة مراسلات كاملة للجميع التقارير المحاسبيةوإحضارها إلى نموذج BP 2.0، وإضافة مستندات جديدة إلى سجلات المستندات، وعرض نماذج البحث في نماذج سجل المستندات. اتضح أنها باهظة الثمن: سواء من حيث التطوير أو من حيث الدعم الإضافي، لكن قسم المحاسبة شعر بأهميته، واستمر المشروع.

وعلى الرغم من أن هذا الخيار لا يبدو فعالا للغاية، إلا أنه موجود في الحياة.

سيكون الحل المعاكس تمامًا هو إصدار تعليمات صارمة من الإدارة لاستخدام الوظيفة الحالية فقط. بالمناسبة فهو يسمح بالمحاسبة الكاملة ويمتلك كافة آليات الرقابة. هذا النهج هو الأمثل للشركة!

للمنفذين الذين يعملون مع التكوينات القياسية أو الخاصة بهم - وأولئك الذين يستعدون للحصول على الشهادة في 1C: أخصائي النظام الأساسي.

في هذا المقال سننظر في:

  • كيف استخدم الأقفال المُدارة بشكل صحيحللمعالجة التشغيلية وغير التشغيلية للمستندات
  • ماذا يمكن أن يؤدي إلى لا يوجد حظر
  • كيفية تجنب ارتكاب الأخطاء التي لم يتم اكتشافها على الفور والتي يمكن أن يكون لها عواقب وخيمة :)

مدة القراءة: 20 دقيقة.

لذا، هناك طريقتان للتحكم في الأرصدة في 1C:Enterprise 8.3

لنبدأ بحقيقة أن تسميات "الطريقة القديمة" و "الطريقة الجديدة" تعسفية تمامًا. في الواقع، إذا تم استخدام "تقنية جديدة" منذ عام 2010، فهي لم تعد جديدة جدًا :)

ومع ذلك، فإننا مضطرون مرة أخرى إلى التوقف هنا، لأنه فمن الضروري التمييز بين هذه الأساليب وهذا أمر بالغ الأهمية.

"الطريقة القديمة" هي طريقة للتحكم في المخلفات تم استخدامها منذ أيام 1C:Enterprise 8.0.

منذ عام 2010، ومع تطوير المنصة وإضافة إمكانيات جديدة مع 1C:Enterprise 8.2، تم تطبيق "منهجية جديدة" ( ومع ذلك - ليس في كل مكان).

ماهو الفرق؟

الفرق الأساسي هو في لحظة السيطرة على المخلفات:

  • في الطريقة "القديمة"، يتم التحكم في الأرصدة قبل تسجيل الحركات في السجلات.
    أولاً، نقوم بالتحقق من الأرصدة، إذا كانت الأرصدة "غير كافية" (سيكون هناك أرصدة سلبية) - لن نقوم بمعالجة الوثيقة
  • وفي الطريقة "الجديدة" يتم التحكم بعد تسجيل الحركات، أي بعد وقوعها.
    إذا تم تشكيل أرصدة سلبية بعد التنفيذ، فأنت بحاجة إلى "استرجاع" المعاملة، أي إلغاء المستند.

تمت مناقشة مزايا وعيوب التقنية الجديدة بالتفصيل في مقال منفصل، لذلك سنقتصر على الأطروحة العامة فقط - تعتبر التقنية الجديدة أكثر مثالية من حيث الأداء وقابلية التوسع.

حسنًا، التقنية القديمة أصبحت شيئًا من الماضي وهذا هو مصير UT 10.3؟

لا، هذا ليس صحيحا تماما.

يمكن استخدام المنهجية الجديدة عندما، عند شطب البضائع كافة البيانات الضرورية موجودة في المستند ولا تحتاج إلى حساب.

على سبيل المثال، عندما يكون المبلغ المراد شطبه معروفًا من الجزء الجدولي من المستند. تنشأ المشكلة مع سعر التكلفة، لأنه يجب حسابه قبل الكتابة إلى السجل، أي تنفيذ استعلام إلى قاعدة البيانات.

ولذلك، يمكن تطبيق المنهجية الجديدة بنجاح إذا تم تخزين البيانات المتعلقة بالكمية والتكلفة في سجلات منفصلة.

على سبيل المثال، مثل هذا:

ومع ذلك، هناك تكوينات يتم فيها أخذ الكمية والتكلفة في الاعتبار في نفس السجل. وهنا له ما يبرره الطريقة القديمة للتحكم في البقايا لا تزال تعمل!

فيما يلي مثال على سجل واحد لكل من الكمية والتكلفة:

ماذا عن التكوينات النموذجية؟ إنها مجرد تقنية جديدة، أليس كذلك؟

ليس دائما!

على سبيل المثال، في "1C: إدارة التجارة 11.3" يوجد سجلان:

عند نشر مستندات الشحن، لا يتم ملء سجل "تكلفة البضائع" على الإطلاق. يتم إدخال البيانات في هذا السجل فقط عند إجراء العمليات الروتينية لإغلاق الشهر.

يستخدم UT 11 تقنية جديدة، حيث يمكن الحصول على جميع البيانات الخاصة بنشر المستندات دون الوصول إلى السجلات الخاضعة للرقابة.

أما بالنسبة لـ "1C: المحاسبة"، يتم تخزين الكمية والتكلفة هناك في سجل واحدقسم المحاسبة، على الحسابات المحاسبية المقابلة.

لهذا يستخدم BP 3.0 التقنية القديمة.

يرجى ملاحظة أن المحاسبة الكمية ومحاسبة التكاليف في UT 11 يتم إجراؤها باستخدام تحليلات مختلفة. على سبيل المثال، يتم الحفاظ على التكلفة أيضًا حسب المؤسسة والقسم والمدير ونوع النشاط وضريبة القيمة المضافة وما إلى ذلك.

كجزء من هذه المقالة، سنقوم بتحليل الحجب لكل من الطرق القديمة والجديدة للتحكم في الأرصدة.

حول المعالجة السريعة للمستندات

غالبًا ما تكون هناك مفاهيم خاطئة حول هذا السؤال البسيط.

يُعتقد أحيانًا أن التنفيذ التشغيلي هو التحكم في المخلفات باستخدام طريقة جديدة. وهذا غير صحيح من كلمة "على الإطلاق".

ويمكن تحليل الأداء التشغيلي أثناء مراقبة المخلفات، ولكنه ليس ضروريًا.

التنفيذ التشغيلي– هذه هي قدرة الوثيقة على تسجيل الأحداث الناشئة هنا والآن، أي في الوقت الحقيقي.

تم تكوينه باستخدام خاصية وثيقة خاصة:

ماذا يعني "التسجيل هنا والآن"؟ يقوم النظام الأساسي للمستندات التي تتم معالجتها بسرعة بعدد من الإجراءات:

  • يتم تعيين المستندات المنشورة اليوم في الوقت الحالي
  • إذا تم ترحيل مستندين في وقت واحد، فسيكون لكل منهما وقت خاص به (أي أن النظام سيقوم بتباعد المستندات في ثوانٍ مختلفة)
  • لا يمكن نشر المستندات في تاريخ لاحق.

ولكن الشيء الرئيسي هو أن النظام ينقل علامة على الكفاءةوثيقة للمعالجة:

بالنسبة للمستندات التي تم نشرها على الفور، يمكنك حذف تحديد المعلمة في الطلب؛ سيتم الحصول على الأرصدة الحالية اعتبارًا من 31 ديسمبر 3999:

يتم تخزين الأرصدة الحالية في النظام ويتم الحصول عليها في أسرع وقت ممكن (يتم الحصول على أرصدة التواريخ الأخرى في معظم الحالات عن طريق الحساب).

هكذا يمكن اعتماد التنفيذ التشغيلي لكل من الطرق القديمة والجديدة للتحكم في المخلفات.

حقيقة مثيرة للاهتمام.

في UT 11، يُحظر تنفيذ المستندات التي تشطب التسميات على الفور. على سبيل المثال، هذه هي وثائق "مبيعات السلع والخدمات"، "تجميع البضائع"، "حركة البضائع"، "الاستهلاك المحلي للسلع" وغيرها.

لماذا يتم ذلك؟

في النظام، يتم دائمًا التحكم في الرصيد في الوقت الحالي (لم يتم تحديد معلمة الفترة في الطلب). ويتيح لك الافتقار إلى التنفيذ التشغيلي إدخال المستندات في المستقبل، وغالبا ما يطلب العملاء مثل هذه المهمة.

التحكم في الأرصدة بطريقة جديدة - بدون حجب

دعونا نفكر بإيجاز في خوارزمية التحكم في الأرصدة عند تنفيذ مستند "مبيعات السلع والخدمات" باستخدام تكوين النموذج.

هناك نوعان من السجلات:

  • الأرصدة المتاحة – للمحاسبة الكمية
  • تكلفة البضائع - لمحاسبة التكاليف

للتحكم في أرصدة المنتجات، يكفي العمل مع سجل "الأرصدة الحرة".

سيبدو رمز معالجة النشر كما يلي:

طلب = طلب جديد؛


#المنطقة1
Query.TemporaryTableManager = NewTemporaryTableManager;
#منطقة النهاية


#المنطقة2
طلب.نص =
"يختار

|وضع مستند البضائع
|من
|أين
|
|المجموعة حسب
|
|الفهرس بواسطة
| التسميات
|;

|اختر
| &التاريخ كفترة،
| القيمة (نوع تراكم الحركة.النفقة) كنوع الحركة،
| المنتجاتوثيقة.الكمية AS الكمية
|من
";
Query.SetParameter("Date", Date);
#منطقة النهاية

// 4. تسجيل الحركات في قاعدة البيانات
# المنطقة المنطقة 4
سجل الحركات () ؛
#منطقة النهاية


#المنطقةRegion5
طلب.نص =
"يختار
| -FreeRemainingRemaining.QuantityRemaining AS العجز
|من
| وثيقة المنتجات كيفية وثيقة المنتجات
| الانضمام الداخلي RegisterAccumulations.FreeRemains.Remains(
| & لحظة من الزمن،
| التسمية ب
| (يختار
| المنتجاتDocument.Nomenclature AS Nomenclature
| من
| منتجات المستند كمنتجات المستند)) كما هو متبقي مجاني
| منتجات البرمجياتDocument.Nomenclature =availableRemainingRemaining.Nomenclature
|أين
| المتاحة المتبقية المتبقية. الكمية المتبقية< 0";
#منطقة النهاية


#المنطقةRegion6
لحظة السيطرة المتبقية =
?(الوضع = وضع الاحتفاظ بالمستند. تشغيلي،
غير معرف،
New Boundary(TimePoint(), BoundaryView.Included));
Request.SetParameter("لحظة من الوقت"، لحظة التحكم المتبقي)؛
RequestResult = Request.Execute();
#منطقة النهاية


#المنطقةRegion7
إذا لم يكن الاستعلام عن Result.Empty() ثم
رفض = صحيح؛
ErrorSelect = QueryResult.Select();
أثناء حلقة SelectErrors.Next()
message.Text = "الكمية غير كافية للمنتج:"+SelectionErrors.Shortage;
message.Field = "المنتجات["+(ErrorSelection.LineNumber-1)+"].Quantity";
رسالة.رسالة();
EndCycle;
إنهاء إذا؛
#منطقة النهاية


#المنطقة8
إذا فشل ثم
يعود؛
إنهاء إذا؛
#منطقة النهاية

نهاية الإجراء

دعونا نفكر في النقاط الرئيسية لخوارزمية التحكم المتبقية.

1. تهيئة مدير الجدول المؤقت

ستكون هناك حاجة للمدير حتى يكون الجدول المؤقت الذي تم إنشاؤه في الاستعلام متاحًا في الاستعلامات اللاحقة.

وبالتالي، يتم الحصول على البيانات من الجزء الجدولي مرة واحدة، وحفظها في جدول مؤقت ثم استخدامها بشكل متكرر.

2. الاستعلام عن تجميع البيانات الجدولية

يقوم الاستعلام بتحديد البيانات المجمعة من القسم الجدولي.

يرجى ملاحظة أنه تم تحديد رقم سطر المستند أيضًا - وستكون هناك حاجة إليه لوضع رسالة الخطأ في سياقها. بالنسبة لرقم السطر، يتم استخدام الدالة التجميعية MINIMUM() - أي أنه سيتم ربط الرسالة بالسطر الأول الذي تحدث فيه التسمية المحددة.

يقوم الطلب الأول في الدفعة بإنشاء جدول مؤقت. في الاستعلام الثاني، يتم تحديد بيانات الجدول المؤقت وإضافة حقلين مطلوبين لكل إدخال سجل - الفترة ونوع الحركة.

مزايا هذا النهج:

  • ليست هناك حاجة لإجراء تنظيف مسبق، أي استخدام طريقة Clear()
  • ليست هناك حاجة لتنظيم حلقة بناءً على التحديد أو الجزء الجدولي.

بالمناسبة، يتم استخدام نهج مماثل في التكوينات القياسية، ولا سيما في UT 11 وBP 3.0.

4. تسجيل الحركات في قاعدة البيانات

يمكن إجراء التسجيل باستخدام أمر واحد (بدلاً من اثنين) - Movements.FreeRemains.Record().

وفي حالتنا، عندما يتم كتابة سجل واحد، لن يكون هناك فرق.

لكن هذا النهج أكثر عالمية:

  • أولاً، قم بتعيين علامة الكتابة لمجموعات سجلات التسجيل المطلوبة
  • ثم قم باستدعاء أسلوب Write() لمجموعة الحركة، التي تكتب كافة المجموعات مع تعيين علامة الكتابة على قاعدة البيانات

بعد تنفيذ الأمر "Movements.Record()"، سيتم إعادة تعيين علامة التسجيل لجميع المجموعات إلى False.

عليك أيضًا أن تتذكر أنه في نهاية المعاملة (بعد المعالجة اللاحقة)، سيقوم النظام تلقائيًا بالكتابة إلى قاعدة البيانات فقط تلك مجموعات السجلات التي تم تعيين علامة الكتابة لها على True.

استخدام الحلول النموذجية مخطط مماثللتسجيل الحركات. لماذا؟

تكتب طريقة Write()‎ لمجموعة Movement مجموعات من السجلات بنفس التسلسل، حتى بالنسبة للمستندات المختلفة.

قد يؤدي تسجيل الحركات يدويًا إلى حدوث مشكلات.

دعونا نعطي مثالا.

إذا كتبت في وثيقة "التنفيذ" مثل هذا:

Movements.FreeRemainders.Write();
...
Movements.Cost of Goods.Write();

وفي مستند "حركة البضائع" قم بتغيير الترتيب:

الحركات. تكلفة العناصر.Write();
...
الحركات. FreeRemainings.Write();

يمكن أن يؤدي هذا إلى حالة توقف تام للمستندات على مجموعات العناصر المتقاطعة.

يمكن استخدام طريقة تسجيل الحركة المذكورة أعلاه إذا تم تحديد قيمة تسجيل الحركة المناسبة في خصائص المستند:

5. الاستعلام عن استلام الأرصدة السالبة

يقوم الطلب بتحديد الأرصدة السالبة حسب العنصر من المستند.

الرصيد السلبي هو نقص (نقص) في المنتج.

يتم إجراء الاتصال بالعناصر الموجودة في المستند فقط للحصول على رقم السطر.

إذا لم نخطط لربط الرسائل بحقول المستندات، فيمكن تبسيط الاستعلام إلى حد كبير - سيتم الحصول على البيانات من جدول واحد (باقي السجل).

6. تحديد النقطة الزمنية للتحكم في المخلفات

هذا هو المكان الذي أصبح فيه التنفيذ التشغيلي مفيدًا.

إذا تم تنفيذ المستند بشكل سريع، فإن لحظة استلام الأرصدة تكون غير محددة، مما يعني استلام الأرصدة الجارية.

إذا كانت هذه معاملة غير فعالة، فسنحصل على نقطة زمنية "بعد" المستند - لمراعاة الحركات التي تمت للتو.

دعونا نتذكر أن الحصول على الأرصدة الحالية هي عملية سريعة مقارنة بالحصول على الأرصدة في وقت اعتباطي.

هذه هي بالضبط فائدة المستندات المنفذة على الفور.

7. إذا لم يكن الطلب فارغًا، فهذا يعني أنه تم تكوين أرصدة سلبية

في الحلقة، نمر عبر جميع البقايا السلبية ونعرض رسالة مرفقة بصفوف الجزء الجدولي.

وهذا ما ستبدو عليه الرسالة التشخيصية:

8. إذا كانت هناك أخطاء، فارجع من معالج الأحداث

إذا كان هناك خطأ واحد على الأقل، فإننا نخرج من الإجراء.

وبما أنه لا فائدة من مواصلة المعاملة، فلن يتم تسجيل المعاملة على أي حال (وبعد ذلك سنقوم بتطوير رمز لشطب الدُفعات).

تنفيذ شطب التكاليف حسب الدفعة

بعد التحقق من الأرصدة بنجاح، يمكنك البدء في شطب الدفعات.

سيكون رمز الشطب بواسطة FIFO كما يلي:

// I. تحليل تحول تاريخ المستند إلى الأمام


وليس ThisObject.ThisNew()
وهذا الكائن.أجريت بعد ذلك

طلب = طلب جديد؛
طلب.نص =
"يختار
| Document.Date AS Date
|من
|أين

RequestResult = Request.Execute();
SelectDocument.Next();

خلاف ذلك
كذب)؛
إنهاء إذا؛

نهاية الإجراء

الإجراء عند التسجيل (الرفض)

ThisObject.AdditionalProperties.Insert("DocumentDateMovedForward"،
هذا الكائن. التاريخ>


إنهاء إذا؛

نهاية الإجراء

إجراءات المعالجة (الفشل، الوضع)

طلب = طلب جديد؛

// 1. تهيئة مدير الجدول المؤقت
#المنطقة1
...
#منطقة النهاية

// 2. بيانات جدول تجميع الاستعلام
#المنطقة2
...
#منطقة النهاية

// 4. تسجيل الحركات في قاعدة البيانات
# المنطقة المنطقة 4
...
#منطقة النهاية

// 5. الاستعلام عن تلقي الأرصدة السالبة
#المنطقةRegion5
...
#منطقة النهاية

// 6. تحديد النقطة الزمنية للتحكم في الأرصدة
#المنطقةRegion6
...
#منطقة النهاية

// 7. إذا لم يكن الطلب فارغًا، فقد تكونت أرصدة سلبية
#المنطقةRegion7
...
#منطقة النهاية

// 8. إذا كانت هناك أخطاء، فارجع من معالج الأحداث
#المنطقة8
...
#منطقة النهاية

// الثاني. إعداد مجموعات السجلات لسجل "تكلفة البضائع".
# المنطقة المنطقة II

سجل الحركات () ؛
إنهاء إذا؛
Movements.Cost of Goods.Record = True;
#منطقة النهاية

// ثالثا. طلب استلام أرصدة الدُفعات للشطب باستخدام FIFO
#المنطقةالثالثة
طلب.نص =
"يختار
| المنتجاتDocument.Nomenclature AS Nomenclature،
| المنتجاتالمستند.رقم السطر AS رقم السطر،

| يبقى حزب AS حزب
|من
| وثيقة المنتجات كيفية وثيقة المنتجات
| & لحظة من الزمن،
| التسمية ب
| (يختار
| من

|الطلب حسب
|النتائج
| الحد الأقصى (الكمية)،
| SUM (الكمية المتبقية)
|البرمجيات
| التسميات";
RequestResult = Request.Execute();
#منطقة النهاية

// الرابع. دورة حسب تسمية الوثيقة
#AreaAreaIV

// V. احصل على المبلغ المراد شطبه
//السادس. دورة الدفعة بواسطة FIFO
أثناء SelectionBatch.Next() وRemainingWrite>0 Loop
// السابع. التحقق من وجود رصيد صفر
إذا كان SampleBatch.QuantityRemaining=0 إذن
يكمل؛
إنهاء إذا؛
حركة. الفترة = التاريخ؛

// الثامن. حساب الكمية والمبلغ المراد شطبه

// التاسع. سوف نقوم بتقليل المبلغ الذي سيتم شطبه
EndCycle;
EndCycle;
#منطقة النهاية

نهاية الإجراء

دعونا نلقي نظرة على النقاط الرئيسية في الخوارزمية الخاصة بشطب الدُفعات باستخدام FIFO.

I. تحليل تحول تاريخ الوثيقة إلى الأمام

نحن هنا نفهم ما إذا كان تاريخ المستند المنشور يتحرك للأمام. ستكون هذه المعلومات مفيدة أدناه عند تنظيف الحركات.

لتحليل تغيير تاريخ المستند، يلزم حدوث حدثين:

  • قبل التسجيل– للحصول على التاريخ القديم للمستند والتحقق من وضع ترحيل المستند
  • عند التسجيل– للحصول على تاريخ مستند جديد

نقوم بنقل البيانات بين الأحداث من خلال مجموعة خاصة من الكائن – “خصائص إضافية”. وهو موجود طالما أن الإصدار الحالي من الكائن موجود في الذاكرة، أي أنه متاح لجميع الأحداث أثناء التنفيذ.

يتم استخدام تقنية مماثلة في المعيار "1C: المحاسبة 8". ولكن هناك حدث واحد يستخدم "قبل التسجيل".

لماذا ليس من الضروري استخدام "عند التسجيل" في BP؟

الأمر بسيط - لا يمكن معالجة مستندات الشحن على الفور في قسم المحاسبة. وهذا يعني أن وقت المستند لن يقبل ختمًا تشغيليًا (إذا تم إعادة ترحيل المستند في اليوم الحالي)، وبالتالي يمكن الحصول على التاريخ القديم والجديد للمستند في حدث "قبل التسجيل".

ثانيا. إعداد مجموعات السجلات لسجل "تكلفة البضائع".

تم ضبط وضع حذف الحركة للمستند – “عند إلغاء الترحيل”:

وبالتالي، هناك احتمال أنه عند إعادة النشر، يمكننا أن نأخذ في الاعتبار تحركات الوثيقة نفسها. ولكن هذا لن يحدث إلا إذا تم نقل تاريخ المستند إلى الأمام. وهذا يعني أنه من المنطقي مسح الحركات فقط عند نقل تاريخ المستند إلى الأمام.

هنا مثال:

  • رصيد شاشات LG في وقت المستندات هو 10 أجهزة كمبيوتر.
  • تم نشر مستند يشطب 8 قطع.
  • في نفس المستند، تم زيادة الوقت بمقدار دقيقة واحدة، لنكرر ذلك

إذا لم يتم حذف الحركات القديمة، فسيقوم النظام بالإبلاغ عن نقص قدره 6 شاشات، نظرًا لأن حركات المستندات الحالية قد شطبت بالفعل 8 من الشاشات العشرة المتاحة.

ملحوظة. في بعض الأحيان تكون هناك نصيحة - لإزالة الحركات فقط أثناء الجراحة.

لكن هذا خطأ: لن يأخذوا في الاعتبار حالة تغيير المستندات "غير العاملة" (وثائق الأمس والسابقة).

أي أن مشكلة "نقص عدد 6 شاشات" (انظر أعلاه) سيتم حلها في هذه الحالة فقط للمستندات المعدلة اليوم.

ثالثا. طلب استلام أرصدة الدُفعات للشطب باستخدام FIFO

في الطلب، نشير إلى الأرصدة حسب الدفعة، وفي نفس الوقت نقوم بتركيب الإجماليات حسب العنصر.

على المستوى الإجمالي، يتم الحصول على الكمية من المستند - MAXIMUM(Quantity) ورصيد الدُفعة - SUM(QuantityRemaining).

هل تعتقد أن الكمية الموجودة في المستند قد تتجاوز إجمالي رصيد الصنف لجميع الدُفعات؟

إذا تم إجراء الحركات في سجلات "البقايا الحرة" و"تكلفة البضائع" حسب الكمية بشكل متزامن (الواردة والصادرة على السواء)، فلا يمكن أن ينشأ مثل هذا الموقف. وهذا ما سنعتمد عليه عند شطب القرعة.

رابعا. دورة حسب تسمية الوثيقة

بفضل نتائج الاستعلام في الحلقة الخارجية، قمنا بتجاوز التسمية من المستند.

خامسا: الحصول على المبلغ المراد شطبه

دعونا نتذكر المبلغ الذي تحتاج إلى شطبه. علاوة على ذلك سوف ينخفض ​​هذا المبلغ.

السادس. دورة الدفعة بواسطة FIFO

ستحتوي الدورة المتداخلة على دفعات وفقًا للعنصر الحالي.

سابعا. التحقق من وجود رصيد صفر

بشكل عام، الموقف عندما يكون رصيد الدفعة صفرًا هو خطأ في بيانات النظام (ومع ذلك، مثل هذا الموقف ممكن). النقطة المهمة هي أن المجموع في هذه الحالة ليس صفرًا (الجدول الافتراضي لأرصدة التسجيل لا يُرجع سجلات بقيم موارد صفرية).

لذلك قررنا تخطي مثل هذه الألعاب الخاطئة. إذا رغبت في ذلك، يمكنك إصدار التشخيص للمستخدم.

ثامنا. حساب الكمية والمبلغ المراد شطبه

الكمية المطلوب شطبها هي القيمة الدنيا بين باقي الدفعة وما تبقى ليتم شطبه.

يتم حساب المبلغ بنسبة أولية.

إذا تم شطب رصيد الدفعة بالكامل، فسيتم شطب مبلغ تلك الدفعة بالكامل. هذه رياضيات الصف الثالث في مدرسة ضيقة الأفق: X*Y/X = Y :)

أي أنك لا تحتاج إلى القيام بذلك فحوصات إضافية(في بعض الأحيان يقدمون مثل هذه النصائح) إلى حقيقة شطب المبلغ بالكامل. هذه النصيحة لها اسمها الخاص - " مشكلة البنسات».

وبالنسبة لأولئك الذين يقدمون نصائح سيئة، فمن المنطقي أن ننظر إلى تكوين "1C: المحاسبة 8". هناك (أوه، الرعب!) لا يوجد تحقق من شطب الدفعة بأكملها :)

فيما يلي لقطة شاشة للوحدة العامة "محاسبة البضائع"، وطريقة "شطب البضائع المتبقية":

تاسعا. سوف نقوم بتقليل المبلغ الذي سيتم شطبه

عليك أن تفهم مقدار المبلغ المتبقي لشطبه. للقيام بذلك، قم بطرح الكمية من حركة التسجيل.

لماذا هناك حاجة إلى الأقفال المُدارة؟

هنا نأتي إلى الحظر المتحكم فيه.

يبدو أن الخوارزميات المعروضة أعلاه تعمل كالساعة. يمكنك اختبارها بنفسك (روابط تنزيلات قاعدة البيانات في نهاية المقالة).

ولكن أثناء التشغيل الحقيقي لعدة مستخدمين، ستبدأ المشكلات، وكما يحدث غالبًا، لن يتم اكتشاف المشكلات على الفور...

دعونا نعطي مثالاً على المشكلة الأكثر شيوعًا عند شطب عنصر ما، عندما يحاول مستخدمان في وقت واحد تقريبًا شطب عنصر ما (إجراء عملية بيع):

في هذا المثال، يقوم مستخدمان في نفس الوقت تقريبًا بتنفيذ عملية بيع البضائع - بدأ تنفيذ المستند رقم 2 في وقت متأخر قليلاً عن المستند 1.

عند استلام الرصيد، يُبلغ النظام أن الرصيد هو 10 وحدات، وتمت معالجة كلا الوثيقتين بنجاح. والنتيجة المحزنة هي أن هناك أقل من 5 شاشات LG في المخزون.

ولكن في الوقت نفسه، يعمل التحكم في البقايا! أي أنه إذا تم ترحيل المستند رقم 2 بعد نهاية المستند رقم 1، فلن يقوم النظام بترحيل المستند رقم 2:

في بعض الأحيان يكون هناك مفهوم خاطئ - "يعمل 3-4 مستخدمين فقط في قاعدة البيانات الخاصة بي في نفس الوقت، واحتمال المعالجة المتوازية للمستندات صفر، لذلك لا يتعين عليك تشتيت انتباهك عن طريق الحظر."

هذا جدا تفكير خطير.

يمكن حتى لمستخدمين اثنين نشر المستندات في وقت واحد تقريبًا، على سبيل المثال، إذا قام أحدهما بإجراء نشر جماعي للمستندات.

بالإضافة إلى ذلك، لا يمكنك أن تكون محصنًا ضد زيادة عدد المستخدمين. إذا انطلق العمل، فستكون هناك حاجة إلى مندوبي مبيعات جدد، وأمناء مخازن، وأخصائيي لوجستيات، وما إلى ذلك. لذلك، تحتاج إلى إنشاء حلول على الفور تعمل بثبات في بيئة متعددة المستخدمين.

كيفية حل المشكلة عند نشر المستندات بالتوازي؟

الحل بسيط - قم بحظر شاشات LG في الوقت T1، بحيث لا تتمكن المعاملات الأخرى من الوصول إلى أرصدة هذا المنتج.

ثم في الوقت T2، سينتظر النظام حتى يتم إلغاء قفل شاشة LG. وبعد ذلك سيتلقى النظام الرصيد الحالي من البضائع وسيتم الانتهاء من شطب البضائع (أو لم يكتمل).

فقط بضع كلمات حول تصنيف الحجب.

هناك نوعان من الأقفال:

  • هدف
  • المعاملات.

بكل بساطة، لا تسمح أقفال الكائنات بشكل تفاعليتغيير كائن واحد (عنصر الدليل أو المستند) لمستخدمين.

وتسمح أقفال المعاملات برمجياتعمل مع البيانات الحالية عند إجراء الحركات عبر السجلات.

في هذه المقالة، سنكون مهتمين بأقفال المعاملات، ثم الأقفال ببساطة.

متى يجب تطبيق الحظر؟

تصبح مهمة إعداد الأقفال ذات صلة بمجرد بدء تشغيل قاعدة البيانات عمل أكثر من مستخدم.

يجب وضع الأقفال على المعاملات، ولكن متى تحدث المعاملات؟ هذا صحيح، الحالة الأكثر شيوعًا هي معالجة المستندات.

أي أنه يجب تطبيق الحظر عند معالجة جميع المستندات؟

بأي حال من الأحوال. من المؤكد أنه لا يستحق إعداد الأقفال "في حالة حدوث ذلك".. بعد كل شيء، تعمل الأقفال نفسها على تقليل التزامن بين المستخدمين (قابلية تطوير النظام).

يجب وضع الأقفال على الموارد (صفوف الجدول) التي تتم قراءتها وتعديلها في المعاملات. على سبيل المثال، عند تنفيذ المستندات.

في المثال أعلاه، مثل هذا المورد هو رصيد المنتج. كان على النظام حظر الرصيد من لحظة استلام بيانات الرصيد (T1) حتى نهاية المعاملة (T3).

ملحوظة. تبدأ المعاملة عند ترحيل المستند رقم 1 قبل لحظة استلام الرصيد. ولكن من أجل التبسيط، نفترض أن T1 هو وقت بدء معالجة المستندات ولحظة استلام الأرصدة.

مثال متى لا حاجة للقفل- تنفيذ وثيقة "استلام البضائع". في هذه الحالة، لا يوجد منافسة على الموارد (بقايا الطعام، ...)، لذا فإن الحظر سيكون ضارًا: فهو سيقلل من قابلية تطوير النظام.

الحجب التلقائي والتحكم فيه

هنا لن ندخل في النظرية (هذا هو موضوع مقالة منفصلة)، لكننا سنقول فقط أن الأقفال المُدارة هي الأفضل.

بدلا من النظرية، يمكننا تقديم دليل - جميع التكوينات القياسية الحديثة تعمل على التشابك المتحكم فيه.

ولذلك، في تكوين نموذجنا سيتم اختيار الوضع المناسب:

أقفال يتم التحكم فيها في تقنية التحكم في البقايا الجديدة

سوف نقوم بتطبيق قفل على سجل "الأرصدة الحرة" وعلى عناصر العناصر الموجودة في المستند فقط.

علاوة على ذلك خيار الحظر الصحيح- في وقت متأخر ممكن.

وفي الطريقة الجديدة للتحكم في الأرصدة، يجب أن يتم ذلك قبل تسجيل (أو أثناء التسجيل) الحركات في سجل “الأرصدة الحرة”، حتى لا تتمكن المعاملات الأخرى من تغيير هذا المورد المشترك.

يمكن تطبيق القفل يدويًا (برمجيًا) وبعد ذلك بقليل سنوضح كيفية القيام بذلك.

لكن مكافأة إضافية تكنولوجيا جديدةالتحكم المتبقي هو أن هناك حاجة إلى سطر واحد فقط من التعليمات البرمجية لتأمين الموارد المشتركة.

تحتاج فقط إلى تعيين خاصية BlockForChange في مجموعة إدخال السجل:

// 3.1. قفل بقايا التسجيل
#المنطقة3_1
Moves.FreeRemainders.BlockForChange = True;
#منطقة النهاية

// 4. تسجيل الحركات في قاعدة البيانات
# المنطقة المنطقة 4
Movements.FreeRemainders.Write = True;
سجل الحركات () ؛
#منطقة النهاية
...

ونتيجة لذلك، لن تتمكن معاملتان من تغيير الأرصدة المجانية لعنصر واحد.

في الواقع، عندما تكون الخاصية BlockForChange لا يتم تثبيت القفل المُدار، فهو يقوم فقط بإيقاف تشغيل وضع فصل إجماليات السجل عند الكتابة.

ولكن بالنسبة لمقالتنا، فإن ما يلي أمر أساسي: سيقوم النظام بوضع قفل على مجموعة البيانات المكتوبة في السجل. سننظر في عمل خاصية BlockForChange بالتفصيل في مقال منفصل.

بالمناسبة، في UT 11 القياسي، ليس من السهل العثور على إعداد خاصية BlockForChange لسجل "الأرصدة المجانية". والحقيقة هي أن هذا يتم تنفيذه في وحدة مجموعة سجلات التسجيل، في حدث "قبل الكتابة".

هذا كل شيء، مع سطر واحد من التعليمات البرمجية تم ضمان التشغيل الصحيح للنظام!

مهم. نحن لا نقفل سجل "تكلفة البضائع".

لماذا؟ لن يكون هذا الحظر ضروريًا (وهذا حمل معين على خادم 1C)، نظرًا لأن الحركات إلى سجلات "الأرصدة المجانية" و"تكلفة البضائع" يتم تنفيذها دائمًا بشكل متزامن، أي بالتتابع واحدًا تلو الآخر.

لذلك، بحجز البضائع من "الأرصدة الحرة"، لن نسمح بمعاملات أخرى قبل هذه البضائع وفي سجل "تكلفة البضائع".

ولكن بالنسبة لطريقة التحكم المتبقية القديمة، سيتم تطبيق الحظر بشكل مختلف. أولاً، دعونا نلقي نظرة على خوارزمية شطب الدفعة لهذه الحالة.

الطريقة القديمة للتحكم في البقايا

ولنذكركم أنه يمكن تطبيق المنهجية القديمة إذا تم أخذ الكمية والتكلفة في الاعتبار في سجل واحد.

فليكن هذا هو سجل "تكلفة البضائع":

بعد ذلك ستبدو خوارزمية نشر مستند "مبيعات البضائع" كما يلي:

// 1. معالج الأحداث "قبل التسجيل"
الإجراء قبل التسجيل (الفشل، وضع التسجيل، وضع التوصيل)

إذا كان وضع التسجيل = وضع تسجيل المستند
وليس ThisObject.ThisNew()
وهذا الكائن.أجريت بعد ذلك

طلب = طلب جديد؛
طلب.نص =
"يختار
| Document.Date AS Date
|من
| وثيقة مبيعات السلع والخدمات كمستند
|أين
| Document.Link = &Link";
Request.SetParameter("Link"، ThisObject.Link);
RequestResult = Request.Execute();
SelectionDocument = نتيجة الاستعلام.Select();
SelectDocument.Next();

ThisObject.AdditionalProperties.Insert("OldDocumentDate", SelectDocument.Date);

خلاف ذلك
إنهاء إذا؛

نهاية الإجراء

الإجراء عند التسجيل (الرفض)

إذا لم يكن ThisObject.AdditionalProperties.Property("DocumentDateShiftedForward") ثم

ThisObject.AdditionalProperties.Insert("DocumentDateMovedForward"،
ThisObject.Date>ThisObject.AdditionalProperties.OldDocumentDate);

Report(ThisObject.AdditionalProperties.DocumentDateMovedForward);
إنهاء إذا؛

نهاية الإجراء

إجراءات المعالجة (الفشل، الوضع)

// 2. إزالة حركات المستندات "القديمة".
إذا تم تغيير عنوان ExtraProperties.DocumentDate إلى الأمام، فحينئذٍ
Movements.Cost of Goods.Record = True;
Movements.Product Cost.Clear();
سجل الحركات () ؛
إنهاء إذا؛

// 3. تعيين العلامة لتسجيل الحركات في نهاية المعاملة
Movements.Cost of Goods.Record = True;

// 4. طلب ​​استلام الأرصدة على دفعات في وقت المستند
طلب = طلب جديد؛
طلب.نص =
"يختار
| مبيعات المنتجات.
| SUM(SalesProducts.Quantity) ككمية،
| الحد الأدنى (SalesProducts.LineNumber) ASLineNumber
|وضع مستند البضائع
|من
| وثيقة مبيعات السلع والخدمات البضائع كيفية بيع البضائع
|أين
| SalesProducts.Link = &Link
|المجموعة حسب
| مبيعات المنتجات
|الفهرس بواسطة
| التسميات
|;
|////////////////////////////////////////////////////////////////////////////////
|اختر
| المنتجاتDocument.Nomenclature AS Nomenclature،
| المنتجاتالمستند.الكمية AS الكمية،
| المنتجاتالمستند.رقم السطر AS رقم السطر،
| ISNULL(Remaining.NumberRemaining, 0) AS الكمية المتبقية،
| ISNULL(Remaining.AmountRemaining, 0) AS المبلغ المتبقي،
| يبقى حزب AS حزب
|من
| وثيقة المنتجات كيفية وثيقة المنتجات
| الاتصال الأيسر سجل التراكمات. تكلفة البضائع. البقايا(
| & لحظة من الزمن،
| التسمية ب
| (يختار
| T. التسميات AS التسميات
| من
| المنتجاتDocument AS T)) AS بقايا الطعام
| منتجات البرمجياتDocument.Nomenclature = Remaining.Nomenclature
|الطلب حسب
| بقايا.دفعة.لحظة من الزمن
|النتائج
| الحد الأقصى (الكمية)،
| SUM (الكمية المتبقية)
|البرمجيات
| رقم الصف"؛

Request.SetParameter("TimePoint"، TimePoint());
Request.SetParameter("Link"، Link);

RequestResult = Request.Execute();

SelectionNomenclature = Query Result.Select(BypassQueryResult.ByGrouping);

// 5. دورة حسب العنصر - التحقق مما إذا كانت الكمية كافية للشطب
أثناء حلقة SelectionNomenclature.Next()

عجز التسمية = SampleNomenclature.Quantity - SampleNomenclature.QuantityRemaining;

إذا كان عجز التسميات> 0 ثم
رسالة = رسالة جديدة للمستخدم؛
message.Text = "الكمية غير كافية للمنتج: "+نقص التسمية؛
message.Field = "المنتجات["+(SelectionNomenclature.LineNumber-1)+"].Quantity";
message.SetData(ThisObject);
رسالة.رسالة();
رفض = صحيح؛
إنهاء إذا؛

إذا فشل ثم
يكمل؛
إنهاء إذا؛

// 6. احصل على المبلغ المراد شطبه
RemainingWrite = SampleNomenclature.Quantity;
SelectionBatch = SelectionNomenclature.Select();

// 7. دورة الدفعة
أثناء SelectionBatch.Next() وRemainingWrite>0 Loop

الحركة = Movements.Cost of Goods.AddExpense();
حركة. الفترة = التاريخ؛
Movement.Nomenclature = SelectionBatch.Nomenclature;
Movement.Batch = SelectionBatch.Batch;
// 9. حساب الكمية المراد شطبها
Movement.Quantity = Min(RemainingWrite, BatchSelection.QuantityRemaining);
// 10. حساب مبلغ الشطب
كمية الحركة = كمية الحركة*
SampleBatch.AmountRemaining/SampleBatch.QuantityRemainder;

// 11. تقليل المبلغ المراد شطبه
RemainingWrite = RemainingWrite - Movement.Quantity;

EndCycle;
EndCycle;

ان يذهب في موعد منتجات البرمجيات 1C هو نوع من المعايير للمحاسبة والإدارة وأنواع المحاسبة الأخرى في الشركات الصغيرة والمتوسطة. يطلب أصحاب العمل من موظفيهم أن يتمتعوا بالمهارات اللازمة للعمل مع هذا المنتج البرمجي المعين. إذا ظهرت مسألة دمج متجر عبر الإنترنت وأنظمة التشغيل الآلي (البقايا، الأسعار، الطلبات، وما إلى ذلك) على جدول الأعمال، فعادةً ما يكون لدى المكتب أيضًا قاعدة بيانات 1C التي يجب تنفيذ التكامل معها. وبالمثل في العديد من الحالات الأخرى: تبدأ أي عملية أتمتة للشركات الصغيرة والمتوسطة الحجم تقليديًا بمنتجات 1C وتستمر في استخدامها.

كمستشار أعمال، غالبًا ما أواجه أسئلة حول ماهية 1C، وما هو الهيكل الذي قد يحتوي عليه منتج البرنامج هذا، وبشكل عام كيف يعمل هذا النظام بأكمله. عادةً ما يتم طرح هذه الأسئلة من قبل مطوري الويب الذين يضطرون إلى التعامل مع مشكلات التكامل في الموقع و 1C، والمبرمجون المتخصصون في تطبيقات الهاتف المحمول وغيرهم من المتخصصين الذين، نظرًا لطبيعة عملهم، يتعين عليهم التعامل مع برامج 1C بشكل غير متكرر.

في هذه المقالة قررت جمع الإجابات لأكثر من غيرها التعليماتوالتي تنشأ باستمرار في عملي. لذلك، أريد أن أحذرك على الفور: المقال مخصص للأشخاص المطلعين على تقنيات تكنولوجيا المعلومات، ومن المرجح أن يجد رجال الأعمال والمحاسبون والأشخاص البعيدين عن مجال تكنولوجيا المعلومات صعوبة في فهم بعض الفروق الدقيقة. بالطبع، سأحاول أن أكتب ببساطة قدر الإمكان، ولا أخطط للخوض في الفروق الفنية الدقيقة على مستوى الكود، ولكن لا تزال بعض المصطلحات والمفاهيم قد تبدو معقدة بالنسبة لغير المتخصصين.
بضع كلمات عن تجربتي مع 1C
في وقت ما عملت كمبرمج 1C في مشروع كبير، ثم تولى منصب مدير المشروع، وكان لفترة طويلة رئيسًا لقسم المشروع، الذي كان يتعامل حصريًا مع المهام في 1C.

والآن، كما كتبت أكثر من مرة، أعمل كمستشار أعمال في مجال الشركات الصغيرة والمتوسطة. أواجه باستمرار مهام مختلفة تتعلق بأتمتة العمل، ونتيجة لذلك، مع منتجات برامج 1C. في أغلب الأحيان، كمستشار أعمال، أقوم بتعيين متخصصين في 1C لحل مشكلات معينة، ولدي فريق دائم، وأجذب أيضًا متخصصين من جهات خارجية، بما في ذلك المستقلين. في حالات نادرة جدًا، أكتب شيئًا ما في 1C بنفسي، في أغلب الأحيان إذا كنت بحاجة ماسة إلى حل مشكلة صغيرة.

ومن ناحية أخرى، أنا أتحرك أبعد وأبعد عن وظيفة دائمةمع منتجات 1C. إذا كان العمل مع برامج 1C في بداية مسيرتي المهنية قد جلب لي 100% من دخلي، فإن تنفيذ بعض حلول 1C اليوم لا يشغل أكثر من 20% من عملي، وكل شيء آخر عبارة عن مواقع ويب وأنظمة إدارة علاقات العملاء وما إلى ذلك.

لذلك، على الرغم من أنني لم أبتعد كثيرًا عن القضايا المتعلقة ببرنامج 1C، فقد قررت تنظيم معرفتي وجمع وتسجيل الجوانب المهمة والفروق الدقيقة في العمل مع منتجات البرامج هذه

المزيد عن 1C ولماذا أكتب كل هذا
أنا نفسي أعلم أنني على وشك، كما يقولون، أن أعانق الضخامة. ولذلك تحذير آخر:
  1. أخطط لإنشاء سلسلة كاملة من المقالات حول 1C، حيث سأتحدث عن منتج البرنامج هذا من وجهات نظر مختلفة. هذه المقالة مخصصة في المقام الأول للمبرمجين. ولهذا السبب قمت بنشره على حبري. سيغطي ما يلي نطاقًا أوسع من المفاهيم، بما في ذلك تلك التي تهم رجال الأعمال ومستخدمي منتجات برمجيات 1C، وبالتالي سيتم نشرها على Megamind.
  2. لن أخوض في الفروق الدقيقة في استخدام الكود أو التفاصيل الفنية الأخرى، والتي يمكن لكل واحد منكم قراءتها بنفسك على موقع 1C الرسمي، على مواقع الدعم، في المنتديات المعروفة، وما إلى ذلك.
  3. لن أناقش الفروق الدقيقة في كيفية عمل هذا الإصدار أو ذاك من النظام الأساسي. علاوة على ذلك، سأتحدث في أغلب الأحيان عن النظام الأساسي 8.3 باعتباره الأحدث في وقت كتابة هذا التقرير، وكذلك عن التكوينات النموذجية الأكثر طلبًا بين عملائي (الشركات المتوسطة والصغيرة).
في الوقت نفسه، لا أريد فقط مساعدة مبرمج الويب أو أي متخصص آخر على فهم مكان البحث عن الجزء الصحيح من التعليمات البرمجية، بل أريد مساعدتهم على فهم ما هو عليه - 1C.
اليوم، قدمت شركة 1C بمفردها الكثير من الارتباك في أوصاف المنتج، وفي متطلبات مستوى المتخصصين الذين سيقومون بتكوين النظام، وفي اختيار النظام الأساسي، والتكوين، والمكونات الإضافية، والوظائف الإضافية، والإصدارات، وما إلى ذلك. وما إلى ذلك، أن نظام 1C يبدأ شخصيًا في تذكيري بالمسلسل التلفزيوني القديم " الأخطبوط". إذا كان أي شخص آخر يتذكر، في هذا الفيلم، حارب المفوض مجموعة إجرامية، جزء منها كان مجموعة مصرفية. وهذا النظام المصرفيكان الأمر محيرًا للغاية لدرجة أنه كان من الصعب جدًا فهم مصدر الأموال، وأين تذهب، وكيف يعمل هذا القسم أو ذاك، والأهم من ذلك، لماذا.

في نظام 1C، يبدو لي أن الجهود الرامية إلى "إرباك" المستخدم تهدف إلى شيء واحد: لست بحاجة إلى فهم أي شيء، ما عليك سوى الدفع. وينتهي الأمر بالعديد من رجال الأعمال بالدفع دون أن يفهموا ما إذا كانوا بحاجة إلى هذا التحديث، وما إذا كانوا بحاجة إلى هذا المنتج. إنهم يدفعون فقط وهذا كل شيء.

سأحاول فك "مخالب الأخطبوط" وبناء فهم عام لكيفية عمل نظام 1C.

نود أيضًا أن نذكر المبرمجين أنه يمكنك العثور على أي معلومات فنية على موقع 1C الإلكتروني. لا أخطط للخوض في هذه الفروق الدقيقة على الإطلاق. سأكتب بلغة بسيطة، قدر الإمكان، حول القضايا الأساسية.

وإذا كنت بحاجة إلى بعض الفروق الفنية المحددة لـ 1C، فيمكنك دائمًا استخدام الموارد التالية:

  1. موقع 1C ومنتدى الشركاء. http://www.1c.ru
  2. مصادر أخرى
في الغالبية العظمى من الحالات، ستجد إجابات لأسئلتك على أحد هذه الموارد. هناك الكثير من المنتديات وأشياء أخرى، ولكن معظم الحلول موجودة.

1C كنظام بيئي

عندما يواجه رجل أعمال ومحامي ومحاسب وبائع ومستخدم آخر برامج 1C، غالبًا ما يكون هناك سوء فهم لما هو عليه. بعض الناس يعتقدون أن 1C هو نظام مناسبالمحاسبة، بالنسبة للبعض - أن هذا نظام لأتمتة متجر عبر الإنترنت، بالنسبة للآخرين، لا يفهمون حقًا ما نتحدث عنه. حتى أن البعض يعتقد أنه بمساعدة منتج 1C أو آخر، يمكنك حل أي مشكلة عمل، ما عليك سوى اختيار المنتج المناسب وربما تعديله قليلاً.

السبب وراء هذه التصورات الخاطئة بشكل واضح هو أنه لا أحد يفهم ما هو 1C من وجهة نظر النظام الأساسي. الجميع يرى شيئًا مختلفًا ومحددًا. 1C نفسها تجلب المزيد من الارتباك، لأنها تدعم بشكل فعال كل هذه المفاهيم الخاطئة بسبب تسويقها، الذي يحاول وضع 1C كحل لجميع المناسبات ولأي غرض.

لقد قلت بالفعل في المقالة أنه في الواقع يجب أن يُنظر إلى 1C على أنه نظام بيئي كامل. هذا هو النهج الذي سيساعدك على فهم ماهية 1C وسبب الحاجة إليها.

لذا، من وجهة نظر النظام البيئي الفني، يتكون 1C من المكونات التالية:

  1. منصة 1C هي الأساس الذي تتم عليه كتابة التكوينات، والتي يعمل بها المبرمجون، وما إلى ذلك. ويتم تحديثها من إصدار إلى آخر، وبالتالي يمكن أن تكون: 6.0 أو 7.7 أو 8.0 أو 8.2 أو 8.3.
  2. إعدادات. هذا هو المستوى التالي من الخصوصية. تتم كتابة التكوينات على النظام الأساسي باستخدام رمز 1C. يعمل المستخدمون مع التكوينات.
  3. 1C بيتريكس. نظام للعمل مع مواقع الويب يستحق الحديث عنه بشكل منفصل.
الجانب الآخر الذي يمكن من خلاله تنظيم عمل 1C هو المستوى التنظيمي. وهنا يوجد جزأين أيضًا لا يعملان بدون بعضهما البعض:
  1. شركة 1C نفسها وموظفيها من المتخصصين.
  2. شركاء 1C (الامتياز) والمتخصصون المشاركون في صيانة النظام. كما أنها تستحق تسليط الضوء عليها باعتبارها أحد مكونات النظام البيئي. بدون المتخصصين الذين يقومون بوضع اللمسات الأخيرة على 1C وتنفيذه، لن يعمل النظام. قد تكون هذه شركات شريكة لـ 1C أو مستقلين منفردين، لا يهم، يجب أن يكونوا كذلك، وإلا فلن يكون النظام قابلاً للتطبيق.
بعد ذلك، أقترح إلقاء نظرة فاحصة على أجزاء النظام البيئي 1C.

منصة

النظام الأساسي هو الأساس الذي يقوم عليه مبرمجو 1C، باستخدام لغة البرمجة 1C، بكتابة البرامج الجاهزة (التكوينات) للمستخدمين. النظام الأساسي هو الأساس الذي بدونه لن يعمل أي مكون أو تكوين. في الوقت نفسه، قد تكون المنصة نفسها دون تكوين ذات فائدة حصريا لمبرمج 1C، لجميع الآخرين (المستخدمين، مختلف المتخصصين) فهي عديمة الفائدة.
يمكنك العمل على إصدارات مختلفة من النظام الأساسي. أعلم أنه في الممارسة العملية، يتم استخدام الإصدارات 8.2 و 8.0، بالإضافة إلى الإصدار القديم إلى حد ما، ولكن لا يزال شائعا 7.7، وأحيانا يتم استخدام الإصدار الأول الناجح 6.0. لكنني سأتحدث حصريًا عن الإصدار 8.3، باعتباره الأحدث وقت كتابة هذا المقال. العديد من الأشياء التي سنناقشها لها نفس القدر من الأهمية بالنسبة للإصدارات السابقة. ولكن تمت إضافة بعضها فقط في أحدث الإصدارات. وأود من القراء أن يأخذوا هذه الحقيقة بعين الاعتبار.

من المهم أن نفهم أن المستخدمين في أغلب الأحيان لا يحتاجون إلى مجموعة كاملة من الإمكانيات التي توفرها 1C. هذا البيان مناسب بشكل خاص للشركات الصغيرة والمتوسطة. لكن جودة العمل وموثوقيته مهمة للغاية بالنسبة للمستخدمين. وفي هذا الصدد، لسوء الحظ، هناك الكثير من المشاكل مع منتجات البرمجيات 1C.
عند العمل مع 1C، يستخدم المبرمجون لغة برمجة خاصة تم إنشاؤها بواسطة مطوري 1C للعمل مع النظام الأساسي 1C. وهو متوفر اليوم باللغتين الروسية والإنجليزية، ولكن تمت كتابته في الأصل باللغة الروسية، وبالتالي تتم كتابة التكوينات القياسية أيضًا بشكل تقليدي باللغة الروسية، على الرغم من أنه من الممكن دائمًا استخدام الإصدارات الإنجليزية من عوامل التشغيل في المكان المناسب، إذا كان ذلك أكثر ملاءمة مبرمج للعمل بهذه الطريقة. هذه اللغة عبارة عن مزيج من BASIC وC+ مع إضافة SQL لكتابة الاستعلامات. بالإضافة إلى ذلك، فإنه يوفر القدرة على استخدام العديد من المنشئات والمكونات الإضافية.

إحدى ميزات منصة 1C هي عدم وجود نمطية. النظام الأساسي عبارة عن شيء كامل، ومن المستحيل الإشارة بوضوح إلى أي جزء من التعليمات البرمجية (الوحدة النمطية) مسؤول عن القدرات. بالطبع، أثناء التثبيت، يمكنك تحديد المكونات التي يجب تثبيتها وأيها لا. ولكن هذا الخيار موجود فقط في وقت التثبيت، وفي الواقع، يقدم عددًا صغيرًا جدًا من الخيارات.

ملاحظة أخرى نأمل أن تساعد في تجنب النيران والنزاعات:

أدرك أن منصة 1C هي أداة قوية ومرنة للغاية. وإذا كنت، كونك مبرمجًا من ذوي الخبرة في 1C، شرعت في كتابة شيء خاص عليه، فمن المرجح أن تحصل في النهاية على برنامج ممتاز. ولحالات مختلفة، يمكنك العثور على حل هنا على وجه التحديد بفضل ثراء إمكانيات المنصة. ولكن في أغلب الأحيان أواجه استخدام التكوينات القياسية (المحاسبة، إدارة التجارة، الرواتب والموارد البشرية، إدارة الإنتاج)، يعمل معظم المستخدمين معهم، خاصة عندما يتعلق الأمر بالشركات الصغيرة والمتوسطة الحجم. لذلك، سأكتب عن اختيار النظام الأساسي وعن بعض المشكلات المرتبطة بعمل 1C بشكل أساسي من وجهة نظر العمل مع التكوينات القياسية.

في الوقت نفسه، أفهم أيضا أنه مع رغبة كبيرة ومستوى كاف من المعرفة بالمبرمج، يمكن حل العديد من المشكلات، لكن المشكلات لن تكون ذات صلة. لذلك، إذا كنت تستخدم بعض التطورات الفريدة، فإن المشكلات والقضايا التي أكشف عنها قد لا تكون مثيرة للاهتمام بالنسبة لك على الإطلاق. بالنسبة للجميع، وأنا مستمر.
خيارات تسليم المنصة
عند اختيار النظام الأساسي، من المهم جدًا الانتباه إلى خيارات تقديم الحلول. أول ما يهمك هو طريقة تنظيم العمل مع البيانات:
  • حل الملف
  • خيار خادم العميل
في الحل القائم على الملف، سيتم تخزين جميع معلومات العمل في ملف مشترك واحد. لا يهم التكوين الذي قمت بتثبيته. على أي حال، ستتلقى ملف خدمة بامتداد القرص المضغوط (تنسيق داخلي 1C)، حيث سيتم تخزين كل شيء: الدلائل والمستندات والسجلات وما إلى ذلك. إذا كان عدد مستخدمي برنامجك لا يتجاوز 4 أشخاص، فمن المرجح أن هذا الخيار مناسب لك تماما. علاوة على ذلك، فإن إعداد نظام الملفات أسهل بكثير، هنا يمكنك القيام بذلك دون مساعدة متخصص 1C. يمكن حل مشكلة السرعة جزئيًا باستخدام RPD (بروتوكول سطح المكتب البعيد)، ولكن جزئيًا فقط.

ولكن بالنسبة لاستخدام 1C في الشركات التي لديها تدفق مستندات نشط إلى حد ما وعدد كبير إلى حد ما من مستخدمي النظام (أكثر من 4 أشخاص)، فإن نظام الملفات لن يعمل بشكل مرض. سيتمكن المستخدمون من الوصول إلى نفس الملف في وقت واحد تقريبًا، مما سيزيد حجمه باستمرار. بالإضافة إلى ذلك، ستكون هناك حاجة إلى مزامنة ثابتة، مما سيؤدي إلى إبطاء العمل أكثر.

لحل هذه المشكلة، تحاول شركة 1C تجربة التخزين المؤقت للبيانات، لكن هذه الطريقة توفر المزيد حتى الآن المزيد من المشاكل. إذا كان أي شخص مهتم بهذا الموضوع، فقط اتصل محرك البحث"مشكلات ذاكرة التخزين المؤقت 1C"، سيكون هناك الكثير من المنتديات والمناقشات حول هذا الأمر مع مجموعة متنوعة من المشكلات في البحث، والتي تتلخص في النهاية في حقيقة أن التخزين المؤقت لا يعمل دائمًا بشكل صحيح.

تنظيم تخزين البيانات بين العميل والخادم هو تنظيم قواعد البيانات في الجداول الموجودة على الخادم. يمكن أن يكون هذا MSSQL أو Oracle أو خيارًا آخر لتنظيم قاعدة البيانات.

مزايا هذا الخيار واضحة: بغض النظر عن عدد المستخدمين الذين يصلون إلى قواعد البيانات، لن تنشأ مشاكل تتعلق بالسرعة والوصول. هذا هو الخيار الذي تستخدمه معظم الشركات متوسطة الحجم، وهو الخيار الذي أوصي به عادةً للعملاء.

في معظم الحالات، تقوم الشركات بتثبيت خادم Windows الذي يتم تخزين البرنامج نفسه وقاعدة البيانات عليه. في بعض الأحيان يتم فصل التطبيقات وقواعد البيانات على خوادم مختلفة، ولكن هذه الحالات معقدة ونادرة جدًا، وبالتالي لن أتوقف عندها.

إصدارات 1C لمنصات مختلفة
اليوم يمكنك اختيار إصدارات مختلفة برمجة 1C للعمل على منصات مختلفة. هنا يجدر أيضًا معرفة ما يستحق الشراء في أي حالة.

لذلك، هناك إصدارات 1C:

  • للنوافذ،
  • لنظام التشغيل Linux.
في وقت كتابة هذا التقرير، لم يتم تطوير أي إصدار لنظام التشغيل Mac OS.

تم تطوير برنامج 1C الذي يعمل بنظام Windows منذ البداية، فهو أداة قوية مألوفة لدى الجميع، وقد تم تحسينها بما يكفي لاستخدامها دون أي مشاكل. يعتبر إصدار Linux اليوم جديدًا، وبالتالي فهو "خام" تمامًا، ولا يزال به الكثير من الأخطاء، كما هو الحال في أي منتج برمجي جديد.

رواد الأعمال وممثلو الأعمال هم أشخاص محافظون تمامًا، والأهم بالنسبة لهم هو العمل المستقر والموثوق. في أغلب الأحيان، لا تهتم الشركة بالسرعة العالية أو بقائمة ضخمة من الإمكانات بقدر ما تتطلب ببساطة تشغيلًا مستقرًا. بالإضافة إلى ذلك، لا يوجد طلب كبير على Linux في الأعمال التجارية المحلية اليوم. ولذلك، نادرا ما يواجه المرء هذا الإصدار.

قاعدة المكون 1C
قاعدة مكونات 1C واسعة جدًا، وتحتوي على عدد كبير من القدرات، بينما تقوم 1C بتقسيم الوظائف وإضافةها باستمرار. أولئك. عندما يحتاج مطورو 1C إلى إنشاء شيء جديد، فإنهم دائمًا ما يقومون بإنشائه النوع الجديدهدف. على سبيل المثال، عندما كانت خدمات الويب مطلوبة، لم يقم المطورون بإنشاء نوع من المكونات الإضافية، ولكنهم ببساطة قدموا المفهوم: خدمة الويب. وبالمثل، بالنسبة للعديد من العمليات التجارية في شركة 1C، غالبا ما يتم إنشاء مكون جديد، حتى في الحالات التي يمكن فيها تعديل المكون الحالي ببساطة.

ماذا يمكننا أن نقول عن مكونات منصة 1C:

  • تعمل بعض المكونات لفترة طويلة، وبعضها الآخر يعمل منذ إنشاء منتج البرنامج. فهي مستقرة وموثوقة.
  • تمت إضافة بعض المكونات مؤخرًا، ويتم إضافة مكونات أخرى الآن. تم اختبار معظمها بشكل سيء للغاية، وبالتالي تحتاج إلى العمل معهم بحذر شديد.
عند اختيار مكون للعمل معه، يجب عليك دائمًا الانتباه إلى وقت إضافته. لدى مبرمجي 1C المحترفين هذه القاعدة: عندما يقوم المطورون بإضافة وظيفة جديدة، تجنبها إن أمكن حتى مرور فترة زمنية كافية. أولئك. إنهم ينتظرون حتى يتم اختبار المكون عمليًا، ويتم تحديد "الأخطاء" الرئيسية وإصلاحها، وعندها فقط يبدأون في العمل معه بنشاط.

أحد مكونات السمعة السلبية لشركة 1C هو ممارسة الشركة المتمثلة في إضافة حلول جديدة غير مختبرة باستمرار. على الرغم من حقيقة أن المكونات التي تم تنفيذها بالفعل تعمل بشكل سيء، إلا أنه لم يتم إصلاح الأخطاء بعد، ويقوم المطورون بالفعل بإضافة شيء جديد. قد لا تكون هذه مجرد مكونات، بل قد تكون وظائف جديدة لها المرافق القائمةوأساليب جديدة وما إلى ذلك. سيواجه جميع المبرمجين الذين يعملون مع 1C هذه المشكلة - الوجود المستمر للبرامج "الخام" و"الأخطاء" المستمرة وتصحيحاتها المستمرة.

قد يواجه المستخدمون أيضًا هذه المشكلة - الأخطاء والتشغيل غير المستقر للبرنامج عند العمل مع النظام الأساسي. هناك مجموعة معينة من وظائف صيانة 1C التي يمكن للمستخدم القيام بها. هناك واجهة مستخدم النظام الأساسي لهذا الغرض. وهنا يجدر العودة إلى الإصدارات المختلفة لواجهة المستخدم.

تتكون منصة 1C من العديد من المكونات المختلفة التي تتم إضافتها باستمرار، مما يؤدي إلى توسيع قدرات هذا المنتج. بالإضافة إلى المستندات والأدلة والسجلات المختلفة، هناك أيضًا مكونات مختلفة لإدخال/إخراج المعلومات، على سبيل المثال. واجهات المستخدم.

وبناء على هذه الميزة يمكنك اختيار:

  1. عميل 1C الأصلي. هذه واجهة برمجية تقليدية عند الوصول إلى 1C من 1C.
  2. العمل من خلال المتصفح.
  3. العمل من خلال تطبيق الهاتف المحمول.
كل خيار له بعض القيود، يمكنك قراءة المزيد عنها على الموقع الرسمي لـ 1C.
زبون محلي
وينقسم العميل الأصلي أيضًا إلى سلسلة من العملاء الفرعيين، مما يؤدي إلى فوضى إضافية في عملية اختيار البرنامج. الشيء الأكثر أهمية هنا هو اختيار خيار العميل "السميك" أو "الرفيع". للوهلة الأولى، الاختيار هنا ليس حاسما، خاصة بالنسبة للمبرمج. في الواقع، عند العمل مع التكوين من خلال الواجهة، قد تنشأ مشاكل بسبب أخطاء الاختيار.

ما هو الفرق بين هؤلاء العملاء الفرعيين؟

"سميكة" تتطلب قناة اتصال واسعة (سميكة)، "رفيعة" تحتاج إلى الحد الأدنى. تستخدم الغالبية العظمى من عملائي عميلاً "سميكًا"، حيث أصبح لدى الجميع الآن قنوات محلية أو إنترنت جيدة، ولا توجد مشاكل في "عرضهم". ومن ناحية أخرى، فإن العميل "الرفيع" لديه بعض القيود في عمله، وهناك أشياء لا يمكن القيام بها فيه.

عميل الويب (العمل عبر المتصفح)
يعمل عميل الويب مع برنامج 1C من خلال المتصفح. أولئك. أنت تستخدم تقنية معينة تتيح لك الوصول إلى قاعدة البيانات عبر الإنترنت باستخدام متصفح مناسب لك. في هذه الحالة، يتم تحديد الواجهة بالكامل مباشرة في المتصفح.

يفرض هذا الخيار قيودًا معينة، عليك أن تتذكر ذلك باستمرار. من ناحية أخرى، يعد العمل مع عميل الويب مستقرًا تمامًا، ومصححًا جيدًا، ويصل إلى نتيجة منطقية معينة. لهذا السبب يستخدم الكثير من الأشخاص خيار الواجهة هذا. يمكن أن يكون العمل مع 1C عبر الإنترنت مريحًا جدًا بل وضروريًا.

اصدار المحمول
ظهر هذا الإصدار من العميل من 1C مؤخرًا نسبيًا ولم يحظ بطلب كبير بعد. أسباب هذا الموقف:
  1. تبين أن العميل صعب للغاية. من أجل إعداد هذا البرنامج، يجب على الشخص أن يعرف كلاً من تقنيات 1C والهواتف المحمولة، وعميقًا جدًا على مستوى الكود. من الواضح أن العثور على مثل هذا المتخصص أمر صعب للغاية، وهو ما لا يساهم في شعبية الحل البرمجي.
  2. لا تزال التكنولوجيا "خامة" للغاية وسيئة التصحيح. لقد حاولت شخصيًا استخدام هذا الحل لعملائي، وتحدثت مع زملائي الذين أصبحوا أيضًا على دراية بهذه التكنولوجيا، وفي الوقت الحالي يتطابق رأيي ورأي زملائي: إنشاء نوع من تطبيقات الهاتف المحمول أسهل وأكثر ملاءمة من لاستخدام الخيار من 1C.
النسخة المحمولة يجب أن تجمع بين الكثير من الأشياء، فهي تتطلب عمل عدة متخصصين يعملون معًا ويساعدون بعضهم البعض:
  • إعداد الوصول إلى قاعدة البيانات من الخارج؛
  • حل القضايا الأمنية.
  • إعداد الخادم للعمل معه تطبيقات الهاتف الجوال;
  • إعداد منتجات البرمجيات 1C؛
  • إعداد تطبيقات الويب (إذا لزم الأمر).
كل هذا ضروري لضمان التشغيل الصحيح لتطبيق الهاتف المحمول 1C. ومن الواضح أن تجميع مثل هذا الفريق من المتخصصين أمر صعب ومكلف، وبالتالي فإن هذا الحل لا يحظى بشعبية في الشركات الصغيرة والمتوسطة.
منصة 1C: ملخص
منصة 1C وظيفية للغاية، فهي تحتوي على قائمة ضخمة من القدرات المتنوعة. ومن الطبيعي أن تتحول هذه الكمية إلى تعقيد. نتيجة لذلك، فإن حاجز الدخول إلى العمل مع 1C للمبرمج مرتفع للغاية. يسمع العملاء عن إمكانيات 1C المختلفة ويطلبون من أحد المبرمجين المساعدة في تنفيذها. وهذا يعني أن المتخصص يجب أن يكون على علم دائم بالتحديثات وأن يفهم ويعرف مجموعة متنوعة من الأشياء.

من الصعب جدًا العثور على مبرمج يمكنه فهم كل شيء على مستوى البرنامج مرة واحدة: العمل مع 1C، وبرمجة الويب، والعمل مع تطبيقات الهاتف المحمول، وما إلى ذلك. وهذا ممكن على المستوى المفاهيمي، أي. على المكان الذي أشارك فيه الآن معرفتي.

لكن العملاء عادة لا يفهمون هذا، ويبدأون في مطالبة مبرمج 1C بتنفيذ مجموعة متنوعة من القدرات.

من ناحية أخرى، تتغير منصة 1C باستمرار، ولديها عدد كبير من الخيارات، والعديد من الحلول المختلفة، ونتيجة لذلك - عدد كبير من الأخطاء وإصلاحاتها.

كل هذا معًا يؤدي إلى مشكلة تحديد المواقع:

  • من ناحية، هناك شركة 1C، التي تخبر العملاء أن 1C بسيطة ومريحة. لا يكتبون في أي مكان أن الحفاظ على 1C سيتطلب متخصصًا يتمتع بمعرفة خاصة، وأنه من الصعب على المبرمجين العمل مع 1C الحديث.
  • ومن ناحية أخرى، في الواقع يواجه العميل كل هذه المشاكل. ومن الجيد أن يحصل على المساعدة إما من فريق عمل جيد يشارك في تنفيذ 1C، أو من مستشار أعمال بمستوى معرفتي يمكنه العثور على المتخصصين المناسبين وتعيين المهام المناسبة لهم. وفي حالات أخرى، سيواجه المستخدم الكثير من المشاكل أثناء عملية التنفيذ.

لذا، باختصار حول منصة 1C: عدد كبير من الاحتمالات، ودرجة عالية من المرونة، والكثير من الحلول المختلفة. وفي الوقت نفسه: انخفاض جودة التنفيذ، والتعقيد المتزايد باستمرار للحل، وعدد كبير من الأخطاء في كل إصدار.

على المستوى المفاهيمي، أعتقد أن هناك معلومات كافية. ويمكنك دائمًا العثور على الفروق الفنية في موارد 1C التي أوصيت بها أعلاه.

التكوينات

تكوينات 1C هي حلول برمجية جاهزة تم إنشاؤها على أساس إصدار معين من النظام الأساسي. التكوين هو ما يعمل به المستخدمون مباشرة، أي بيئة البرامج التي يحتفظون فيها بالسجلات الحالية، والعمل مع تدفق المستندات، والأدلة، وما إلى ذلك. قد لا يعرف المستخدمون في كثير من الأحيان نوع النظام الأساسي الذي لديهم. لكنهم يعرفون دائمًا التكوين المحدد المستخدم.

هناك تكوينات:

  1. قياسي - مكتوب من قبل شركة 1C. كلهم موجودون على موقع 1C.
  2. غير نمطي – مكتوب من قبل الشركات الشريكة.
وعلى مستوى المستخدم يتم التمييز بين النوعين على النحو التالي:
  1. يتم إنشاء التكوينات القياسية وصيانتها بواسطة 1C. في معظم الحالات، تكون ذات جودة أعلى، وفي هذه التكوينات يكون العمل مع التعليمات البرمجية منظمًا بشكل أفضل، ويتم استخدامها في أغلب الأحيان الحلول الأمثل، يتم تصحيح الأخطاء على الفور. بالطبع، يسمع الجميع باستمرار عن "الأخطاء الأبدية" في تكوينات 1C النموذجية، وهي بالفعل موجودة باستمرار هناك، ولكن لا يزال الأمر يستحق منح الفضل لمتخصصي الشركة. يقومون بإصلاح الأخطاء الجسيمة بسرعة كبيرة.
  2. تتم كتابة التكوينات غير النمطية من قبل الشركات الشريكة لـ 1C، ومن الصعب جدًا قول أي شيء محدد هنا. هذه التكوينات مختلفة جدًا. غالبًا ما تتم كتابتها في مناسبة: خاصة بصناعة معينة (لصناعة معينة) أو مكتوبة لمناسبة معينة (شركة معينة). وهنا من الضروري أن نفهم أن الشركات الشريكة لـ 1C في معظمها لديها معدل دوران مرتفع إلى حد ما للموظفين. وبالتالي تتم كتابة التكوينات فيها بطريقة غير منظمة إلى حد ما. يبدأ أحد المبرمجين في الكتابة، ويستمر آخر، وينتهي ثالث. في الوقت نفسه، يجلب كل منهم شيئًا خاصًا به، فهمه وحلوله وأفكاره. وهي تطبق تطورات سابقتها بالشكل الذي يناسبها، وليس كما كان المقصود منها.
ربما تتذكر الرسوم الكاريكاتورية المضحكة "ثلاثة من بروستوكفاشينو"؟ هناك، كتب الصبي العم فيودور رسالة إلى والديه، لكنه لم يكملها، تشتت انتباهه، وتناوب أصدقاؤه على إنهاءها له: قطة وكلب. وتحدث كل واحد منهم عن مشاكله. ونتيجة لذلك، فوجئ والدا الصبي عندما علموا أن "كفوفه كانت تؤلمه وأن ذيله كان يسقط". هذا هو المبدأ المستخدم لكتابة التكوينات غير القياسية في كثير من الأحيان.
يؤدي الافتقار إلى الاستمرارية في كتابة التكوينات غير القياسية، وغالبًا ما يكون الافتقار إلى وثائق مفصلة بما فيه الكفاية، إلى حقيقة أنه بالنسبة لجميع أسئلة التنفيذ والتعديلات، سيتعين عليك الاتصال بالشركة التي طورت هذا التكوين.

تأتي التكوينات غير القياسية أيضًا في نوعين:
  1. مكتوبة على أساس تلك القياسية. يتم إنشاء هذه التكوينات عن طريق إضافة وظائف إلى بعض التكوينات القياسية. على سبيل المثال، هناك منتج مثل 1C: إدارة التجارة وإدارة علاقات العملاء. قمنا هنا بدمج التكوين القياسي لإدارة التجارة ونظام إدارة علاقات العملاء. ومن المثير للاهتمام، أن منشئي التكوين، شركة Rarus، يطلقون على النظام الفرعي لإدارة التجارة، على الرغم من أنه في الواقع كان الأساس الذي تم كتابة التكوين بأكمله عليه.
        الايجابياتمثل هذه التكوينات - فهي أكثر وظيفية مقارنة بالتكوينات القياسية، وغالبا ما تتم إضافة ميزات ضرورية للغاية إليها.
        السلبيات– غالبًا لا يتوفر لدى مطوري هذه التكوينات الوقت الكافي لإنشاء تحديثاتهم في الوقت المناسب. وبالتالي، قد يكون الأمر جيدًا أن شركة 1C قد نشرت بالفعل خيارات التحديث الخاصة بها، وسيتعين على مستخدم الحل غير القياسي الانتظار بعض الوقت حتى يقوم المطور بإنشاء تحديث مماثل لحل معين. بالإضافة إلى ذلك، يمكن أن تكون هذه التعديلات أيضًا "أولية" تمامًا وقد تحتوي على العديد من الأخطاء.
       
  2. تكوينات مكتوبة من الصفر. عند إنشائها، لا يتم استخدام التكوينات القياسية على الإطلاق، بل تتم كتابة الحلول لمهام محددة.
        الايجابيات: تمت كتابة التكوين وفقًا لاحتياجات العميل تمامًا، حيث يوجد كل شيء ضروري ولا يوجد أي شيء غير ضروري تقريبًا.
        السلبيات: عادة، عند كتابة مثل هذه الحلول، لا يتم مراعاة معايير التعليمات البرمجية، ومن الصعب جدًا تعديل منتجات البرامج هذه، وفي أغلب الأحيان، يمكن للمؤلف فقط القيام بذلك بسرعة كافية.
إذا أتيت إلى العملاء ورأيت أن هناك تكوينًا غير عادي مكتوبًا من الصفر، أحاول إما عدم لمسه على الإطلاق، أو تغييره تمامًا إلى حل مناسب وعالمي. في كثير من الأحيان، لا تكون مثل هذه الحلول مطلوبة فعليًا، خاصة في الشركات الصغيرة والمتوسطة الحجم. وفي الوقت نفسه، تكون المنتجات القياسية أسهل في الصيانة، ونتيجة لذلك، فهي أرخص، وهو أمر مهم دائمًا للأعمال.

ملخص

من المهم أن نفهم أن رواد الأعمال عادة ما يبحثون عن التكوين. على سبيل المثال، لأتمتة عمل قسم المحاسبة، يحتاجون إلى 1C.Accounting، وتنظيم العمل مع العملاء - 1C. إدارة التجارة. هذه المنتجات مفهومة بالنسبة لهم وبالتالي فهي مثيرة للاهتمام.

وبالتالي، من المهم أن يعرف المبرمج النظام الأساسي الذي سيحتاج إلى العمل معه. المستخدم مهتم بالتكوين. في الوقت نفسه، بدون مساعدة مبرمج 1C، لن تتمكن الشركة في معظم الحالات من إعداد التكوين المطلوب. لهذا السبب أعتبر المتخصصين في 1C جزءًا لا يتجزأ من النظام البيئي 1C.

اسمحوا لي أن أذكرك أن متخصصي 1C مختلفون أيضًا. يشارك البعض في تطوير النظام الأساسي والتكوينات القياسية (موظفو شركة 1C)، والبعض الآخر شركاء لها ويشاركون في التنفيذ والتعديلات، بينما يساعد البعض الآخر بشكل خاص في حل بعض المشكلات المتعلقة بتنفيذ 1C. اضف اشارة