یک عنصر را در لیست مقادیر 1c پیدا کنید. ساختار مجموعه جهانی

این مقاله درباره چیست؟

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

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

قابلیت کاربرد

این مقاله پلت فرم 1C: Enterprise 8.3 نسخه فعلی را مورد بحث قرار می دهد.

نحوه کار با مجموعه های جهانی در 1C

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

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

درک این نکته مهم است که مجموعه ها در یک پایگاه داده ذخیره نمی شوند (ما در مورد نوع داده Value Store صحبت نمی کنیم، که می تواند تقریباً هر نوع داده ای را ذخیره کند).

وجود داشته باشد انواع مختلفمجموعه های جهانی: آرایه، ساختار، تطبیق، آرایه ثابت، جدول ارزش، قسمت جدولیو غیره. اما همه مجموعه ها رفتار مشابهی دارند.

یک مجموعه می تواند در نتیجه عملکرد یک تابع ایجاد شود (این تابع یک مجموعه جهانی را به عنوان یک مقدار برمی گرداند).

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

مثلا: OurArray = آرایه جدید;

سازنده‌های بسیاری از مجموعه‌های عمومی پارامتری هستند.

بنابراین، در سازنده برای می توانید تعداد اعضا را در ابعاد مربوطه مشخص کنید. آن ها شما می توانید بلافاصله چند بعدی را اعلام کنید .

توضیحات مربوط به سازنده در دستیار نحو است.

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

اما پارامترها اختیاری هستند؛ توسعه‌دهنده نمی‌تواند آنها را تنظیم کند و رفتار آرایه را آن‌طور که مناسب می‌بیند بیشتر تعریف کند.

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

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

برای دسترسی به یک عنصر آرایه ما، می توانید از دسترسی به فهرست استفاده کنید؛ برای این کار، ایندکس در پرانتز نشان داده شده است.

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

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

مفهوم شماره خط در همه مجموعه ها وجود ندارد، بلکه عمدتاً در مجموعه هایی وجود دارد که می توانند در رابط کاربری نمایش داده شوند.

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

برای اکثر مجموعه‌های عمومی، روش‌هایی که اعمال می‌شوند عبارتند از Count، Index، Add، Insert، Delete و Find.

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

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

جدول ارزش ها– این مجموعه خاصی از سطرها است؛ سطرها می توانند شامل ستون های مختلف با مقادیر مختلف باشند.

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

روش Index به شما امکان می دهد تعیین کنید کدام شاخص با یک ردیف داده شده (یعنی موقعیت فعلی ردیف در جدول) مطابقت دارد. مقادیر شاخص از صفر شروع می شود.

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

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

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

نحو: درج (,)

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

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

نحو: حذف()
مثال استفاده: OurArray.Delete(5);

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

تقریباً همه مجموعه ها روشی برای جستجوی یک مقدار دارند - پیدا کردن. مقداری که می خواهیم پیدا کنیم به متد ارسال می شود. برخی از مجموعه ها به شما اجازه می دهند محدودیت هایی را تعیین کنید.

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

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

مثال استفاده: OurVariable = OurArray.Find(8);

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

روش های اضافی برای آرایه

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

به طور خاص، متغیر QuantityInArray می تواند متفاوت تعریف شود:

QuantityInArray = OurArray.InBorder();
سپس، هنگام توصیف خود چرخه، نباید از این متغیر کم کرد.

متد Set به شما این امکان را می دهد که به یک عنصر آرایه مقداری را با شاخص اختصاص دهید.

نحو: نصب(،)

مثال: OurArray.Set(2,8);

گزینه جایگزین: OurArray = 8;

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

نحو: گرفتن()

مثال: OurVariable = OurArray.Get(2);

گزینه جایگزین: OurVariable = OurArray;

ساختار مجموعه جهانی

یک ساختار، مانند یک آرایه، می تواند تعداد نامحدودی عنصر داشته باشد، اما محتوای عنصر با آرایه متفاوت است.

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

