1s پارامتر لیست پویا را تنظیم می کند. محدودیت ها و ویژگی ها

صفحه اصلی برای توسعه دهندگان مبتدی برنامه نویسی را یاد بگیرید

یک فرم حاوی یک لیست پویا با یک درخواست دلخواه وجود دارد. نحوه تنظیم هنگام باز کردن یک فرم پارامترهای مورد نظردر این درخواست؟

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

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

بیایید فرض کنیم که یک ثبت قیمت کالا وجود دارد. فرم لیست این رجیستر شامل یک لیست پویا با یک پرس و جو دلخواه است:

ثبت اطلاعات قیمت کالا SELECT.دوره، ثبت اطلاعات قیمت کالا. ثبت اطلاعات قیمت کالا. قیمت از ثبت اطلاعات قیمت کالا به عنوان ثبت اطلاعات قیمت کالا ثبت نام WHERE ثبت اطلاعات قیمت کالا.<= &КонецПериода

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

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

به طور کلی، این مورد نیاز نیست. هر پارامتری که به تابع OpenForm() ارسال شود در کنترل کننده رویداد فرم در دسترس خواهد بود OnCreateOnServer. اما هنوز هم بهتر است آنها را به صراحت در فرم ایجاد کنید.

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

بنابراین، بیایید سه پارامتر برای فرم لیست ثبت اطلاعات ایجاد کنیم: StartPeriod، EndPeriod (نوع تاریخ) و Product (نوع). DirectoryLink.Products).

حالا در قالب المان دایرکتوری Goods، دستور December Prices را با متن زیر ایجاد می کنیم:

FormParameters = New Structure("StartPeriod, EndPeriod, Product", "20121201000000", "20121231235959", Object.Reference); OpenForm("InformationRegister.Prices of Goods.Form.ListForm",FormParameters);

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

در خود فرم ثبت اطلاعات، در handler event form OnCreateOnServer، مقادیر ارسال شده را به عنوان پارامترهای یک درخواست دلخواه برای یک لیست پویا به صورت زیر تنظیم کنید:

&OnServerCreateOnServerProcedure(شکست، پردازش استاندارد) List.Parameters.SetParameterValue("PeriodStart"، Parameters.PeriodStart); List.Parameters.SetParameterValue("EndPeriod", Parameters.EndPeriod); List.Parameters.SetParameterValue("محصول"، Parameters.Product); پایان رویه

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

ویژگی های لیست های پویا در 1C

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

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

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

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

  • انتخاب یک لیست پویا؛
  • گروه بندی ها
  • مرتب سازی؛
  • دکور.

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

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

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



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

از آنجایی که پارامتر CurrentDate در درخواست ما استفاده شده است، باید مقدار آن را قبل از استفاده از پردازش تنظیم کنیم. برای انجام این کار، در ماژول فرم در رویه "On CreationOnServer" توسط یک دستور استاندارد، تابع "CurrentSessionDate" را با یک دستور استاندارد به آن اختصاص دهید. همچنین باید یک لیست پویا را در فرم کنترل نمایش دهیم و ترتیب فیلدها را برای وضوح تغییر دهیم. اجزای "Nomenclature Remains" را به عناصر فرم بکشید (بالا سمت چپ) و از فلش های آبی رنگ برای تغییر ترتیب فیلدها در جدول روی فرم استفاده کنید.

رویه &در سرور در CreationAt سرور (شکست، پردازش استاندارد) نامگذاری Remains.Parameters.SetParameterValue("CurrentDate",CurrentSessionDate()) EndProcedure


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

ویژگی "Remains Date" از نوع "Date" را اضافه می کنیم و آن را به عناصر فرم منتقل می کنیم. در رویدادهای فیلد، یک رویداد "OnChange" ایجاد می کنیم و کد تنظیم پارامتر "CurrentDate" مورد استفاده در پرس و جو پویا را می نویسیم. به طوری که هنگام باز کردن فرم، کاربر بلافاصله متوجه می شود که در چه تاریخی موجودی ها را می بیند، ما تغییرات کوچکی در رویه OnCreateOnServer ایجاد می کنیم.



&OnServerProcedureOnCreateOnServer(شکست، پردازش استاندارد)RemainsDate = CurrentSessionDate(); آیتم Remains.Parameters.SetParameterValue("CurrentDate", RemainsDate); پایان رویه &در رویه مشتری RemainsDateOnChange(Element) Item Remains.Parameters.SetParameterValue("CurrentDate",RemainsDate); پایان رویه

در نتیجه، فرم لیست پویا ما می تواند موجودی ها را برای هر تاریخی نمایش دهد.

ما تنها بخش کوچکی از قابلیت‌های این جعبه ابزار را پوشش داده‌ایم، اما این برای درک راحتی این نوع لیست پویا کافی است. مکانیسم مشابهی برای بسیاری از وظایف استفاده می شود، اما اغلب در پیکربندی های معمولی در فرم های مدیریت شده یافت می شود:

  1. انتخاب؛
  2. لیست ها

برای دریافت لیست پویا و درخواست آن در فرم های معمولی مدیریت شده، توسعه دهنده باید فرم مورد نیاز را در پیکربندی باز کند. در بخش ویژگی‌ها، ویژگی را با نوع داده «DynamicList» پیدا کنید (اغلب به صورت پررنگ است). ویژگی های آن شامل متن درخواست، انتخاب ها و سایر تنظیمات است.

چاپ (Ctrl+P)

لیست پویا

1. اطلاعات عمومی

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

برنج. 1. گزینه هایی برای ایجاد یک لیست پویا

