سوئیچ ها، برنامه معمولی، فرم های مدیریت شده. سوئیچ ها، برنامه معمولی، فرم های مدیریت شده سفارشی سازی ظاهر فرم مدیریت شده توسط توسعه دهنده
1C هنگام استفاده از راه حل برنامه به طور خودکار توسط سیستم ایجاد می شود. آنها مبنایی برای ارائه (نمایش) اطلاعات در سیستم 1C: Enterprise هستند.
ساختار فرم 1C
فرم B یک توصیف منطقی از ترکیب فرم است. عناصر توضیح می دهد که فرم چگونه خواهد بود. قرار دادن عناصر فرم هنگام نمایش به صورت خودکار توسط سیستم انجام می شود.
قسمت نمایش داده شده از فرم (قابل مشاهده برای کاربر) به صورت درختی توصیف می شود که شامل عناصر فرم است (شکل زیر، قسمت "عناصر فرم" را ببینید):
- گروه شامل سایر عناصر،
- فیلدهای ورودی،
- چک باکس ها،
- سوئیچ ها،
- دکمه ها،
- جداولی که شامل عناصر ستونی و غیره است.
"عناصر فرم 1C"
[سقوط - فروپاشی]
گروهی از عناصر فرم را می توان به صورت نمایش داد
- پانل با قاب،
- پانل با صفحات (نشانک ها)،
- خود صفحه،
- پنل فرمان
تمام عملکردهای فرم به شرح زیر است:
- جزئیات (داده هایی که فرم با آنها کار می کند)؛
- دستورات (اعمال انجام شده).
سفارشی کردن ظاهر یک فرم مدیریت شده
سفارشی کردن ظاهر فرم مدیریت شده توسط کاربر
ظاهر یک فرم مدیریت شده را می توان در سطح کاربر سفارشی کرد. برای این ویژگی، در اقدامات فرم دستور "بیشتر" - "تغییر فرم" وجود دارد (فقط آن دسته از عناصر فرم را مدیریت می کند که در مرحله توسعه یا طبق قوانین استاندارد برای تولید خودکار فرم تعریف شده اند).
"بیشتر" - "تغییر شکل"
دستور "بیشتر" - "تغییر شکل":
پس از کلیک بر روی "تغییر فرم"، پنجره تنظیمات فرم 1C نمایش داده می شود:
[سقوط - فروپاشی]
علاوه بر این، در حالت کاربر این امکان وجود دارد:
- ترتیب فرم ها را تغییر دهید، آنها را از یک ستون به ستون دیگر منتقل کنید (اگر دسکتاپ در دو ستون سازماندهی شده باشد)، اما نمی توانید تعداد ستون ها را روی دسکتاپ تغییر دهید.
- نمایش اطلاعات در قالب پنجره های جداگانه (هنگام فراخوانی یک فرمان ناوبری، باید کلید Shift را نگه دارید).
اگر از بخشها استفاده میشود، هنگامی که فرمانی را در پانل پیمایش فرا میخوانید، لیست مربوطه در ناحیه کار نمایش داده میشود و جایگزین محتویات قبلی منطقه کار میشود.
سفارشی کردن ظاهر فرم مدیریت شده توسط یک توسعه دهنده
توسعه دهنده می تواند بر ترتیب عناصر با تنظیمات مختلف تأثیر بگذارد. می تواند ترتیب عناصر را تعیین کند، عرض و ارتفاع آنها را مشخص کند و همچنین از موارد زیر استفاده کند:
- دستورات خود فرم؛
- دستورات جهانی مورد استفاده در سراسر پیکربندی؛
- دستورات قابل پارامترسازی که فرم های دیگر را بر اساس داده های خاص فرم فعلی باز می کند.
شکل (تغییر فرم 1C توسط توسعه دهنده)
[سقوط - فروپاشی]
هنگام توسعه فرم 1C باید:
- در ویرایشگر فرم، جزئیات و دستورات لازم را در فرم وارد کنید.
- ایجاد عناصر فرمی که آنها را نمایش می دهد، ترتیب عناصر را تعیین می کند، عرض و ارتفاع را مشخص می کند (در صورت لزوم).
- عناصر را به گروه ها (در صورت لزوم) مرتب کنید.
- از تنظیمات دید مبتنی بر نقش در عناصر فرم (مشاهده و ویرایش جزئیات توسط، مشاهده سفارشی فیلدهای فرم به نقش، استفاده از دستورات بر اساس نقش) در مورد تعداد زیادی نقش در پیکربندی (از چندین ده) استفاده کنید. در عوض، رویکردهای زیر باید دنبال شود:
- هنگامی که بسته به وجود نقش های خاص برای کاربر، تفاوت های زیادی در ظاهر و عملکرد فرم وجود دارد - فرم های جداگانه ایجاد کنید، تخصصی برای مجموعه خاصی از حقوق کاربر؛
- با تفاوت های جزئی - انجام بررسی مجوز در کد. باید در نظر داشت که کنترل دید برنامهای میتواند سرعت باز کردن فرم را کاهش دهد، که باید هنگام انتخاب بین رویکردهای پیشنهادی در نظر گرفته شود.
- از تنظیمات دید مبتنی بر نقش در رابط فرمان پیکربندی، رابط فرمان بخش اصلی و منطقه کاری صفحه شروع استفاده کنید. در عوض، باید مجوزها را روی بخشهای رابط فرمان و اشیاء موجود در رابط فرمان یا فضای کاری تنظیم کنید. این امر رفتار رابط مدیریت شده را برای کاربر قابل پیش بینی تر می کند و همچنین بررسی خطاها را آسان تر می کند.
برای اطلاعات دقیق تر در مورد کار با فرم ها، دوره "کار با فرم ها در 1C: Enterprise 8.3" را ببینید، http://www.1c.ru/rus/partners/training/uc1/course.jsp?id=161.
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٪ تخفیف" است).
سوئیچ هایی که به طور معنی داری به یک گروه مربوط می شوند باید هنگام تنظیم ترتیب پیمایش بدون وقفه توسط سایر عناصر فرم پشت سر هم قرار گیرند. ترتیب پیمایش از منوی "فرم -> تنظیم ترتیب پیمایش" تنظیم می شود، برای این مثال به این صورت است:
- نوع مقدار انتخاب شده برای سوئیچ دارای ویژگی "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 دسترسی داشته باشید. به جزئیات شما