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

چگونه یک فرم لیست را با مقداری انتخاب باز کنیم؟ چگونه انتخاب را در فرم فهرست دایرکتوری تنظیم کنیم؟ فرم انتخاب را در فرم معمولی باز کنید.

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

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

هنگام باز کردن فرم، انتخاب بر اساس فیلد مشخص شده انجام می شود. برای مثال، در مثال زیر، فهرستی از فاکتورها با انتخاب فیلد Counterparty برابر با “OJSC Horns and Hooves” باز می شود.

مقدار انتخاب = ساختار جدید ("طرف مقابل" , "شاخ و سم JSC");
گزینه های انتخاب= ساختار جدید ("Selection", SelectionValue);
OpenForm («سند. صورت‌حساب رسید. فرم فهرست»، گزینه های انتخاب);

2. می توانید یک فرم لیست را بدون پارامتر باز کنید:

OpenForm ("سند. فاکتور رسید. فرم لیست");

و سپس در رویداد handler فرم لیست فاکتور وقتی CreatedOnServer کدی بنویسید که انتخابی را در یک لیست پویا ایجاد می کند که ویژگی اصلی فرم است:

&روی سرور
روش وقتی CreatedOnServer(امتناع ، پردازش استاندارد)
عنصر انتخاب = فهرست. انتخاب. عناصر. افزودن (تایپ
("DataCompositionSelectionElement"))؛
عنصر انتخاب .LeftValue = جدید فیلد طرح بندی داده ها("DocumentAmount")؛
عنصر انتخاب نمای مقایسه = مقایسه چیدمان ViewData. بیشتر ؛
عنصر انتخاب استفاده = درست
عنصر انتخاب RightValue = 150000;
پایان رویه

مزایای این روش این است که مشاهده مقایسهانتخاب را می توان نه تنها تنظیم کرد برابر است، مانند مورد اول، و بیشتر, کمترو غیره

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

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

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

اجازه دهید کنترل کننده اجرای این دستور را به صورت زیر پر کنیم:

&OnClient
روش فاکتورهای مصرفی(تیم)
ListForm = GetForm("Document.Invoice.ListForm");
ListForm. FilterByProduct = آیتم ها. لیست . CurrentRow ;
ListForm. باز کن()؛
پایان رویه

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

در زمینه درخواستبیایید متن درخواست زیر را وارد کنیم:

انتخاب کنید

فاکتور رسید سند، شماره،
فاکتور رسید سند.تاریخ
از جانب
Document.ReceiptInvoice AS DocumentReceiptInvoice
جایی که
فاکتور رسید سند.محصولات.محصول = &محصول

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

&OnClient
مراحل بازگشایی (شکست)
لیست . گزینه ها . SetParameterValue("محصول"، FilterByProduct)؛
پایان رویه

اینجا فهرست.گزینه ها- این لیستی از پارامترهای درخواست لیست پویا برای ویژگی List است. مقدار پارامتر تولید - محصولبرابر مقدار پارامتر فرم تنظیم می شود فیلتر بر اساس محصول. در نتیجه، با کلیک یک دکمه فاکتورهادر قالب یک لیست اقلام، ما لیستی از تنها فاکتورهایی دریافت خواهیم کرد که شامل کالایی هستند که در حال حاضر در لیست اقلام انتخاب شده است.

- این لیستی از پارامترهای درخواست لیست پویا برای ویژگی List است.

چگونه یک فرم لیست را با مقداری انتخاب باز کنیم؟

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

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

هنگام باز کردن فرم، انتخاب بر اساس فیلد مشخص شده انجام می شود. به عنوان مثال در مثال زیر لیستی از فاکتورها با انتخاب فیلد Number برابر با 333 باز می شود.

مقدار انتخاب = ساختار جدید ("تعداد"، "333");

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

OpenForm("سند. فاکتور رسید. فرم لیست"، گزینه های انتخاب);

2. می توانید یک فرم لیست را بدون پارامتر باز کنید:

OpenForm ("Document.Invoice.ListForm");

و سپس در رویداد handler فرم لیست فاکتور وقتی CreatedOnServerکدی بنویسید که انتخابی را در یک لیست پویا ایجاد می کند که ویژگی اصلی فرم است:

&روی سرور

رویه زمانی که روی سرور ایجاد شد (شکست، پردازش استاندارد)

Selection Element = List.Selection.Elements.Add(Type("DataComposition Selection Element"));

SelectionElement.LeftValue = NewDataCompositionField("Number");

SelectionElement.ComparisonView = DataCompositionComparisonView.More;

SelectionElement.Use = True;

