یافتن فاصله در خط 1c 8. توابع جدید برای کار با رشته ها. توابع تبدیل پرونده

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

مقادیر متغیرهای نوع خطدر نقل قول های دوگانه محصور شده است. متغیرهای متعدد از این نوعمی توان تا کرد

Per1 = "کلمه 1" ؛
Per2 = "کلمه 2" ؛
Per3 = Per1 + "" + Per2؛

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

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

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

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

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

حرف = نماد (1103) ؛ // من هستم

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

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

توابع تبدیل پرونده:

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

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

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

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

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

پیدا کردن ("رشته" ، "اوکا") ؛ // 4

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

تعداد 4 پدیده = StrFind ( "توان دفاعی"، "o" ، جهت جستجو. از ابتدا ، 1 ، 4) ؛ // 7

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

StrReplace ("رشته" ، "اوکا" ، "") ؛ // صفحه

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

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

تعداد حوادث ( "مطالعه ، مطالعه و مطالعه مجدد"، "مطالعه" ، "" ) ؛ // 3

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

الگوی صفحه ( "پارامتر 1 =٪ 1 ، پارامتر 2 =٪ 2", "1" , "2" ) ; // پارامتر 1 = 1 ، پارامتر 2 = 2

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

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

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

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

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

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

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

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

سایر توابع:

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

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

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

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

StrCompare ("خط اول" ، "خط دوم") ؛ // 1

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

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

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

تابع قالب بندی PpTemplate ()

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

الگوی صفحه (<Шаблон>, <Значение1-Значение10>)

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

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

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

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

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

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

عملکرد برای کار با رشته ها StrCompare ()

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

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

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

توابع کار با رشته ها RowStart With () ، RREnd With ()

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

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

توابع کار با رشته StrSplit () ، StrConnect ()

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

عملکرد برای کار با رشته StrFind ()

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

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

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

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

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

خط

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

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

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

SocrLP ، SocrL ، SocrP

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

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

لئو ، راست ، چهارشنبه

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

شیر ("متغیر رشته" ، 4) // "استرو" را برمی گرداند
راست ("متغیر رشته" ، 7) // "متغیر" را برمی گرداند
چهارشنبه ("متغیر رشته" ، 2 ، 5) // "troco" را برمی گرداند

طول خیابان

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

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

پیدا کردن

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

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

Find ("one، two، one، two، three"، "two") // تابع عدد 6 را برمی گرداند

خط خالی

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

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

VReg ، NReg ، Treg

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

Vreg ("GENERAL DIRECTOR") // مقدار برگشتی - "GENERAL DIRECTOR"
НReg ("GENERAL DIRECTOR") // مقدار بازگشت - "مدیر کل"
TREG ("GENERAL DIRECTOR") // مقدار بازگشت - "مدیر کل"

جایگزینی صفحه

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

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

StrNumberStrings

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

حلقه در مثال زیر سه دایره را پشت سر می گذارد زیرا تابع RowNumber 3 را برمی گرداند:

برای ind = 1 توسط StrNumberStrings ("String1" + Symbols.PS + "String2" + Symbols.PS + "String3") Loop
<тело цикла>
پایان چرخه ؛

StrGetString

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

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

StrNumber وقایع

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

StrNumber of Attachments ("a؛ b؛ c؛ d؛"، "؛") // تابع عدد 4 را برمی گرداند

نماد و کد نماد

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

SymbolCode ("A") // تابع عدد 1 040 را برمی گرداند
SymbolCode (1040) // عملکرد "A" را برمی گرداند

کارهای مکرر هنگام کار با سیم

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

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

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

تبدیل نوع

برای تبدیل یک نوع به یک رشته ، به عنوان مثال ، ارجاع به یک مورد فرهنگ لغت ، یک عدد و غیره ، کافی است از تابع "(()" String () "استفاده کنید. توابع مانند "اختصار ()" نیز متغیرها را به یک رشته تبدیل می کنند ، اما بلافاصله با کوتاه کردن نویسه های ناچیز.

رشته (1000) // "1000" را برمی گرداند

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

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

رشته (قالب (1000 ، "CHG =")) // "1000" را برمی گرداند

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

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

عنوان = رشته ("LLC" شاخ و سم "" - این ما هستیم! ") //" LLC "شاخ و سم" را برمی گرداند - این ما هستیم! "

خطوط متعدد ، خط شکستن

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

MultilineText = "خط اول" + نمادها. PS + "خط دوم"

نحوه حذف فاصله ها

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

StringNoSpaces = به اختصار LP ("حروف زیاد") // تابع مقدار "حروف زیاد" را برمی گرداند

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

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

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

StringNoSpaces = StrReplace ("خوش آمدید" ، "" ، "") // "سلام" را برمی گرداند

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

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

"Hello" = "سلام" // False برمی گردد
"Hello" = "Hello" // True برمی گردد
"Hello" = "Goodbye" // False برمی گردد

به قابلیت های اساسیزبان برنامه نویسی معمولاً کار با اعداد و رشته ها نامیده می شود. معمولاً این ویژگی ها در کد کامپایلر به صورت سخت کدگذاری می شوند (یا کلاس های "پایه" زبان برنامه نویسی اجرا می شوند).

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

مقدار خط 1C

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

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

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

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

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

متغیر = "سلام ،
| آرامش! "؛

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

متغیر = "سلام" + نمادها. PS + "جهان!"؛

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

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

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

متغیر = "ru =" "سلام ، جهان!" "؛ En =" "سلام ، جهان!" ""؛

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

// برای تنظیمات دو زبانه درست است
گزارش (НStr (متغیر)) ؛

لوازم جانبی با خط خط 1C

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

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

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

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

کار با سیمهای 1C

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

  • SocrLP ("باور نکردنی ، اما واقعی!")
    از خط 1C حذف می شود فضاهای اضافی... همچنین می تواند برای تبدیل هر نوع به رشته 1C (به عنوان مثال ، اعداد) استفاده شود.
  • متغیر = "Vasya" + SokrLP ("plus") + "Olya" ؛ // "Vasya plus Olya" خواهد بود
    نمونه ای از جمع بندی چندین مقدار رشته 1C. نتیجه یک خط 1C خواهد بود.
  • متغیر = لئو ("موسیقی" ، 2) ؛ // "Mu" خواهد بود
    متغیر = چهارشنبه ("موسیقی" ، 2 ، 2) ؛ // "shl" خواهد بود
    متغیر = راست ("موسیقی" ، 2) ؛ // "ka" خواهد بود
    گزینه های مختلف برای به دست آوردن یک زیر رشته از یک رشته 1C.
  • متغیر = پیدا ("موسیقی" ، "Shl") ؛ // 3 خواهد بود
    یک رشته فرعی را در رشته 1C ، با شروع از کاراکتر 1 جستجو کنید.
  • متغیر = StrLength ("موسیقی") ؛ // خواهد شد 6
    تعداد کاراکترهای خط 1C را برمی گرداند.
  • گزارش ("سلام") // در پنجره پیام در پایین پنجره 1C
    هشدار ("سلام") // پنجره بازشو
    حالت ("سلام") // در خط وضعیت در پایین سمت چپ
    .

ارسال اجسام به خط 1C

همانطور که می دانید ، رایج ترین قالب برای تبادل اطلاعات ساختار یافته در حال حاضر XML است. زوج آخرین نسخهخانم دفتر وردو Excel فایل ها را در این قالب ذخیره کنید (به ترتیب docx و xlsx ، پسوند را به zip تغییر دهید ، در بایگانی باز کنید).

بستر 1C برای تبادل داده چندین گزینه را ارائه می دهد که اصلی ترین آنها نیز XML است.

1. ساده ترین روش این است که از تابع Abstract () یا String () استفاده کنید. می توانید از تابع () REPRESENTATION () در بدنه پرس و جو استفاده کنید. نتیجه عملکرد آنها یکسان است - آنها یک نمایش رشته از هر شی 1C را برای کاربر ایجاد می کنند.

برای کتاب مرجع ، این نام آن به طور پیش فرض خواهد بود. برای یک سند - نام سند ، شماره و تاریخ.

2. هر شی 1C (با محدودیت) می تواند به XML تبدیل شود و بالعکس. فرآیند تبدیل را سریال سازی می نامند.

ViewStringXml = XMLString (مقدار) ؛ // XML را از مقدار 1C دریافت کنید
Value1C = XMLValue (نوع ("ReferenceLink.Nomenclature") ، ViewStringXml) ؛ // مقدار 1C را از رشته XML دریافت کنید ، باید نوع 1C را که باید دریافت شود مشخص کنید

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

رشته = ValueVSStringInter (ارزش 1C) ؛ // خط 1C را از مقدار 1C دریافت کنید
ValueVFile ("C: \ MyFile.txt" ، Value1C) ؛ // یک گزینه دیگر ، ما یک فایل با رشته ذخیره شده از مقدار 1C دریافت می کنیم
Value1C = ValueFromStringInternal (رشته) ؛ // برگشت از خط 1C
Value1C = ValueOfFile ("C: \ MyFile.txt") ؛ // بازگشت از پرونده

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

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

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

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

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

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

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

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

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

FormElements.ElementNameTextDocumentField.SetText (ValueString) ؛ // در اینجا ValueString متن بدست آمده است ، به عنوان مثال ، از props

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

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

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


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

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

    // در اینجا Props خاصیت اضافه شده شی 1C است
    // اینجا FormattedDocument نام فیلدی است که در فرم باید ویرایش شود
    & روی سرور

    FormattedDocument = CurrentObject.Props.Get ()؛
    پایان مراحل

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

    & روی سرور
    روش ReadingOnServer (CurrentObject)
    CurrentObject.Props = NewValueStore (FormattedDocument) ؛
    پایان مراحل