1c در پارامترهای انتخاب، نام گروه را مشخص کنید. گزینه های انتخاب و پیوندهای گزینه انتخاب را برای اشیاء ابرداده تنظیم کنید. ItemTypeDescription = New TypeDescription(Array)

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

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

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

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

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

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

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

تنظیم پارامترهای انتخاب و روابط پارامترهای انتخاب برای اشیاء فراداده

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

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

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

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

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

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

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

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

عصر بخیر.

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

قبلاً در "برنامه معمولی" اینگونه نوشتیم:

form = Directory.nomenclature.GetSelectionForm();

نتیجه انتخاب = form.openModal();

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

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

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

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

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

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

متغیر Select TMC;

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

ItemTypeDescription = New TypeDescription(Array);

اگر EnterValue (کالاها و مواد انتخاب شده، "مورد انتخاب"، شرح انواع کالاها و مواد) سپس

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

EndIf

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

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

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

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

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

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

بنابراین، برای یک انتخاب ساده، خط برای ما مناسب است:

&AtClient

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

cut = OpenFormModally("Directory.Contracts of Counterparties.ChoiceForm");

پایان رویه

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

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

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

در مثالم، یک فیلد انتخابی در پردازش ترسیم کردم، با اشاره به فرم پردازشی prop "پیمانکار"با نوع داده " DirectoryLink.Contractors". و کد زیر را نوشت:

&AtClient

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

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

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

cut = OpenFormModally("Directory.Agreements of Counterparties.ChoiceForm",ChoiceParameters);

پایان رویه

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

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




بالا