هنگام ایجاد یک ویژگی فرم از نوع DynamicListتوسعه‌دهنده می‌تواند دو روش را برای پرس و جو از داده‌ها انتخاب کند:
● با تعیین جدول اصلی – در این حالت فقط کافی است جدولی را که می خواهید از آن داده دریافت کنید مشخص کنید (ویژگی جدول اصلی) و سیستم به طور خودکار یک پرس و جو برای داده ایجاد می کند (سمت راست را در شکل ببینید. . 1).
● تولید دستی یک درخواست – برای انجام این کار، باید ویژگی درخواست سفارشی را تنظیم کنید (سمت چپ شکل 1 را ببینید). پس از آن، تولید دستی درخواست برای دریافت داده از پایگاه اطلاعاتی در دسترس خواهد بود.
با یک پرس و جو، می توانید داده ها را از چندین جدول انتخاب کنید، بنابراین می توانید یک جدول اصلی را مشخص کنید. این امر ضروری است تا لیست پویا بتواند تعیین کند کدام داده اولیه و کدام ثانویه است و بتواند اطلاعات را به درستی انتخاب و نمایش دهد و همچنین دستورات استاندارد را ارائه دهد. با این حال، اگر تعیین جدول اصلی در پرس و جو غیرممکن باشد، می توان آن را حذف کرد، اما پس از آن
لیست پویا دستورات مربوط به جدول زیر را ارائه نمی دهد. علاوه بر این، در این حالت (بدون تعیین جدول اصلی) بازده به دست آوردن داده ها توسط لیست پویا به میزان قابل توجهی کاهش می یابد.
برای بهبود عملکرد، توصیه می‌شود که همه اتصال‌هایی که در یک جستار دلخواه فقط برای بازیابی داده‌های اضافی استفاده می‌شوند، با استفاده از پسوند زبان پرس و جو سیستم ترکیب داده اختیاری شوند.
برای یک لیست پویا که ویژگی اصلی فرم است، می توان مقادیر انتخابی را با استفاده از پارامتر فرم تنظیم کرد. انتخاب. برای این کار لازم است که نام خاصیت سازه که در پارامتر است انتخاب,
با نام فیلد انتخاب لیست پویا مطابقت داشت. در این حالت، مقدار ویژگی ساختار به عنوان مقدار مناسب عنصر انتخاب تنظیم می شود. اگر یک آرایه، یک آرایه ثابت یا فهرستی از مقادیر به عنوان مقدار عنصری از پارامتر Dynamic list form Selection ارسال شود، یک شرط با گزینه In List به انتخاب اضافه می شود که در مقدار سمت راست آن لیست مقادیر قرار می گیرد (که آرایه و آرایه ثابت به آن تبدیل می شوند).
یک پرس و جو دلخواه در یک لیست پویا می تواند پرس و جوی باشد که در آن از یک پارامتر برای تولید مقدار یک فیلد استفاده می شود، به عنوان مثال:

انتخاب کنید
انتخاب
WHEN Delivery.Factor = 1 سپس &Submission
ELSE تحویل. ضریب
END AS ضریب
از جانب

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

انتخاب کنید
انتخاب
WHEN Delivery.Factor = 1 THEN EXPRESS(&Representation AS String(100)) ELSE Delivery. ضریب
END AS ضریب
از جانب
Document.DeliveryProducts AS Delivery

اگر فیلدی که فیلتر روی آن تنظیم شده است با استفاده از گزینه های عملکردی غیرفعال شود، فیلتر روی این فیلد تنظیم نمی شود، حتی اگر مقدار فیلتر به عنوان پارامترهای فرم یا پیوندهای پارامتر انتخاب ارسال شود.
با استفاده از ویژگی Dynamic data reading، یک لیست پویا نشان داده می شود که نیاز به خواندن داده ها در بخش های کوچک دارد
(برای جزئیات بیشتر در مورد نحوه دریافت داده از یک لیست پویا و نحوه کش کردن داده ها، به زیر مراجعه کنید). صرف نظر از این ویژگی، شرایط زیر اعمال می شود:

● اگر حالت نمایش روی فهرست سلسله مراتبی تنظیم شود، فقط داده های گروه فعلی و داده های همه عناصر والد (بدون عنصر فرزند) خوانده می شود.
● اگر حالت نمای درختی تنظیم شده باشد، فقط داده های گره های درخت باز خوانده می شود.
● هنگامی که نمای سلسله مراتبی تنظیم شده است (ویژگی Display روی Tree تنظیم شده است) و نمای درختی اولیه روی Expand All Levels تنظیم شده است، یک بار بارگیری داده های لیست پویا پشتیبانی نمی شود. برای دریافت داده، به تعداد گره هایی که در لیست نمایش داده شده وجود دارد، درخواست به سرور داده می شود.
در یک اکتساب داده واحد، یک لیست پویا از جداول موقتی که قبلا ایجاد شده است، با شرایط زیر استفاده مجدد می کند:
● هیچ درخواستی بعد از پرس و جو دسته ای اصلی در پرس و جو دسته ای لیست وجود ندارد.
● ترکیب جداول موقت و فیلدهای آنها از اجرای قبلی درخواست دسته ای تغییر نکرده است.

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

2. محدودیت ها و ویژگی ها

هنگام تنظیم یک فیلتر در یک لیست پویا، به یاد داشته باشید که اگر حالت نمایش لیست پویا فهرست سلسله مراتبی یا درخت باشد، فیلتر بر گروه ها تأثیر نمی گذارد. منظور از "گروه ها" عنصری از کتاب مرجع یا طرحی از انواع ویژگی ها است که در آن ویژگی ThisGroup روی True تنظیم شده است.
فیلترها به طور خودکار توسط لیست پویا به ویژگی های استاندارد Owner، Parent، Date، Period و ThisGroup اعمال می شوند.
ابزار استاندارد سیستم ترکیب داده ها فیلترهایی که به طور خودکار توسط یک لیست پویا به فیلدهای کلیدی اعمال می شوند، می توانند هم با ابزارهای استاندارد سیستم ترکیب داده و هم با افزودن مستقیم یک شرط به متن پرس و جو اعمال شوند. ATدر فیلدهای جدول اصلی در نتیجه استفاده از فیلترها توسط ابزارهای چیدمان، می توان آنها را هم در پرس و جوهای تودرتو و هم در پارامترهای جدول مجازی اعمال کرد.

