وظائف جديدة للعمل مع السلاسل. وظائف جديدة للعمل مع السلاسل 1c تعمل مع أمثلة السلاسل

ملاحظات من خلال النظرة الزجاجية

18/08/2014 وظائف جديدة للعمل مع السلاسل

تم تنفيذه في الإصدار 8.3.6.1977.

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

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

وظيفة التنسيق StrTemplate()

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

قالب StrTemplate(<Шаблон>, <Значение1-Значение10>)

<Шаблон>- هذه هي السلسلة التي تحتاج إلى استبدال تمثيلات المعلمات بها.

<Значение1> , ... <Значение10>- هذه هي المعلمات (عشرة كحد أقصى)، والتي يجب استبدال تمثيلاتها في السلسلة.

للإشارة إلى مكان معين في القالب حيث تريد إجراء الاستبدال، تحتاج إلى استخدام علامات مثل %1، ... %10. يجب أن يتطابق عدد العلامات المشاركة في القالب وعدد المعلمات التي تحتوي على قيم.

على سبيل المثال، نتيجة تنفيذ مثل هذا العامل:

سيكون هناك خط:

خطأ في البيانات في السطر 2 (نوع التاريخ مطلوب)

وظيفة للعمل مع سلاسل StrCompare ()

تقارن هذه الدالة سلسلتين بطريقة غير حساسة لحالة الأحرف. على سبيل المثال، مثل هذا:

يمكنك تنفيذ نفس الإجراء مسبقًا باستخدام الكائن مقارنة القيم:

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

وظائف للعمل مع السلاسل StrStartsWith(), StrEndsAt()

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

على سبيل المثال، أنها مريحة لاستخدامها في المشغل لو:

وظائف للعمل مع السلاسل StrDivide() وStrConnect()

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

وظيفة للعمل مع سلاسل StrFind ()

بدلا من الوظيفة القديمة يجد()لقد قمنا بتنفيذ وظيفة جديدة تتمتع بقدرات إضافية:

  • البحث في اتجاهات مختلفة (من البداية، من النهاية)؛
  • البحث من موضع محدد؛
  • البحث عن حدث برقم محدد (ثاني، ثالث، إلخ).

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

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

تم تنفيذه في الإصدار 8.3.6.1977.

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

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

وظيفة التنسيق StrTemplate()

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

قالب StrTemplate(<Шаблон>, <Значение1-Значение10>)

<Шаблон>- هذه هي السلسلة التي تحتاج إلى استبدال تمثيلات المعلمات بها.

<Значение1> , ... <Значение10>- هذه هي المعلمات (عشرة كحد أقصى)، والتي يجب استبدال تمثيلاتها في السلسلة.

للإشارة إلى مكان معين في القالب حيث تريد إجراء الاستبدال، تحتاج إلى استخدام علامات مثل %1، ... %10. يجب أن يتطابق عدد العلامات المشاركة في القالب وعدد المعلمات التي تحتوي على قيم.

على سبيل المثال، نتيجة تنفيذ مثل هذا العامل:

سيكون هناك خط:

خطأ في البيانات في السطر 2 (نوع التاريخ مطلوب)

وظيفة للعمل مع سلاسل StrCompare ()

تقارن هذه الدالة سلسلتين بطريقة غير حساسة لحالة الأحرف. على سبيل المثال، مثل هذا:

يمكنك تنفيذ نفس الإجراء مسبقًا باستخدام كائن مقارنة القيمة:

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

وظائف للعمل مع السلاسل StrStartsWith(), StrEndsAt()

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

على سبيل المثال، من السهل استخدامها في عبارة If:

وظائف للعمل مع السلاسل StrDivide() وStrConnect()

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

وظيفة للعمل مع سلاسل StrFind ()

بدلاً من وظيفة Find() القديمة، قمنا بتنفيذ وظيفة جديدة تتمتع بقدرات إضافية:

  • البحث في اتجاهات مختلفة (من البداية، من النهاية)؛
  • البحث من موضع محدد؛
  • البحث عن حدث برقم محدد (ثاني، ثالث، إلخ).

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

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

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

