الجرس

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

تعتمد وظيفة البحث الجديد على آليتين:
- البحث عن نص كامل (يعمل بسرعة كبيرة ويتطلب الحد الأدنى من موارد الحوسبة) ؛
- البحث عن طريق DBMS (في الحالة العامة ، تتناسب مدة البحث وتكلفة موارد الحوسبة مع كمية المعلومات الواردة في الجدول).

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

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

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

وما إذا كان هناك بشكل عام "فهرس فعلي للنص الكامل"؟ يعتمد على عدد المستخدمين ، وشدة تغيرات المعلومات في قاعدة البيانات ، وتكرار تحديثات الفهرس. عادةً ما يتم تشغيل تحديث الفهرس كل 60 ثانية. حسنًا ، إذا لم يتم تغيير العديد من الكائنات ، وتمكن الإجراء من معالجة جميع التغييرات في هذه 60 ثانية. وإذا قمت بإعادة نشر مجموعة من الوثائق ، أو إعادة كتابة جماعية للدليل؟ في هذه الحالة ، لا يمكن لأحد أن يضمن الوقت الذي بعده سيعطي البحث في الفهرس بيانات موثوقة مرة أخرى.
من حيث المبدأ ، هذا ليس حرجًا بشكل خاص ، باستثناء حالات قليلة. الخيار الشائع للمستخدمين للعمل هو تعيين تحديد في القائمة ببعض القيمة ، على سبيل المثال ، "الطرف المقابل" أو إدخال مستند جديد أو نسخ مستند موجود وكتابته. باستخدام البحث القديم ، كان المستند الجديد مرئيًا على الفور في القائمة. سيراه المستخدم الآن فقط بعد N ثانية في أحسن الأحوال ، حيث يكون N أقرب إلى 50-60 ثانية بدلاً من 2-3.
إذا لم تلاحظ عدم وجود مستند جديد وقدمت معلومات إلى شخص ما بناءً على النتائج المحددة ، فمن الواضح أنه سيكون غير موثوق به.

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

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

وبالتالي ، يبدو لي أن عملية تحديث الفهرس ستصبح مشكلة أخرى لمسؤولي قاعدة المعلومات.
النظام ، الذي كان يضمن في السابق دقة وأهمية المعلومات بنسبة 100٪ في أي وقت ، يتحول الآن أكثر إلى نظام مرجعي لا يمكن التأكد منه تمامًا.
ويحصل المستخدمون على سبب آخر لتوبيخ موظفي تكنولوجيا المعلومات - "نظامك لا يعمل بشكل صحيح".

على الرغم من حقيقة أن المطورين قد أعلنوا عن البحث عن النص الكامل على النظام الأساسي 8.3 منذ وقت طويل (منذ النظام الأساسي 8.3.5) ، إلا أنه لم يتم استخدامه بنشاط في التكوينات القياسية. في الإصدارات الأخيرة من Enterprise Accounting 3.0 ، قام المطورون بتضمين البحث عن النص الكامل في العديد من القوائم. بالنسبة لمستخدمي ، اتضح أن هذا كان بمثابة صدمة - توقف البرنامج عن البحث.

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

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

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

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

تعد إضافة عنصر نموذج بنوع "سلسلة البحث" مسؤولة عن وظيفة البحث الجديد عن النص الكامل. أصبح من الواضح ما الذي تبحث عنه. تم العثور على مقال عن ITS 7.3.1.5. البحث في قائمة ديناميكية. قادني فحص هذه المقالة إلى استنتاج مفاده أن الطريقة الجديدة التي يعمل بها البحث تعتمد على عاملين: 1. يجب أن يحتوي النموذج على إكمال عنصر النموذج أعلاه ، 2. يجب أن تحتوي القائمة الديناميكية في النموذج على خاصية "SearchStringPosition" لا تساوي "لا أحد".

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

إجراء تعطيل قائمة تصدير NewSearchInLists (نموذج) = Form.Items.Find ("القائمة") ؛ إذا كانت القائمة = غير محددة ، فارجع ؛ إنهاء إذا؛ List.SearchStringPosition = SearchStringPosition.None ؛ AdditionSearchString = Form.Elements.Find ("AdditionSearchString") ؛ If NOT ComplementSearchString = Undefined ثم ComplementSearchString.Visibility = False؛ إنهاء إذا؛ EndProcedure

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

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

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