هنگام توسعه لیست های پویا، ایده خوبی است که همه لیست های پویا را با پرس و جوهای سفارشی آزمایش کنید. در طول فرآیند تأیید، باید مطمئن شوید که اگر کوئری فهرست حاوی جستارهای تودرتو یا جداول مجازی باشد و فیلدهایی با نام مستعار مطابق با نام مستعار ویژگی های استاندارد Owner، Parent، Date، Period، ThisGroup یا فیلدهای کلیدی برای انتخاب در دسترس باشند. سپس این فیلدها معتبر هستند و با ویژگی های استانداردی که با آنها نام مستعار مشابهی دارند مطابقت دارند. اگر اینطور نیست، باید درخواست را طوری تغییر دهید که مطابقت داشته باشند یا
نام مستعار متفاوت است
اگر تولید پرس و جو دستی انتخاب شده باشد، برخی از محدودیت ها بر روی پرس و جو اعمال می شود:
● استفاده از عبارت FIRST در جستجوی لیست پویا پشتیبانی نمی شود. اگر لازم است از انتخابی در یک لیست پویا استفاده شود که با تعداد رکوردها محدود شده است، پرس و جو برای ایجاد یک لیست پویا باید به گونه ای بازنگری شود که محتوای واقعی پرس و جو در یک جستجوی فرعی قرار داده شود و محدودیت ها را محدود کند. تعداد رکوردهای دریافت شده در این پرسش فرعی شما همچنین می توانید از جدول موقت به جای درخواست فرعی استفاده کنید.
● فیلتر کردن، مرتب‌سازی و گروه‌بندی پشتیبانی نمی‌شود:

  • با توجه به جزئیات بخش های جدولی.
  • مشاهده فیلدها
  • فیلد DataVersion.
  • فیلد PredefinedDataName.
  • نوع جدول فیلد نمودار حساب.
  • قسمت MovementType جدول ثبت تجمع.
  • فیلد TypeValues ​​جدول انواع مشخصات پلان.
  • فیلد نوع نوع;
  • فیلد از نوع String (طول نامحدود).
  • فیلد از نوع BinaryData.

● مرتب سازی و گروه بندی بر اساس فیلدهای Subconto پشتیبانی نمی شود<НомерСубконто>و Subconto را تایپ کنید<НомерСубконто>جداول MovementsSubconto ثبت حسابداری.
● گروه بندی بر اساس فیلدهایی که عبارت های زبان پرس و جو هستند که حاوی توابع انبوه هستند پشتیبانی نمی شود.
● با انتخاب جدول اصلی، پرس و جو لیست پویا دارای محدودیت های زیر است:

  • پیوستن ها پشتیبانی نمی شوند.
  • استفاده از بخش ORDER BY پشتیبانی نمی شود. شما باید از یک پرس و جو بدون جدول اصلی استفاده کنید یا ترتیب لازم را از طریق تنظیمات لیست پویا تنظیم کنید.

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

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

● جدولی که کلیدی ندارد که هر ورودی جدول را به طور یکتا مشخص کند (مرجع جداول شی و کلید ورودی برای جداول ثبت). با این حال، جداول زیر را می توان به عنوان جدول اصلی یک لیست پویا (با وجود نداشتن کلید) تنظیم کرد:

● جدول زیرمجموعه ثبت حسابداری.
● تمام جداول مجازی ثبت حسابداری، به جز جدول MovementsSubconto.
● جداول مقادیر ثابت (از جمله جدول ثابت)؛
● جداول منابع داده خارجی بدون فیلدهای کلیدی.
● جداول مکعبی از منابع داده خارجی.
● جداول ثبت تجمع:

  • جدول گردش مالی;
  • جدول تعادل؛
  • جدول گردش مالی و موجودی

● جداول ثبت محاسبات:

  • جدول دوره اعتبار واقعی؛
  • داده های نموداری؛
  • داده های اساسی

● جداول قطعات جدولی اشیاء.
● تغییر جداول ثبت نام (مورد استفاده در مکانیسم های تبادل داده).
● جداول دنباله.
● جداول تبدیل (مورد استفاده در موتورهای تسویه مکرر).
● جدولی که در پرس و جو فقط در اتصال بیرونی استفاده می شود.

به عبارت دیگر، یک لیست پویا با یک جدول اصلی مشخص شده به درستی کار می کند اگر در نتیجه اجرای پرس و جو،
به عنوان منبع داده مشخص شده است، تعداد ردیف های دریافتی از جدول اصلی افزایش نمی یابد (با در نظر گرفتن انتخاب تحمیلی). اگر در نتیجه اجرای پرس و جو، تعداد ردیف های دریافت شده توسط پرس و جو از جدول اصلی افزایش یابد، این منجر به نقض منحصر به فرد بودن کلید رکورد جدول نمایش داده شده توسط لیست می شود. در این حالت باید استفاده از جدول اصلی پویا لیست را غیرفعال کنید.
هنگام کار با یک لیست پویا، لازم است حقوق دسترسی به جزئیات نمایش داده شده توسط لیست را در نظر بگیرید:
● داده های ستون های لیست پویا که با ویژگی Use always مشخص شده اند، اما کاربر فعلی حق View را ندارد، به سمت کلاینت منتقل نمی شود. دسترسی به داده های چنین ستون هایی (با استفاده از ویژگی CurrentData و روش RowData())
در سمت مشتری امکان پذیر نیست.
● اگر کاربر فعلی در قسمت کلیدی یک لیست پویا، View را نداشته باشد، دریافت داده ها توسط این لیست پویا منجر به خطای نقض دسترسی می شود.
برای یک لیست پویا که یک لیست شمارش را نمایش می دهد، هیچ راهی برای سفارشی کردن لیست به صورت تعاملی وجود ندارد.
ترکیب ستون ها و تنظیمات لیست پویا با نام مستعار فیلدهای انتخابی با فیلدهای پرس و جو مرتبط است. اگر نام مستعار فیلد انتخاب به صراحت در پرس و جو مشخص نشده باشد و فیلد یک فیلد سیستمی باشد، نام فیلد برای نسخه انگلیسی زبان داخلی به عنوان نام مستعار استفاده می شود.
رابطه مشخص شده به این معنی است که وقتی تغییر می‌دهید (یا به صراحت برای فیلدی که از نام مستعار خودکار استفاده می‌کند، نام مستعار مشخص می‌کنید)
نام مستعار فیلد پرس و جو که داده های لیست پویا را تولید می کند، تنظیمات ویژگی لیست پویا از بین می رود، عناصر فرم ویژگی های نمایش داده شده را از دست می دهند، تنظیمات لیست پویا نادرست می شوند و غیره.
در صورتی که منبع داده یک لیست پویا یک جدول (معمولی یا مجازی) باشد که به شما امکان می دهد انتخاب را بر اساس نقطه تنظیم کنید، اگر کاربر دوره نمایش را در چنین لیست پویا تنظیم کند (فاصله تنظیم تاریخ .. فرمان)،
مرزهای دوره مشخص شده به عنوان مقادیر انتخاب یا پارامترهای جدول مجازی تنظیم می شود. اگر وسیله گسترش زبان
پرس و جو برای سیستم ترکیب داده ها به صراحت نام پارامترهای جدول مجازی را مشخص می کند - پارامترها با مشخص شده تنظیم می شوند.
نام ها جداول که امکان کنترل دوره نمایش یا پردازش داده ها وجود دارد:
● جداول ثبت (اصلی یا مجازی) که امکان انتخاب بر اساس دوره وجود دارد (برای ثبت محاسبه - بر اساس دوره ثبت نام).
● جداول اصلی اسناد، فرآیندهای تجاری و وظایف.
● جداول اصلی مجلات اسناد.
● جداول دنباله اصلی، جداول مرزهای دنباله.
پارامتر پرس و جو یک لیست پویا می تواند یک آرایه یا لیستی از مقادیر باشد. با این حال، اگر پارامتر فهرستی از مقادیر باشد، تنها مقدار اول لیست به عنوان مقدار فیلتر استفاده خواهد شد. اگر یک لیست پویا از یک پرس و جو با پارامترها استفاده می کند، تنظیم اولیه مقادیر پارامتر باید در کنترل کننده OnCreateAtServer انجام شود.
هنگام نمایش داده های لیست پویا، نکات زیر را در نظر داشته باشید:
● تغییر برنامه‌ای ویژگی‌های یک لیست پویا، نوارهای فرمان مرتبط با آن را دوباره پر نمی‌کند
با این لیست پویا
● اگر چندین فیلد در یک گروه با حالت گروه بندی گروه بندی شوند در سلول و در فیلدهای گروه بندی شده فیلدی وجود دارد که با یک چک باکس نمایش داده می شود، این چک باکس همیشه ابتدا در سلول حاصل (در سمت چپ متن) نمایش داده می شود. ).
در یک لیست پویا، هنگام تعریف نوع داده برای فیلدهایی که عبارات آنها شامل پارامترها، فیلدها یا حروف اللفظی است، نوع حاصل با انواع فیلدها و لفظ ها تعیین می شود. اگر نوع مقدار پارامتر در نوع داده به دست آمده گنجانده نشود، مقدار آن کوتاه خواهد شد.
به عنوان مثال، در مثال زیر، فیلد از نوع Number خواهد بود.

