1s إضافة سلاسل. وظائف السلاسل الجديدة

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

إضافة سلسلة

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

حدد "الاسم:" + Contractors.Name AS Column1 من Directory.Contractors AS Contractors WHERE Contractors.Reference = & Reference

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

التضمين (<Строка>, <НачальнаяПозиция>, <Длина>)

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

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

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

وظيفة مماثلة

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

حدد Counterparties.Name AS Column1 من Directory.Counterparties AS Counterparties WHERE Counterparties.Name = "Gazprom"

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

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

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

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

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

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

ملاحظات من النظر إلى الزجاج

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

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

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

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

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

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

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

<Шаблон>هي السلسلة التي يتم فيها استبدال تمثيلات المعلمات.

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

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

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

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

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

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

تقارن هذه الوظيفة حالة السلسلتين بشكل غير حساس. على سبيل المثال ، مثل هذا:

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

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

وظائف السلسلة StrBeginsC () ، StrEndsTo ()

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

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

وظائف للعمل مع السلاسل StrSplit () ، StrJoin ()

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

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

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

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

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

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

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

خط

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

String (False) // تعرض "لا"
String (12345) // تعرض "12 345"
السلسلة (CurrentDate ()) //"21.07.2017 11:55:36 "

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

يختصر LP ، مختصر L ، مختصر P

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

abbrl ("ستتم إزالة المسافات من كلا الجانبين") // "ستتم إزالة المسافات على كلا الجانبين"
abbr ("ستتم إزالة المسافات على الجانبين") // "ستتم إزالة المسافات الموجودة على اليسار"
اختصار ("ستتم إزالة المسافات على الجانبين") // "ستتم إزالة المسافات الموجودة على اليمين"

ليو ، اليمين ، الأوسط

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

Lion ("String variable"، 4) // إرجاع "Stro"
Right ("String variable"، 7) // إرجاع "متغير"
متوسط ​​\ u200b \ u200b ("String variable"، 2، 5) // يعرض "troco"

سترلينجث

تحدد الوظيفة عدد الأحرف الموجودة في متغير سلسلة.

StrLength ("Word") // ستكون نتيجة التنفيذ هي الرقم 5

يجد

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

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

ابحث عن ("واحد ، اثنان ، واحد ، اثنان ، ثلاثة" ، "اثنان") // ستعيد الدالة الرقم 6

خط فارغ

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

EmptyString ("Vasily Ivanovich Pupkin") // ستعيد الوظيفة False
EmptyString ("") // ستعيد الدالة True

VReg ، NReg ، TReg

هذه الوظائف مفيدة للغاية عند مقارنة وتحويل متغيرات السلسلة. سيعيد "Vreg ()" السلسلة الأصلية بأحرف كبيرة ، و "HReg ()" بأحرف صغيرة ، وسيقوم "TReg ()" بتنسيقها بحيث يتم كتابة الحرف الأول من كل كلمة بأحرف كبيرة ، وتكون جميع الأحرف اللاحقة صغيرة.

VReg ("المدير العام") // القيمة المرجعة - "المدير العام"
HReg ("المدير العام") // إرجاع القيمة - "CEO"
TReg ("المدير العام") // القيمة المرجعة - "المدير العام"

StrReplace

هذه الوظيفة مماثلة للاستبدال في محرري النصوص. يسمح لك باستبدال حرف واحد أو مجموعة من الأحرف بآخر في متغيرات السلسلة.

StrReplace ("أحمر ، أبيض ، أصفر" ، "،" ، "؛") // إرجاع "أحمر ؛ أبيض؛ أصفر"

StrNumberRows

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

ستمر الحلقة الموجودة في المثال أدناه عبر ثلاث دوائر لأن الدالة StrNumberRows ستعيد القيمة 3:

بالنسبة إلى ind \ u003d 1 بواسطة StrNumber of Lines ("Line1" + Symbols.PS + "String2" + Symbols.PS + "Line3") حلقة
<тело цикла>
نهاية الدورة

