نحوه راه اندازی گوشی های هوشمند و رایانه های شخصی. پرتال اطلاعاتی
  • خانه
  • اخبار
  • فاصله های اضافی را 1 ثانیه حذف کنید. حذف فضاهای بدون شکست

فاصله های اضافی را 1 ثانیه حذف کنید. حذف فضاهای بدون شکست

پرسش‌های متداول یا پلتفرم 8 برای آدمک‌ها.

با قضاوت بر اساس انجمن های اختصاص داده شده به موضوعات 1C، برنامه نویسانی که برای اولین بار با پلتفرم 1C v 8 مواجه شده اند یا از 7.7 حرکت می کنند، اغلب سوالات مشابهی دارند. در اینجا تصمیم گرفتم به نظر من رایج ترین ها را جمع آوری کنم ...

که در:چگونه فضای موجود در عدد 12600.00 را حذف کنیم؟
در باره:درک این نکته مهم است که این کاراکتر فضا نیست که در اینجا استفاده می شود، بلکه به اصطلاح "فضای بدون شکست" است، بنابراین، به عنوان مثال، این ساختار:

StrReplace(VariableNumber," ","");

کار نخواهد کرد دو گزینه برای حل مشکل وجود دارد، یا به جای فاصله، Symbols.NPP را برای جایگزینی مشخص کنید یا از تابع Format() استفاده کنید.

StrReplace(VariableNumber, Characters.NPP,""); // گزینه 1
قالب (VariableNumber,"HG="); // گزینه دوم

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