انتخاب
وقتی نادرست است
سپس 5
در غیر این صورت
&پارامتر
پایان

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

انتخاب
وقتی نادرست است
سپس 5
در غیر این صورت
EXPRESS(&Parameter AS String(100))
پایان

اگر از پارامترها در عبارات فیلدهای انتخابی در متن آزاد پرس و جو لیست پویا استفاده می شود، باید به صراحت نوع پارامترها را با استفاده از ساختار مشخص کنید. بیان. به عنوان مثال، به جای &نامگذاری AS نامگذاریاستفاده کنید
EXPRESS(&Nomenclature AS Directory.Nomenclature) AS Nomenclature. در غیر این صورت، جستجو از طریق نوار جستجو ممکن است کارساز باشد.
اشتباه یا پرتاب خطا.

3. روش های به دست آوردن و ذخیره سازی داده ها با لیست پویا

هنگام دریافت داده برای نمایش، یک لیست پویا از یکی از سه روش استفاده می کند:
1. خواندن از پایگاه داده به صورت دسته ای انجام می شود که تعداد عناصر داده کمی بیشتر از تعداد ردیف هایی است که به طور همزمان توسط لیست نمایش داده می شوند (اما نه کمتر از 20). داده ها روی سرور ذخیره نمی شوند.
2. خواندن از پایگاه داده در صفحات 1000 مورد داده انجام می شود. داده ها در سرور ذخیره می شوند. داده های سلسله مراتبی در حافظه پنهان ذخیره می شوند: بیش از 2 صفحه عنصر برای هر والد ذخیره نمی شود. در هر لیست پویا بیش از 20 صفحه مورد ذخیره نمی شود. ذخیره سازی با لیست پویا برای جداول زیر فعال می شود:
● معیارهای انتخاب؛
● تمام جداول دفتر حسابداری به جز جدول اصلی و جدول MovementsSubconto.
● همه جداول ثبت تجمع، به جز جدول اصلی.
● کلیه جداول ثبت اطلاعات به جز جدول اصلی.
● تمام جداول ثبت محاسبات به جز جدول اصلی.
● جدول مجازی TasksBy Performer.
● جداول منابع خارجی بدون کلید.
● مکعب های منبع خارجی.

3. خواندن از پایگاه داده در صفحات 1000 موردی انجام می شود. قسمت اول برابر با 1 صفحه است. هر بخش بعدی 1 صفحه افزایش می یابد (زمانی که به پایان نمونه قبلی می رسد). هرچه «نقطه دیدگاه» به انتهای داده‌های نمایش داده شده نزدیک‌تر شود، انتخاب از پایگاه داده بزرگ‌تر خوانده می‌شود، در این حد با تمام داده‌های نمایش داده شده برابر می‌شود. داده ها در سرور ذخیره می شوند. حداکثر تعداد ورودی ها در کش و لیست پویا 1,000,000 است.
بسته به آنچه که توسط جدول اصلی لیست پویا انتخاب شده است و ویژگی Dynamic Read چه مقداری را می گیرد، از یک یا روش دیگری برای خواندن داده استفاده می شود:

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



● یکی از جداول زیر به عنوان مقدار ویژگی جدول اصلی مشخص شده است: جدول اصلی ثبت اطلاعات، ثبت تجمع، ثبت حسابداری، ثبت تسویه، جدول مجازی ثبت حسابداری MovementsSubconto:

● ویژگی خواندن پویا:
● نصب شده: از روش 1 استفاده می شود (روش ها در بالا توضیح داده شده اند).
● تنظیم مجدد: از روش 2 استفاده می شود (روش ها در بالا توضیح داده شده اند).

● به عنوان ویژگی جدول اصلی، یک جدول معیارهای انتخاب یا جدولی از وظایف توسط مجری (TasksBy Executor) مشخص شده است:
● کلیدی که ردیف جدول را مشخص می کند: پیوند.

● ویژگی Main table روی جدول مجازی ثبت اطلاعات SliceFirst یا SliceLast تنظیم شده است:
● کلیدی که ردیف جدول را مشخص می کند: RecordKey.
● ویژگی Dynamic Read قابل اجرا نیست.
● روش 2 استفاده می شود (روش ها در بالا توضیح داده شده است).