کلیدیک نوع داده کاملاً رشته ای است که یک مقدار را توصیف می کند. مثلا، به کلید"کد" می تواند با مقدار 113 مطابقت داشته باشد. به کلید"نام" به معنای "واسیا". خود مقدار تابع محدودیت نوع داده نیست.

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

این نوع دسترسی بسیار راحت‌تر از زمانی است که تمام پارامترها را در یک آرایه تعریف کرده و با شاخص به آنها دسترسی داشته باشیم.

ساختار کد برنامه را قابل خواندن (قابل درک) می کند. ساختار اغلب، بسیار بیشتر از Array استفاده می شود.

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

بعلاوه، در صورتی که رویه و تابع دارای تعداد زیادی پارامتر تصویب شده باشد، از Structure استفاده می شود.

سپس نوشتن تمام پارامترها در Structure و انتقال آن بسیار راحت تر است. آن ها پارامترهای رویه ها و توابع "بسته بندی شده" هستند.

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

کلیدباید به عنوان یک شناسه عمل کند. این بدان معنی است که در کلیوچهنباید هیچ فاصله ای وجود داشته باشد و نمی تواند با یک عدد شروع شود.

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

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

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

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

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

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

مانند یک آرایه، سازنده یک ساختار می تواند پارامترهایی داشته باشد. آن ها می توان محتوای یک ساختار را با استفاده از سازنده توصیف کرد.

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

مثلا: OurStructure = ساختار جدید ("کد، نام"، 133، "واسیا");

با کاما از هم جدا می شوند، ابتدا نام کلیدها و سپس، بر این اساس، در همان دنباله، مقادیر پارامترها ذکر می شود.

روشی برای اضافه کردن یک مقدار جدید به ساختار وجود دارد درج کنید، که یک جفت جدید (Key و Value) را وارد می کند.

مثلا: OurStructure.Insert(“FamilyMembers”,3);

ساختار با روش دیگری مشخص می شود که اغلب استفاده می شود. این روش است ویژگی.

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

اگر چنین عنصری وجود داشته باشد، سیستم مقدار True و در غیر این صورت – False را برمی گرداند.

مثلاً عبارت OurStructure.Property («اعضای خانواده»)برابر با مقدار True خواهد بود. این روش اغلب هنگام تجزیه و تحلیل ساختار استفاده می شود.

مانند هر مجموعه جهانی، دسترسی به خصوصیات یک ساختار با شاخص امکان پذیر است. اما شاخص Structure یک مقدار رشته ای است.

مثلا: گزارش (ساختار ما ["اعضای خانواده"]);

با این حال، نباید فراموش کنیم که یک ساختار مجموعه ای نامرتب از اشیاء است، به همین دلیل است که دسترسی با شاخص 0، 1، 2 غیرقابل قبول است.

مجموعه عمومی فهرست مقادیر

ListValuesیک لیست خطی از عناصر از هر نوع داده است.

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

ستون اول - علامت. این یک نوع داده Boolean دارد و به کاربر این امکان را می دهد که کادرها را علامت بزند یا علامت آن را بردارید.

ستون دیگر تصویری است که به نوعی می تواند این عنصر را به صورت بصری نشان دهد. این رشته را با یک تصویر مطابقت دهید.

ستون سوم خود مقدار ذخیره شده است، یعنی. این هر نوع داده ای است و می تواند در خطوط مختلف متفاوت باشد.

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

ListValues- این شیئی است که کاربر می تواند به صورت بصری با آن کار کند. آن ها ListValuesرا می توان در فرم نمایش داد.

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

پیدا خواهیم کرد ListValuesدر دستیار sitax سازنده ListValuesپارامتری نشده است (شما نمی توانید هیچ مقدار پیش فرضی را تنظیم کنید).

روش هایی مانند:

  • Insert(,) ;
  • اضافه کردن(،)؛
  • تعداد()؛
  • فهرست مطالب().

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

آرایه عناصر = لیست PriceTypes.OutloadValues();

روش معکوس نیز وجود دارد:
ListPriceTypes.LoadValues(ArrayItems);

روش های جستجو وجود دارد:
FindByValue(); FindByIdentifier().