المثال 1. لنقم بإنشاء متغير سلسلة يحتوي على نص.

StringVariable = "مرحبًا بالعالم!";

وظائف للعمل مع السلاسل في 1S 8.3

سيوفر هذا القسم الوظائف الرئيسية التي تسمح لك بتغيير الخطوط في 1C، أو تحليل المعلومات الواردة فيها.

الطول

الطول(<Строка>) . إرجاع عدد الأحرف الموجودة في السلسلة التي تم تمريرها كمعلمة.

مثال 2. لنحسب عدد الأحرف في السطر "Hello World!"

سلسلة = "مرحبا بالعالم!"; NumberofCharacters = StrLength(String); تقرير (عدد الأحرف)؛

ستكون نتيجة تنفيذ هذا الكود هي عرض عدد الأحرف في السطر: 11.

أبرل

أبرل(<Строка>) . يقوم بقص الأحرف غير الهامة على يسار الحرف الأول المهم في السلسلة.
شخصيات ثانوية:

  • فضاء؛
  • مسافة غير منقسمة؛
  • جدولة؛
  • إرجاع؛
  • ترجمة الخط؛
  • ترجمة النموذج (الصفحة).

مثال 3. قم بإزالة كافة المسافات من الجانب الأيسر من السطر "العالم!" وأضف السطر "مرحبًا" إليه.

String = Abbreviation("world!"); سلسلة = "مرحبا"+سلسلة؛ تقرير (سلسلة)؛

ستكون نتيجة تنفيذ هذا الرمز هي عرض السطر "Hello World!"

مختصر

أبر(<Строка>) . يقوم بقص الأحرف غير الهامة الموجودة على يمين الحرف الأول المهم في السلسلة.

مثال 4. النموذج من السطور "مرحبا" و"السلام!" عبارة "مرحبا بالعالم!"

Line = Abbreviation("Hello ")+" "+ Abbreviation("world!"); تقرير (سلسلة)؛

AbbrLP

أبرلب(<Строка>) . يقوم بقص الأحرف غير المهمة الموجودة على يمين أول حرف مهم في السلسلة، كما يقوم أيضًا بقص الأحرف غير المهمة على يسار الحرف المهم الأول في السلسلة. يتم استخدام هذه الوظيفة في كثير من الأحيان أكثر من الوظيفتين السابقتين، لأنها أكثر عالمية.

مثال 5. قم بإزالة الأحرف غير المهمة على اليسار واليمين من اسم الطرف المقابل.

الطرف المقابل = الدلائل.البحث حسب التفاصيل("TIN"، "0777121211"); AccountObject = Account.GetObject(); CounterpartyObject.Name = AbbrLP(CounterpartyObject.Name); AccountObject.Write();

أسد

أسد(<Строка>, <ЧислоСимволов>) . يحصل على الأحرف الأولى من السلسلة، ويتم تحديد عدد الأحرف في المعلمة عدد الشخصيات.

مثال 6. دع الهيكل يدخل موظفتحتوي على الأسماء الأولى والأخيرة والعائلية للموظف. احصل على سلسلة بالاسم الأخير والأحرف الأولى.

NameInitial = Lev(Employee.Name, 1); Patronymic الأولي = Leo(Employee. Patronymic, 1); الاسم الكامل = اسم الموظف.اسم العائلة + "" + الاسم الأول الأولي + "." + الأولي الأوسط + ".";

يمين

يمين(<Строка>, <ЧислоСимволов>) . يحصل على الأحرف الأخيرة من السلسلة، وهو عدد الأحرف المحدد في المعلمة عدد الشخصيات.إذا تجاوز عدد الأحرف المحدد طول السلسلة، فسيتم إرجاع السلسلة بأكملها.

مثال 7. دع التاريخ بالتنسيق "yyyymmdd" يتم كتابته في نهاية متغير السلسلة، واحصل على سلسلة تحتوي على التاريخ وقم بتحويلها إلى كتابة تاريخ.