● یکی از جداول ثبت مجازی به عنوان ویژگی جدول اصلی مشخص شده است، به جز موارد ذکر شده در بالا:

● ویژگی Dynamic Read قابل اجرا نیست.

● ویژگی Main table مشخص نشده است، از یک پرس و جو دلخواه استفاده می شود:
● کلیدی که ردیف جدول را مشخص می کند: شماره.
● ویژگی Dynamic Read قابل اجرا نیست.
● روش 3 استفاده می شود (روش ها در بالا توضیح داده شده است).

برای نمایش، داده ها به صورت تکه هایی به مشتری منتقل می شود که اندازه آن شبیه اندازه تکه در روش اول خواندن داده ها است (توضیح داده شده در ابتدای این بخش).
هنگام ایجاد یک فرم حاوی یک لیست پویا، ابتدا 45 مورد داده برای هر لیست پویا قابل مشاهده به مشتری ارسال می شود (اگر لیست بیش از 45 مورد داشته باشد). اگر لیست پویا بیش از 45 ردیف را نشان می دهد، پس از باز شدن فرم، یک تماس سرور اضافی برای بازیابی موارد داده از دست رفته برقرار می شود.

4. تنظیمات لیست پویا

ویژگی تنظیمات لیست – با کلیک بر روی لینک باز کردن، فرم تنظیمات نمایش پویا لیست باز می شود. تنظیم لیست همانند عملیات مشابه در سیستم ترکیب داده انجام می شود.


برنج. 2. یک ظاهر طراحی مشروط یک لیست پویا

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

مشاوره.باید به خاطر داشت که انتخاب ضعیف فیلدهای مرتب سازی (و همچنین انتخاب و گروه بندی داده ها) بر کارایی نمونه گیری پویا تأثیر منفی می گذارد.
از نقطه نظر یک توسعه دهنده برنامه، تنظیمات لیست پویا شامل چندین بخش است که به هم مرتبط هستند. ویژگی اصلی که از طریق آن می توانید تنظیمات یک لیست پویا را کنترل کنید LinkerSettings. این شی شامل سه مجموعه تنظیمات است که هنگام اجرای سیستم، تنظیمات نهایی اعمال شده در لیست پویا را تعیین می کند:
● تنظیمات - تنظیمات ایجاد شده در حالت Configurator. ویژگی فهرست دینامیک Order دسترسی سریع به ویژگی Settings.Order سازنده تنظیمات لیست پویا را فراهم می کند، بنابراین ساختارهای زیر معادل هستند:
List.Order و List.SettingsComposer.Settings.Order;
● UserSettings تنظیماتی هستند که کاربر می تواند در حالت 1C:Enterprise تغییر دهد.
● FixedSettings - این تنظیمات از زبان داخلی تنظیم می شوند. این ویژگی همچنین حاوی مقادیر انتخابی است که با استفاده از پارامترهای آن به فرم ارسال می شود. ویژگی های فیلتر لیست پویا، پارامترها، ظاهر مشروط دسترسی سریع به تنظیمات ثابت سازنده تنظیمات لیست پویا را فراهم می کند. به عبارت دیگر، این تماس ها معادل هستند:
List.SettingsComposer.FixedSettings.Filter و List.Filter.
هنگام تشکیل تنظیمات نهایی لیست پویا، تنظیمات مختلف به شرح زیر ترکیب می شوند:
● اگر هر نوع تنظیماتی کاملاً به‌عنوان تعریف شده توسط کاربر علامت‌گذاری شده باشد، تنظیمات کاربر در تنظیمات حاصل گنجانده می‌شود.
(List.SettingsComposer.UserSettings). در این حالت، اگر هر یک از عناصر تنظیمات به‌عنوان غیرقابل دسترس علامت‌گذاری شود، این تنظیمات در تنظیمات حاصل از ویژگی List.Settings Composer قرار می‌گیرند. تنظیمات.
● اگر هر نوع تنظیمات نه به طور کامل، بلکه عنصر به عنصر به‌عنوان خاص کاربر علامت‌گذاری شده است، پس:
● عناصر علامت گذاری شده به عنوان سفارشی در تنظیمات حاصل از ویژگی List.SettingsComposer.CustomSettings گنجانده می شوند.
● مواردی که به‌عنوان غیرقابل دسترس علامت‌گذاری شده‌اند در تنظیمات حاصل از ویژگی List.SettingsComposer.Settings گنجانده می‌شوند.
● تنظیمات ثابت (List.SettingsComposer.FixedSettings) به تنظیمات حاصل «همانطور که هست» اضافه می شوند. در عین حال، زمانی که تنظیمات ثابت و کاربر حاوی تنظیماتی به همین نام باشد، وضعیت غیرقابل قبول است، به عنوان مثال، انتخاب با همان مقدار سمت چپ در شرایط.

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


برنج. 3. مدیریت گنجاندن در تنظیمات کاربر

چک باکس پایین پنجره (نگاه کنید به شکل 3) مسئول قرار دادن کل نوع تنظیمات در تنظیمات (عادی یا سریع) است. این ویژگی برای انتخاب، سفارش، گروه بندی و یک ظاهر طراحی مشروط در دسترس است. اگر تنظیمات با حالت ویرایش انتخاب سریع مشخص شده اند، در ویژگی گروه تنظیمات سفارشی جدول فرم که لیست پویا را نمایش می دهد، باید یک گروه فرم خالی را مشخص کنید که در آن عناصر مرتبط با تنظیمات سریع کاربر لیست پویا مشخص می شود. قرار گیرد. اگر گروه مشخص نشده باشد، تنظیمات سریع کاربر روی فرم نمایش داده نمی شود. همچنین امکان فراخوانی صریح ایجاد تنظیمات کاربر با استفاده از زبان 1C: Enterprise با استفاده از متد CreateUserSettingsFormItems() در پسوند لیست پویا وجود دارد.
همچنین امکان انتخاب موارد تنظیمات خاص در تنظیمات کاربر وجود دارد. این ویژگی برای انتخاب و عناصر طراحی مشروط در دسترس است (شکل 3 را ببینید).

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

5. در یک لیست پویا جستجو کنید

