توابع در 1s با رشته. توابع جدید برای کار با رشته ها. توابع کار با رشته های StrSplit(), StrJoin()

به عنوان نمونه ای از نحوه عملکرد توابع رشته 1C، می خواهیم یک تحلیل متن خودکار ایجاد کنیم. متن را از فایل می گیریم. نتیجه تجزیه و تحلیل را به هر شکلی برای کاربر نمایش دهید.

ما باید یک پردازش خارجی ایجاد کنیم که به ما امکان می دهد یک فایل متنی را انتخاب کرده و تجزیه کننده را اجرا کنیم.

تجزیه و تحلیل متن 1C - فرم و دکمه ها

بنابراین، ما پردازش خارجی ایجاد می کنیم: پیکربندی / فایل / جدید / پردازش خارجی.

افزودن فرم باید یک کادر انتخاب روی فرم قرار دهیم. فایل متنیو یک دکمه تجزیه و تحلیل

تجزیه و تحلیل متن 1C - مشتری ضخیم

یک فیلد متنی معمولی روی فرم قرار دهید. طول رشته نامحدود است، زیرا مسیر فایل (نام دایرکتوری ها) می تواند قابل توجه باشد.

برای اینکه کاربر مجبور نباشد نام فایل را وارد کند، بلکه بتواند آن را انتخاب کند، دکمه انتخاب را نزدیک فیلد فعال می کنیم.

نام فیلد را به "FileName" تغییر دهید، نام ویژگی فرم مرتبط به طور خودکار به همان شکل تغییر می کند.

به عنوان یک دکمه، از دکمه "Run" که به طور خودکار توسط پلتفرم اضافه شده است استفاده می کنیم (و از قبل یک کنترلر متصل است - راحت).

تجزیه و تحلیل متن 1C - تین کلاینت

در تین کلاینت، خودمان ویژگی فرم "FileName" را ایجاد می کنیم. پایه ها را روی فرم بکشید. در ویژگی های عنصر فرم، دکمه انتخاب را نیز قرار خواهیم داد.

به عنوان یک دکمه، دستور "Run" را ایجاد می کنیم، پردازش را به آن اختصاص می دهیم و آن را روی فرم می کشیم.

تجزیه و تحلیل متن 1C - برنامه نویسی

اولین کاری که باید انجام دهیم این است که دکمه انتخاب را کنترل کنیم - گفتگوی انتخاب فایل را با کلیک نشان دهید.

بیایید به خصوصیات فیلد متنی خود در فرم برویم (در کلاینت ضخیم - مستقیماً روی فیلد کلیک چپ کنید، در مشتری نازک - روی نام فیلد در لیست) و رویداد "Select Start" را مشخص کنید. کنترل کننده

در داخل تابع handler که 1C پس از انتساب ایجاد می کند، یک کد ساده می نویسیم:

حالا ما یک نام فایل داریم. ما باید محتوای آن را "دریافت" کنیم و آنالیز متن را فراخوانی کنیم.

ما قبلاً یک کنترل کننده برای دکمه Run داریم. در کلاینت ضخیم، دکمه و کنترل کننده آن به طور خودکار توسط پیکربندی 1C ایجاد می شوند. در تین کلاینت آن را به صورت دستی اضافه کردیم.

بیایید کدی را که فایل را به صورت رشته ای می خواند در هندلر بنویسیم:

در مورد رمزگذاری فایل. اگر یک شی TextReader() بدون پارامتری که کدگذاری را مشخص می کند ایجاد کنید، 1C سعی می کند رمزگذاری را به تنهایی تعیین کند (با امضای علامت ترتیب بایت - BOM، یا رمزگذاری ANSI خود را در نظر می گیرد).

شما می توانید رمزگذاری مورد نظر را مستقیماً مشخص کنید، مانند:
File = NewReadText(FileName, "UTF-8"); // نام رمزگذاری مورد نیاز خود را جایگزین کنید

بنابراین، در نتیجه، ما دریافتیم:

  • رشته متنی که از فایل در متغیر "Text" خوانده می شود
  • روشی که در آن رشته دریافتی را از یک متغیر به نام "AnalysisText ()" با استفاده از توابع کار با رشته های 1C تجزیه و تحلیل می کنیم.

بخش 1. روش ها (26).

1.1. روش های اساسی (10). مستقل، بر اساس الگوریتم های ساده آنها ساخته شده است.