StrGetString

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

StrGetString ("String1" + Symbols.PS + "String2" + Symbols.PS + "String3"، 2) // إرجاع "Line2"

عدد الأحداث

تحسب الدالة عدد مرات ظهور حرف أو سلسلة فرعية في السلسلة التي يتم البحث عنها.

StrNumberInstallations ("أ ؛ ب ؛ ج ؛ د ؛" ، "؛") // ستعيد الوظيفة الرقم 4

الرمز والرمز

تتيح لك هذه الوظائف الحصول على حرف من خلال كود Unicode الخاص به ، وكذلك تحديد هذا الرمز من خلال الحرف نفسه.

SymbolCode ("A") // ستعيد الوظيفة الرقم 1040
SymbolCode (1040) // ستعيد الوظيفة "A"

المهام المتكررة عند العمل بالسلاسل

تسلسل السلسلة

لتسلسل سلاسل متعددة (متسلسلة) فقط استخدم عامل الإضافة.

"السطر 1" + "السطر 2" // نتيجة إضافة سطرين ستكون "السطر 1 السطر 2"

اكتب التحويل

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

ستعرض السلسلة (1000) // "1000"

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

StrReplace (String (1000)، Characters.NPP، "") // تعرض "1000"

String (Format (1000، "CH =")) // سترجع "1000"

اقتباسات في سلسلة

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

Header = String ("Horns and Hooves LLC هي نحن!") // إرجاع "Roga and Hooves LLC هي نحن!"

متعدد الأسطر ، فاصل الأسطر

من أجل إنشاء نص متعدد الأسطر ، يكفي إضافة أحرف فاصلة أسطر (Symbols.PS) إليه.

MultilineText = "السطر الأول" + Characters.PS + "السطر الثاني"

كيفية إزالة المسافات

لإزالة المسافات على اليمين أو اليسار ، يمكنك استخدام الوظيفة "Stretch ()" (بالإضافة إلى "Scrpt ()" و "ScreenP ()"):

StringWithoutSpaces = ShortLP ("العديد من الأحرف") // ستعيد الوظيفة القيمة "العديد من الأحرف"

إذا احتجت ، بعد تحويل رقم إلى سلسلة ، إلى إزالة المسافات غير المنقسمة ، فاستخدم البنية التالية:

StringWithoutSpaces = StrReplace (String (99999)، Characters.NPP، "") // إرجاع "99999"

أيضًا ، غالبًا ما يستخدم المبرمجون البناء التالي ، والذي يسمح لك بإزالة أو استبدال جميع مسافات متغير النص بحرف آخر:

StringWithoutSpaces = StrReplace ("hello"، ""، ") // تعرض" hello "

مقارنة الأوتار ببعضها البعض

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

"hello" = "hello" // سيعود كاذب
"Hello" = "Hello" // ستعيد True
"Hello" = "Goodbye" // سترجع False

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

اكتب القيم المتغيرة خطبين علامتي اقتباس. متغيرات متعددة من هذا النوعيمكن طيها.

Per1 = "Word 1" ؛
Per2 = "Word 2" ؛
Per3 = Per1 + "" + Per2 ؛

مؤخراً بير 3سوف يهم " كلمة 1 كلمة 2 ″.

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

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

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

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

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

يوجد ايضا وظيفة عكسية، والذي يسمح لك بمعرفة رمز الشخصية.

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

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

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

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

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

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

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

Find ("سلسلة"، "عين")؛ // 4

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

إدخال Number4 = StrFind ( "الدفاعية"، "o" ، اتجاه البحث. أولاً ، 1 ، 4) ؛ // 7

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

StrReplace ("سلسلة" ، "عين" ، "") ؛ // صفحة

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

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

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

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

StrPattern ( "الخيار 1 =٪ 1 ، الخيار 2 =٪ 2", "1" , "2" ) ; // المعلمة 1 = 1 ، المعامل 2 = 2

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

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

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

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

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

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

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

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

ميزات أخرى:

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

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

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

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

StrCompare ("الصف الأول" ، "الصف الثاني") ؛ // 1

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

في 1C ، تتم برمجة إمكانات العمل مع السلاسل في النظام الأساسي نفسه. سننظر اليوم في ميزات العمل مع سلاسل 1C في البرامج بلغة 1C المدمجة.

قيمة الخط 1C

1. لنبدأ بالأبسط. يبدو إنشاء متغير وتعيين قيمة ثابتة لسلسلة له كما يلي في 1C:

متغير = "أهلاً بالعالم!" ؛

إذا كنت تريد تحديد حرف اقتباس في قيمة سلسلة ثابتة 1C ، فأنت بحاجة إلى مضاعفته ""

متغير = "مرحبًا ،" عالم ""! "؛

2. يمكن تحديد فاصل الأسطر 1C بطريقتين في وقت واحد. الأول هو استخدام الرمز |

متغير = "مرحبًا ،
| عالم! "؛

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

متغير = "مرحبًا" + Symbols.ps + "سلام!" ؛

3. يمكن تطوير التكوينات في 1C ليس فقط للغة واحدة (الروسية أو الإنجليزية أو غيرها) - ولكن في نفس الوقت لعدة لغات. في هذه الحالة ، يتم تحديد اللغة المستخدمة حاليًا في الجزء السفلي من نافذة 1C.

توجد قائمة اللغات في نافذة التكوين في فرع العام / اللغات. كل لغة لها معرّف قصير مثل enأو م.

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

المتغير = "ru =" "مرحبًا ، أيها العالم!" "؛ en =" "مرحبًا ، أيها العالم!" ""؛

إذا كنت تستخدم الخط 1C الذي تم تشكيله بهذه الطريقة كالمعتاد ، فسيكون ما هو مكتوب فيه. لكي يقوم النظام بتقسيمها إلى خيارين واستخدام الخيار المطلوب ، يجب عليك استخدام وظيفة NStr ():

// تصحيح التكوينات ثنائية اللغة
تقرير (NStr (متغير)) ؛

الدعائم بخط نوع 1C

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

إذا قمت بتحديد نوع السمة - السطر 1C ، فيجب عليك بالإضافة إلى ذلك تحديد المعلمات.

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

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

العمل مع خطوط 1C

للعمل مع السلاسل ، هناك العديد من الوظائف المضمنة لمنصة 1C.

  • AbbrLP ("لا يُصدق ، لكنه حقيقي!")
    يزيل من الخط 1C مساحات اضافية. يمكن استخدامه أيضًا لتحويل أي نوع إلى سلسلة 1C (على سبيل المثال ، الأرقام).
  • المتغير = "Vasya" + Abbrl ("plus") + "عليا" ؛ // ستكون "Vasya plus Olya"
    مثال على جمع عدة قيم سلسلة 1C. والنتيجة هي سطر واحد 1 ج.
  • متغير = أسد ("موسيقى" ، 2) ؛ // سيكون "Mu"
    Variable = Avg ("Music"، 2، 2) ؛ // سيكون "ps"
    متغير = حقوق ("موسيقى" ، 2) ؛ // سيكون "ka"
    خيارات مختلفة للحصول على سلسلة فرعية من سلسلة 1C.
  • متغير = بحث ("موسيقى" ، "ps") ؛ سيكون // 3
    ابحث عن سلسلة فرعية في السلسلة 1C ، بدءًا من الحرف 1.
  • متغير = StrLength ("موسيقى") ؛ // سيكون 6
    تُرجع عدد الأحرف في سلسلة 1C.
  • إخطار ("مرحبًا") // في مربع الرسالة أسفل نافذة 1C
    تنبيه ("مرحبًا") // مربع حوار منبثق
    الحالة ("مرحبًا") // في سطر عرض الحالة أسفل اليسار
    .

إحضار الأشياء إلى السطر 1C

كما تعلم ، فإن التنسيق الأكثر شيوعًا لتبادل المعلومات المنظمة في الوقت الحالي هو XML. حتى احدث اصدارآنسة كلمة مكتبويقوم Excel بحفظ الملفات بهذا التنسيق (docx و xlsx على التوالي ، قم بتغيير الامتداد إلى zip ، وفتح في أرشيفي).

توفر منصة 1C لتبادل البيانات عدة خيارات ، أهمها XML أيضًا.

1. أبسط طريقة هي استخدام دالة ShortLP () أو String (). يمكنك استخدام الدالة REPRESENTATION () في نص الاستعلام. نتيجة إجراءهم هي نفسها - يقومون بإنشاء تمثيل سلسلة لأي كائن 1C للمستخدم.

بالنسبة للدليل الافتراضي ، سيكون هذا هو اسمه. بالنسبة للمستند ، اسم المستند ورقمه وتاريخه.

2. يمكن تحويل أي كائن 1C (مع قيود) إلى XML والعكس صحيح. تسمى عملية التحويل التسلسل.

ViewStringXml = XMLString (القيمة) ؛ // احصل على XML من القيمة 1C
Value1С = XMLValue (النوع ("CatalogReference.Nomenclature") ، ViewStringXml) ؛ // احصل على قيمة 1C من سلسلة XML ، يجب عليك تحديد نوع 1C الذي يجب استلامه

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

السلسلة = ValueInStringInt (Value1S) ، // الحصول على السلسلة 1C من القيمة 1C
ValueToFile ("C: \ MyFile.txt"، Value1C) ؛ // خيار آخر ، نحصل على ملف بسلسلة محفوظة من القيمة 1C
Value1C = ValueFromStringInt (سلسلة) ، // رجوع من السطر 1C
Value1C = ValueFromFile ("C: \ MyFile.txt") ؛ // رجوع من الملف

تحرير الأسطر 1C في النموذج

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

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

متغير = "" ؛
String = EnterValue (متغير ، "أدخل الاسم الكامل") ؛

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

3. يمكن توسيع إمكانيات حقل الإدخال (انظر خصائص حقل الإدخال ، انقر على اليمينلمزيد من التفاصيل):

  • خانة اختيار وضع التحرير متعدد الأسطر
  • مربع اختيار التحرير المتقدم (متاح إذا تم تحديد خانة الاختيار السابقة)
  • وضع كلمة المرور في خانة الاختيار (انظر).

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

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

FormElements.ElementNameTextDocumentField.SetText (StringValue) ، // هنا ، ValueString هي النص الذي تم استلامه ، على سبيل المثال ، من السمة

وفي معالج الحفظ - على سبيل المثال ، في زر حفظ - أضف حفظًا:

ValueString = FormElements.ElementNameTextDocumentField.GetText () ، // ValueString هنا هي الدعائم حيث نحفظ القيمة

5. في الإصدار 1C 8.2.11 ، في النماذج المدارة، ظهر فرصة جديدةتمثيل سطر 1C - حقل مستند منسق.


على غرار حقل المستند النصي ، من الضروري التعيين عند الفتح والكتابة عند حفظ النص بنفسك باستخدام البرنامج.

  • في كائن 1C ، الشكل الذي نصنعه (كتاب مرجعي ، مستند ، معالجة ، إلخ) - أضف سمة بنوع تخزين القيمة
  • في دالة OnReadOnServer () ، قم بتعيين النص من السمة

    // هنا المطلوب هو السمة المضافة للكائن 1C
    // هنا FormattedDocument هو اسم الحقل في نموذج التحرير
    & على الخادم

    FormattedDocument = CurrentObject.Attributes.Get () ،
    EndProcedure

  • في وظيفة BeforeWriteOnServer () أو عن طريق الضغط على الزر ، اكتب النص من الحقل

    & على الخادم
    الإجراء OnReadingOnServer (CurrentObject)
    CurrentObject.Attributes = NewValueStorage (FormattedDocument) ،
    EndProcedure



تحميل...
قمة