لیست پویا واقع در فرم امکان انجام جستجوی تعاملی در داده های نمایش داده شده را فراهم می کند. جستجو را می توان با استفاده از ابزارهای زیر انجام داد: رشته جستجو، گفتگوی جستجو، جستجوی مقدار فعلی، استفاده از تاریخچه جستجو و تنظیم دوره (برای لیست های پویا که اسناد را نشان می دهد). نتیجه جستجو مجموعه محدودی از رکوردها است
یک لیست پویا (از آنهایی که برای یک کاربر خاص موجود است) که با معیارهای جستجو مطابقت دارد.
سه ویژگی جدول فرم مدیریت شده وجود دارد که لیست پویا را برای کنترل قابلیت های جستجوی یک لیست پویا نمایش می دهد:
● موقعیت رشته جستجو - موقعیت رشته جستجو را مشخص می کند. می تواند مقادیر زیر را بگیرد: Auto، Command Panel، No، Top، Bottom.


برنج. 4. نوار جستجو در لیست پویا

اگر مقدار این ویژگی روی Command bar تنظیم شود، نوار جستجو در نوار فرمان فرم (اگر لیست پویا ویژگی اصلی فرم باشد) یا در نوار فرمان مرتبط با لیست پویا نمایش داده می شود. نوار جستجوی قرار داده شده در نوار فرمان همیشه در لبه سمت راست نوار فرمان (همراه با دکمه های واقع در سمت راست نوار جستجو) فشار داده می شود.
اگر ویژگی روی No تنظیم شده باشد، رشته جستجو در فرم وجود ندارد و هنگامی که شروع به تایپ رشته جستجو می کنید یک گفتگو باز می شود.
اگر ویژگی روی Top تنظیم شود، نوار جستجو بین نوار فرمان لیست و جدولی که لیست پویا را نمایش می دهد قرار می گیرد. اگر ویژگی روی Bottom تنظیم شود، رشته جستجو بلافاصله بعد از جدول نمایش لیست پویا قرار می گیرد.


● اگر ویژگی Compatibility Mode روی Do not use یا قدیمی تر از نسخه 8.3.4 تنظیم شده باشد، مقدار Command Panel است.
انتقال به نوار جستجو به شرح زیر انجام می شود:
● با فشردن کلیدهای ترکیبی Ctrl+F.
● ماوس؛
● هنگامی که شروع به تایپ کردن در یک لیست پویا می کنید (بر اساس مقدار ویژگی SearchOnType لیست پویا).
● موقعیت نمایش وضعیت - توضیح می دهد که وضعیت نمایش در کجا نمایش داده می شود: کدام قسمت ها جستجو شده اند و چه مقادیری
در هر زمینه ای جستجو کرد می تواند مقادیر زیر را بگیرد: خودکار، هیچ، بالا، پایین


برنج. 5. جستجوی وضعیت در لیست پویا

اگر ویژگی روی No تنظیم شود، وضعیت view در فرم وجود نخواهد داشت. در نتیجه، تعیین اینکه آیا جستجو انجام شده است یا نه تنها با در دسترس بودن دکمه جستجوی لغو امکان پذیر خواهد بود.
اگر ویژگی روی Top تنظیم شود، وضعیت view بین نوار فرمان لیست و جدولی که لیست پویا را نمایش می دهد قرار می گیرد. اگر ویژگی روی Bottom تنظیم شود، وضعیت view بلافاصله بعد از جدولی که لیست پویا را نمایش می دهد قرار می گیرد.
اگر فرم در 1C:Enterprise نسخه 8.3.4 و قبل از آن ایجاد شده باشد، ویژگی روی No تنظیم می شود. اگر فرم در 1C:Enterprise نسخه 8.3.5 و جدیدتر ایجاد شده باشد، ویژگی روی Auto تنظیم می شود. ارزش واقعی ملک در این مورد به شرح زیر تعیین می شود:
● اگر ویژگی Compatibility Mode روی نسخه 8.3.4 (و پایین تر) تنظیم شده باشد – خیر.
● اگر ویژگی Compatibility Mode روی Do not use یا قدیمی تر از نسخه 8.3.4 تنظیم شده باشد، مقدار Top است.
● موقعیت کنترل جستجو - تعیین می کند که دکمه کنترل جستجو در کجا نمایش داده شود. این دکمه منویی را باز می کند که حاوی اطلاعات زیر است: دستورات یافتن بر اساس مقدار فعلی، جستجوی پیشرفته، لغو جستجو، تنظیم دوره (برای لیست اسناد و مجلات) و تاریخچه درخواست های جستجو (5 درخواست آخر). این ویژگی می تواند مقادیری داشته باشد: خودکار، خیر، پانل فرمان.


برنج. 6. مدیریت جستجو در یک لیست پویا

اگر ویژگی روی No تنظیم شده باشد، دکمه کنترل جستجو در فرم نخواهد بود (اما دستورات با استفاده از منوی More در دسترس خواهند بود). مقدار ویژگی Command Bar دکمه ای را در نوار فرمان مرتبط با جدولی قرار می دهد که یک لیست پویا را نمایش می دهد.
اگر فرم در 1C:Enterprise نسخه 8.3.4 و قبل از آن ایجاد شده باشد، ویژگی روی No تنظیم می شود. اگر فرم در 1C:Enterprise نسخه 8.3.5 و جدیدتر ایجاد شده باشد، ویژگی روی Auto تنظیم می شود. ارزش واقعی ملک در این مورد به شرح زیر تعیین می شود:
● اگر ویژگی Compatibility Mode روی نسخه 8.3.4 (و پایین تر) تنظیم شده باشد – خیر.
● اگر ویژگی Compatibility Mode روی Do not use یا قدیمی تر از نسخه 8.3.4 تنظیم شده باشد، مقدار Command Panel است.
اگر چندین پنل فرمان در فرم وجود داشته باشد که منبع فرمان آنها یک جدول از فرم مدیریت شده (نمایش داده های لیست پویا) است، رشته جستجو و دکمه کنترل جستجو فقط در یک پانل فرمان قرار می گیرند:
● یا در نوار فرمان خود لیست پویا (اگر تکمیل خودکار برای آن فعال باشد)
● یا در هر یک از پنل های فرمان باقی مانده.