SelectionElement.DisplayMode = ElementDisplayModeDataCompositionSettings.Inaccessible;

SelectionElement.RightValue = "000000001";

پایان رویه

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

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

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

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

اجازه دهید کنترل کننده اجرای این دستور را به صورت زیر پر کنیم:

&OnClient

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

ListForm = GetForm("Document.Invoice.ListForm");

ListForm.FilterByProduct = Elements.List.CurrentRow;

ListForm.Open();

پایان رویه

در این هندلر فرم لیست فاکتورها را دریافت می کنیم و لینک مورد فعلی در لیست آیتم ها را به پارامتر فرم FilterByProduct منتقل می کنیم و فرم را با این پارامتر باز می کنیم.

سپس یک فرم لیست اسناد ایجاد می کنیم فاکتور خریدو صفت فرم FilterByProduct را ایجاد کنید که هنگام باز کردن آن به عنوان پارامتر فرم از آن استفاده می کنیم. حال اجازه دهید پالت خصوصیات ویژگی اصلی فرم List را باز کنیم. بیایید پرچم را تنظیم کنیم درخواست سفارشیو در خط تنظیم لیستروی Open کلیک کنید.

در قسمت Request متن درخواست زیر را وارد کنید:

انتخاب کنید

فاکتور رسید سند، شماره،

فاکتور رسید سند.تاریخ

از جانب

Document.ReceiptInvoice AS DocumentReceiptInvoice

جایی که

فاکتور رسید سند.محصولات.محصول = &محصول

در درخواست، از پارامتر Item استفاده می‌کنیم، که پیوندی به خط فعلی در لیست اقلام موجود در پارامتر فرم فهرست فاکتور FilterBy Item دریافت می‌کند. برای انجام این کار، در کنترل کننده رویداد فرم لیست OnOpen، کدی را برای تنظیم مقدار پارامتر درخواست محصول می نویسیم:

&OnClient

مراحل بازگشایی (شکست)

List.Parameters.SetParameterValue("محصول"، FilterByProduct);

پایان رویه

اینجا فهرست.گزینه هالیستی از پارامترهای درخواست لیست پویا برای ویژگی List است. مقدار پارامتر Product برابر با مقدار پارامتر فرم FilterByProduct تنظیم شده است.

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

یک نمونه نمایشی برای گزینه سوم در دایرکتوری 1CITS/EXE/FAQ/OpenFormWithSelection.dt قرار دارد. نمونه بر روی پلتفرم نسخه 8.2.9.356 انجام شد.

کد 1C v 8.x DirectoryList.Selection.Reset();
DirectoryList.Selection.status.ComparisonType=ComparisonType.Contains;
DirectoryList.Selection.Status.Value="پذیرفته شده";
DirectoryList.Selection.Status.Set();

برای 1C 8.2:
راه های مختلفی برای باز کردن یک فرم لیست با انتخاب از پیش تعیین شده وجود دارد. بیایید به ترتیب آنها را بررسی کنیم:

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

هنگام باز کردن فرم، انتخاب بر اساس فیلد مشخص شده انجام می شود.
کد 1C v 8.2 UP // برای مثال در مثال زیر لیستی از فاکتورها با انتخاب فیلد Number برابر با 333 باز می شود.
مقدار انتخاب = ساختار جدید ("تعداد"، "333");
SelectionParameters = ساختار جدید ("Selection", SelectionValue);

OpenForm("سند. فاکتور رسید. فرم لیست"، گزینه های انتخاب);

// برای مثال، مثال زیر لیستی از فاکتورها را باز می کند
// با انتخاب فیلد Contractor برابر با OJSC Horns and Hooves.
مقدار انتخاب = ساختار جدید ("طرف مقابل"، "شاخ و سم OJSC");
SelectionParameters = ساختار جدید ("Selection", SelectionValue);
OpenForm("سند. فاکتور رسید. فرم لیست"، گزینه های انتخاب);

2. می توانید یک فرم لیست را بدون پارامتر باز کنید:
کد 1C v 8.2 UE OpenForm ("سند. فرم صورتحساب. لیست رسید");

و سپس، در مدیریت رویداد فرم برای لیست فاکتورها When CreatedOnServer، کدی را بنویسید که انتخابی را در لیست پویا ایجاد می کند، که ویژگی اصلی فرم است:
کد 1C v 8.2 UP & OnServer

Selection Element = List.Selection.Elements.Add(Type("DataComposition Selection Element"));
SelectionElement.LeftValue = NewDataCompositionField("Number");

SelectionElement.DisplayMode = ElementDisplayModeDataCompositionSettings.Inaccessible;
SelectionElement.RightValue = "000000001";
پایان رویه