یک روش کپی وجود دارد:
ListCopy = PriceTypeList.Copy();
این روشبرای ایجاد نوعی اصلاح در نسخه در نظر گرفته شده است.

روش هایی وجود دارد:
SortByValue();
SortByView().

مواد و روش ها SelectItem(,)و MarkItems()یک کادر محاوره ای مدال را فراخوانی کنید که اجرای الگوریتم را تا زمانی که کاربر پنجره را ببندد متوقف می کند.

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

کد مثال فراخوانی شده از یک ماژول برنامه مدیریت شده:

نمایش این کد در حالت کاربر (گفتگوی مدال).

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

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

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

در صورت تمایل، لیست را می توان ویرایش کرد: برخی از عناصر را می توان اضافه کرد، برخی را می توان حذف کرد.

انطباق با مجموعه همه کاره

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

تفاوت اصلی این است که هر نوع داده ای را می توان به عنوان کلید و همچنین برای مقدار مشخص کرد. با توجه به این ویژگی، دسترسی به مقدار مطابق با شاخص ضروری است؛ مقدار کلید به عنوان مقدار شاخص نشان داده می شود.

کلید می تواند یک نوع داده غیر از رشته باشد. ویژگی‌ها و روش‌های کار با Compliance تقریباً مشابه ویژگی‌های Structure است.

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

مثال استفاده:

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

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

مثلا: OurMatch = NewMatch;
مطابقت = 999;

آن ها اگر عنصری در مجموعه وجود نداشت، با استفاده از عملگر انتساب اضافه می شود و اگر وجود داشت، به روز می شود.

این در تضاد با ساختار است.

جدول ارزش های مجموعه جهانی

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

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

تفاوت جداول ارزش هااز یک آرایه دو بعدی:

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

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

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

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

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

نکته مهم! رویه ای که ایجاد می کند جدول ارزش ها، باید &OnServer را کامپایل کند.

قبل از شروع کار با جدول ارزش ها، باید تعیین کنید که شامل چه ستون هایی است (یعنی آنها را ایجاد کنید). نحو:

اضافه کردن(،)
(اختیاری)
نوع: رشته
(اختیاری)
نوع: توضیحات انواع
(اختیاری)
نوع: رشته
(اختیاری)
نوع: شماره

مثلا:

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

در توضیحات جداول ارزش هاعناصر مجموعه دقیقا هستند RowsTableValues.

برخلاف ستون‌ها که فقط از خصوصیات (Name, Type, Heading, Width) تشکیل شده‌اند RowTableValuesهم ویژگی (دسترسی با نام ستون) و هم روش وجود دارد (شما می توانید یک مقدار را دریافت و تنظیم کنید، با مالکان کار کنید).

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

برای اختصاص یک مقدار به یک ستون، از یک نقطه برای دسترسی به نام یا نمایه ستون (با استفاده از براکت) استفاده می کنیم.

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

پاک کردن ()- برای حذف تمام ردیف ها از جداول ارزش ها.

FillValues(,)- به شما امکان می دهد تمام ستون ها یا ستون های انتخاب شده را با یک مقدار پر کنید.
LoadColumn(,)- ستونی را از آرایه بارگذاری می کند.
UnloadColumn()- ستون را در یک آرایه تخلیه می کند.

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

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

می توانید ساختار را کپی کنید جداول ارزش ها. یک روش مربوطه برای این وجود دارد CopyColumns(). ما یک خالی می گیریم جدول ارزش هابا ساختار مورد نیاز

که در جدول ارزشیک روش وجود دارد جمع(). می توانید ستونی را که می خواهید مقادیر عددی را در آن جمع کنید مشخص کنید. در رابطه با کدی که قبلا در جدول نشان داده شده است، می توانید مقدار را محاسبه کنید: TK.Total ("مقدار").

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

در رابطه با کدی که قبلا در جدول نشان داده شده است، می توانید مقدار را محاسبه کنید: TK.Collapse ("روز هفته"، "مقدار").

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

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

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

