1c در پارامترهای انتخاب، نام گروه را تنظیم کنید. تنظیم پارامترهای انتخاب و تداعی پارامترهای انتخاب برای اشیاء ابرداده. DescriptionofTypesInventory = NewDescriptionofTypes(Array)

به منظور. واسه اینکه. برای اینکه فرم انتخاب را با انتخاب در 1s 8.2 باز کنید(فرم های معمولی)، باید اقداماتی را انجام دهیم. اول می گیریم پس از آن، ما انتخاب را تنظیم می کنیم و آن را به صورت برنامه نویسی باز می کنیم، در اینجا یک مثال کد وجود دارد:

انتخاب روی فرم در قسمت ورودی 1C 8.2 با چندین مقدار

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

ابتدا فرم انتخاب را دریافت می کنیم، "Element" (مالک) را در پارامترها پاس می کنیم، پرچم حالت انتخاب را تنظیم می کنیم. سپس یک لیست از مقادیر و یک آرایه ایجاد می کنیم، توجه می کنیم که به عنوان یک انتخاب هنگام تنظیم نوع مقایسه در لیست، یک شی فقط می تواند با نوع موجود باشد. ListValues. ما عناصر را به آرایه اضافه می کنیم، سپس این آرایه را در لیست مقادیر بارگذاری می کنیم، که بعداً در انتخاب تنظیم می کنیم. همچنین فراموش نکنید که پرچم را برای استفاده از این انتخاب فعال کنید و نوع مقایسه را تنظیم کنید.

تنظیم انتخاب در قسمت ورودی در فرم در 1C 8.3، رویداد Start of Selection

حالا بیایید در نظر بگیریم انتخاب در قسمت ورودی روشن است به شکلی قابل مدیریتدر 1C 8.3. بیایید عنصر مورد علاقه خود را در فرم پیدا کنیم، که در آن انتخاب را تنظیم می کنیم، در مورد ما این قسمت "سازمان" است. رویداد "شروع انتخاب" را پیدا می کنیم، روی ذره بین کلیک می کنیم و خود را در این روش می یابیم. پارامتر Selection Data را می بینیم؛ این پارامتر از نوع ValueList است. برای محدود کردن انتخاب به عناصر لازم، باید لیست مقادیر را پر کنیم. ما می‌توانیم عناصر را فقط روی سرور انتخاب کنیم، بنابراین یک رویه با دستور کامپایل &OnServer ایجاد می‌کنیم. در این روش، Selection Data را پر کنید.

/
توسعه دهندگان /
قراردادهای کدگذاری

تنظیم گزینه های انتخاب و انجمن های گزینه انتخاب برای اشیاء فراداده

1. به عنوان یک قاعده، محدودیت های منطق تجاری مانند محدودیت های انتخاب باید برای همه اشکالی که یک شی خاص در آنها ویرایش می شود یکسان باشد. بنابراین، توصیه می شود پارامترهای انتخاب و اتصالات بین پارامترهای انتخاب را در ویژگی های اشیاء ابرداده - در جزئیات فهرست ها، اسناد و غیره تنظیم کنید.

2. با این حال، ممکن است مواردی وجود داشته باشد که محدودیت های انتخاب ممکن است به سناریوی عملیاتی خاص بستگی داشته باشد. در چنین مواردی، پارامترهای انتخاب را می توان به صورت محلی، در یک فرم خاص مشخص کرد.

به عنوان مثال، پیکربندی شامل

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

نیاز به پیاده سازی توانایی انتخاب تنها کارکنان کلیدی بسته به مقدار گزینه عملکردی است SelectOnlyFromEmployeesBasics. برای این امر لازم است

  • در قالب یک سند سفارش پذیرشویژگی های فرم اضافی را پیاده سازی کنید انواع کارمندان,
  • سپس برای فیلد فرم کارمندیک پیوند پارامتر انتخاب می تواند ایجاد شود انتخاب.نوع کارمندبا جزئیات فرم انواع کارمندان,
  • در این مورد جزئیات فرم انواع کارمندانبر اساس تجزیه و تحلیل گزینه عملکردی پر شده است.

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

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

عصر بخیر.