OnCreateOnServer (نموذج ، DefaultCommandPlace ، PrintObjects) تصدير

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

MyGeneralModule.Disuing NewSearchInLists (نموذج) ؛

يستمتع المحاسبون بالبحث القديم ، ونحن نستعد للوقت الذي سيسمح لنا فيه وضع التوافق الخاص بـ Enterprise Accounting 3.0 بنقل هذه الوظيفة إلى امتداد.

حتى الآن ، قلة من الناس يعرفون أنه بدءًا من الإصدار 8.1 ، فإن 1C: منصة Enterprise بها آلية رائعة ومفيدة للغاية - البحث عن نص كامل. ما هذا؟ كيف يمكن أن تكون مفيدة لك؟ تمت الإجابة على هذه الأسئلة في المقالة بقلم V.V. شركة صيد الأسماك "1C".

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

يوفر البحث عن النص الكامل الميزات التالية.

  1. هناك دعم للترجمة الصوتية (كتابة الكلمات الروسية بأحرف لاتينية وفقًا لـ GOST 7.79-2000). مثال: "العبارة الروسية" = "Russian fraza".
  2. هناك دعم للاستبدال (كتابة جزء من الأحرف في الكلمات الروسية بأحرف لاتينية أحادية المفتاح). مثال: "russrfz frapf" (تتم كتابة نهايات كل كلمة باللاتينية ، على سبيل المثال ، كنتيجة لخطأ عامل التشغيل).
  3. هناك إمكانية للبحث الغامض (قد تختلف الأحرف الموجودة في الكلمات الموجودة) مع الإشارة إلى حد الغموض. مثال: بتحديد كلمة "hello" في سلسلة البحث والغموض بنسبة 17٪ ، سنجد جميع الكلمات المتشابهة مع وبدون أخطاء: "hello" ، "hello" ، "إحضار".
  4. من الممكن تحديد نطاق البحث عن كائنات البيانات الأولية المحددة.
  5. يتم إجراء فهرسة النص الكامل لأسماء الحقول القياسية ("الرمز" ، "الوصف" ، إلخ.) بجميع لغات التكوين.
  6. يتم إجراء البحث مع مراعاة مرادفات اللغات الروسية والإنجليزية والأوكرانية.
  7. يحتوي القاموس الصرفي للغة الروسية على عدد من الكلمات المحددة المتعلقة بمجالات النشاط الآلي باستخدام 1C: نظام برنامج المؤسسة.
  8. كمعيار ، تتضمن القواميس المتوفرة قواعد بيانات القاموس وقواميس المكنز ومرادفات الروسية والأوكرانية و إنجليزيمقدمة من Informatik.
  9. يمكنك البحث باستخدام أحرف البدل ("*") ، وكذلك تحديد عوامل تشغيل البحث ("AND" ، "OR" ، "NOT" ، "NEAR") والأحرف الخاصة.

يمكن إجراء البحث عن نص كامل في أي تكوين على النظام الأساسي 1C: Enterprise 8.1.

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

أرز. واحد

إذا كنت تستخدم تكوينات نموذجية على النظام الأساسي 8.1 ، فمن المرجح أن يكون لديهم بالفعل معالجة "بحث البيانات" المضمنة (القائمة "أدوات" / "بحث البيانات"). إذا كانت هذه المعالجة غائبة في التكوين المستخدم ، فلا يهم.

يمكن العثور عليه دائمًا على قرص ITS. في هذه المقالة ، سنستخدم أمثلة لعمل هذه المعالجة الخاصة في التكوين التجريبي "Enterprise Accounting" (المراجعة 1.6) لإثبات إمكانات البحث عن النص الكامل.

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

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

الطاولة


ضع في اعتبارك: إذا لم يتم تحديد عوامل تشغيل (يتم كتابة الكلمات بمسافة) ، يبحث البرنامج عن جميع الكلمات من الاستعلام باستخدام عامل التشغيل "AND".

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


أرز. 2

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


لا يعرف كل محاسب عن هذا. اداة مفيدةفي 1C: المحاسبة 8 ، كبحث عن نص كامل. تتيح لك آلية البحث عن النص الكامل العثور على معلومات نصية في أي مكان في التكوين.

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

دعنا نلقي نظرة على بعض الأمثلة حول كيفية عمل آلية البحث عن نص كامل.