سلسلة = "التاريخ الحالي: 20170910"؛ StringDate = Right(String, 8); التاريخ = التاريخ(StringDate);

الأربعاء

الأربعاء(<Строка>, <НачальныйНомер>, <ЧислоСимволов>) . يحصل على سلسلة فرعية من السلسلة التي تم تمريرها كمعلمة خطبدءًا من الحرف المحدد رقمه في المعلمة الرقم الأوليوالطول الذي تم تمريره إلى المعلمة عدد الشخصيات.يبدأ ترقيم الأحرف في السطر من 1. إذا كان في المعلمة الرقم الأوليتم تحديد قيمة أقل من أو تساوي الصفر، ثم تأخذ المعلمة القيمة 1. إذا كانت المعلمة عدد الشخصياتلم يتم تحديده، ثم يتم تحديد الأحرف حتى نهاية السطر.

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

String = "المنطقة: 99 موسكو"; المنطقة = المتوسط ​​(سلسلة، 9، 2)؛

بحث عن الصفحات

سترفيند(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) . يبحث عن سلسلة فرعية محددة في سلسلة، ويعيد رقم موضع الحرف الأول من السلسلة الفرعية التي تم العثور عليها. دعونا نلقي نظرة على معلمات هذه الوظيفة:

  • خط. سلسلة المصدر؛
  • البحث عن سلسلة فرعية. بحث عن سلسلة فرعية؛
  • اتجاه البحث. يحدد الاتجاه للبحث عن سلسلة فرعية في سلسلة. يمكن أن تأخذ القيم:
    • اتجاه البحث.من البداية;
    • بحث.نهاية الاتجاه;
  • الوضعية الأولية. يحدد الموضع في السلسلة التي يبدأ عندها البحث؛
  • عدد الأحداث. يحدد رقم حدوث السلسلة الفرعية التي تم البحث عنها في السلسلة المصدر.

مثال 9. في السطر "مرحبا بالعالم!" تحديد موضع آخر تواجد للحرف "و".

PositionNumber = StrFind("مرحبًا بالعالم!", "و"، SearchDirection.End); تقرير (رقم الوظيفة)؛

ستكون نتيجة تنفيذ هذا الكود هي عرض رقم آخر تواجد للرمز "و": 9.

VReg

فيريج(<Строка>) . يحول كافة الأحرف في السلسلة المحددة في 1s8 إلى أحرف كبيرة.

المثال 10: تحويل السلسلة "hello World!" إلى الحالة العليا.

StringVreg = VReg("مرحبا بالعالم!"); تقرير(StringVreg);

ستكون نتيجة تنفيذ هذا الرمز هي عرض السطر "HELLO WORLD!"

نريج

نريج(<Строка>) . يحول كافة أحرف السلسلة المحددة في 1s 8 إلى أحرف صغيرة.

مثال 11: تحويل السلسلة "HELLO WORLD!" إلى حالة الأحرف الصغيرة.

StringNreg = NReg("مرحبا بالعالم!"); تقرير(StringVreg);

ستكون نتيجة تنفيذ هذا الكود هي عرض السطر "hello World!"

تريج

TReg(<Строка>) . تحويل سلسلة كما يلي: يتم تحويل الحرف الأول من كل كلمة إلى أحرف كبيرة، ويتم تحويل الأحرف المتبقية من الكلمة إلى أحرف صغيرة.

مثال 12: قم بكتابة الأحرف الأولى من الكلمات الموجودة في السطر "hello World!"

StringTreg = TReg("مرحبًا بالعالم!"); تقرير(StringTreg);

ستكون نتيجة تنفيذ هذا الرمز هي عرض السطر "Hello World!"

رمز

رمز(<КодСимвола>) . يحصل على حرف من خلال رمز Unicode الخاص به.

مثال 13. أضف اليسار واليمين إلى السطر "Hello World!" الرمز ★

StringWithStars = الرمز("9733")+"مرحبًا بالعالم!"+Symbol("9733"); تقرير(StringWithStars);