امروز در مورد نحوه باز کردن فرم های انتخابی در رابط مدیریت شده جدید صحبت خواهیم کرد.

قبلا در " برنامه منظم"ما اینطور نوشتیم:

form = Directory.nomenclature.GetSelectionForm();

resultSelection = form.openModalNO();

بین این عملگرها می‌توانیم ویژگی‌های فرم را تغییر دهیم، به عنوان مثال، انتخاب را تنظیم کنیم. ما می توانیم یک فرم خاص را با نام مشخص کنیم. می تواند آن را تغییر دهد ظاهر، دسترسی به خصوصیات عناصر در فرم با نام آنها از طریق یک نقطه (form.Button1.Visibility = False;)

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

پس بیایید شروع کنیم.

1. ساده ترین حالت زمانی است که نیازی به مدیریت انتخاب نداریم (تنظیم انتخاب ها، ارسال پارامترها به فرم انتخاب باز شده).

از آنجایی که فرم ها را فقط می توان روی کلاینت باز کرد، این یک قطعه کد سمت کلاینت خواهد بود. ما از تابع استفاده خواهیم کرد EnterValue(<Значение>, <Подсказка>, <Тип>) . در واقع، همه چیز از توضیحات او مشخص است. این پرچم را برمی گرداند که آیا کاربر انتخابی انجام داده است یا خیر؛ در پارامتر اول، ظرفی را که مقدار انتخاب به آن برگردانده می شود، در متن دوم که در عنوان پنجره انتخاب نمایش داده می شود، در آرایه سوم ارسال می کنیم. انواع

در اینجا یک نمونه از استفاده است:

متغیر SelectTMC;

ArrayTypes = آرایه جدید;

DescriptionofTypesTMC = NewDescriptionofTypes(Array);

اگر EnterValue (انتخاب موجودی، "انتخاب آیتم"، شرح انواع موجودی) سپس

//در حال پردازش مقدار انتخاب شده

endIf;

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

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

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

در مورد ما، ما باید مقدار انتخاب شده را به یک متغیر خاص وارد کنیم و با در نظر گرفتن مقدار انتخاب شده، بدون انتقال کنترل به رویه های دیگر، پردازش را ادامه دهیم. بنابراین برای ما مناسب خواهد بود OpenFormModal.

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

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

بنابراین، برای یک انتخاب ساده، خط زیر انجام خواهد شد:

&OnClient

دستور رویه 1 (فرمان)

res = OpenFormModal("Directory. Contracts of Contractors. SelectionForm");

پایان رویه

اما این یک آنالوگ کامل از روش شماره 1 است و فرمی برای انتخاب کلیه قراردادها بدون انتخاب مالک مشاهده خواهیم کرد. آن ها این کار فقط در صورتی امکان پذیر است که بخواهیم نام فرم انتخاب را مشخص کنیم.

برای تنظیم انتخاب، پارامتر دوم به ما کمک می کند.

پارامتر دوم از نوع "Structure" است. به عنوان عناصر ساختار، می توانید پارامترهای فرم اضافه شده در برگه "پارامترها" فرم انتخاب را مشخص کنید. پردازش آنها باید در روش توضیح داده شود وقتی CreatedOnServerدر ماژول فرم انتخاب این برای ما خوب نیست، زیرا ... باید پیکربندی را اصلاح کنم. همچنین می توانید یک ساختار انتخاب را با کلید "انتخاب" در ساختار پارامتر ارسال کنید. سپس تمام فیلدهای ساختار انتخاب در انتخاب لیست عناصر مورد استفاده قرار می گیرد و برای مشاهده یا تغییر در دسترس کاربر نخواهد بود.

در مثالم، یک فیلد انتخاب در پردازش ترسیم کردم که به ویژگی فرم پردازش اشاره دارد "طرف مقابل"با نوع داده " DirectoryLink.Counterparties". و کد زیر را نوشت:

&OnClient

دستور رویه 1 (فرمان)

انتخاب = ساختار جدید ("مالک"، طرف مقابل)؛

SelectionParameters = ساختار جدید ("Selection", Selection);

res = OpenFormModal("Directory. Contracts of Contractors. Selection Form", Selection Parameters);

پایان رویه

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

این همه برای امروز است، از توجه شما متشکرم.




بالا