مثال 1لنفترض أننا بحاجة إلى العثور بسرعة على مستندات لاستلام منتج معين ، على سبيل المثال ، سجائر مارلبورو.
حدد "بحث البيانات" من قائمة "الأدوات". في النافذة التي تفتح ، في الحقل العلوي ، أدخل استعلام البحث "Marlboro" وانقر على الزر "بحث":


مثال 2تستأجر منظمتنا مكتبًا بالقرب من مركز الأعمال Rumyantsev. من الضروري العثور بسرعة على قانون الإيجار لشهر مارس 2010 في قاعدة البيانات. نجعل استعلام البحث التالي:


الخيار 3.لنفترض ، عند شحن البضائع ، ترك التعليق التالي في بعض المستندات "بيع السلع والخدمات" - "الدفع المؤجل". وكنا بحاجة إلى العثور على جميع المستندات التي تم شحنها مع تأخير. نجعل استعلام البحث التالي:

يمكنك أيضًا إجراء بحث أكثر تعقيدًا باستخدام عوامل تشغيل البحث (AND ، OR ، NOT ، NEAR).
يمكن أن تقتصر منطقة البحث على كائنات تكوين معينة (على سبيل المثال ، مستند استلام البضائع والخدمات). للقيام بذلك ، انقر فوق الزر "إعدادات":

سيظهر حقل لاختيار كائن التكوين. حدد المربع "تقييد نطاقات البحث" وانقر على الزر "تحديد كائنات البيانات الوصفية للبحث":

على سبيل المثال ، حدد المستند "استلام البضائع والخدمات".

يبقى لإدخال استعلام البحث والبحث.

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

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

يوفر البحث عن النص الكامل الميزات التالية:

  • هناك دعم للترجمة الصوتية (كتابة الكلمات الروسية بأحرف لاتينية وفقًا لـ GOST 7.79-2000). مثال: "العبارة الروسية" = "Russian fraza".
  • هناك دعم للاستبدال (كتابة جزء من الأحرف في الكلمات الروسية بأحرف لاتينية أحادية المفتاح). مثال: "russrfz frapf" (تتم كتابة نهايات كل كلمة باللاتينية ، على سبيل المثال ، كنتيجة لخطأ عامل التشغيل).
  • هناك إمكانية للبحث الغامض (قد تختلف الأحرف الموجودة في الكلمات الموجودة) مع الإشارة إلى حد الغموض. مثال: بتحديد كلمة "hello" في سلسلة البحث والغموض بنسبة 17٪ ، سنجد جميع الكلمات المتشابهة مع وبدون أخطاء: "hello" ، "hello" ، "إحضار".
  • من الممكن تحديد نطاق البحث عن كائنات البيانات الأولية المحددة.
  • يتم إجراء فهرسة النص الكامل لأسماء الحقول القياسية ("الرمز" ، "الوصف" ، إلخ.) بجميع لغات التكوين.
  • يتم إجراء البحث مع مراعاة مرادفات اللغات الروسية والإنجليزية والأوكرانية.
  • يحتوي القاموس الصرفي للغة الروسية على عدد من الكلمات المحددة المتعلقة بمجالات النشاط الآلي باستخدام 1C: نظام برنامج المؤسسة.
  • كمعيار ، تشمل القواميس المتوفرة قواعد بيانات المفردات وقواميس قاموس المرادفات ومرادفات الروسية والأوكرانية والإنجليزية ، والتي يتم توفيرها بواسطة Informatik.
  • يمكنك البحث باستخدام أحرف البدل ("*") ، وكذلك تحديد عوامل تشغيل البحث ("AND" ، "OR" ، "NOT" ، "NEAR") والأحرف الخاصة.

يمكن إجراء البحث عن النص الكامل في أي تكوين على منصة 1C: Enterprise 8

لفتح نافذة التحكم في البحث عن نص كامل ، قم بما يلي:

التطبيق العام- عنصر القائمة العمليات - إدارة البحث عن النص الكامل.

التطبيق المدار- عنصر القائمة القائمة الرئيسية - جميع الوظائف - قياسي -إدارة البحث عن النص الكامل.


  • فهرس التحديث- إنشاء الفهرس / تحديث الفهرس ؛
  • مؤشر واضح- صفر الفهرس (موصى به بعد تحديث جميع البيانات) ؛
  • عنصر السماح بدمج الفهرس- مسؤول عن دمج الفهرس الرئيسي والإضافي.

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