ویژگی های استفاده از جستجو در یک لیست پویا را در نظر بگیرید:
● برای راحت کردن جستجو برای استفاده (از جمله از نظر عملکرد)، باید جستجوی متن کامل را برای تمام اشیاء پیکربندی که می‌توانند به عنوان جدول اصلی یک لیست پویا استفاده شوند، فعال کنید. همچنین، جستجوی متن کامل باید شامل تمام جزئیات اشیاء پیکربندی باشد که می‌توانند در یک لیست پویا نمایش داده شوند و ممکن است جستجو برای آنها لازم باشد.
اگر شی از جستجوی متن کامل حذف شود، مکانیسم جستجوی مورد نظر کار خواهد کرد، اما عملکرد چنین جستجویی بسیار پایین خواهد بود. استفاده از جستجو در اشیایی که با جستجوی متن کامل نمایه نشده اند، توصیه نمی شود.
● راه حل برنامه باید دارای یک کار برنامه ریزی شده باشد که به طور منظم فهرست جستجوی متن کامل را به روز می کند.

● جستجو در تمام ستون‌های لیست پویا (و جسم پیکربندی) انجام نمی‌شود، بلکه فقط در ستون‌هایی که در جدول نمایش داده می‌شوند، انجام می‌شود.
● جستجو در یک لیست پویا بر اساس فیلدهای انواع مرجع با نمایش دلخواه توسط فیلدهایی انجام می شود که برای
تشکیل نمایندگی (اینجا را ببینید). فیلدهای موجود در view با در نظر گرفتن کنترلر ViewFieldsGetProcess() شی مربوطه به دست می آیند.
● برای لیست های پویا با جدول اصلی مشخص شده، از جستجوی متن کامل در برابر جدول اصلی استفاده می شود. تمام پیوندهای فهرست نشده از جدول اصلی به نتایج جستجوی متن کامل اضافه خواهند شد. نتیجه جستجوی متن کامل برای جدول اصلی به عنوان فیلتر توسط فیلدهای کلیدی استفاده می شود. جستجوی متن کامل نیز در فیلدهای نمایش داده شده در لیست از جداول دیگر انجام می شود (اگر جستجوی متن کامل برای فیلد و شیء پیکربندی استفاده شود). بدون فعال بودن جستجوی متن کامل، ممکن است داده ها فعال شوند
پیدا شد، اما خود جستجو بسیار کند خواهد بود.
اگر هنگام تلاش برای انجام جستجوی تمام متن خطایی رخ دهد، جستجو بدون استفاده از جستجوی تمام متن انجام می شود.
به عنوان مثال، این می تواند هنگام جستجو با یک حرف و تعداد زیادی از خطوط در پایگاه اطلاعاتی که با این حرف شروع می شود اتفاق بیفتد.
● اگر فیلتری با نوع مقایسه Equals برای فیلدی از جدول اصلی یک لیست پویا استفاده شود، هنگام انجام جستجوی متن کامل، یک مقدار فیلتر به عبارت جستجوی این جدول اضافه می‌شود.
● رشته جستجو به کلمات تقسیم می شود. این پارتیشن بندی طبق قوانین زیر انجام می شود:
● خط با استفاده از کاراکترهای فاصله و برگه به ​​عنوان جداکننده تقسیم می شود.
● سپس هر قطعه به دست آمده پردازش می شود:
● اگر قطعه نمایشی از تاریخ (با یا بدون زمان) بر اساس محل فعلی جلسه باشد، آن قطعه کلمه است.
● در غیر این صورت، قطعه بیشتر با استفاده از کاراکترهای ".-/\" به عنوان جداکننده تقسیم می شود. در این حالت، هر قطعه حاصل از رشته به عنوان یک کلمه در نظر گرفته می شود.

● برای هر کلمه، مجموعه ای از شرایط خاص خود را تشکیل می دهد که با "OR" ترکیب می شوند. این مجموعه شرایط در صورتی ایجاد می شود که جستجوی تمام متن برای یک کلمه معین در جدولی که این فیلد از آن به دست آمده است، حداقل یک شی را بازگرداند، یا اگر جستجوی تمام متن برای این فیلد استفاده نشده باشد. شرایط به شرح زیر تشکیل می شود:
● برای یک فیلد از نوع String، شرط FieldName مانند %Word است.
● برای یک فیلد از نوع Number، شرط FieldName=Value است، جایی که Value کلمه ای است که به Number فرستاده شده است. اگر گچ گیری قابل انجام نباشد، جستجوی میدانی انجام نخواهد شد.
● کلمه به عنوان یک رشته فرعی در نمایش پیش فرض نوع Boolean تعریف شده برای جلسه جاری جستجو می شود. اگر کلمه جستجو در یک نما یافت شود، جستجو برای مقدار مربوط به نمایی که کلمه در آن پیدا شده است انجام می شود. در عین حال، نماهایی که با استفاده از ویژگی عنصر فرم فرمت مشخص شده اند برای جستجو استفاده نمی شوند.
● برای یک فیلد نوع تاریخ، شرط FieldName>=DayStart(Word) و FieldName است.<=КонецДня(Слово). Если Слово подобно дате, в которой год
با یک یا دو رقم مشخص می شود، سال به قرن جاری تبدیل می شود و این مقدار در شرایط جستجو جایگزین می شود.
● برای فیلدهای مرجع، جستجو در فیلدهایی که برای شکل دادن به نمایش پیوند استفاده می شوند انجام می شود. در هر یک از این فیلدها جستجو کنید
طبق قوانین توضیح داده شده در بالا انجام می شود. جستجو از فیلدهای مورد استفاده برای ارائه دلخواه داده ها استفاده نمی کند.
مجموعه شرایط برای هر کلمه "با AND" ترکیب می شود.
● برای مقادیر با صفرهای ابتدایی، می‌توانید روی رشته‌ای با صفرهای ابتدایی یا روی رشته‌ای که بدون صفرهای ابتدایی مشخص شده است جستجو کنید.
● اگر لیست پویا فهرستی از اسناد یا تاریخچه سند را نشان می دهد، بازه زمانی مشخص شده مشاهده لیست نیز در ناحیه فرم اختصاص داده شده به نمایش وضعیت نمایش برای لیست پویا مورد نیاز نمایش داده می شود.
● اگر جدول اصلی لیست پویا یک معیار انتخاب باشد، فرمان جستجو بر اساس مقدار فعلی در دسترس نیست.
● قطعات یافت شده از خطوط هنگام نمایش در جدول برجسته می شوند.
● در هر ستون فقط یک رشته جستجو پشتیبانی می شود. افزودن یک عبارت جستجوی جدید برای ستونی که از قبل جستجو شده است به جای افزودن دو عبارت جستجو جایگزین عبارت جستجو می شود.
● اگر فرم دارای الحاقی عنصر فرم از فرم نباشد رشته جستجوی مرتبط با جدول را نمایش دهید (ویژگی Source افزونه عنصر فرم) که فهرستی پویا را نمایش می دهد، سپس کلید ترکیبی Ctrl+F را فشار دهید. گفتگوی جستجو را باز می کند.


