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

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

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

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


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

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


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

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


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


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


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




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


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


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



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

امروز یک مشکل غیر استاندارد برای لیست های پویا را حل خواهیم کرد.ما باید کل را با استفاده از ویژگی سند "Amount" محاسبه کنیم و آن را در پاورقی لیست نمایش دهیم. به همین ترتیب، مقدار میانگین فیلد «رتبه‌بندی» را محاسبه کنید و آن را در پاورقی فهرست پویا نمایش دهید. محاسبه کل فیلدها باید انتخابی را که کاربر در تنظیمات فهرست اسناد تنظیم کرده است، در نظر بگیرد.

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

پیاده سازی

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

فرم و رابط

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

مجموع مقادیر اسناد در این جزئیات ثبت می شود.

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

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

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

الگوریتم

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

توجه: تنظیمات لیست های پویا (نگاه کنید به تصویر بالا) بر اساس مکانیسم های سیستم ترکیب داده ها (DCS) است. بر این اساس، می توانید به روشی مشابه (افزودن، تغییر، خواندن و غیره) با آنها کار کنید.

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

1. درخواست اولیه لیست پویا را دریافت می کنیم.

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

2. ما متن شرایط درخواست را تشکیل می دهیم (بخش "WHERE") و آن را به درخواست اصلی جایگزین می کنیم.

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

این رویه بسته به نوع عنصر انتخابی تصویب شده (گروه یا عنصر انتخاب)، متن شرط مربوطه را تولید می کند. همه شرایط یک گروه با پرانتز احاطه شده اند و شرایطی که در گروه قرار دارند نیز با پرانتز احاطه شده اند. شرایط بین عبارات به گروه والد بستگی دارد (شرط "AND" بین عناصر بالای سلسله مراتب قرار می گیرد).

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

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

برای جزئیات بیشتر در مورد الگوریتم، پیکربندی آزمایشی پیوست شده به مقاله را ببینید. در زیر یک اسکرین شات از تنظیمات انتخاب و شرایط درخواست ایجاد شده برای آنها مشاهده می شود.

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

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

اجازه دهید به شما یادآوری کنم که باید مقدار میانگین را برای فیلد «رتبه‌بندی» و مقدار کل را برای فیلد «مقدار» دریافت کنیم. ما قبلاً درخواستی را با در نظر گرفتن انتخاب‌ها ایجاد کرده‌ایم؛ تنها چیزی که باقی می‌ماند محاسبه کل مقادیر است. این کار با درخواست زیر انجام می شود:

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

بهینه بودن راه حل

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

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

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

پارامتر اول ارسال انتخاب لیست پویا است، دومی ساختاری از نوع "SelectionFieldNameSelectionFieldValueType" است. لطفاً توجه داشته باشید که اولین پارامتر در تابع به عنوان مقدار خود به دست می آید. نمی‌توانم دقیقاً دلیل آن را بگویم، اما اگر انتخاب را به عنوان پیوند ارسال کنید، پلتفرم خطا می‌دهد که انتخاب را نمی‌توان تغییر داد. خطا فقط از این طریق دور زده شد.->

توجه: استفاده از رویه‌های خارج از زمینه به شما امکان می‌دهد تا اندازه ترافیک ارسالی را چندین بار کاهش دهید، زیرا برخلاف رویه‌های سرور حساس به زمینه (دستورالعمل "&OnServer") داده‌های فرم به سرور منتقل نمی‌شوند.

نتیجه

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

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

با این وجود، روش توضیح داده شده در مقاله هنگام حل مسائل انجام می شود.

فایل های جهت دانلود:

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

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

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

بیایید به خواص آن برویم و ببینیم چه چیزی وجود دارد.

اول از همه، ما به کادر انتخاب "درخواست سفارشی" علاقه مندیم. این همه مزایای یک لیست پویا را برای ما آشکار می کند. ما این فرصت را خواهیم داشت که درخواست خود را با پارامترها بنویسیم. کادر را علامت بزنید و روی پیوند «باز کردن» کلیک کنید:

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

267 درس ویدیویی را در 1C به صورت رایگان دریافت کنید:

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

پرس و جو سفارشی در لیست پویا

ابتدا بیایید درخواست مورد نیاز خود را با موجودی ها و قیمت ها ایجاد کنیم. مانند آن:

برگه "تنظیمات".

و اکنون بهترین بخش! به تب "تنظیمات" بروید. و بلافاصله می بینیم که در تب اول می توانیم برای هر فیلدی در درخواست انتخاب کنیم:

تنظیم برنامه ای پارامترهای پرس و جو در یک لیست پویا 1C 8.3

فراموش نکنید که ما دو پارامتر در درخواست داریم: "دوره" و "نوع قیمت". ما باید آنها را به درخواست منتقل کنیم، در غیر این صورت خطایی رخ خواهد داد.

بیایید این پارامترها را در پارامترهای فرم بنویسیم و خطوط زیر را در ماژول فرم اضافه کنیم:

فهرست &OnServerProcedureWhenCreatingOnServer(شکست، پردازش استاندارد). گزینه ها. SetParameterValue("دوره"، پارامترها. تاریخ) ; فهرست کنید. گزینه ها. SetParameterValue("PriceType"، Parameters.PriceType) ; پایان رویه

چاپ (Ctrl+P)

لیست پویا

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

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

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

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

انتخاب کنید
انتخاب
WHEN Delivery.Coefficient = 1 THEN &Presentation
در غیر این صورت تحویل. ضریب
END AS نسبت
از جانب

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

انتخاب کنید
انتخاب
WHEN Delivery.Coefficient = 1 THEN EXPRESS(&Representation AS String(100)) ELSE Delivery. ضریب
END AS نسبت
از جانب
Document.Delivery of Products How to Deliver

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



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

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

● ویژگی Main table شامل جدول معیار انتخاب یا جدول وظایف توسط مجری (Tasks By Performer) است:
● کلید شناسایی ردیف جدول: پیوند.

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

● ویژگی Main table روی یکی از تنظیم شده است جداول مجازیثبت نام هایی غیر از موارد ذکر شده در بالا:

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

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

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

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

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


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

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

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

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


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

چک باکس در پایین پنجره (نگاه کنید به شکل 3) مسئول قرار دادن کل نوع تنظیمات در تنظیمات (عادی یا سریع) است. این ویژگی برای انتخاب، مرتب سازی، گروه بندی و شرطی سازی در دسترس است. اگر تنظیمات با حالت ویرایش مشخص شده باشد انتخاب سریع، سپس در ویژگی Custom Settings Group جدول فرم که لیست پویا را نمایش می دهد، باید یک گروه فرم خالی را مشخص کنید که عناصر مرتبط با تنظیمات سفارشی سریع لیست پویا در آن قرار گیرند. اگر گروه مشخص نشده باشد، تنظیمات سریع کاربر روی فرم نمایش داده نمی شود. همچنین می توان به طور صریح ایجاد تنظیمات سفارشی را با استفاده از زبان داخلی با استفاده از متد CreateCustomSettingsFormItems() در پسوند لیست پویا فراخوانی کرد.
همچنین این امکان وجود دارد که انتخاب کنید آیا موارد تنظیمات خاصی را در تنظیمات کاربر قرار دهید یا خیر. این ویژگی برای انتخاب و عناصر طراحی مشروط در دسترس است (شکل 3 را ببینید).

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

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

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


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

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


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


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

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


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

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

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

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

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


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

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

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

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

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

Schema = Elements.List.GetExecutableDataCompositionSchema();
تنظیمات = Items.List.GetExecutableDataCompositionSettings();
LayoutLinker = newDataCompositionLayoutLinker();
LayoutLayout = LayoutComposer.Execute(Scheme, Settings);
CompositionProcessor = newDataCompositionProcessor;
LayoutProcessor.Initialize(LayoutLayout);
OutputProcessor = New OutputProcessorDataCompositionResultInTabularDocument;
ReturnOutputProcessor.Output(CompositionProcessor);

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

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

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

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

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

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

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

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

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

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

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



SELECT NomenclatureList.Name AS Name, GoodsIn Warehouses Remainings. Warehouse AS Warehouse, GoodsIn Warehouses Remainings.QuantityRemaining AS QuantityRemaining FROM Directory.Nomenclature AS Nomenclaturelist. کالاها در گنجینه های آمریکا نرم افزار باقی مانده NomenclatureList.Link = محصولاتدر انبارها باقی مانده ها. نامگذاری WHERE

از آنجایی که درخواست ما از پارامتر "CurrentDate" استفاده می کند، باید مقدار آن را قبل از استفاده از پردازش تنظیم کنیم. برای انجام این کار، در ماژول فرم در رویه "When CreatedOnServer"، با استفاده از یک دستور استاندارد، تابع "CurrentSessionDate" را به آن اختصاص دهید. همچنین باید لیست پویا را در فرم کنترل نمایش دهیم و ترتیب فیلدها را برای وضوح تغییر دهیم. مشخصه «Nomenclature Remaining» را به عناصر فرم (قسمت بالا سمت چپ) بکشید و از فلش‌های آبی برای تغییر ترتیب فیلدها در جدول روی فرم استفاده کنید.

&روی رویه سرور وقتی روی سرور ایجاد می‌شود (شکست، پردازش استاندارد) نام‌گذاری باقی می‌ماند. پارامترها. تنظیم ParameterValue("CurrentDate"، CurrentSessionDate()) EndProcedure


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

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



&OnServerProcedureWhenCreatingOnServer(Failure, StandardProcessing)RemainingDate = CurrentSessionDate(); آیتم Remains.Parameters.SetParameterValue("CurrentDate", RemainingDate); پایان رویه &در رویه مشتری تاریخ باقیمانده وقتی تغییر(عنصر)نامگذاری Remaining.Parameters.SetParameterValue("CurrentDate",RemainingDate); پایان رویه

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

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

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

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