ستكون نتيجة تنفيذ هذا الكود هي عرض السطر “★Hello World!★”

رمز الرمز

رمز الرمز(<Строка>, <НомерСимвола>) . يحصل على رمز حرف Unicode من السلسلة المحددة في المعلمة الأولى، الموجودة في الموضع المحدد في المعلمة الثانية.

مثال 14. اكتشف رمز الحرف الأخير في السطر "Hello World!"

سلسلة = "مرحبا بالعالم!"; CharacterCode = CharacterCode(String, StrLength(String)); إعلام(رمز الحرف);

ستكون نتيجة تنفيذ هذا الرمز هي عرض رمز الرمز "!" - 33.

سطر فارغ

سطر فارغ(<Строка>) . يتحقق مما إذا كانت السلسلة تتكون من أحرف غير مهمة فقط، أي ما إذا كانت فارغة.

مثال 15. تحقق مما إذا كانت السلسلة المكونة من ثلاث مسافات فارغة.

فارغ = EmptyString(" "); تقرير (فارغ)؛

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

استبدال الصفحة

StrReplace(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) . يبحث عن كافة تكرارات سلسلة البحث الفرعية في السلسلة المصدر ويستبدلها بالسلسلة الفرعية البديلة.

مثال 16. في السطر "Hello World!" استبدال كلمة "السلام" بكلمة "الأصدقاء".

String = StrReplace("Hello World!", "World", "Friends"); تقرير (سلسلة)؛

ستكون نتيجة تنفيذ هذا الرمز هي عرض السطر "Hello Friends!"

StrNumberLines

StrNumberRow(<Строка>) . يسمح لك بحساب عدد الأسطر في سلسلة متعددة الأسطر. للانتقال إلى سطر جديد في 1s 8، استخدم الرمز ملاحظة(حرف السطر الجديد).

مثال 17. تحديد عدد الأسطر في النص:
"السطر الأول
السطر الثاني
السطر الثالث"

Number = StrNumberString("السطر الأول"+Characters.PS +"السطر الثاني"+Symbols.PS +"السطر الثالث"); تقرير (رقم)؛

ستكون نتيجة تنفيذ هذا الكود عرض عدد الأسطر في النص: 3

StrGetString

سلسلة StrGetString(<Строка>, <НомерСтроки>) . الحصول على سطر في سلسلة متعددة الأسطر برقمه. يبدأ ترقيم الأسطر من 1.

مثال 18. احصل على السطر الأخير في النص:
"السطر الأول
السطر الثاني
السطر الثالث"

النص = "السطر الأول" + الرموز PS + "السطر الثاني" + الرموز PS + "السطر الثالث". LastRow = StrGetRow(Text, StrNumberLines(Text)); تقرير (السطر الأخير)؛

ستكون نتيجة تنفيذ هذا الرمز عرض السطر "الخط الثالث".

عدد مرات الصفحة

StrNumberOccurrences(<Строка>, <ПодстрокаПоиска>) . إرجاع عدد تكرارات السلسلة الفرعية المحددة في السلسلة. الدالة حساسة لحالة الأحرف.

مثال 19. حدد عدد مرات ظهور الحرف "c" في السطر "خطوط في 1s 8.3 و8.2"، بغض النظر عن حالته.

Line = "خطوط في 1s 8.3 و8.2"; NumberOccurrences = StrNumberOccurrences(Vreg(String), "With"); تقرير (عدد الحوادث)؛

ستكون نتيجة تنفيذ هذا الكود هي عرض عدد التكرارات: 2.

يبدأ الصفحة مع

StrStartsWith(<Строка>, <СтрокаПоиска>) . التحقق مما إذا كانت السلسلة التي تم تمريرها في المعلمة الأولى تبدأ بالسلسلة الموجودة في المعلمة الثانية.

مثال 20. تحديد ما إذا كان رقم التعريف الضريبي (TIN) للطرف المقابل المحدد يبدأ بالرقم 1. أدخل المتغير الطرف المقابل الأطراف المقابلة.

