توابع کار با رشته ها 1s 8. توابع جدید برای کار با رشته ها

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

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

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

"Name:" + Counterparties ستون 1 FROM Counterparties

تابع زیر رشته

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

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

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

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

تابع مشابه

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

نام طرفین AS ستون 1 از دایرکتوری طرفین به عنوان طرفین.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

توابع کار با رشته های StrStartsWith()، StrEndsAt()

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

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

توابع کار با رشته های StrDivide(), StrConnect()

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

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

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

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

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

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

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

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

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

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

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

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

اگر کد کاراکتر را در یونیکد می دانید، می توانید یک رشته را وارد کنید:

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

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

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

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

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

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

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

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

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

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

یافتن ("رشته"، "oka") ; // 4

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

Number4 Occurrences = Str Find ( "تدافعی", "درباره" ,جهت جستجو. از شروع، 1، 4)؛ // 7

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

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

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

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

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

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

StrTemplate ( "پارامتر 1 = %1، پارامتر 2 = %2", "1" , "2" ) ; // پارامتر 1= 1، پارامتر 2 = 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

در داخل تابع handler که 1C در هنگام اختصاص داده شدن ایجاد می کند، چند کد ساده می نویسیم:

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

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

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

در مورد رمزگذاری فایل. اگر یک شی TextReading() بدون پارامتری که رمزگذاری را نشان می دهد ایجاد کنید، 1C سعی می کند به طور مستقل رمزگذاری را تعیین کند (با امضای Byte Order Mark - BOM، یا رمزگذاری ANSI آن را در نظر می گیرد).

شما می توانید رمزگذاری مورد نظر را مستقیماً مشخص کنید، به عنوان مثال:
فایل = متن خوانده شده جدید (نام فایل، "UTF-8"); // نام رمزگذاری مورد نظر را جایگزین کنید

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

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

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

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

مقدار خط 1C

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

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

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

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

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

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

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

متغیر = "سلام" + Symbols.PS + "صلح!";

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

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

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

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

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

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

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

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

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

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

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

کار با رشته های 1C

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

  • AbbrLP ("باورنکردنی، اما واقعی!")
    فضاهای اضافی را از خط 1C حذف می کند. همچنین می تواند برای تبدیل هر نوع به رشته 1C (مثلاً اعداد) استفاده شود.
  • متغیر = "Vasya" + AbbrLP(" plus") + "Olya"; // "Vasya plus Olya" وجود خواهد داشت
    مثالی از جمع چند مقدار رشته 1C. نتیجه یک خط 1C خواهد بود.
  • متغیر = Lev("موسیقی"، 2); // "مو" خواهد بود
    متغیر = متوسط ​​("موسیقی"، 2، 2); // "تهدید" وجود خواهد داشت
    متغیر = حقوق ("موسیقی"، 2); // "کا" وجود خواهد داشت
    گزینه های مختلف برای به دست آوردن یک رشته فرعی از یک رشته 1C.
  • متغیر = Find("Music", "zy"); //3 وجود خواهد داشت
    یک زیر رشته را در رشته 1C جستجو کنید که با کاراکتر 1 شروع می شود.
  • متغیر = StrLength ("موسیقی")؛ //6 وجود خواهد داشت
    تعداد کاراکترهای خط 1C را برمی‌گرداند.
  • گزارش ("سلام") // در پنجره پیام در پایین پنجره 1C
    هشدار ("سلام") //گفتگوی بازشو
    وضعیت ("سلام") //در خط نمایش وضعیت در پایین سمت چپ
    .

آوردن اشیاء به خط 1C

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

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

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

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

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

StringViewXml = XMLString(Value); //XML را از مقدار 1C دریافت کنید
Value1C = XMLValue(Type("DirectoryLink.Nomenclature"),TypeStringXml); //مقدار 1C را از رشته XML دریافت کنید، باید نوع 1C را که باید دریافت شود مشخص کنید.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

    &روی سرور
    رویه هنگام ReadingOnServer (CurrentObject)
    CurrentObject.Props = NewValueStorage(FormattedDocument);
    پایان رویه