&روی سرور
رویه زمانی که روی سرور ایجاد شد (شکست، پردازش استاندارد)
عنصر انتخاب = List.Selection.Elements.Add(نوع
("DataCompositionSelectionElement"))؛
SelectionElement.LeftValue = NewDataCompositionField("DocumentAmount");
SelectionElement.ComparisonView = DataCompositionComparisonView.More;
SelectionElement.Use = True;
SelectionElement.RightValue = 150000;
پایان رویه

از مزایای این روش می توان به Comparison View اشاره کردبرای انتخاب، می توانید نه تنها برابر، مانند مورد اول، بلکه بیشتر، کمتر و غیره را نیز تنظیم کنید.

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

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

برای این کار در قالب لیستی از اقلام، یک دستور و دکمه مربوطه دریافت فاکتورها را ایجاد کنید.

اجازه دهید کنترل کننده اجرای این دستور را به صورت زیر پر کنیم:
کد 1C v 8.2 UP & OnClient
رسیدهای رویه فاکتورها (فرمان)

ListForm = GetForm("Document.Invoice.ListForm");
ListForm.FilterByProduct = Elements.List.CurrentRow;
ListForm.Open();

پایان رویه

در این هندلر فرم لیست فاکتورها را دریافت می کنیم و لینک مورد فعلی در لیست آیتم ها را به پارامتر فرم FilterByProduct منتقل می کنیم و فرم را با این پارامتر باز می کنیم.

سپس یک فرم برای لیست اسناد ایجاد می کنیم: Receipt Invoice و یک ویژگی فرم FilterBy Product ایجاد می کنیم که هنگام باز کردن فرم از آن به عنوان پارامتر فرم استفاده می کنیم. حال اجازه دهید پالت خصوصیات ویژگی اصلی فرم List را باز کنیم. پرچم ArbitraryRequest را تنظیم کنیدو در خط تنظیمات لیست کلیک کنید باز کن.

در قسمت Request متن درخواست زیر را وارد کنید:
کد 1C v 8.2 UP SELECT
فاکتور رسید سند، شماره،
فاکتور رسید سند.تاریخ
از جانب
Document.ReceiptInvoice AS DocumentReceiptInvoice
جایی که
فاکتور رسید سند.محصولات.محصول = &محصول

در درخواست، از پارامتر Item استفاده می‌کنیم، که پیوندی به خط فعلی در لیست اقلام موجود در پارامتر فرم فهرست فاکتور FilterBy Item دریافت می‌کند. برای انجام این کار، در کنترل کننده رویداد فرم لیست OnOpen، کدی را برای تنظیم مقدار پارامتر درخواست محصول می نویسیم:
کد 1C v 8.2 UP
&OnClient
مراحل بازگشایی (شکست)

List.Parameters.SetParameterValue("محصول"، FilterByProduct);

پایان رویه

اینجا فهرست.گزینه هالیستی از پارامترهای درخواست لیست پویا برای ویژگی List است. مقدار پارامتر Product برابر با مقدار پارامتر فرم FilterByProduct تنظیم شده است.

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

اطلاعات برگرفته از سایت

کد 1C v 8.x DirectoryList.Selection.Reset();
DirectoryList.Selection.status.ComparisonType=ComparisonType.Contains;
DirectoryList.Selection.Status.Value="پذیرفته شده";
DirectoryList.Selection.Status.Set();

برای 1C 8.2:
راه های مختلفی برای باز کردن یک فرم لیست با انتخاب از پیش تعیین شده وجود دارد. بیایید به ترتیب آنها را بررسی کنیم:

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

هنگام باز کردن فرم، انتخاب بر اساس فیلد مشخص شده انجام می شود.
کد 1C v 8.2 UP // برای مثال در مثال زیر لیستی از فاکتورها با انتخاب فیلد Number برابر با 333 باز می شود.
مقدار انتخاب = ساختار جدید ("تعداد"، "333");
SelectionParameters = ساختار جدید ("Selection", SelectionValue);

OpenForm("سند. فاکتور رسید. فرم لیست"، گزینه های انتخاب);

// برای مثال، مثال زیر لیستی از فاکتورها را باز می کند
// با انتخاب فیلد Contractor برابر با OJSC Horns and Hooves.
مقدار انتخاب = ساختار جدید ("طرف مقابل"، "شاخ و سم OJSC");
SelectionParameters = ساختار جدید ("Selection", SelectionValue);
OpenForm("سند. فاکتور رسید. فرم لیست"، گزینه های انتخاب);