Str_Complete() (بالا کردن سمت راست-چپ با کاراکترهای مشخص شده).

Str_Inverse () (inversion - کاراکترها از راست به چپ).

Str_Codes () (کدهای کاراکتر از طریق "" و یک آرایه با کدها)

Str_Symbols() (رشته از کدهای جدا شده با "" یا از آرایه ای با کدها)

Str_ReplaceCharacters() (جایگزینی یک کاراکتر با کاراکتر دیگر).

Str_FromArray() (رشته ای از آرایه قطعات جدا شده توسط جداکننده)

Str_FindIn() (جستجوی رشته فرعی (از جمله سمت راست) با شماره ورودی مشخص شده).

Str_FindGr() (جستجوی گروهی از کاراکترهای موجود در مجموعه کاراکترهای مشخص شده)

Str_FindNumber() (جستجوی یک عدد، از جمله در سمت راست با شماره رخداد مشخص شده)

Str_Interpret() (به یک آرایه، با توجه به نحو تعیین شده)

1.2. روش های مشتق شده (12). در واقع، این استفاده از چهار روش-الگوریتم تعمیم یافته است (به بخش 2 مراجعه کنید)

Str_Number() (از ابتدا و از انتهای رشته، از کاراکترهای غیر رقمی "نترسید".

Str_Find() (جستجوی یک رشته فرعی (شامل حروف بزرگ و کوچک و در سمت راست) با شماره ورودی مشخص شده).

Str_Replace() (جستجو (از جمله حروف کوچک و بزرگ و در سمت راست)، و جایگزین رشته های فرعی جداکننده).

Str_Piece() (یک قطعه رشته بین رخدادهای مشخص شده جداکننده (چپ یا راست)).

Str_ReplacePiece() (جایگزینی در رشته منبع "piece" با رشته مشخص شده).

Str_VArray() (بین رخدادهای مشخص شده جداکننده (از جمله سمت راست و بدون حروف کوچک).

Str_MoveBySyllables() (به زیر رشته های "Hard"، با خط فاصله تقسیم می شود.

Str_MoveWords() (به زیر رشته های "نرم" تقسیم می شود)

Str_Cut() ("برش" به زیر رشته هایی با طول های مشخص)

Str_Short() (گروه سمت چپ کاراکترهای "کاهش" را با "رشته جایگزین" جایگزین کنید.

Str_Short() (گروه سمت راست کاراکترهای "کاهش یافته" را با یک "رشته جایگزین" جایگزین کنید.

Str_Short() (در وسط یک گروه از کاراکترهای "کاهش یافته" با یک "رشته جایگزین" جایگزین کنید.

Str_Expand (بسط به طول مشخص با افزایش تعداد کاراکترهای مشخص شده)

1.3. روش های تفصیلی (3). "تهیه" یک خط با انتقال به جدول با اطلاعات دقیق.

Str_inTableIn() (به جدول مطابق با سیستم جداکننده های تودرتو).

Str_inTableGroup (به جدول با توجه به فیلتر چند سطحی).

Str_inTableNumbers (به یک جدول با اعداد و قطعات بین آنها).

بخش 2. روش های تعمیم یافته-الگوریم ها (3).

Str_Entry() (روش های "Find" و "Replace").

Str_Fragments() (روش های "Piece"، "ReplacePiece"، "ToArray"، "ToTableIn").

Str_Short() (روش های "Short"، "ShortP"، "Short"، "Expand".

Str_Split() (روش‌های «حرکت بر اساس هجا»، «حرکت با کلمات»، «برش»).

بخش 3. تابع جهانی.

این یک نوع رابط برنامه نویسی شرطی است که اجازه می دهد

چندین روش را در یک رشته به طور همزمان اعمال کنید. اجرا شده به عنوان

توابع با هفت پارامتر (دمو بر روی این تابع ساخته شده است):

Str_(روش‌ها، روش‌های فرعی، ورودی، Param1، Param2، Length_Position_Number، Additional Output)

گزینه ها:

- "روش ها" - چندین روش "ترکیبی" و (یا) یک "انحصاری".

(کدها یا نام های تک نویسه ای، از طریق "" امکان پذیر است)

- "روش های فرعی" - چندین گزینه "ترکیب پذیر" و (یا) "انحصاری".

روش "انحصاری" (کدها یا نام های تک کاراکتری)؛

- "ورودی" - رشته، یا آرایه یا جدول مقادیر.

- "Param1" - رشته جستجو، جایگزینی، جداکننده، فیلتر.

- "Param2" - رشته یا نمادهای جایگزین.

- "Length_Number_Position" -Number، اعداد از طریق جداکننده یا آرایه ای با اعداد.

- "خروج" - شماره یا رشته یا آرایه یا جدول مقادیر.

نام ها و (یا) کدهای تک کاراکتری روش ها - روش های فرعی و همچنین اعداد در

(Length_Position_Number) در هر حال می توان و جدا کرد

هر یک از جداکننده های زیر: ":;".

بخش 4. چند مثال.

HaveNumbersINString=(Str_FindNumbers(InString)<>تعریف نشده)؛

HaveDigitsINString=(Str_FindGr(InString,"+0123456789")>0);

ThereLatin=(Str_FindGr(VxStr, Str_Interpret("lL"))>0);

HaveSpecifiedSigns=(Str_NfindGr(VxStr, "+ to hornYu.0p9")>0);

IsUnprintable=(Str_FindGr(VxStr, Str_Interpret("-l-L-r-R-P-Z-C"))>0);

بخش 5. نتیجه گیری.

در صورت امکان، با یک پاس در طول خط مدیریت می شود. گذر دوم - معمولاً در حال حاضر به صورت قطعات. از تابع StrNumberOccurrences () داخلی استفاده نکرد.

توابع داخلی مورد استفاده: Left()،Right()Mid()،StrLength()

- (موقعیت یابی و بازیابی بخشی از یک رشته -باید "سریع" باشد).

به قابلیت های اساسیزبان های برنامه نویسی معمولاً شامل کار با اعداد و رشته ها می شوند. معمولاً این ویژگی‌ها به کد کامپایلر متصل می‌شوند (یا کلاس‌های «پایه» زبان برنامه‌نویسی پیاده‌سازی می‌شوند).

در 1C، قابلیت های کار با رشته ها در خود پلت فرم برنامه ریزی شده است. امروز ویژگی های کار با رشته های 1C را در برنامه های زبان داخلی 1C در نظر خواهیم گرفت.

مقدار خط 1C

1. بیایید با ساده ترین شروع کنیم. ایجاد یک متغیر و اختصاص یک مقدار ثابت رشته به آن در 1C به این صورت است:

متغیر = "سلام دنیا!";

اگر می خواهید یک کاراکتر نقل قول را در یک رشته ثابت 1C مشخص کنید، باید آن را دو برابر کنید ""

متغیر = "سلام، "جهان""!";

2. خط شکست 1C را می توان به دو روش در یک بار مشخص کرد. اولین مورد استفاده از نماد |

متغیر = "سلام،
| دنیا! "؛

دومی استفاده از Symbols system enum است. این به شما امکان می دهد هم یک خط شکستن 1C و هم سایر کاراکترهای غیرچاپ مانند TAB را اضافه کنید.

متغیر = "سلام" + Symbols.ps + "pace!";

3. تنظیمات در 1C را می توان نه تنها برای یک زبان (روسی، انگلیسی یا دیگر) - بلکه به طور همزمان برای چندین زبان توسعه داد. در این حالت، زبان مورد استفاده فعلی در پایین پنجره 1C انتخاب می شود.

لیست زبان ها در پنجره پیکربندی در شاخه General/Languages ​​قرار دارد. هر زبان دارای یک شناسه کوتاه مانند enیا eng.

واضح است که هنگام برنامه ریزی چنین پیکربندی، خطوط 1C نیز می توانند چند زبانه باشند. برای انجام این کار، ایجاد چنین خط 1C با مشخص کردن از طریق امکان پذیر است. گزینه ها بر اساس شناسه زبان:

Variable = "ru=""سلام، دنیا!"; en=""سلام، دنیا!"

اگر طبق معمول از خط 1C که به این شکل تشکیل شده استفاده کنید، همان چیزی است که در آن نوشته شده است. برای اینکه سیستم آن را به دو گزینه تقسیم کند و از گزینه مورد نظر استفاده کند، باید از تابع NStr() استفاده کنید:

//درست برای تنظیمات دو زبانه
گزارش(NStr(متغیر));

لوازم با خط نوع 1C

مورد نیاز یک فیلد دایرکتوری / سند 1C است. تفاوت آن با یک متغیر در یک برنامه به زبان 1C در این است که نوع آن دقیقاً برای ویژگی (عدد، رشته 1C و غیره) مشخص شده است. اگر می‌خواهید در مورد این که چه چیزهایی هستند توضیح دهید، آموزش مربوطه را بررسی کنید.

اگر نوع ویژگی - خط 1C را مشخص کنید، باید پارامترها را نیز مشخص کنید.

رشته‌های 1C دارای طول نامحدود (با طول = 0) و طول محدود هستند که تعداد دقیق کاراکترها را نشان می‌دهد. رشته های 1C با طول نامحدود در یک جدول SQL جداگانه ذخیره می شوند، بنابراین استفاده از آنها نسبت به رشته های محدود بهره وری کمتری دارد.

به همین دلیل است که استفاده از رشته های 1C با طول نامحدود محدودیت های خود را دارد - استفاده از آنها در همه جا امکان پذیر نیست. به عنوان مثال، به عنوان شماره سند، کد دایرکتوری، اندازه گیری امکان پذیر نیست.

کار با خطوط 1C

برای کار با رشته ها، چندین عملکرد داخلی پلت فرم 1C وجود دارد.

  • AbbrLP ("باور نکردنی، اما واقعی!")
    فضاهای اضافی را از رشته 1C حذف می کند. همچنین می توان از آن برای تبدیل هر نوع به رشته 1C (مثلاً اعداد) استفاده کرد.
  • متغیر = "Vasya" + Abbrl("plus") + "Olya"; //"واسیا پلاس اولیا" خواهد بود
    مثالی از جمع چند مقدار رشته 1C. نتیجه یک خط 1C است.
  • متغیر = Lion("موسیقی"، 2); // "مو" خواهد بود
    متغیر = میانگین ("موسیقی"، 2، 2); // "ps" خواهد بود
    متغیر = حقوق ("موسیقی"، 2); // "ka" خواهد بود
    گزینه های مختلف برای به دست آوردن یک رشته فرعی از یک رشته 1C.
  • متغیر = Find("Music", "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(Value); //XML را از مقدار 1C دریافت کنید
Value1С = XMLValue(Type("CatalogReference.Nomenclature"),ViewStringXml); // مقدار 1C را از رشته XML دریافت کنید، باید نوع 1C را که باید دریافت شود مشخص کنید.

3. یک راه بومی پلتفرم 1C برای تبدیل هر شی 1C به رشته وجود دارد. از نسخه 1C 7.7 مهاجرت کرد. این قالب توسط برنامه های دیگر قابل درک نیست، اما 1C دیگری را درک می کند، که استفاده از آن را برای تبادل بین پایگاه های داده 1C آسان می کند.

String = ValueInStringInt(Value1S); // رشته 1C را از مقدار 1C دریافت کنید
ValueToFile("C:\MyFile.txt"، Value1C); //گزینه دیگر، یک فایل با یک رشته ذخیره شده از مقدار 1C دریافت می کنیم
Value1C = ValueFromStringInt(String); //بازگشت از خط 1C
Value1C = ValueFromFile("C:\MyFile.txt"); //بازگشت از فایل

ویرایش خطوط 1C در فرم

علاوه بر کار با رشته های 1C در برنامه 1C، البته، من دوست دارم که کاربر بتواند آنها را ویرایش کند. چندین احتمال برای این وجود دارد:

1. ساده ترین راه درخواست ورودی خط 1C در صورت تقاضا است. این روش هنگام آموزش برنامه نویسی 1C استفاده می شود، در زندگی از آن بسیار کمتر استفاده می شود (اما استفاده می شود!).

متغیر = "";
String = EnterValue(متغیر، "نام کامل را وارد کنید");

2. برای نمایش جزئیات شی 1C (دایرکتوری / سند) یا جزئیات فرم (نگاه کنید به)، بیشتر از قسمت ورودی استفاده می شود. این رایج ترین ابزار در 1C برای کاربر برای کار با فیلدهای ویرایش است.

3. امکان‌های فیلد ورودی را می‌توان گسترش داد (به ویژگی‌های فیلد ورودی مراجعه کنید، کلیک راستروی آن، برای جزئیات بیشتر):

  • حالت ویرایش چندخطی چک باکس
  • چک باکس ویرایش پیشرفته (در صورت علامت زدن چک باکس قبلی موجود است)
  • حالت گذرواژه کادر انتخاب (نگاه کنید به).

4. اگر تمام امکانات فیلد ورودی برای شما کافی نیست، یک ویرایشگر داخلی وجود دارد. برای افزودن آن به فرم، باید یک فیلد در منوی Form / Insert control اضافه کنید سند متنی. در ویژگی های آن، می توانید حالت عملکرد آن را مشخص کنید - ویژگی Extension.

فیلد سند متنی را نمی توان مستقیماً به داده ها پیوند داد. لازم است تابع زیر را در کنترل کننده رویداد فرم OnOpening() بنویسید (نگاه کنید به):

FormElements.ElementNameTextDocumentField.SetText(StringValue); //اینجا، ValueString متنی است که مثلاً از ویژگی دریافت می‌شود

و در کنترل کننده ذخیره - به عنوان مثال، در دکمه ذخیره - یک ذخیره اضافه کنید:

ValueString = FormElements.ElementNameTextDocumentField.GetText(); //ValueString در اینجا props است که در آن مقدار را ذخیره می کنیم

5. در 1C نسخه 8.2.11، در فرم های مدیریت شده، ظاهر شد فرصت جدیدنمایش خط 1C - فیلد سند قالب بندی شده.


مشابه فیلد یک سند متنی، لازم است هنگام باز کردن، تنظیم کنید و هنگام ذخیره متن خود با استفاده از برنامه بنویسید.

  • در شی 1C، شکلی که ما در حال ساخت آن هستیم (کتاب مرجع، سند، پردازش و غیره) - یک ویژگی با نوع Value Storage اضافه کنید
  • در تابع OnReadOnServer()، متن را از ویژگی تنظیم کنید

    //here Requisite ویژگی اضافه شده شی 1C است
    //here FormattedDocument نام فیلد در فرم ویرایش است
    &روی سرور

    FormattedDocument = CurrentObject.Attributes.Get();
    پایان رویه

  • در تابع BeforeWriteOnServer() یا با فشار دادن دکمه، متن را از فیلد بنویسید

    &روی سرور
    رویه OnReadingOnServer(CurrentObject)
    CurrentObject.Attributes = NewValueStorage(FormattedDocument);
    پایان رویه

رشته یکی از انواع داده های اولیه در سیستم های 1C:Enterprise 8 است. متغیرهای با نوع خطحاوی متن

مقادیر متغیر را تایپ کنید خطدر دو گیومه قرار می گیرند. متغیرهای چندگانه از این نوعرا می توان تا کرد.

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

در نهایت Per3مهم خواهد بود" کلمه 1 کلمه 2 اینچ.

علاوه بر این، سیستم های 1C: Enterprise 8 عملکردهایی را برای کار با رشته ها ارائه می دهند. موارد اصلی را در نظر بگیرید:

EnterString(<Строка>, <Подсказка>, <Длина>, <Многострочность>) — این تابع برای نمایش یک کادر محاوره ای طراحی شده است که در آن کاربر می تواند مقدار یک متغیر از نوع را مشخص کند خط. پارامتر <Строка> مورد نیاز است و حاوی نام متغیری است که رشته وارد شده در آن نوشته می شود. پارامتر <Подсказка> اختیاری عنوان کادر محاوره ای است. پارامتر <Длина> اختیاری، حداکثر طول رشته ورودی را نشان می دهد. پیش فرض صفر است که به معنای طول نامحدود است. پارامتر <Многострочность> اختیاری. حالت ورودی را مشخص می کند متن چند خطی: True - متن چند خطی را با جداکننده خط وارد کنید. False - یک رشته ساده وارد کنید.

یک رشته را می توان وارد کرد و با دانستن کد کاراکتر در یونیکد:

نماد(<КодСимвола>) — کد به صورت عدد وارد می شود.

حرف= نماد(1103 ) ; // من

همچنین یک تابع معکوس وجود دارد که به شما امکان می دهد کد یک کاراکتر را پیدا کنید.

SymbolCode(<Строка>, <НомерСимвола>) — شماره یونیکد کاراکتر مشخص شده را به صورت عدد برمی گرداند.

توابع تبدیل حروف متن:

VReg(<Строка>) - تمام کاراکترهای یک رشته را به حروف بزرگ تبدیل می کند.

HReg(<Строка>) - تمام کاراکترهای یک رشته را به حروف کوچک تبدیل می کند.

Treg(<Строка>) - تمام کاراکترهای رشته را به حروف عنوان تبدیل می کند. یعنی حروف اول همه کلمات به بزرگ و بقیه حروف به حروف کوچک تبدیل می شوند.

توابع جستجو و جایگزینی کاراکترها در یک رشته:

پیدا کردن(<Строка>, <ПодстрокаПоиска>) - شماره کاراکتر وقوع زیررشته جستجو را پیدا می کند. مثلا:

یافتن ("رشته"، "چشم") ; // چهار

StrFind(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) - شماره کاراکتر وقوع زیررشته جستجو را پیدا می کند، شماره وقوع در پارامتر مربوطه مشخص می شود. در این حالت جستجو از کاراکتری شروع می شود که تعداد آن در پارامتر مشخص شده است نقطه شروع.جستجو از ابتدا یا از انتهای رشته امکان پذیر است. مثلا:

Number4 Entry= StrFind( "تدافعی", "o" , جهت جستجو. اول، 1، 4)؛ // 7

StrReplace(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) تمام رخدادهای زیررشته جستجو را در رشته منبع پیدا می کند و آن را با رشته فرعی جایگزین جایگزین می کند.

StrReplace("رشته"، "چشم"، "" ); // صفحه

خط خالی(<Строка>) - رشته را برای کاراکترهای مهم بررسی می کند. اگر هیچ کاراکتر مهمی وجود نداشته باشد، یا اصلاً هیچ کاراکتری وجود نداشته باشد، مقدار برگردانده می شود درست است، واقعی. در غیر این صورت - دروغ.

StrNumberOccurrences(<Строка>, <ПодстрокаПоиска>) - تعداد تکرارهای زیررشته جستجو را در رشته منبع محاسبه می کند.

StrNumberOccurrences ( "مطالعه، مطالعه و دوباره مطالعه", "برای مطالعه" , "" ); // 3

StrTemplate(<Строка>, <ЗначениеПодстановки1>…<ЗначениеПодстановкиN> — پارامترها را با رشته جایگزین می کند. رشته باید دارای نشانگرهای جایگزینی به شکل "%1..%N" باشد. شماره گذاری نشانگرها از 1 شروع می شود. اگر مقدار پارامتر تعریف نشده، رشته خالی جایگزین می شود.

StrPattern ( "گزینه 1 = %1، گزینه 2 = %2", "1" , "2" ) ; // پارامتر 1= 1، پارامتر 2 = 2

توابع تبدیل رشته:

یک شیر(<Строка>, <ЧислоСимволов>) اولین کاراکترهای رشته را برمی گرداند.

درست(<Строка>, <ЧислоСимволов>) - آخرین کاراکترهای رشته را برمی گرداند.

چهار شنبه(<Строка>, <НачальныйНомер>, <ЧислоСимволов>) - رشته ای از طول را برمی گرداند<ЧислоСимволов>، با یک شخصیت شروع می شود<НачальныйНомер>.

اببر(<Строка>) کاراکترهای غیر معنی دار را در سمت چپ اولین کاراکتر مهم در رشته کوتاه می کند.

abbr(<Строка>) - کاراکترهای بی اهمیت را در سمت راست آخرین کاراکتر مهم در رشته قطع می کند.

آبرل(<Строка>) - کاراکترهای غیر معنی دار را در سمت چپ اولین نویسه مهم در رشته و در سمت راست آخرین نویسه مهم در رشته قطع می کند.

StrGetString(<Строка>, <НомерСтроки>) - رشته یک رشته چند خطی را بر اساس عدد بدست می آورد.

ویژگی های دیگر:

طول (<Строка>) - تعداد کاراکترهای یک رشته را برمی گرداند.

تعداد خطوط (<Строка>) - تعداد ردیف های یک رشته چند خطی را برمی گرداند. یک خط اگر با یک کاراکتر خط جدید از خط قبلی جدا شود، جدید در نظر گرفته می شود.

StrCompare(<Строка1>, <Строка2> ) - دو رشته را به صورت غیر حساس مقایسه می کند. تابع مانند یک شی کار می کند مقایسه ارزش ها. برمی گرداند:

  • 1 - اگر خط اول بزرگتر از خط دوم باشد
  • -1 - اگر خط دوم بزرگتر از خط اول باشد
  • 0 - اگر رشته ها مساوی باشند

StrCompare("ردیف اول"، "ردیف دوم") ; // یک

مکانیسم های کمی برای کار با رشته ها در جستارهای 1C وجود دارد. ابتدا می توان رشته ها را اضافه کرد. ثانیاً، یک رشته فرعی را می توان از یک رشته گرفت. ثالثاً، رشته ها را می توان با هم مقایسه کرد، از جمله با الگو. این تقریباً تمام کاری است که می توانید با رشته ها انجام دهید.

اضافه کردن رشته

عملگر "+" برای افزودن رشته ها در یک پرس و جو استفاده می شود. شما فقط می توانید رشته هایی با طول محدود اضافه کنید.

"Name: " + Contractors.Name AS Column1 FROM Directory.Contractors AS Contractors WHERE Contractors.Reference = &Reference

تابع رشته فرعی

SUBSTRING(<Строка>, <НачальнаяПозиция>, <Длина>)

آنالوگ تابع Environment() از مدل شی. تابع Substring() می تواند برای داده های نوع رشته اعمال شود و به شما امکان می دهد یک قطعه را انتخاب کنید <Строки> ، با کاراکتر عدد شروع می شود <НачальнаяПозиция> (نویسه های یک رشته از 1 شماره گذاری می شوند) و طول <Длина> شخصیت ها. نتیجه ارزیابی تابع دارای یک نوع رشته از طول متغیر است و طول آن نامحدود در نظر گرفته می‌شود <Строка> دارای طول و پارامتر نامحدود است <Длина> ثابت یا بزرگتر از 1024 نیست.

اگر طول رشته کمتر از مقدار مشخص شده در پارامتر دوم باشد، تابع یک رشته خالی برمی گرداند.

توجه!استفاده از تابع ()SUBSTRING برای تبدیل رشته هایی با طول نامحدود به رشته هایی با طول محدود توصیه نمی شود. در عوض، بهتر است از عملگر cast () EXPRESS استفاده کنید.

تابع مشابه

اگر لازم باشد مطمئن شویم که ویژگی رشته دارای معیارهای خاصی است، آن را با هم مقایسه می کنیم:

Counterparties.Name AS Column1 FROM Directory.Counterparties AS Counterparties WHERE Counterparties.Name = "Gazprom"

اما اگر مقایسه ظریف تری لازم باشد چه؟ نه فقط برای برابری یا نابرابری، بلکه برای شباهت به یک الگوی خاص؟ این دقیقاً همان چیزی است که تابع LIKE برای آن ایجاد شده است.

LIKE - عملگر برای بررسی اینکه آیا یک رشته شبیه به یک الگو است. آنالوگ LIKE در SQL.

عملگر LIKE به شما امکان می دهد مقدار عبارت مشخص شده در سمت چپ آن را با رشته الگوی مشخص شده در سمت راست مقایسه کنید. مقدار عبارت باید از نوع رشته باشد. اگر مقدار عبارت با الگو مطابقت داشته باشد، نتیجه عملگر TRUE و در غیر این صورت FALSE خواهد بود.

کاراکترهای زیر در رشته الگو کاراکترهای سرویس هستند و معنای متفاوتی با کاراکتر رشته دارند:

  • % (درصد): دنباله ای حاوی هر تعداد کاراکتر دلخواه.
  • _ (تاکید): یک کاراکتر دلخواه.
  • […] (یک یا چند کاراکتر در داخل پرانتز): هر کاراکتر منفرد که در داخل پرانتز ذکر شده است. شمارش می‌تواند شامل محدوده‌هایی باشد، مانند a-z، به معنای هر کاراکتری در محدوده، از جمله انتهای محدوده.
  • [^…] (در پرانتز یک علامت نفی به دنبال آن یک یا چند کاراکتر): هر کاراکتر منفرد غیر از آنهایی که پس از علامت نفی فهرست شده اند.

هر علامت دیگری به معنای خودش است و بار اضافی را حمل نمی کند. اگر لازم است یکی از کاراکترهای فهرست شده به عنوان خودش نوشته شود، باید قبل از آن نوشته شود<Спецсимвол>. خودم<Спецсимвол>(هر کاراکتر مناسب) در همان عبارت بعد از آن تعریف شده است کلمه کلیدینماد خاص.