برنج. 7. گفتگوی جستجو

اگر فرم دارای الحاقی عنصر فرم از فرم نمایش رشته جستجوی مرتبط با جدول (ویژگی Source از افزونه عنصر فرم) است که فهرستی پویا را نمایش می دهد، باید از دستور جستجوی پیشرفته برای باز کردن استفاده شود. گفتگوی جستجو
● هنگام استفاده از گفتگوی جستجو، نکات زیر را در نظر داشته باشید:
● باز کردن گفتگوی جستجو با میانبر صفحه کلید باعث می شود که مقدار سلول فعلی در ردیف What to search ظاهر شود و مقدار دکمه رادیویی How to search روی مطابقت دقیق تنظیم شود.

● باز کردن گفتگوی جستجو با شروع مستقیم تایپ رشته جستجو در یک لیست پویا باعث می شود که مقدار دکمه رادیویی How to search روی قسمتی از یک رشته تنظیم شود و متن تایپ شده وارد قسمت What to search شود.

6. دریافت داده های نمایش داده شده توسط لیست پویا

هنگام استفاده از لیست‌های پویا، ممکن است نیاز داشته باشید که با در نظر گرفتن فیلترهای اعمال شده و جستجوی اعمال شده، اقدامات مختلفی را روی داده‌هایی که در حال حاضر توسط لیست پویا نمایش داده می‌شوند، انجام دهید. چنین اقداماتی عبارتند از: پردازش اطلاعات نمایش داده شده، به عنوان مثال، ارسال مجدد اسناد انتخاب شده یا تنظیم برخی جزئیات برای اشیاء انتخاب شده، ایجاد لیستی از اشیاء موجود (با طراحی و غیره)، به عنوان مثال، برای چاپ یا ذخیره در یک سند صفحه گسترده.
برای دریافت داده هایی که در یک لیست پویا نمایش داده می شوند، از GetDataCompositionSchemeExecutable() استفاده کنید و
GetDataCompositionSettingsExecutable().
مثال بازیابی اطلاعات:

Schema = Items.List.GetExecutableDataCompositionSchema();
تنظیمات = Items.List.GetDataCompositionSettingsExecutable();
Layout Layout Builder = New Data Layout Layout Builder();
LayoutLayout = LayoutComposer.Run(Scheme, Settings);
CompositionProcessor = NewDataCompositionProcessor;
LayoutProcessor.Initialize(LayoutLayout);
OutputProcessor = New OutputProcessorofDataCompositionResultIntoSpreadsheetDocument;
بازگشت OutputProcessor.Output(CompositionProcessor);

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

در فرآیند نهایی کردن پیکربندی ها، هر برنامه نویس 1C با لیست های پویا مواجه می شود.
لیست پویا یک شی رابط است که برای نمایش لیست های مختلف اشیاء پایگاه داده یا داده های غیر شی - ورودی های ثبت استفاده می شود.
به عنوان مثال، یک لیست پویا برای نمایش لیستی از موارد استفاده می شود:

برای نشان دادن امکانات یک لیست پویا، بیایید یک پردازش خارجی ایجاد کنیم، فرم اصلی را اضافه کنیم. بیایید یک ویژگی جدید با نوع "فهرست پویا" به فرم اضافه کنیم. بریم سراغ خواصش و ببینیم چی هست.
ما به ملک "درخواست سفارشی" علاقه مندیم. فعال کردن آن، تمام امکانات یک لیست پویا را به ما نشان می دهد. ما قادر خواهیم بود با استفاده از تقریباً تمام ویژگی های زبان پرس و جو سیستم 1C: Enterprise یک پرس و جو بنویسیم. کادر را علامت بزنید و روی پیوند "باز کردن" کلیک کنید:

به طور پیش فرض، لیست ما لیستی از اقلام را با موجودی کل برای همه انبارها نمایش می دهد. برای پیاده سازی چنین لیستی، کوئری زیر را اضافه کنید:


به عنوان جدول اصلی، ما "Directory. Nomenclature" را انتخاب می کنیم، این به ما امکان می دهد با لیست پویا مانند لیست نامگذاری کار کنیم - اضافه کردن، تغییر، علامت گذاری برای حذف عناصر دایرکتوری. همچنین، تنظیم جدول اصلی امکان خواندن دینامیک داده ها را در دسترس قرار می دهد - این بدان معنی است که انتخاب در قسمت های مورد نیاز انجام می شود.
بعد، ما باید عناصر فرم را برای لیست خود ایجاد کنیم:

اگر بخواهیم پردازش خود را در این فرم اجرا کنیم، با خطا مواجه می شویم:


برای حذف آن، باید مقدار پارامتر "Period" را تنظیم کنید. برای این کار می توانید از روش "SetParameterValue" مجموعه "Parameters" لیست پویا استفاده کنید. این روش دو پارامتر دارد:
. "پارامتر" - نوع: رشته; پارامتر DataComposition. نام پارامتر یا پارامتر ترکیب داده که مقدار آن باید تنظیم شود.
. "ارزش" - نوع: دلخواه. مقداری که باید تنظیم شود.
را می توان در کنترل کننده "OnCreateOnServer" فرم فراخوانی کرد:

آیا سوالی دارید، آیا به کمک مشاور نیاز دارید؟


اجازه دهید به کاربر امکان تغییر دوره دریافت موجودی را بدهیم. برای انجام این کار، اجازه دهید ویژگی و عنصر فرم "Date" مرتبط با آن را اضافه کنیم:


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


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




فرض کنید کاربران می‌خواهند موجودی‌های فعلی یا دریافت‌های پیش‌بینی‌شده را ببینند. بیایید یکی از گزینه های اجرایی را در نظر بگیریم. بیایید یک ویژگی فرم بولی و یک دکمه رادیویی مرتبط اضافه کنیم:


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


نتیجه تغییرات ایجاد شده: