1c 8.2 شماره سریال کاراکتر در رشته. توابع جدید برای کار با رشته ها. فرمت تابع StrTemplate()

بخش 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 وجود دارد. ابتدا می توان رشته ها را اضافه کرد. ثانیاً، یک رشته فرعی را می توان از یک رشته گرفت. ثالثاً، رشته ها را می توان با هم مقایسه کرد، از جمله با الگو. این تقریباً تمام کاری است که می توانید با رشته ها انجام دهید.

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

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

"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، به معنای هر کاراکتری در محدوده، از جمله انتهای محدوده.
  • [^…] (در پرانتز یک علامت نفی به دنبال آن یک یا چند کاراکتر): هر کاراکتر منفرد غیر از آنهایی که پس از علامت نفی فهرست شده اند.

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

نوع String در همه زبان های برنامه نویسی یافت می شود. ابتدایی است و در 1C توابع زیادی برای کار با آن وجود دارد. در این مقاله نگاهی دقیق تر به این موضوع خواهیم داشت راه های مختلفبا انواع رشته در 1C 8.3 و 8.2 با مثال کار کنید.

خط

برای تبدیل یک متغیر از هر نوع به رشته، تابع "String ()" به همین نام وجود دارد. پارامتر ورودی خود متغیر خواهد بود که نمایش رشته ای آن باید به دست آید.

رشته (نادرست) // "نه" را برمی گرداند
String(12345) // "12 345" را برمی گرداند
String(CurrentDate()) //"21.07.2017 11:55:36"

امکان تبدیل به یک رشته نه تنها انواع ابتدایی، بلکه سایر موارد، به عنوان مثال، عناصر دایرکتوری ها و اسناد وجود دارد.

مخفف LP، مخفف L، مخفف P

پارامترهای ورودی این توابع یک متغیر رشته ای هستند. توابع نویسه‌های ناچیز (فضاها، برگشت‌های کالسکه و غیره) را حذف می‌کنند: به ترتیب از سمت چپ و راست، فقط از سمت چپ و فقط از سمت راست.

abbrl("فضاهای دو طرف حذف خواهند شد") // "فضاهای دو طرف حذف خواهند شد"
abbr("فضاهای هر دو طرف حذف خواهند شد") // "فضاهای سمت چپ حذف خواهند شد"
abbr("فضاهای هر دو طرف حذف خواهند شد") // "فضاهای سمت راست حذف خواهند شد"

لئو، راست، وسط

این توابع به شما امکان می دهند بخشی از یک رشته را قطع کنید. تابع Lion() بخشی از رشته را در سمت چپ آن به طول مشخص برمی گرداند. تابع "Right()" مشابه است، اما برش در سمت راست انجام می شود. تابع "Wed()" به شما امکان می دهد شماره کاراکتری که رشته از آن انتخاب می شود و طول آن را مشخص کنید.

Lion("String variable", 4) // "Stro" را برمی گرداند
Right("String variable", 7) // "variable" را برمی گرداند
avg("String variable", 2, 5)// "troco" را برمی گرداند

StrLength

تابع تعداد کاراکترهای موجود در یک متغیر رشته را تعیین می کند.

StrLength("Word") // نتیجه اجرا عدد 5 خواهد بود

پیدا کردن

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

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

Find("یک، دو، یک، دو، سه"، "دو") // تابع عدد 6 را برمی گرداند.

خط خالی

استفاده از این تابع به شما امکان می دهد تا مشخص کنید که آیا یک رشته خالی است یا خیر. شخصیت‌های بی‌اهمیت، مانند فضا، بازگشت کالسکه و دیگران در نظر گرفته نمی‌شوند.

EmptyString ("Vasily Ivanovich Pupkin") // تابع False را برمی گرداند
EmptyString(" ") // تابع True برمی گردد

VReg، NReg، TReg

این توابع هنگام مقایسه و تبدیل متغیرهای رشته ای بسیار مفید هستند. "Vreg()" رشته اصلی را با حروف بزرگ، "HReg()" با حروف کوچک، و "Treg()" آن را به گونه ای قالب بندی می کند که اولین کاراکتر هر کلمه جداگانه بزرگ شود و همه کاراکترهای بعدی کوچک باشند.

Vreg("مدیر کل") // مقدار بازگشتی - "مدیر کل"
HReg ("مدیر کل") // مقدار بازگشتی - "مدیر عامل"
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) // "خط 2" را برمی گرداند

StrNumberOccurrences

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

StrNumberInstallations("a;b;c;d; ", ";") // تابع عدد 4 را برمی گرداند.

Symbol و SymbolCode

این توابع به شما این امکان را می دهد که یک کاراکتر را با کد یونیکد آن دریافت کنید و همچنین این کد را توسط خود کاراکتر تعیین کنید.

SymbolCode("A") // تابع عدد 1 040 را برمی گرداند
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 is us!") // برمی گرداند "Roga and Hooves LLC is us!"

چند خط، شکست خط

به منظور ایجاد متن چند خطیفقط کاراکترهای شکست خط را به آن اضافه کنید (Symbols.PS).

MultilineText = "First Line" + Characters.PS + "Second Line"