در ماژول فرم در انتهای الگوریتم قبلاً کامپایل شده (در رویه ایجاد جدول ارزش)، باید اضافه کنید:
ValueInFormData (TK، جدول)؛

مجموعه جهانی درخت ارزش ها

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

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

از آنجایی که ردیف‌ها می‌توانند تابع یکدیگر باشند، هر ردیف می‌تواند یک Parent و همچنین ردیف‌های تابع خود داشته باشد.

بیایید دستور Tree مربوطه و روند پردازش آن را ایجاد کنیم.

بیایید ایجاد کنیم که در آن یک ردیف والد و دو ردیف فرعی وجود دارد.

بیایید ویژگی های فرم را ایجاد کنیم DerZn(نوع داده – درخت ارزش).

برای این ویژگی، ستون های سال و ماه را ایجاد می کنیم.

عنصر مربوطه را جابجا کنید DerZnروی فرم

در پایان Procedures TreeOnServer()اضافه کنیم:

ValueInFormData (TreeZn، DerZn);

بیایید بررسی کنیم که در حالت کاربر چه اتفاقی افتاده است.

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

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

این اولین آشنایی ما با مجموعه های جهانی را به پایان می رساند.

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

نحو کامل (برای بزرگ کردن کلیک کنید)

ListValues

شرح:

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

اقلام مجموعه: ValueListElement

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

دسترسی به عنصر مجموعه با استفاده از عملگر [...] امکان پذیر است. شاخص عنصر به عنوان آرگومان ارسال می شود ( شماره گذاری از 0).

خواص:

مواد و روش ها:

Insert (شاخص، ارزش، نمایش، برچسب، تصویر) یک عنصر جدید را در لیست مقادیر در موقعیت در نمایه مشخص شده درج می کند.SelectElement (عنوان، عنصر) پنجره ای را برای انتخاب تعاملی یکی از عناصر موجود در لیست مقادیر فراخوانی می کند. عنصر- عنصری که لیست مقادیر در ابتدا باید در هنگام انتخاب تعاملی در آن قرار گیرد. اگر مقدار پارامتر یک عنصر لیست ارزش موجود در آن نباشد این لیست، موقعیت یابی رخ نخواهد داد.Unload Values() آرایه ای ایجاد می کند و مقادیر لیست عناصر مقادیر را در آن کپی می کند.Add(Value، Representation، Label، Image) یک عنصر جدید به انتهای لیست مقادیر اضافه می کند.LoadValues(ArrayValues) لیستی از مقادیر را با مقادیر آرایه ارسال شده بارگذاری می کند. در این حالت، تمام عناصر قبلی لیست حذف می شوند.یادداشت ها را پر کنید(Mark) یک علامت برای تمام عناصر لیست مقادیر تعیین می کند.Index(Element)شاخص یک عنصر را در لیستی از مقادیر می گیرد. اگر پیدا نشد، -1 برگردانده می شود.Count() تعداد عناصر موجود در لیست مقادیر را دریافت می کند.FindByValue(SearchValue) مقدار یک عنصر را در لیستی از مقادیر جستجو می کند. اگر هیچ عنصری مقداری برابر با مقدار جستجو را ذخیره نکند، مقدار برگردانده می شود تعریف نشده. یافتن با شناسه(Identifier)لیست مقادیر عناصر را بر اساس شناسه بازیابی می کند. اگر عنصر پیدا نشد، برگردانده می شود تعریف نشده. MarkItems(هدر) موارد موجود در لیست مقادیر را تنظیم یا علامت آن را بردارید (به صورت تعاملی). برمی گرداند درست است، واقعی، اگر دکمه "OK" در گفتگو فشار داده شود، دروغ- در غیر این صورت.Clear() لیست مقادیر را پاک می کند و تمام عناصر را از آن حذف می کند.ShowElementSelection(DescriptionNotificationsOnClosing, Title, Element) پنجره ای را برای انتخاب تعاملی یکی از عناصر موجود در لیست مقادیر فراخوانی می کند.موارد ShowMark(توضیحات هشدارهای بسته، سرصفحه) برای تنظیم تعاملی حالت های علامت برای عناصر لیست مقادیر طراحی شده است.Get(Index) مقدار را بر اساس شاخص بازیابی می کند. مشابه اپراتور کار می کند.Shift (Element، Offset) یک عنصر از لیست مقادیر را با تعداد مشخصی از موقعیت ها به جلو یا عقب می برد.Copy() یک کپی از لیستی از مقادیر ایجاد می کند.SortByValue(جهت) فهرستی از مقادیر را به ترتیب صعودی یا نزولی مقادیر ذخیره شده توسط عناصر مرتب می کند. مثال زیر را ببینید.SortByView(جهت) فهرست مقادیر را به ترتیب صعودی یا نزولی به ترتیب حروف الفبای نمایش عناصر موجود در لیست مقادیر مرتب می کند. مثال زیر را ببینید.Remove (Element) یک عنصر را از لیست مقادیر حذف می کند، جایی که عنصر- شاخص عنصری که باید حذف شود یا خود عنصر.