2. می توانید یک فرم لیست را بدون پارامتر باز کنید:
کد 1C v 8.2 UE OpenForm ("سند. فرم صورتحساب. لیست رسید");

و سپس، در مدیریت رویداد فرم برای لیست فاکتورها When CreatedOnServer، کدی را بنویسید که انتخابی را در لیست پویا ایجاد می کند، که ویژگی اصلی فرم است:
کد 1C v 8.2 UP & OnServer

Selection Element = List.Selection.Elements.Add(Type("DataComposition Selection Element"));
SelectionElement.LeftValue = NewDataCompositionField("Number");


SelectionElement.DisplayMode = ElementDisplayModeDataCompositionSettings.Inaccessible;
SelectionElement.RightValue = "000000001";
پایان رویه

&روی سرور
رویه زمانی که روی سرور ایجاد شد (شکست، پردازش استاندارد)
عنصر انتخاب = List.Selection.Elements.Add(نوع
("DataCompositionSelectionElement"))؛
SelectionElement.LeftValue = NewDataCompositionField("DocumentAmount");
SelectionElement.ComparisonView = DataCompositionComparisonView.More;
SelectionElement.Use = True;
SelectionElement.RightValue = 150000;
پایان رویه

از مزایای این روش می توان به Comparison View اشاره کردبرای انتخاب، می توانید نه تنها برابر، مانند مورد اول، بلکه بیشتر، کمتر و غیره را نیز تنظیم کنید.

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

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

برای این کار در قالب لیستی از اقلام، یک دستور و دکمه مربوطه دریافت فاکتورها را ایجاد کنید.

اجازه دهید کنترل کننده اجرای این دستور را به صورت زیر پر کنیم:
کد 1C v 8.2 UP & OnClient
رسیدهای رویه فاکتورها (فرمان)

ListForm = GetForm("Document.Invoice.ListForm");
ListForm.FilterByProduct = Elements.List.CurrentRow;
ListForm.Open();

پایان رویه

در این هندلر فرم لیست فاکتورها را دریافت می کنیم و لینک مورد فعلی در لیست آیتم ها را به پارامتر فرم FilterByProduct منتقل می کنیم و فرم را با این پارامتر باز می کنیم.

سپس یک فرم برای لیست اسناد ایجاد می کنیم: Receipt Invoice و یک ویژگی فرم FilterBy Product ایجاد می کنیم که هنگام باز کردن فرم از آن به عنوان پارامتر فرم استفاده می کنیم. حال اجازه دهید پالت خصوصیات ویژگی اصلی فرم List را باز کنیم. پرچم ArbitraryRequest را تنظیم کنیدو در خط تنظیمات لیست کلیک کنید باز کن.

در قسمت Request متن درخواست زیر را وارد کنید:
کد 1C v 8.2 UP SELECT
فاکتور رسید سند، شماره،
فاکتور رسید سند.تاریخ
از جانب
Document.ReceiptInvoice AS DocumentReceiptInvoice
جایی که
فاکتور رسید سند.محصولات.محصول = &محصول

در درخواست، از پارامتر Item استفاده می‌کنیم، که پیوندی به خط فعلی در لیست اقلام موجود در پارامتر فرم فهرست فاکتور FilterBy Item دریافت می‌کند. برای انجام این کار، در کنترل کننده رویداد فرم لیست OnOpen، کدی را برای تنظیم مقدار پارامتر درخواست محصول می نویسیم:
کد 1C v 8.2 UP
&OnClient
مراحل بازگشایی (شکست)

List.Parameters.SetParameterValue("محصول"، FilterByProduct);

پایان رویه

اینجا فهرست.گزینه هالیستی از پارامترهای درخواست لیست پویا برای ویژگی List است. مقدار پارامتر Product برابر با مقدار پارامتر فرم FilterByProduct تنظیم شده است.

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

این کد به شما امکان می دهد لیستی از اسناد را با یک انتخاب مشخص باز کنید؛ همچنین می توانید لیستی از عناصر دایرکتوری را با انتخاب مورد نظر باز کنید.

Code 1C v 8.2 UP Form = OpenForm("Document. Invoice.Form.ListForm"); //فرم را باز کنید
SelectionOwner =Form.List.Selection.Elements.Add(Type("DataCompositionSelectionElement")); //افزودن انتخاب
SelectionOwner.ComparisonView = DataCompositionComparisonView.Equals; //چگونه مقایسه خواهیم کرد
SelectOwner.Use = True; // چک باکس را برای استفاده از NewDataCompositionField ("Nomenclature") تنظیم کنید
SelectionOwner.LeftValue = NewDataCompositionField("Account"); //از چه جزئیاتی برای انتخاب استفاده خواهیم کرد؟
SelectionOwner.RightValue = Object.Account; // و خود معنای انتخاب