TIN = Counterparty.TIN; StartsUNits = StrStartsWith(TIN, "1"); إذا بدأ بالوحدات ثم // الكود الخاص بك EndIf؛

PageEndsOn

StrEndsWith(<Строка>, <СтрокаПоиска>) . التحقق مما إذا كانت السلسلة التي تم تمريرها في المعلمة الأولى تنتهي بالسلسلة الموجودة في المعلمة الثانية.

مثال 21. تحديد ما إذا كان رقم التعريف الضريبي (TIN) للطرف المقابل المحدد ينتهي بالرقم 2. أدخل المتغير الطرف المقابليتم تخزين مرجع لعنصر الدليل الأطراف المقابلة.

TIN = Counterparty.TIN; EndsWithTwo = StrEndsWith(TIN, "2"); إذا EndsInTwo ثم // الكود الخاص بك EndIf؛

تقسيم الصفحة

StrDivide(<Строка>, <Разделитель>, <ВключатьПустые>) . يقسم سلسلة إلى أجزاء باستخدام الأحرف المحددة ويكتب السلاسل الناتجة في مصفوفة. تقوم المعلمة الأولى بتخزين السلسلة المصدر، وتحتوي الثانية على السلسلة التي تحتوي على المحدد، وتشير المعلمة الثالثة إلى ما إذا كان يجب كتابة سلاسل فارغة إلى المصفوفة (افتراضيًا حقيقي).

مثال 22. لنحصل على سلسلة تحتوي على أرقام مفصولة بالرمز "؛"، احصل على مصفوفة من الأرقام من السلسلة.

سلسلة = "1؛ 2؛ 3"؛ Array = StrDivide(String, ";"); For Count = 0 By Array.Quantity() - 1 Cycle Attempt Array[Count] = Number(AbbrLP(Array[Count])); صفيف الاستثناء[Sch] = 0; EndAttemptsEndCycle;

نتيجة للتنفيذ، سيتم الحصول على مجموعة من الأرقام من 1 إلى 3.

اتصال الصفحة

ستركونيكت(<Строки>, <Разделитель>) . يحول مصفوفة السلاسل من المعلمة الأولى إلى سلسلة تحتوي على كافة عناصر المصفوفة مفصولة بالمحدد المحدد في المعلمة الثانية.

مثال 23. باستخدام مصفوفة الأرقام من المثال السابق، احصل على السلسلة الأصلية.

للحساب = 0 بواسطة Array.Quantity() - 1 Cycle Array[Act] = String(Array[Act]); EndCycle; Row = StrConnect(Array, ";");

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

إضافة سلسلة

لإضافة صفوف في استعلام، يتم استخدام العملية "+". يمكنك فقط إضافة سلاسل ذات طول محدود.

حدد "الاسم:" + اسم الأطراف المقابلة في العمود 1 من الدليل الأطراف المقابلة حيث الارتباط = &الارتباط

وظيفة السلسلة الفرعية

سلسلة فرعية(<Строка>, <НачальнаяПозиция>, <Длина>)

تناظري للدالة Environment() من نموذج الكائن. يمكن تطبيق وظيفة Substring() على بيانات السلسلة وتسمح لك بتحديد جزء <Строки> ، بدءًا من رقم الحرف <НачальнаяПозиция> (يتم ترقيم الأحرف الموجودة في السطر بدءًا من 1) والطول <Длина> الشخصيات. تحتوي نتيجة حساب الدالة على نوع سلسلة متغيرة الطول، وسيتم اعتبار الطول غير محدود إذا <Строка> له طول ومعلمة غير محدودة <Длина> ليس ثابتًا أو أكبر من 1024.

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

انتباه!لا ينصح باستخدام الدالة SUBSTRING() لتحويل سلاسل ذات طول غير محدود إلى سلاسل ذات طول محدود. بدلاً من ذلك، من الأفضل استخدام عامل الإرسال EXPRESS().

وظيفة مماثلة

إذا أردنا التأكد من أن سمة السلسلة تلبي معايير معينة، فإننا نقارنها:

حدد اسم الأطراف المقابلة في العمود 1 من الدليل الأطراف المقابلة حيث الاسم = "غازبروم".

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

LIKE - عامل التحقق من سلسلة ما للتأكد من تشابهها مع النمط. التناظرية مثل في SQL.

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

الأحرف التالية في سلسلة القالب هي أحرف خدمة ولها معنى مختلف عن حرف السلسلة:

  • % (نسبة مئوية): تسلسل يحتوي على أي عدد من الأحرف العشوائية؛
  • _ (شرطة سفلية): حرف واحد عشوائي؛
  • […] (حرف واحد أو أكثر بين قوسين مربعين): أي حرف واحد مدرج بين قوسين مربعين. قد يحتوي التعداد على نطاقات، على سبيل المثال a-z، مما يعني حرفًا عشوائيًا مدرجًا في النطاق، بما في ذلك نهايات النطاق؛
  • [^...] (بين قوسين مربعين علامة النفي متبوعة بحرف واحد أو أكثر): أي حرف واحد غير تلك المدرجة بعد علامة النفي.

أي رمز آخر يعني نفسه ولا يحمل أي حمولة إضافية. إذا كان أحد الأحرف المدرجة يحتاج إلى الكتابة بنفسه، فيجب أن يسبقه<Спецсимвол>. نفسي<Спецсимвол>(أي حرف مناسب) يتم تعريفه في نفس العبارة بعد الكلمة الأساسية SPECIAL CHARACTER.

السلسلة هي أحد أنواع البيانات البدائية في أنظمة 1C:Enterprise 8 ذات النوع خطتحتوي على نص.

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

Per1 = "كلمة 1" ;
Per2 = "كلمة 2" ;
Per3 = Per1 + "" + Per2;

مؤخراً لكل3سيعني " كلمة 1 كلمة 2".

بالإضافة إلى ذلك، توفر أنظمة 1C:Enterprise 8 وظائف للعمل مع السلاسل. دعونا نلقي نظرة على أهمها:

أدخل السلسلة(<Строка>, <Подсказка>, <Длина>, <Многострочность>) — تم تصميم الوظيفة لعرض مربع حوار يمكن للمستخدم من خلاله تحديد قيمة متغير من النوع خط. معامل <Строка> مطلوب ويحتوي على اسم المتغير الذي سيتم كتابة السلسلة المدخلة فيه. معامل <Подсказка> اختياري - هذا هو عنوان مربع الحوار. معامل <Длина> اختياري، يظهر الحد الأقصى لطول سلسلة الإدخال. الافتراضي هو صفر، وهو ما يعني طول غير محدود. معامل <Многострочность> خياري. يحدد وضع إدخال النص متعدد الأسطر: صحيح - إدخال نص متعدد الأسطر مع فواصل الأسطر؛ خطأ - أدخل سلسلة بسيطة.

يمكنك إدخال سلسلة إذا كنت تعرف رمز الحرف في Unicode:

رمز(<КодСимвола>) — يتم إدخال الرمز كرقم.

حرف= رمز(1103) ؛ // أنا

هناك أيضًا وظيفة عكسية تتيح لك معرفة رمز الرمز.

رمز الرمز(<Строка>, <НомерСимвола>) — تقوم بإرجاع رقم Unicode للحرف المحدد كرقم.

وظائف تحويل حالة النص:

فيريج(<Строка>) - تحويل كافة الأحرف في سلسلة إلى أحرف كبيرة.

نريج(<Строка>) - تحويل كافة الأحرف في سلسلة إلى أحرف صغيرة.

TReg(<Строка>) - تحويل كافة أحرف السلسلة إلى حالة العنوان. أي أنه يتم تحويل الأحرف الأولى في جميع الكلمات إلى أحرف كبيرة، ويتم تحويل الأحرف المتبقية إلى أحرف صغيرة.

وظائف للبحث واستبدال الأحرف في سلسلة:

يجد(<Строка>, <ПодстрокаПоиска>) - يعثر على رقم الحرف الخاص بحدوث سلسلة البحث الفرعية. على سبيل المثال:

ابحث عن ("سلسلة"، "أوكا")؛ // 4

سترفيند(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) - العثور على رقم الحرف الخاص بتكرار سلسلة البحث الفرعية، تتم الإشارة إلى رقم التكرار في المعلمة المقابلة. في هذه الحالة، يبدأ البحث بالحرف المحدد رقمه في المعلمة الوضعية الأولية.البحث ممكن من بداية أو نهاية السلسلة. على سبيل المثال:

عدد التكرارات Number4 = Str Find ( "الدفاعية", "حول" ,اتجاه البحث. من البداية، 1، 4)؛ // 7

StrReplace(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) - يبحث عن كافة تكرارات سلسلة البحث الفرعية في السلسلة المصدر ويستبدلها بالسلسلة الفرعية البديلة.

StrReplace ("String" , "oka" , "" ) ; // صفحة

سطر فارغ(<Строка>) - يتحقق من السلسلة بحثًا عن الأحرف المهمة. إذا لم تكن هناك أحرف مهمة، أو لم تكن هناك أحرف على الإطلاق، فسيتم إرجاع القيمة حقيقي. خلاف ذلك - كذب.

StrNumberOccurrences(<Строка>, <ПодстрокаПоиска>) – حساب عدد تكرارات سلسلة البحث الفرعية في السلسلة المصدر.

رقم StrNumberOccurrences ( "الدراسة والدراسة والدراسة مرة أخرى"، "يذاكر" ، "" ) ؛ // 3

قالب StrTemplate(<Строка>, <ЗначениеПодстановки1>…<ЗначениеПодстановкиN> — يستبدل المعلمات في سلسلة برقم. يجب أن يحتوي السطر على علامات بديلة للنموذج: "%1..%N". يبدأ ترقيم العلامة من 1. إذا كانت قيمة المعلمة غير معرف، يتم استبدال سلسلة فارغة.

قالب StrTemplate ( "المعلمة 1 = %1، المعلمة 2 = %2", "1" , "2" ) ; // المعلمة 1= 1، المعلمة 2 = 2

وظائف تحويل السلسلة:

أسد(<Строка>, <ЧислоСимволов>) - إرجاع الأحرف الأولى من السلسلة.

يمين(<Строка>, <ЧислоСимволов>) - إرجاع الأحرف الأخيرة من السلسلة.

الأربعاء(<Строка>, <НачальныйНомер>, <ЧислоСимволов>) - إرجاع سلسلة من الطول<ЧислоСимволов>، بدءًا من الرمز<НачальныйНомер>.

أبرل(<Строка>) يقوم بقص الأحرف غير المهمة على يسار الحرف المهم الأول في السلسلة.

أبر(<Строка>) — يقطع الأحرف غير المهمة الموجودة على يمين آخر حرف مهم في السطر.

أبرلب(<Строка>) - يقطع الأحرف غير الهامة الموجودة على يسار أول حرف مهم في السطر وعلى يمين آخر حرف مهم في السطر.

سلسلة StrGetString(<Строка>, <НомерСтроки>) - الحصول على سلسلة متعددة الأسطر حسب الرقم.

ميزات أخرى:

الطول(<Строка>) - إرجاع عدد الأحرف في السلسلة.

StrNumberRow(<Строка>) - إرجاع عدد الأسطر في سلسلة متعددة الأسطر. يعتبر السطر جديدًا إذا تم فصله عن السطر السابق بحرف السطر الجديد.

مقارنة(<Строка1>, <Строка2> ) - يقارن سلسلتين بطريقة غير حساسة لحالة الأحرف. تعمل الوظيفة مثل الكائن مقارنة القيم. عائدات:

  • 1- إذا كان السطر الأول أكبر من الثاني
  • -1- إذا كان السطر الثاني أكبر من الأول
  • 0 - إذا كانت السلاسل متساوية

StrCompare("السطر الأول" , "السطر الثاني" ) ; // 1