طراحان:

فهرست جدید ارزش ها
&OnClient رویه ExecuteCode(Command) /// نحوه ایجاد لیستی از مقادیر در 1s 8.3، 8.2 List = New ValueList; /// نحوه اضافه کردن یک عنصر به لیست مقادیر در 1s 8.3، 8.2 // افزودن پارامترهای متد:// - معنی // - کارایی // - علامت (الزامی) // - تصویر (الزامی)فهرست کنید. افزودن (1980، // مقدار عنصر "سال تولد واسیا"// کارایی ) ؛ فهرست کنید. افزودن(1985، "سال تولد یولیا") ; // مقادیر می توانند انواع مختلفی داشته باشندفهرست کنید. Add("Polina" , "Child's name" ) ; /// نحوه درج یک عنصر در لیست مقادیر در 1s 8.3، 8.2 // در موقعیت شماره 2 قرار دهید (عناصر از 0 شماره گذاری می شوند) // عنصر با مقدار 2010 و نمایش // "سالی که دختر مشترکشان به دنیا آمد"فهرست کنید. Insert(2, 2010, "سالی که دختر مشترکشان به دنیا آمد") ; /// نحوه دور زدن عناصر لیست مقادیر در 1s 8.3، 8.2برای هر عنصر از گزارش حلقه فهرست ( عنصر. نمایش + ": " + رشته (عنصر. مقدار) ) ; چرخه پایان ; /// نحوه پاک کردن لیست مقادیر در 1s 8.3، 8.2فهرست کنید. Clear() ; فهرست کنید. افزودن ("دوشنبه"); فهرست کنید. افزودن ("سه شنبه"); فهرست کنید. افزودن("چهارشنبه") ; /// چگونه می توان تعداد عناصر یک لیست از مقادیر و همچنین /// یک عنصر لیست را با شاخص آن در 1s 8.3، 8.2 دریافت کنید // شماره گذاری از ابتدابرای Index = 0 By List. Quantity() - 1 Cycle Report(List[Index]) ; چرخه پایان ; /// چگونه یک عنصر لیست را با مقدار آن در 1s 8.3، 8.2 پیدا کنیم ValueTuesday = لیست. FindByValue ("سه شنبه"); /// نحوه پیدا کردن نمایه یک عنصر در لیست در 1s 8.3، 8.2گزارش(List.Index(ValueTuesday)) ; // 1، چون شماره گذاری از صفر شروع می شود /// چگونه یک لیست را بر اساس مقادیر آن در 1s 8.3، 8.2 مرتب کنیم // بود: دوشنبه، سه شنبه، چهارشنبهفهرست کنید. SortByValue(SortDirection.Descending); // شد: چهارشنبه، دوشنبه، سه شنبه /// نحوه حذف یک عنصر از لیست مقادیر در 1s 8.3، 8.2 // اولین عنصر را حذف کنید // پارامتر: عنصر لیست // یا شاخص عنصر// می توانید این لیست را انجام دهید. حذف (لیست[ 0 ]) ; // یا بیشتر // List.Delete(0); /// نحوه جابجایی یک عنصر از لیست مقادیر در 1s 8.3، 8.2 // عنصر صفر را یک موقعیت به جلو حرکت دهید // بود: دوشنبه سه شنبهفهرست کنید. حرکت (0, 1); // شد: سه شنبه دوشنبه /// چگونه یک کپی از یک لیست در 1s 8 ایجاد کنیم ListCopy = فهرست. کپی 🀄() ؛ Colors = NewValueList; رنگ ها افزودن ("قرمز") ; رنگ ها افزودن ("سبز") ; رنگ ها افزودن ("آبی") ; /// نحوه آپلود مقادیر لیست در یک آرایه در 1s 8.3، 8.2 ArrayColors = رنگ ها. UnloadValues() ; /// نحوه بارگیری مقادیر لیست از یک آرایه در 1s 8.3، 8.2رنگ ها LoadValues ​​(ArrayColors) ; پایان رویه /// چگونه از یک لیست یک مقدار بدون حالت انتخاب کنیم /// مقادیر در 1s 8.3، 8.2&روی رویه کلاینت چگونه یک رنگ انتخابی (فرمان) غیر ModalValue = New ValueList بسازیم. رنگ ها افزودن ("قرمز") ; رنگ ها افزودن ("سبز") ; رنگ ها افزودن ("آبی") ; // رویه AfterSelectingElement درست در زیر تعریف شده است AlertAfterElementSelection = New DescriptionAlerts( "AfterElementSelection", ThisObject ) ; رنگ ها ShowElementSelection( NotificationAfterElementSelection, "رنگ مورد علاقه خود را انتخاب کنید") ؛ پایان رویه و رویه مشتری پس از انتخاب عنصر (عنصر، پارامترها) صادر کردن اگر عنصر<>تعریف نشده سپس گزارش (Element.Value) ; EndIf پایان رویه /// چگونه می توان یک علامت گذاری بدون حالت از مقادیر از یک لیست ایجاد کرد /// مقادیر در 1s 8.3، 8.2&در رویه مشتری نحوه ایجاد علامت گذاری غیر معین مقادیر (فرمان) رنگ ها = فهرست جدید مقادیر. رنگ ها افزودن ("قرمز") ; رنگ ها افزودن ("سبز") ; رنگ ها افزودن ("آبی") ; // رویه AfterMarkingElements درست در زیر تعریف شده است AlertAfterMarkingItems = New DescriptionAlerts( "AfterMarking Items", ThisObject ) ; رنگ ها ShowTagItems( AlertAfterTagItems, "رنگ های مورد علاقه خود را انتخاب کنید") ؛ رنگ ها FillNotes (True) ; پایان رویه و رویه مشتری پس از علامت گذاری عناصر (عناصر، پارامترها) صادر کردن اگر عناصر<>تعریف نشده سپس برای هر رنگ از چرخه عناصر اگر رنگ. علامت بزنید سپس گزارش (Color.Value) ; EndIf چرخه پایان ; EndIf پایان رویه /// نحوه انتخاب مودال یک مقدار از یک لیست در 1s 8.3، 8.2&روی رویه کلاینت نحوه ایجاد رنگ‌های ModalValueSelection(Command) = New ValueList. رنگ ها افزودن ("قرمز") ; رنگ ها افزودن ("سبز") ; رنگ ها افزودن ("آبی") ; انتخاب رنگ = رنگ ها. SelectItem( "رنگ مورد علاقه خود را انتخاب کنید") ؛ اگر رنگ را انتخاب کنید<>تعریف نشده سپس گزارش (SelectColor.Value) ; EndIf پایان رویه /// نحوه علامت گذاری به صورت مودال مقادیر از یک لیست /// مقادیر در 1s 8.3، 8.2&در رویه مشتری نحوه ایجاد یک علامت معین مقادیر (فرمان) رنگ ها = فهرست جدید مقادیر. رنگ ها افزودن ("قرمز") ; رنگ ها افزودن ("سبز") ; رنگ ها افزودن ("آبی") ; اگر رنگ. MarkItems( "رنگ های مورد علاقه خود را انتخاب کنید") سپس برای هر رنگ از چرخه رنگ If Color. علامت بزنید سپس گزارش (Color.Value) ; EndIf چرخه پایان ; EndIf // به این ترتیب می توانید همه علامت ها را یکجا تنظیم کنید // به یک مقدار خاص لیست کنیدرنگ ها FillNotes (True) ; پایان رویه /// این نمونه ها را در رایانه خود دانلود و اجرا کنید