به منظور. واسه اینکه. برای اینکه یک فرم لیست را با یک انتخاب از پیش تعریف شده باز کنیداز روش های زیر استفاده کنید:

راه اولاین است که وقتی یک فرم را باز می کنید، می توانید پارامتر Selection form را تنظیم کنید و فرم لیست را با این پارامتر باز کنید.

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

به عنوان مثال در مثال زیر لیستی از فاکتورها با انتخاب فیلد Number برابر با 333 باز می شود.

Code 1C v 8.2 UE Selection Value = New Structure("Number", "333");
SelectionParameters = ساختار جدید ("Selection", SelectionValue);
OpenForm("سند. فاکتور رسید. فرم لیست"، گزینه های انتخاب);

راه دوم

می توانید یک فرم لیست را بدون پارامتر باز کنید:

کد 1C v 8.2 UE OpenForm ("سند. فرم صورتحساب. لیست رسید");

و سپس، در مدیریت رویداد فرم برای لیست فاکتورها When CreatedOnServer، کدی را بنویسید که انتخابی را در لیست پویا ایجاد می کند، که ویژگی اصلی فرم است:

کد 1C v 8.2 UP & OnServer
رویه زمانی که روی سرور ایجاد شد (شکست، پردازش استاندارد)
Selection Element = List.Selection.Elements.Add(Type("DataComposition Selection Element"));
SelectionElement.LeftValue = NewDataCompositionField("Number");
SelectionElement.ComparisonView = DataCompositionComparisonView.More;
SelectionElement.Use = True;
SelectionElement.DisplayMode = ElementDisplayModeDataCompositionSettings.Inaccessible;
SelectionElement.RightValue = "000000001";
پایان رویه

مزایای این روش این است که نوع مقایسه برای انتخاب را می توان نه تنها مانند حالت اول برابر، بلکه روی More، Less و غیره نیز تنظیم کرد.

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

راه سوم

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

به عنوان مثال، ما باید لیستی از فاکتورها را باز کنیم که شامل موارد برجسته شده در لیست اقلام است.

برای این کار در قالب لیستی از اقلام، یک دستور و دکمه مربوطه دریافت فاکتورها را ایجاد کنید.

اجازه دهید کنترل کننده اجرای این دستور را به صورت زیر پر کنیم:

کد 1C v 8.2 UP & OnClient
رسیدهای رویه فاکتورها (فرمان)
SelectionParameters = ساختار جدید ("FilterByProduct", Elements.List.CurrentRow);
OpenForm("سند. فاکتور رسید. فرم لیست"، گزینه های انتخاب);
پایان رویه

در این کنترلر، فرم لیست فاکتورها را باز می کنیم و پیوندی را به آیتم فعلی در لیست آیتم ها به پارامتر فرم FilterByProduct ارسال می کنیم.

سپس یک فرم برای لیست اسناد ایجاد می کنیم: Receipt Invoice و یک پارامتر فرم FilterBy Product ایجاد می کنیم که از آن برای باز کردن یک فرم با انتخاب مورد نیاز استفاده می کنیم.

حال اجازه دهید پالت خصوصیات ویژگی اصلی فرم List را باز کنیم. پرچم سفارشی پرس و جو را تنظیم کنید و در خط تنظیمات لیست روی Open کلیک کنید.

در قسمت Request متن درخواست زیر را وارد کنید:

کد 1C v 8.2 UP SELECT
فاکتور رسید سند، شماره،
فاکتور رسید سند.تاریخ
از جانب
Document.ReceiptInvoice AS DocumentReceiptInvoice
جایی که
فاکتور رسید سند.محصولات.محصول = &محصول

در درخواست، از پارامتر Item استفاده می‌کنیم، که پیوندی به خط فعلی در لیست اقلام موجود در پارامتر فرم فهرست فاکتور FilterBy Item دریافت می‌کند.

برای انجام این کار، هنگام CreatedOnServer در مدیریت رویداد فرم لیست، کدی را برای تنظیم مقدار پارامتر درخواست محصول می نویسیم:

کد 1C v 8.2 UP & OnClient
مراحل بازگشایی (شکست)
List.Parameters.SetParameterValue("محصول"، Parameters.FilterByProduct);
پایان رویه

در اینجا List.Parameters لیستی از پارامترهای درخواست لیست پویا برای ویژگی List است. مقدار پارامتر Product برابر با مقدار پارامتر فرم FilterByProduct تنظیم شده است.

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

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