نحوه حذف فضاها

به منظور حذف فضاهای سمت راست یا چپ، می توانید از تابع "Stretch()" (و همچنین "Scrpt()" و "ScreenP()" استفاده کنید:

StringWithoutSpaces = ShortLP("حروف بسیار") // تابع مقدار "حروف بسیار" را برمی گرداند.

اگر پس از تبدیل یک عدد به رشته، باید فضاهای بدون شکست را حذف کنید، از ساختار زیر استفاده کنید:

StringWithoutSpaces = StrReplace(String(99999),Characters.NPP,"") // "99999" را برمی گرداند

همچنین، برنامه نویسان اغلب از ساختار زیر استفاده می کنند، که به شما امکان می دهد تمام فضاهای یک متغیر متنی را با کاراکتر دیگری حذف یا جایگزین کنید:

StringWithoutSpaces = StrReplace(" hello", " ","") // "Hello" را برمی‌گرداند

مقایسه رشته ها با یکدیگر

می توانید اصطلاحات را با علامت مساوی معمولی مقایسه کنید. مقایسه به حروف کوچک و بزرگ حساس است.

"hello" = "سلام" // false خواهد شد
"Hello" = "Hello" // True برمی گردد
"Hello" = "Goodbye" // False را برمی گرداند

در نسخه 8.3.6.1977 پیاده سازی شده است.

ما مجموعه ای از توابع را برای کار با رشته ها گسترش داده ایم. ما این کار را انجام دادیم تا ابزارهای پیشرفته تری برای تجزیه داده های رشته در اختیار شما قرار دهیم. توابع جدید در وظایف فناورانه تحلیل متن راحت و مفید خواهند بود. در کارهای مربوط به تجزیه متنی که حاوی داده ها به صورت فرمت شده است. این ممکن است تجزیه و تحلیل برخی از فایل های دریافت شده از تجهیزات، یا، به عنوان مثال، تجزیه و تحلیل یک گزارش تکنولوژیکی باشد.

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

فرمت تابع StrTemplate()

این تابع پارامترها را در یک رشته جایگزین می کند. نیاز به چنین تبدیلی اغلب، به عنوان مثال، هنگام نمایش پیام های هشدار ایجاد می شود. سینتکس این تابع به صورت زیر است:

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

<Шаблон>رشته ای است که در آن نمایش پارامترها جایگزین می شود.

<Значение1> , ... <Значение10>- اینها پارامترهایی هستند (حداکثر - ده)، که نمایش آنها باید در رشته جایگزین شود.

برای تعیین یک مکان خاص در قالب که می خواهید جایگزینی را در آن انجام دهید، باید از نشانگرهایی به شکل %1، ... %10 استفاده کنید. تعداد نشانگرهای درگیر در الگو و تعداد پارامترهای حاوی مقادیر باید مطابقت داشته باشند.

به عنوان مثال، نتیجه اجرای چنین عملگر:

یک خط وجود خواهد داشت:

خطای داده در خط 2 (به نوع تاریخ نیاز دارد)

تابع رشته StrCompare()

این تابع دو رشته را با حروف غیر حساس مقایسه می کند. به عنوان مثال، مانند این:

می‌توانید قبل از استفاده از شی ValueComparison، همین عمل را انجام دهید:

با این حال، استفاده از تابع جدید ساده تر به نظر می رسد. و علاوه بر این، تابع، برخلاف شیء Value Compare، هم در تین کلاینت و هم در سرویس گیرنده وب کار می کند.

توابع رشته StrBeginsC()، StrEndsTo()

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

به عنوان مثال، استفاده از آنها در دستور If راحت است:

توابع کار با رشته های StrSplit(), StrJoin()

این توابع رشته را با توجه به جداکننده مشخص شده به قطعات تقسیم می کنند. یا برعکس، آنها چندین خط را در یک خط ترکیب می کنند و جداکننده انتخاب شده را بین آنها قرار می دهند. آنها برای ایجاد یا تجزیه و تحلیل سیاهههای مربوط، یک گزارش تکنولوژیکی مناسب هستند. به عنوان مثال، شما می توانید به راحتی یک ورودی لاگ فن آوری را در قطعات مناسب برای تجزیه و تحلیل بیشتر جدا کنید:

تابع کار با رشته ها StrFind()

به جای تابع Find() قدیمی، پیاده سازی کردیم ویژگی جدید، که دارای ویژگی های اضافی است:

  • جستجو در جهات مختلف (از ابتدا، از انتها)؛
  • جستجو از موقعیت مشخص شده؛
  • جستجوی یک رخداد با شماره مشخص شده (دوم، سوم و غیره).

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

در زیر نمونه ای با استفاده از قابلیت های جستجوی جدید آورده شده است. جستجوی رو به عقب زمانی مفید است که به آخرین قطعه یک رشته رسمی نیاز دارید، برای مثال، نام و نام خانوادگیفایل در URL و جستجو از یک موقعیت مشخص در مواردی که باید در یک قطعه شناخته شده جستجو کنید و نه در کل رشته کمک می کند.

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

در 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);
    پایان رویه