در این واحد با یک نوع داده جدید از زبان 1C آشنا می شویم که به آن می گویند ListValues.

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

// لیستی از مقادیر ایجاد کرد

List.Add(23);

تا اینجا همه چیز بسیار شبیه یک آرایه به نظر می رسد، اینطور نیست؟ اما بیایید ادامه دهیم. برای نمایش این اعداد به کاربر، می نویسیم:

// حلقه را از طریق هر عنصر لیست برای هر عنصر از فهرست حلقه گزارش (Element.Value);

// نمایش مقدار عنصر EndCycle.

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

بیایید به برخی از ویژگی های اضافی نگاه کنیم ارزش های.

می تواند مرتب کند

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

List.SortByValue(SortDirection.Age); در مورد یک آرایه معمولی، باید یکی از الگوریتم های مرتب سازی (مثلاً "حباب") را پیاده سازی کنیم.

می تواند جستجو کند

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

EnterNumber(Number)؛ // یک عدد از کاربر FoundElement = List وارد کرد. FindByValue(Number);

اگر FoundItem = Undefined سپس OpenValue("Number" + Number + "در لیست یافت نشد!"); در غیر این صورت

OpenValue("Number " + Number + " در لیست است. در اینجا این است:" + FoundElement.Value);

endIf; ListValues

