نحوه راه اندازی گوشی های هوشمند و رایانه های شخصی. پرتال اطلاعاتی
  • خانه
  • جالب هست
  • سوئیچ 1s 8 روی یک فرم کنترل شده. دکمه های رادیویی، برنامه معمولی، فرم های مدیریت شده

سوئیچ 1s 8 روی یک فرم کنترل شده. دکمه های رادیویی، برنامه معمولی، فرم های مدیریت شده

1. فیلد ورودی
2. چک باکس
3. سوئیچ

فیلد ورودی

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

انتخاب از یک لیست (حالت انتخاب لیست)

انتخاب از فرم دیگری (دکمه انتخاب)

دکمه های کنترل

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

روش pvانتخاب مقررات نامگذاری (عنصر، جهت، پردازش استاندارد)
//داده ها را برای فیلد ورودی انتخاب کنید
// در این مورد، دایرکتوری Nomenclature
درخواست = درخواست جدید;
Request.Text=
"انتخاب کنید
| نامگذاری.پیوند به عنوان محصول
|از
| Directory.Nomenclature AS Nomenclature
|سفارش توسط
| نامگذاری.کد";
TZNomenclature = Request.Run().Upload();

//به دنبال عنصر دایرکتوری فعلی مشخص شده در قسمت ورودی بگردید
CurrentElement = TZNomenclature.Find(Element.value);

اگر TechElement = تعریف نشده سپس
// اگر عنصر پیدا نشد، شماره شاخص را تنظیم کنید
// خارج از جدول مقدار، زیرا اولین عنصر در
// جدول مقدار دارای شاخص 0 است
TechIndex = -1;
در غیر این صورت
// اگر عنصر پیدا شود، شاخص آن را دریافت می کنیم
TechIndex = TZNomenclature.Index(TechElement);
endIf;

// بسته به فشار دکمه یک شاخص جدید محاسبه کنید
// منهای جلوی متغیر جهت قرار می گیرد به طوری که وقتی
// با کلیک بر روی فلش بالا عنصر بالای آن را نشان می دهد
// و بنابراین با یک شاخص کوچکتر
NewIndex = TechIndex-Direction;

// تعداد عناصر موجود در دایرکتوری را بدست آورید
// یک را کم کنید زیرا همه مجموعه ها در 8.1 از 0 شروع می شوند
Number ofElements = TZNomenclature.Quantity()-1;

اگر NovIndex< 0 Или НовИндекс >سپس تعداد عناصر
// اگر هنگام تغییر ایندکس خارج از جدول مقدار باشد
// یعنی تعداد آن بزرگتر از بزرگترین شاخص یا کمتر از 0 است
// مقدار را تغییر ندهید و به کاربر اطلاع دهید
Notify ("شما به محدودیت دایرکتوری رسیده اید");
در غیر این صورت
// یک مقدار جدید اختصاص دهید، "محصول" نام ستون جدول مقدار است
Element.value = TZNomenclature.Get(NewIndex).Product;
endIf;

پایان رویه

چک باکس

در اکثر برنامه ها، یک چک باکس برای نمایش دو حالت استفاده می شود: علامت زده شده، علامت زده نشده است. در 1c، چک باکس دارای سه حالت است؛ در حالت سوم، چک باکس به صورت علامت دار و در عین حال سایه دار نمایش داده می شود. این سه حالت فقط در صورتی در دسترس هستند که داده های چک باکس یک عدد باشد و حالت ها معانی زیر را دارند:

تعویض

سوئیچ برای انتخاب یک مقدار از تعداد کمی از موارد ممکن (ترجیحاً بیش از پنج مورد) استفاده می شود و مقادیر را نمی توان ترکیب کرد. به عنوان مثال: مناسب برای انتخاب جنسیت یک فرد. مثال دیگر: فرض کنید یک شرکت یکی از 3 تخفیف را روی یک محصول می دهد، و تخفیف ها با هم جمع نمی شوند:

در این مورد، راحتی استفاده از دکمه‌های رادیویی ممکن است در این واقعیت باشد که هر یک از آنها می‌توانند مقداری داشته باشند که در ویژگی "مقدار انتخابی" تنظیم شده است. و سپس "5% تخفیف" می تواند مقدار 5 یا 0.05 را ذخیره کند.

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

      سوئیچ اول باید دارای ویژگی "FirstInGroup" باشد (در این مثال، سوئیچ "5٪ تخفیف" است).

      سوئیچ هایی که به طور معنی داری به یک گروه مربوط می شوند باید هنگام تنظیم ترتیب پیمایش بدون وقفه توسط سایر عناصر فرم پشت سر هم قرار گیرند. ترتیب پیمایش از منوی "فرم -> تنظیم ترتیب پیمایش" تنظیم می شود، برای این مثال به این صورت است:

  1. نوع مقدار انتخاب شده برای سوئیچ دارای ویژگی "FirstInGroup" تنظیم می شود.