كما ترون الممتلكات يستخدممجموعة للدليل بأكمله النظراء، ولكن يمكن القيام بذلك أيضًا لكل سمة من سماتها من النوع المقابل.

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

العوامل الخاصة المسموح بها عند تحديد تعبير البحث

تسمح آلية البحث عن النص الكامل بكتابة جزء من أحرف الكلمة الروسية بأحرف لاتينية أحادية المفتاح. نتيجة البحث لن تتغير.

عاملان جنبًا إلى جنب

  • مبسط. 8 كلمات على حدة
  • NEAR / [+/-] n - ابحث عن البيانات في سمة واحدة على مسافة كلمات n-1 بينهما.

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

لا يمكن استخدام حرف البدل "*" إلا كبديل لنهاية الكلمة

عامل التشغيل الغامض "#". إذا كانت التهجئة الدقيقة للاسم غير معروفة.

أدوات وأدوات البرمجيات 1s: البرمجة.

عامل المرادف "!". يسمح لك بالعثور على كلمة ومرادفاتها

كيف يتم تحديث فهرس البحث عن النص الكامل برمجيًا؟

التعليمات البرمجية 1C v 8.x إجراء تحديث فهرس () تصدير
FulltextSearch.UpdateIndex () ،
EndProcedure

مثال على البحث عن بيانات النص الكامل

قائمة بحث التعريف المتغير

التعليمات البرمجية 1C v 8.x قائمة البحث المتغيرة ؛

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

Code 1C v 8.x Procedure OnOpen ()
SearchList = FullTextSearch.CreateList () ،
EndProcedure

الآن ، بالنسبة لحدث النقر فوق الزر "بحث" ، دعنا نكتب الكود الذي سيسمح لنا بالبحث وفقًا للتعبير المحدد في حقل SearchExpression

Code 1C v 8.x Procedure FindClick (Element)
SearchList.SearchString = SearchExpression ؛
محاولة
SearchList.FirstPart () ،
استثناء
تحذير (ErrorDescription ()) ؛
نهاية المحاولة
إذا كان SearchList.TotalCount () = 0 ثم
FormElements.MessageOResult.Value = "غير موجود"؛
FormElements.SearchResult.SetText ("") ؛
خلاف ذلك
PrintSearchResult () ،
إنهاء إذا؛
EndProcedure

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

لنقم بإنشاء إجراء بنفس الاسم في وحدة النموذج وكتابة الكود فيه ،

كود 1C v 8.x إجراء DisplaySearchResult ()
FormElements.MessageOResult.Value = "Shown" + String (SearchList.StartingPosition () + 1) + "-" + String (SearchList.StartingPosition () + SearchList.Count ()) + "from" + SearchList.FullCount () ؛
النتيجة = SearchList.GetDisplay (FullTextSearchDisplayType.HTMLText) ،
FormElements.SearchResult.SetText (نتيجة) ،
AccessibilityButtons () ؛
EndProcedure

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

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

التعليمات البرمجية 1C v 8.x إجراء إمكانية الوصول إلى الزر ()
FormElements.NextPortion.Availability = (SearchList.FullCount () - SearchList.StartPosition ())> SearchList.Quantity () ؛
FormElements.PreviousPortion.Availability = (SearchList.StartPosition ()> 0) ،
EndProcedure

أنت الآن بحاجة إلى إنشاء معالجات الأحداث للضغط على أزرار PreviousPortion () و NextPortion ().

الكود 1C v 8.x الإجراء PrevPartPress (Element)
SearchList.PreviousPart () ،
PrintSearchResult () ،
EndProcedure
الإجراء NextBatchClick (عنصر)
SearchList.NextPart () ،
PrintSearchResult () ،
EndProcedure

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

الكود 1C v 8.x ProcedureSearchResultonclick (Element، pEvtObj)
htmlElement = pEvtObj.srcElement ،
// تحقق من معرف العنصر
إذا (htmlElement.id = "FullTextSearchListItem") إذن
// الحصول على اسم الملف (رقم سطر قائمة البحث) ،
// الواردة في ارتباط تشعبي
NumberInList = Number (htmlElement.nameProp) ،
// احصل على سلسلة قائمة البحث حسب الرقم
SelectedRow = SearchList [ListNumber] ،
// فتح شكل الكائن الذي تم العثور عليه
OpenValue (SelectedRow.Value) ،
pEvtObj.returnValue = خطأ ،
إنهاء إذا؛
EndProcedure

الجرس

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