از درج و حذف پشتیبانی می کند

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

فهرست کنید. Insert(0, 1000);

// هزار را در همان ابتدای لیست وارد کنید List.Delete(O); // و بلافاصله آن را از لیست حذف کنید. Insert(List.Quantity(), 13);

// 13 را در انتهای لیست وارد کنید Report(List[List.Quantity() - 1]);

// نمایش آخرین عنصر لیست (13)

از براکت های مربع پشتیبانی می کند

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

گزارش (List.Value); // نمایش عنصر دوم لیست بنابراین، می توانیم تمام عناصر لیست را به صورت زیر مرور کنیم:

برای A = 0 توسط List.Quantity() - 1 Loop Report(List[A].Value);

چرخه پایان

می تواند یک کپی از خود ایجاد کند

لیست مقادیر فقط یک ویژگی عالی دارد - می تواند یک کپی از خود ایجاد کند:

ListCopy = List.Copy();

// یک کپی از لیست تهیه کرد // اکنون می توانیم با خیال راحت کپی لیست // را تغییر دهیم در حالی که لیست اصلی کپی لیست را تغییر نمی دهد. ارزش = 123456;

می تواند به یک آرایه تبدیل شود

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

ArrayNumbers = لیست. UnloadValues();

// در یک آرایه ریخته می شود

برای A = 0 توسط ArrayNumber.Quantity() - 1 چرخه

گزارش (ArrayNumbers[A]); // نیازی به تعیین // گزینه Value نیست

چرخه پایان

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

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

راه حل

List = New ValueList;

// فهرستی از مقادیر برای A = 1 تا 5 چرخه شماره = 0 ایجاد کرد.

EnterNumber(Number)؛ // یک عدد از لیست کاربر وارد کنید.Add(Number); // و آن را به لیست EndCycle اضافه کنید. // و به همین ترتیب 5 بار

// لیست اعداد را مرتب کنید

فهرست کنید. مرتب سازی بر اساس ارزش (SortDirection.Age);

// پس از مرتب سازی، اولین عنصر لیست // کوچکترین عنصر و آخرین عنصر بزرگترین OpenValue است("کوچکترین عنصر" + لیست +

"، و بزرگترین " + List[List.Quantity() - 1]);




بالا