یک فریم گروهی را به فرم اضافه کنید و از طریق آیتم منو Form -> Insert control... روی آن سوئیچ ها قرار دهید و سوئیچ ها را در پنجره باز شده انتخاب کنید:

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

پس از اینکه سوئیچ ها را اضافه کردیم، نوع داده را برای اولین مقدار "سهام" انتخاب می کنیم، در مورد ما مقدار "نوع اوراق بهادار" را اختصاص می دهیم:

و خود مقدار سوئیچ وارد Data -> Selected value می شود. برای سهام این 0، اوراق قرضه - 1، صورتحساب - 2 و واحد - 3 است. اما قبل از وارد کردن این داده ها، باید ترتیب را بررسی کنید.

اگر سوئیچ ها مرتب نباشند، سوئیچ انجام نمی شود، یعنی نمی توانیم مقدار پیوند را انتخاب کنیم. برای فعال کردن این ویژگی، باید منوی Form -> Setting traversal order را انتخاب کنید و همه سوئیچ ها را به ترتیب قرار دهید.

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

تنها چیزی که باقی می ماند این است که کد برنامه را در رویداد سوئیچ "عمل" "در تغییر" بنویسید:

اگر نوع CB = 0 سپس

در غیر این صورتIfCBType = 1 سپس

ThisForm.FormElements.Receipt.Columns.NCD.Availability = 1; // فقط برای اوراق قرضه به NKD اجازه می دهیم

در غیر این صورتIfCBType = 2 سپس

ThisForm.FormElements.Receipt.Columns.NCD.Availability = 0;

در غیر این صورتIfCBType = 3 سپس

ThisForm.FormElements.Receipt.Columns.NCD.Availability = 0;

endIf;

اکنون، هنگامی که سوئیچ "باند" را انتخاب می کنید، می توانید مقدار ستون دارایی را ویرایش کنید.

من بسیاری از انجمن ها را خواندم و در هیچ کجا توصیف قابل فهمی از کار با "Switch" ندیدم. بنابراین تصمیم گرفتم خودم آن را بنویسم.

به نظر من، رایج ترین اشتباه، تصور نادرست در مورد "سوئیچ" است. هنگامی که چندین "سوئیچ"، به عنوان مثال 3، را روی یک فرم قرار می دهید، بسیاری از مردم بر این باورند که در منطق برنامه، اینها 3 شی مختلف هستند که بر یکدیگر تأثیر می گذارند. اما، در واقع، برنامه هر 3 "سوئیچ" را به عنوان یک شی درک می کند. و انتخاب یکی از آنها وضعیت این شی را تغییر می دهد. بیایید به یک مثال نگاه کنیم.

1. سه دکمه رادیویی روی فرم ایجاد کنید. برای راحتی، ما نام ها را تغییر نمی دهیم.
2. Switch1 را برجسته کنید. در ویژگی های آن، در بخش "BASIC"، اولین کادر گروه را علامت بزنید. "VALUE TYPE" یک عدد را انتخاب کنید. (در ادامه به دلیل این عدد می پردازیم). طول را می توان روی یک تنظیم کرد، اما این کارکرد خاصی را ارائه نمی دهد.
3. در ستون SELECTED VALUE گزینه Switch2 را انتخاب کرده و 1 را قرار دهید.
4. در ستون SELECTED VALUE گزینه Switch3 را انتخاب کرده و 2 را قرار دهید.
اساساً، با اقدامات 3 و 4، پرچمی را تنظیم می کنید که با انتخاب "Switch" مربوطه تغییر می کند. در "Switch1" "مقدار انتخابی" پیش‌فرض صفر است.
5. بررسی کنید که آیا سوئیچ ها به ترتیب "WALKING ORDER" هستند یا خیر. (به عنوان مثال: 13،14،15)(شکل 1). یک ترتیب پیمایش مداوم توسط سوئیچ مورد نیاز است. دستور دور زدن خودکار فعال است (موقعیت‌ها با شماره‌های 13، 15، 20 شماره‌گذاری شده‌اند) (شکل 2) در این حالت، سوئیچ‌های زیر هم کار نمی‌کنند. شما باید استفاده از سفارش خودکار را از فرم حذف کنید و اگر لازم است، به صورت دستی سفارش را مشخص کنید.

نحوه تنظیم ترتیب پیمایش برای جزئیات.در حالی که در فرم، در منوی "Dialog"، باید علامت کادر "Automatic traversal order" را بردارید. پس از این، می توانید از "Dialog" -> "Setting the traversal order" یا "Dialog" -> "Travel order" استفاده کنید. روش دوم به نظر من راحت ترین است. با این روش برای هر پروپ تصویری با شماره پایه ظاهر می شود. تنها کاری که باید انجام دهید این است که روی اعداد کلیک کنید و جزئیات را به ترتیب مورد نیاز خود انتخاب کنید.

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

6. "Switch1" را انتخاب کنید و رویه مورد نیاز خود را برای آن بنویسید.
مثلا:

EF=FormElements; اگر Switch1=0 سپس EF.Payment Status.Value = "Paid"; در غیر این صورتIf Switch1=1 سپس EF.Payment Status.Value = "جزئی پرداخت شده"; در غیر این صورتIf Switch1=2 سپس EF.Payment Status.Value = "Paid"; endIf;

7. F7 را فشار دهید. F5 را فشار دهید. بیایید ببینیم همه چیز کار می کند، ما عالی هستیم. و رئیس بزرگ به ما جایزه می دهد.

توضیح در مورد کد

چرا همه جا "Switch1" وجود دارد؟ از آنجایی که قبلاً گفته شد، برنامه هر سه عنصر را به عنوان یکی درک می کند و از آنجایی که "Switch1" اولین عنصر در گروه است، برنامه آن را به عنوان کل عنصر درک می کند. اگر "Switch2" را به عنوان عنصر اصلی در گروه قرار دهید. ، سپس بررسی صحت باید مطابق "Switch2" انجام شود.
خوب، "0"، "1"، "2" از کجا می آید؟ در پاراگراف 3 و 4 مقادیری را تنظیم می کنیم که شی هنگام تعویض "Switches" دریافت می کند.

پس کلمه:

این کد به عنوان نمونه کار با سوئیچ ها آورده شده است. به نظر من این واضح تر و قابل درک تر است. اما شایان ذکر است که در "Value Type" می توانید بلافاصله آنچه را که نیاز دارید انتخاب کنید - یک مقدار از پیش تعریف شده از یک دایرکتوری، یک شمارش، به عنوان مثال، یا یک مقدار رشته. یعنی در مثال بالا، می‌توان بلافاصله سوئیچ‌ها را به‌عنوان مقادیر نه 0،1،2، بلکه بلافاصله "بدون پرداخت"، "جزئی پرداخت شده"، "پرداخت" اختصاص داد. و سپس کد به یک خط کاهش می یابد:

Form Elements.Payment Status.Value = Switch1;

نتیجه یکسان خواهد بود.

//////////////////////////////////////////////////////////////////////////////////////////

سوئیچ ها در فرم های کنترل شده (UF) بصری تر ساخته شده اند.

هنگام ایجاد یک سوئیچ، باید دو ویژگی، Form Element را به خاطر بسپارید.
اول از همه، شما باید ویژگی های فرم را ایجاد کنید. شما نوع مشخصه را با مقادیری که سوئیچ شما می پذیرد تنظیم می کنید. من نوع String را انتخاب کردم. در اینجا شما دو گزینه دارید: اگر یک ویژگی Object ایجاد کرده باشید، مقدار پذیرفته شده توسط سوئیچ شما در پایگاه داده ذخیره می شود، اگر به سادگی به لیست جزئیات فرم اضافه کنید، نتیجه پذیرفته شده توسط سوئیچ شما ذخیره نخواهد شد.

سپس، ویژگی‌هایی را که به آن‌ها نیاز داریم بکشید و در عناصر فرم رها کنید. هنگام ایجاد یک عنصر فرم، عنصر موجود در ویژگی های "View" دارای نوع "فیلد ورودی" خواهد بود. "فیلد سوئیچ" را از لیست انتخاب کنید. در نتیجه، فرمی شبیه به زیر دریافت خواهید کرد:


عنوان عنصر فرم، رنگ، فونت، مکان و سایر زیبایی ها را به سلیقه شما پر می کنیم.
یک مورد در ویژگی های عنصر فرم وجود دارد. "فهرست انتخاب" - در آن مقادیری را وارد می کنید که سوئیچ شما هنگام انتخاب یک یا موارد دیگر دریافت می کند. در مثالم، خطوطی با مقادیر "Record"، "Cancel Post"، "Post" اضافه کردم.