Request=New Request("
|انتخاب کنید
| اجرای خدمات. ثبت،
| فروش خدمات.مقدار
|از
| ثبت انباشته ها پیاده سازی خدمات نحوه اجرای خدمات
| کجا
| سند پیوند ثبت کننده. فروش کالا و خدمات");

که در:چگونه می توان اسناد / کتاب های مرجع خاص را بین پیکربندی های یکسان انتقال داد؟
در باره:این را می توان با استفاده از پردازش استاندارد UploadLoadDataXML.epf که بر روی دیسک های ITS ارائه شده است انجام داد.

که در:چگونه داده ها را بین پیکربندی های مختلف (یا از 7.7 به 8) انتقال دهیم؟
در باره:بهترین گزینه، به نظر من، استفاده از پیکربندی استاندارد "تبدیل داده" است که بر روی دیسک های ITS ارائه می شود؛ همچنین چندین مقاله در مورد استفاده از این پیکربندی توضیح داده شده است.

که در:چگونه می توان یک رشته خاص را به یک فیلد نوع غیر رشته ای در یک پرس و جو اضافه کرد، به عنوان مثال، SELECT Sales of Goods and Services. Amount + "rub."؟
در باره:به هیچ وجه. تبدیل نوع در یک پرس و جو امکان پذیر نیست. برخی از افراد توسط ساخت زبان پرس و جو EXPRESS گمراه می شوند، اما فقط مقدار یک نوع ترکیبی را به یکی از انواعی که آن مقدار را تشکیل می دهند می اندازد و به هیچ وجه نوع را تبدیل نمی کند، بنابراین در این شرایط قابل اجرا نیست.

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

Request=New Request("
|انتخاب کنید
| فروش کالا و خدمات لینک
|از
| سند فروش کالا و خدمات چگونه به فروش کالا و خدمات
| کجا
| EXPRESS(SalesProductsServices.Comment AS ROW(100)) = &Comment");

که در:آیا آنالوگ تابع 7.7 CatalogIB() در v 8 وجود دارد؟
در باره:نه، از آنجایی که چنین عملکردی برای حالت عملکرد سرویس گیرنده-سرور منطقی نیست. با این حال، برای حالت فایل، می‌توانید دایرکتوری infobase را با استفاده از ساختار زیر دریافت کنید:

CatalogIB=NStr(InformationBaseConnectionString(),"File");

که در:چگونه یک گره را از یک پایگاه اطلاعاتی توزیع شده جدا کنیم؟
در باره:با استفاده از ساختار زیر:

ExchangePlans.SetMainNode (تعریف نشده)؛

یا پیکربندی را با پارامتر خط فرمان /ResetMasterNode اجرا کنید (برای نسخه های اصلی استفاده نمی شود).

که در:چگونه می توان نام سند (مشابه روش 7.7 View()) را بدست آورد؟
در باره:استفاده از ابرداده مثلا:

که در:چگونه اسناد همه نوع را در یک پرس و جو انتخاب کنیم؟
در باره:استفاده از ابرداده و توانایی ترکیب کوئری ها که در:

درخواست=درخواست جدید;
متن="";
برای هر سند از چرخه Metadata.Documents
Text=Text+"انتخاب پیوند از سند."+Document.Name+"MERGE";
چرخه پایان
Query.Text=Left(Text,StrLength(Text)-StrLength("COMBINE"));
Select=Query.Run().Select();

که در:چگونه گزارش/پردازش را قطع کنیم؟
در باره:با استفاده از عملگر UserInterrupt Handling()، توصیه می شود از آن در داخل حلقه ها استفاده کنید. هنگامی که کاربر کلید ترکیبی Ctrl+Break را فشار می دهد، اجرا قطع می شود و پیام مربوطه نمایش داده می شود. مثلا:

در حالی که حلقه () Select.Next
UserInterruptHandling();

چرخه پایان

که در:فرم دارای یک TableField با نوع ValueTree و مجموعه ویژگی Tree است. چرا درخت ارزش نمایش داده نمی شود؟
در باره:علاوه بر این، باید ویژگی Display Hierarchy را برای یکی از ستون ها تنظیم کنید.

که در:چگونه از وظایف روتین در حالت فایل پایگاه اطلاعاتی استفاده کنیم؟
در باره:برخلاف حالت کلاینت-سرور، در حالت فایل، مسئولیت راه اندازی خودکار کارهای روتین بر عهده توسعه دهنده است. برای اجرای خودکار شروع کارها، به یک Waiting Handler نیاز دارید که به طور دوره ای وظایف "سررسید" را بررسی کرده و آنها را شروع کند. توصیه می شود از یک جلسه جداگانه برای این کار استفاده کنید. مثال:

Procedure CheckTasks()
ExecuteTaskProcessing();
پایان رویه
ConnectWaitingHandler("CheckingTasks"3);

که در:چگونه یک آرایه از یک رشته محدود شده بدست آوریم؟
در باره:به عنوان مثال، من نسخه خود را از یک تابع ارائه می کنم که "در هر دو جهت" کار می کند، یعنی. هنگام ارسال یک رشته محدود، یک آرایه و هنگام ارسال یک آرایه، یک رشته محدود از آن تشکیل می دهد.

تابع StringArray (مقدار ارزش، جداکننده)
اگر TypeValue(Value)=Type("String") سپس
MnStr = StrReplace(Value, Separator, Characters.PS);
آرایه=آرایه جدید;
برای n=1 توسط چرخه StrNumber Of Rows(MnStr).
Array.Add(StrGetString(MnStr,n));
چرخه پایان
آرایه بازگشت؛
ElseIfTypeValue(Value)=Type("Array") سپس
خط = "";
برای هر عنصر از چرخه ارزش
String=String+?(String""Separator,"")+Element;
چرخه پایان
بازگشت رشته;
در غیر این صورت
بازگشت تعریف نشده؛
endIf;
EndFunction

که در:چگونه می توان امکان ایجاد تغییرات در پیکربندی را در یک پیکربندی استاندارد فعال کرد؟
در باره:از آنجایی که پیکربندی های استاندارد پشتیبانی می شوند (که امکان به روز رسانی خودکار را فراهم می کند)، به طور پیش فرض، امکان ایجاد تغییرات در پیکربندی غیرفعال است. برای فعال کردن این ویژگی، باید آیتم منو "Configuration > Support > Support Settings" را در پیکربندی انتخاب کنید و در پنجره باز شده، روی دکمه "Enable the ability to change" کلیک کنید.

که در:چگونه یک رمز عبور پردازش/پیکربندی تنظیم کنیم؟
در باره:در 1C v 8، رمزهای عبور را فقط می توان برای ماژول های شی تنظیم کرد. برای تنظیم رمز عبور، باید ماژول شی را باز کنید و آیتم منو "Text > Set password" را انتخاب کنید. همچنین امکان ارائه پیکربندی بدون کد منبع ماژول‌های شی وجود دارد (پیکربندی شده در «پیکربندی > تحویل پیکربندی > تنظیمات تحویل»). من می خواهم توجه داشته باشم که در حال حاضر، هیچ یک از این روش ها محافظت قابل اعتمادی در برابر مشاهده متن منبع ماژول نیست.

که در:چرا یک سند را با استفاده از روش FindByNumber جستجو نمی کنید(<Номер документа>)?
در باره:باید به خاطر داشت که اگر شماره گذاری دوره ای برای این نوع سند در پیکربندی تنظیم شده باشد، علاوه بر شماره سند، باید تاریخ فاصله را نیز به عنوان پارامتر دوم مشخص کنید. در غیر این صورت جستجو برای سندی با تاریخ خالی انجام می شود که بدیهی است به نتیجه دلخواه منتهی نخواهد شد.

که در:در 1C 8.1، اگر برای رفع اشکال نیاز به اتصال به یک برنامه از قبل در حال اجرا دارید (Configurator > Debugging > Connection)، موارد اشکال زدایی موجود خالی هستند. دلیل ش چیه؟
در باره:نکته این است که برای برنامه ای که می خواهیم اشکال زدایی کنیم، باید به صراحت اجازه اشکال زدایی را بدهیم. منوی ابزار > گزینه ها > برگه سیستم > پرچم "اشکال زدایی فعال شد".

که در:چگونه می توان تکرار را روی ردیف های یک لیست پویا (مثلاً فهرست فهرست یا فهرست اسناد) سازماندهی کرد؟
در باره:این را می توان با استفاده از Report Builder انجام داد، برای مثال:

سازنده=NewReportBuilder;
Builder.DataSource=NewDataSourceDescription(DocumentList);
Selection=Builder.Result.Select();
در حالی که حلقه () Select.Next
گزارش (انتخاب. پیوند);
چرخه پایان

توجه: انتخاب شامل ردیف هایی مطابق با انتخاب فعلی انتخاب شده خواهد بود.

که در:چگونه مقادیر ویژگی اشیاء ابرداده را بررسی کنیم؟ مثلا نوع سلسله مراتب دایرکتوری یا حالت ضبط رجیستر یا فراوانی شماره سند؟
در باره:همه این ویژگی ها ویژگی های قابل شمارش اشیاء ابرداده هستند. همچنین می توانید مقادیری از این نوع را از طریق ابرداده دریافت کنید. مثال ها:

// مثال 1. نوع سلسله مراتب دایرکتوری
If Metadata.Directories[Directory Name].Hierarchy View = Metadata.Properties Object.Hierarchy View.Hierarchy of Groups and Elements then...
// مثال 2. RegisterRecord Mode
اگر Metadata.InformationRegisters[RegisterName].RegisterRecordMode = Metadata.ObjectProperties.RegisterRecordMode.Submission toRegistrar سپس...
// مثال 3. تناوب بودن شماره سند
اگر Metadata.Documents[DocumentName].PeriodicityNumbers = Metadata.ObjectProperties.PeriodicityDocumentNumbers.Non-Periodic سپس...

که در:چگونه یک چک باکس با سه حالت در درخت ارزش پیاده سازی کنیم؟
در باره:اجازه دهید فرمول مسئله را با جزئیات بیشتری در نظر بگیریم. فرم دارای یک فیلد جدول است که منبع داده آن درخت مقدار است. در یکی از ستون ها یک عنصر کنترلی "Checkbox" وجود دارد. لازم است که بتواند سه حالت "روشن"، "خاموش" و "تعریف نشده" را بپذیرد. در این مورد، ایالت "تعریف نشده" یا به اصطلاح "پرچم خاکستری" است، یعنی. اگر همه سطرهای فرعی دارای وضعیت چک باکس یکسان نباشند، قسمتی انتخاب شده تنظیم می شود. همچنین، اگر یک ردیف دارای ردیف‌های فرعی باشد، وقتی پرچم آن تغییر می‌کند، پرچم‌های تمام ردیف‌های فرعی نیز باید تغییر کند.
ابتدا، بیایید ستون چک باکس خود را به درخت ارزش اضافه کنیم:

Tree.Columns.Add("Mark", New TypeDescription("Number"));
FormElements.Tree.CreateColumns();
TreeColumns=FormElements.Tree.Columns;
TreeColumns.Mark.FlagData="Mark";
TreeColumns.Mark.SetControlElement(Type("Checkbox"));
Tree Columns.Mark.EditMode=EditModeColumns.مستقیم
کاملا؛
TreeColumns.Mark.ThreeStatesFlag=True;

در مرحله دوم، هنگام تغییر یک چک باکس، باید مقادیر مربوطه را در ردیف های فرعی تنظیم کنید و مقدار چک باکس را در "ردیف والد" کنترل کنید:

Procedure TreeWhenChangingFlag (عنصر، ستون)
CurrentRow=Element.CurrentRow;
اگر CurrentLine.Mark=2 سپس
CurrentLine.Mark=0;
endIf;
SettingFlags (CurrentRow، CurrentRow.Mark)؛
در حالی که CurrentRow.Parent Loop Undefined
CurrentRow.Parent.Mark=?(SetForAll(CurrentRow),CurrentRow.Mark, 2);
CurrentRow = CurrentRow.Parent;
چرخه پایان
پایان رویه

در اینجا، روال SetFlags() به صورت بازگشتی چک باکس ها را در ردیف های فرعی تنظیم می کند:

پرچم‌های تنظیم رویه (CurrentRow، Value)
برای هر صفحه از چرخه CurrentRow.Rows
PageMark=Value;
SetChecks (Page,PageMark)؛
چرخه پایان
پایان رویه

و تابع SetForAll() بررسی می کند که آیا یک مقدار برای همه ردیف ها در سطح فعلی تنظیم شده است یا خیر:

تابع SetForAll (رشته)
برای هر صفحه از چرخه Row.Parent.Rows
اگر Page.MarkLine.Mark Then
بازگشت نادرست؛
endIf;
چرخه پایان
بازگشت درست؛
EndFunction

که در:چگونه می توانم مرتب سازی بر اساس ویژگی های خودم را در فرم لیست پیاده کنم؟
در باره:اگر مشخصه از نوع اولیه باشد، کافی است ویژگی ویژگی “Index” را روی مقدار “Index” یا “Index with extra” قرار دهیم. سفارش" (برای ویژگی های نوع ذخیره ارزش در دسترس نیست). اگر مشخصه یک نوع مرجع باشد، لازم است به صراحت امکان مرتب سازی برای آن فراهم شود. مثلا:

Element UP=Form Elements.DirectoryList.Order Settings.Find("Props1");
اگر عنصر UP تعریف نشده باشد سپس
ElementUP.Availability=True;
endIf;

اغلب اتفاق می افتد که هنگام بارگیری و تخلیه داده ها از 1C 8.2 و 8.3، فضاهایی در اعداد وجود دارد که در پردازش عادی داده ها اختلال ایجاد می کند. راه حل این مشکل بسیار ساده است.

بیایید ببینیم چه نوع فضاهایی وجود دارد.

فضاها می توانند دو نوع باشند:

  • فضای بدون شکست؛
  • فضای "منظم"

حذف فضاهای بدون شکست

StringRepresentation = String(Number); // سیستم "10000" را روی متغیر خواهد نوشت

حذف چنین فضاهایی در 1C با استفاده از تابع قالب شماره بسیار آسان است:

شماره = قالب (10000، "NH =")؛

StringRepresentation = String(Number); // سیستم به متغیر "10000" می نویسد

ما گروه بندی در رشته قالب را روی مقدار خالی قرار می دهیم (همچنین می توانید "0" بنویسید).

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

StringRepresentation = StrReplace(String(StringRepresentation), Characters.NPP, ""); // در متغیر StringRepresentation "10000" بود، اکنون "10000" است

یعنی به سادگی فضای بدون شکست (Characters.NPP) در خط را با یک مقدار خالی جایگزین کردیم.

فضاهای منظم

برداشتن یک فضای منظم در یک خط به آسانی پوست انداختن گلابی است. کافی است عملکرد زیر را انجام دهید:

StringRepresentation = StrReplace(String(StringRepresentation)، " "، ""); // "10000"، تبدیل به "10000" شد

مثال مشابه روش قبلی است. با این حال، به جای Characters.NPP، از یک رشته با یک فاصله استفاده می کنیم.

اگر شروع به یادگیری برنامه نویسی 1C کرده اید، دوره رایگان ما را توصیه می کنیم (فراموش نکنید مشترک شدن در یوتیوب - ویدیوهای جدید به طور منظم منتشر می شوند).

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

خط

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

رشته (نادرست) // "نه" را برمی گرداند
String(12345) // "12,345" را برمی گرداند
رشته (تاریخ فعلی()) //"07/21/2017 11:55:36"

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

SokrLP، SokrL، SokrP

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

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

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

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

Lev("متغیر رشته"، 4) // "Str" را برمی گرداند
Right("String variable", 7) // "variable" را برمی گرداند
Medium("String variable", 2, 5) // "troko" را برمی گرداند

StrLength

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

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

پیدا کردن

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

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

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

خط خالی

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

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

VReg، NReg، TReg

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

Vreg("مدیر کل") // مقدار بازگشتی - "مدیر کل"
NReg ("مدیرعامل") // مقدار بازگشتی - "مدیر عامل"
TREG ("مدیرعامل") // مقدار بازگشتی - "مدیر کل"

PageReplace

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

StrReplace("قرمز، سفید، زرد"، "،"، ";") // "قرمز; سفید؛ رنگ زرد"

StrNumberLines

این تابع به شما امکان می دهد تعداد خطوطی را که با برگرداندن حامل در یک متغیر متنی جدا شده اند، تعیین کنید.

حلقه در مثال زیر از سه دور عبور می کند زیرا تابع LineNumberRow مقدار 3 را برمی گرداند:

برای ind = 1 توسط StrNumber of strings ("Line1" + Symbols.PS + "Line2" + Symbols.PS + "Line3") چرخه
<тело цикла>
چرخه پایان

StrGetString

این تابع با متن چند خطی به همان روش قبلی کار می کند. این به شما امکان می دهد یک رشته خاص را از یک متغیر متنی دریافت کنید.

StrGetString("String1" + Characters.PS + "String2" + Characters.PS + "String3"، 2) // برگرداندن "String2"

Page NumberOccurrences

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

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

نماد و کد نماد

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

تابع SymbolCode("A") // عدد 1040 را برمی گرداند
CharacterCode(1040) // تابع "A" را برمی گرداند

وظایف رایج هنگام کار با رشته ها

رشته های به هم پیوسته

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

"خط 1" + "خط 2" //نتیجه افزودن دو خط "خط 1 خط 2" خواهد بود.

تبدیل نوع

برای تبدیل یک نوع به رشته، به عنوان مثال، پیوند به یک عنصر دایرکتوری، یک عدد و غیره، کافی است از تابع "String()" استفاده کنید. توابعی مانند ScrLP() نیز متغیرها را به یک رشته تبدیل می‌کند، اما بلافاصله با قطع کردن کاراکترهای ناچیز.

String(1000) // "1000" را برمی گرداند

لطفاً توجه داشته باشید که هنگام تبدیل یک عدد به رشته، برنامه به طور خودکار فاصله ای را اضافه می کند که هزار را از هم جدا می کند. برای جلوگیری از این امر، می توانید از ساختارهای زیر استفاده کنید:

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

String(Format(1000,"HG=")) // "1000" را برمی گرداند

نقل قول در یک رشته

اغلب شما باید با نیاز به تعیین علامت نقل قول در یک متغیر رشته مقابله کنید. این می تواند متن درخواست نوشته شده در پیکربندی یا فقط یک متغیر باشد. برای حل این مشکل، فقط باید دو علامت نقل قول قرار دهید.

Header = String ("Horns and Hooves LLC - این ما هستیم!") // "Horns and Hooves LLC - این ما هستیم!"

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

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

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

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

برای حذف فضاهای سمت راست یا چپ، می‌توانید از تابع ScrAP() (و همچنین ScrL() و ScrP()) استفاده کنید:

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

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

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

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

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

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

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

"Hello" = "Hello" // False را برمی‌گرداند
"Hello" = "Hello" // True را برمی گرداند
"Hello" = "Goodbye" // False را برمی گرداند

ردیف‌های 1C 8.3 در زبان داخلی 1C مقادیری از نوع اولیه را نشان می‌دهند. خط. مقادیر این نوع شامل یک رشته یونیکد با طول دلخواه است. متغیرهای نوع رشته مجموعه ای از کاراکترهای محصور در گیومه هستند.

مثال 1. بیایید یک متغیر رشته ای با متن ایجاد کنیم.

StringVariable = "سلام دنیا!";

توابع کار با رشته ها در 1s 8.3

این بخش توابع اصلی را ارائه می دهد که به شما امکان می دهد خطوط را در 1c تغییر دهید یا اطلاعات موجود در آنها را تجزیه و تحلیل کنید.

StrLength

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

مثال 2. بیایید تعداد کاراکترهای خط "سلام دنیا!"

String = "سلام دنیا!"; NumberofCharacters = StrLength(String); گزارش (تعداد کاراکترها)؛

نتیجه اجرای این کد نمایش تعداد کاراکترهای خط: 11 خواهد بود.

AbbrL

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

  • فضا؛
  • فضای بدون شکست؛
  • جدول بندی
  • برگشت محموله؛
  • ترجمه خطی؛
  • ترجمه فرم (صفحه).

مثال 3. تمام فاصله ها را از سمت چپ خط "world!" و خط "Hello" را به آن اضافه کنید.

String = مخفف ("جهان!"); String = "سلام" + رشته; گزارش (رشته)؛

نتیجه اجرای این کد، نمایش خط “Hello world!” بر روی صفحه نمایش خواهد بود.

به اختصار

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

مثال 4. از خطوط "سلام" و "صلح!" عبارت "سلام دنیا!"

Line = مخفف ("Hello")+" "+ Abbreviation(" world!"); گزارش (رشته)؛

AbbrLP

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

مثال 5. نویسه های بی اهمیت در سمت چپ و راست به نام طرف مقابل را حذف کنید.

Counterparty = دایرکتوری ها Counterparties.Find By Details("TIN", "0777121211"); AccountObject = Account.GetObject(); CounterpartyObject.Name = AbbrLP(CounterpartyObject.Name); AccountObject.Write();

یک شیر

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

مثال 6. اجازه دهید در ساختار کارمندشامل نام اول، نام خانوادگی و نام خانوادگی کارمند باشد. یک رشته با نام خانوادگی و حروف اول دریافت کنید.

NameInitial = Lev(Employee.Name, 1); نام اصلی = Leo(Employee. Patronymic, 1); FullName = Employee.LastName + " " + FirstName Initial + "." + ابتدایی میانی + ".";

درست

درست(<Строка>, <ЧислоСимволов>) . آخرین کاراکترهای یک رشته، تعداد کاراکترهای مشخص شده در پارامتر را دریافت می کند تعداد کاراکترهااگر تعداد کاراکترهای مشخص شده از طول رشته بیشتر شود، کل رشته برگردانده می شود.

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

String = "تاریخ فعلی: 20170910"; StringDate = حقوق (رشته، 8); تاریخ = تاریخ (StringDate);

چهار شنبه

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

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

رشته = "منطقه: 99 مسکو"; منطقه = میانگین (رشته، 9، 2);

PageFind

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

  • خط. رشته منبع؛
  • جستجوی رشته فرعی. جستجوی زیر رشته؛
  • جهت جستجو. جهت جستجوی رشته فرعی در رشته را مشخص می کند. می تواند مقادیر را بگیرد:
    • جستجو Direction.From Start;
    • جستجو. پایان جهت;
  • موقعیت اولیه. موقعیتی را در رشته ای که جستجو در آن آغاز می شود مشخص می کند.
  • NumberOccurrences. تعداد وقوع رشته فرعی جستجو شده در رشته منبع را مشخص می کند.

مثال 9. در خط "سلام دنیا!" موقعیت آخرین وقوع کاراکتر "و" را تعیین کنید.

PositionNumber = StrFind("سلام دنیا!"، "و" SearchDirection.End); گزارش (شماره موقعیت)؛

نتیجه اجرای این کد نمایش عدد آخرین وقوع علامت “و” 9 خواهد بود.

VReg

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

مثال 10: رشته "Hello world!" به حروف بزرگ

StringVreg = VReg("سلام دنیا!"); گزارش (StringVreg)؛

نتیجه اجرای این کد، نمایش خط HELLO WORLD خواهد بود.

NReg

NReg(<Строка>) . تمام کاراکترهای رشته مشخص شده در 1s 8 را به حروف کوچک تبدیل می کند.

مثال 11: رشته "HELLO WORLD!" به حروف کوچک

StringNreg = NReg("HELLO WORLD!"); گزارش (StringVreg)؛

نتیجه اجرای این کد نمایش خط "سلام دنیا!"

Treg

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

مثال 12: حروف اول کلمات در خط "سلام دنیا!"

StringTreg = Treg ("سلام دنیا!"); گزارش (StringTreg)؛

نتیجه اجرای این کد نمایش خط “Hello World!” خواهد بود.

سمبل

سمبل(<КодСимвола>) . با کد یونیکد خود یک کاراکتر دریافت می کند.

مثال 13. چپ و راست را به خط "Hello World!" اضافه کنید. نماد ★

StringWithStars = Symbol("9733")+"Hello World!"+Symbol("9733"); گزارش (StringWithStars)؛

نتیجه اجرای این کد نمایش خط ★Hello World!★ خواهد بود.

کد نماد

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

مثال 14. کد آخرین کاراکتر در خط "Hello World!" را پیدا کنید.

String = "سلام جهان!"; CharacterCode = CharacterCode(String, StrLength(String)); اطلاع رسانی (شخصیت کد)؛

نتیجه اجرای این کد نمایش رمز نماد “!” خواهد بود. - 33.

خط خالی

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

مثال 15. بررسی کنید که آیا رشته ای متشکل از سه فاصله خالی است یا خیر.

Empty = EmptyString(" "); گزارش (خالی)؛

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

PageReplace

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

مثال 16. در خط "سلام جهان!" کلمه "صلح" را با کلمه "دوستان" جایگزین کنید.

String = StrReplace("Hello World!"، "World"، "Friends"); گزارش (رشته)؛

نتیجه اجرای این کد نمایش خط "سلام دوستان!"

StrNumberLines

StrNumberRow(<Строка>) . به شما امکان می دهد تعداد خطوط یک رشته چند خطی را بشمارید. برای رفتن به یک خط جدید در 1s 8، از نماد استفاده کنید PS(شخصیت خط جدید).

مثال 17. تعداد خطوط متن را تعیین کنید:
"خط اول
خط دوم
خط سوم"

Number = StrNumberString("First line"+Characters.PS +"Second line"+Symbols.PS +"Third line"); شماره گزارش)؛

نتیجه اجرای این کد نمایش تعداد خطوط متن خواهد بود: 3

StrGetString

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

مثال 18. آخرین خط متن را دریافت کنید:
"خط اول
خط دوم
خط سوم"

متن = "خط اول" + نمادها. PS + "خط دوم" + نمادها. PS + "خط سوم"; LastRow = StrGetRow(Text, StrNumberLines(Text)); گزارش (آخرین خط)؛

نتیجه اجرای این کد نمایش خط "خط سوم" خواهد بود.

Page NumberOccurrences

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

مثال 19. تعیین کنید که چند بار حرف "c" در خط "خطوط در 1s 8.3 و 8.2" ظاهر می شود، صرف نظر از حروف آن.

Line = "خطوط در 1s 8.3 و 8.2"; NumberOccurrences = StrNumberOccurrences(Vreg(String)، "C"); گزارش (NumberOccurrences);

نتیجه اجرای این کد نمایش تعداد رخدادها خواهد بود: 2.

PageStartsWith

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;

PageSplit

StrDivide(<Строка>, <Разделитель>, <ВключатьПустые>) . یک رشته را با استفاده از کاراکترهای جداکننده مشخص شده به قطعات تقسیم می کند و رشته های حاصل را در یک آرایه می نویسد. پارامتر اول رشته منبع را ذخیره می کند، پارامتر دوم شامل رشته حاوی جداکننده است، و پارامتر سوم نشان می دهد که آیا رشته های خالی باید در آرایه نوشته شوند (به طور پیش فرض درست است، واقعی).

مثال 22. اجازه دهید یک رشته حاوی اعدادی داشته باشیم که با علامت ";" از هم جدا شده اند، آرایه ای از اعداد را از رشته بدست آوریم.

رشته = "1; 2; 3"; آرایه = StrDivide(String, ";"); برای تعداد = 0 توسط Array.Quantity() - 1 Cycle Attempt Array[Count] = Number(AbbrLP(Array[Count])); آرایه استثنایی[Sch] = 0; EndAttemptsEndCycle;

در نتیجه اجرا، آرایه ای با اعداد از 1 تا 3 به دست می آید.

PageConnect

StrConnect(<Строки>, <Разделитель>) . آرایه رشته ها را از پارامتر اول به رشته ای تبدیل می کند که شامل تمام عناصر آرایه است که توسط جداکننده مشخص شده در پارامتر دوم از هم جدا شده اند.

مثال 23. با استفاده از آرایه اعداد مثال قبلی، رشته اصلی را بدست آورید.

برای حساب = 0 توسط Array.Quantity() - 1 Cycle Array[Act] = String(Array[Act]); چرخه پایان Row = StrConnect(Array, ";");

بهترین مقالات در این زمینه