پس از این، سوئیچ شما آماده استفاده است.

بسته به اینکه سوئیچ شما یک ویژگی Object یا یک ویژگی Form باشد، از کد زیر برای دریافت مقدار ذخیره شده در آن استفاده می کنید:

SwitchFormElementFormElement // به طور مستقیم دسترسی داشته باشید اگر این ویژگی از فرم Object باشد.SwitchInsideDB // از طریق عنصر Object دسترسی داشته باشید. به جزئیات شما

Klyuev V.V.

http://prof1c.kklab.ru

کار با سوئیچ

لطفا همه کاربران سرویس سایت را در نظر بگیرید - مطالب را در قسمت مبتدیان قرار می دهم!!!

8.2 فرم های مدیریت شده

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

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

بنابراین، بیایید یک دایرکتوری جدید ایجاد کنیم و ویژگی "Property1" را با نوع "Boolean" اضافه کنیم.

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

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

پس چه غلطی کردیم؟
بیایید ویژگی های پایه ها را بررسی کنیم تا ببینیم آیا تغییری در نوع کنترل وجود دارد یا خیر.
و می بینیم که فیلد Switch اینجا نیست!(کجا اشتباه کردیم؟

ظاهراً نوع کنترل روی فرم به نوع داده بستگی دارد، اجازه دهید به خصوصیات فرم یعنی تب جزئیات برگردیم و خصوصیات ویژگی خود را - یعنی نوع آن "Boolean" را به نوع "Number" تغییر دهیم. ".

حالا بیایید به ویژگی های کنترل برگردیم و بررسی کنیم که آیا نمای کنترل به ویژگی های آن اضافه شده است - - - و هورا، ما نمای را در آنجا می بینیم - Switch Field.

حالا به فرم نگاه کنید، چیزی که می بینیم:

می بینیم - 3 مقدار پیش فرض، 3 سوئیچ، اما ما به دو مورد از آنها نیاز داریم، دوباره به ویژگی های ویژگی بروید و به ویژگی های "تعداد ستون ها" در آنجا نگاه کنید.

برای 2 - تعداد ستون ها - 2 را تنظیم کنید.

این ممکن است یک برنامه نویس خسته را کمی متوقف کند))، اما اکنون هم او و هم ما آن را می دانیم!

8.2 فرم های منظم.

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

پس بیایید به یک مثال نگاه کنیم. چنین سندی برای تنظیم رسیدها در 1C UPP وجود دارد - قطعاً وجود دارد. زمانی لازم بود سوئیچ هایی به آن اضافه کنیم تا ورودی های کمی متفاوت برای حسابداری رسم شوند. مشکل چیست، به نظر می رسد که ما باید، باید، این کار را انجام خواهیم داد. اما این فرم از قبل دارای 2 دکمه رادیویی است.

این شکلی است که در آن باید سوئیچ های بیشتری اضافه کنیم


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

به نظر می رسد که همه چیز ساده است. یک ویژگی جدید با نوع "Number" ایجاد می کنیم و 2 سوئیچ را وارد می کنیم که یکی از آنها می تواند داده ها را در ویژگی بنویسد و دیگری نمی تواند.

یک عنصر کنترلی جدید اضافه کنید - Switch، Switch2 را در جدول با تعداد و توضیحات سوئیچ ها اضافه کنید، Switch1 را ابتدا در گروه تنظیم کنید و OK را فشار دهید. کنترل های ایجاد شده را روی فرم قرار دهید. پیکربندی پایگاه داده (F7) را به روز می کنیم و آن را برای اشکال زدایی اجرا می کنیم.

هنگام اجرا (هنگام ایجاد یک سند جدید در حالت 1C: Enterprise)، می بینیم که هر چقدر هم که سعی کنیم روی Switch2 کلیک کنیم، هیچ اتفاقی نمی افتد. عناصر آنطور که باید کار نمی کنند. اینجا یک ترفند وجود دارد.
به پیکربندی بازگردید. مورد منو Form -> Set traversal order را انتخاب کنید (مهم است که فرم روی صفحه باز باشد)


برای اینکه سوئیچ های ما کار کنند، باید نظم خودکار را شکسته و با یک دستی موافقت کنید. و آن را در فرم قرار دهید تا سوئیچ های ما یکی پس از دیگری به ترتیب بروند.

خوب. پیکربندی را به روز کنید و آن را اجرا کنید.
عالی. همه چیز کار کرد.

علاوه بر این - ویدئو (بدون صدا، بنابراین همه چیز واضح است)


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