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

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

فهرست ارزش ها

شرح:

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

عناصر مجموعه: ItemListValues

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

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

خواص:

مواد و روش ها:

Insert (Index, Value, View, Markup, Image) یک عنصر جدید را در لیست مقادیر در موقعیت در نمایه مشخص شده درج می کند.SelectElement(Title, Element) پنجره ای را برای انتخاب تعاملییکی از عناصر موجود در لیست مقادیر. عنصر- عنصری که لیست مقادیر در ابتدا باید در هنگام انتخاب تعاملی روی آن قرار گیرد. اگر مقدار پارامتر عنصری از لیست مقادیر موجود در این لیست نباشد، موقعیت یابی رخ نخواهد داد.Upload Values() آرایه ای ایجاد می کند و مقادیر عناصر لیست مقادیر را در آن کپی می کند.Add(Value, View, Markup, Image) یک عنصر جدید به انتهای لیست مقادیر اضافه می کند.DownloadValues(Array of Values) فهرستی از مقادیر را با مقادیر آرایه ارسال شده بارگذاری می کند. در این حالت، تمام عناصر قبلی لیست حذف می شوند.یادداشت ها را پر کنید(برچسب) برچسب را برای تمام عناصر لیست مقادیر تنظیم می کند.Index (Element) نمایه عنصر را در لیست مقادیر می گیرد. اگر پیدا نشد، -1 برگردانده می شود.count() تعداد عناصر لیست مقادیر را دریافت می کند.FindByValue(LookupValue) مقدار یک عنصر از لیست مقادیر را جستجو می کند. اگر هیچ عنصری مقداری برابر با مقدار مورد نظر را ذخیره نکند، مقدار برگردانده می شود. تعریف نشده. FindByID(ID) عنصر لیست مقادیر را با شناسه دریافت می کند. اگر عنصر پیدا نشد، برمی گردد تعریف نشده. علامت گذاری موارد(عنوان) موارد موجود در لیست مقادیر را علامت می‌زند یا علامت آن را (به صورت تعاملی) بردارید. برمی گرداند درست است، واقعیاگر دکمه "OK" در گفتگو فشار داده شود، دروغ- در غیر این صورت.Clear() لیست مقادیر را با حذف تمام عناصر از آن پاک می کند.ShowItemSelection(ClosingAlertDescription, Title, Item) پنجره ای را فراخوانی می کند تا به صورت تعاملی یکی از موارد موجود در لیست مقادیر را انتخاب کنید.ShowMarkItems(DescriptionNotificationsOnClosing, Header)برای تنظیم تعاملی حالت های پرچم برای عناصر لیست مقادیر طراحی شده است.Get(Index) مقدار شاخص را می گیرد. مشابه اپراتور کار می کند.Move (Item, Offset) یک عنصر از لیست مقادیر را بر اساس تعداد مشخص شده موقعیت به جلو یا عقب می برد.Copy() یک کپی از لیست مقادیر ایجاد می کند.SortByValue(جهت) فهرست مقادیر را به ترتیب صعودی یا نزولی مقادیر ذخیره شده توسط عناصر مرتب می کند. مثال زیر را ببینید.نمایش مرتب سازی بر اساس(جهت) فهرست مقادیر را به ترتیب حروف الفبای صعودی یا نزولی نمایش مقادیر اعضا در لیست مرتب می کند. مثال زیر را ببینید.Remove (Element) یک عنصر را از لیست مقادیر که در آن قرار دارد حذف می کند عنصر- شاخص عنصری که باید حذف شود یا خود عنصر.

سازندگان:

فهرست جدید ارزش ها
&OnClient رویه ExecuteCode(Command) /// نحوه ایجاد لیستی از مقادیر در 1s 8.3، 8.2فهرست = فهرست جدید مقادیر; /// نحوه اضافه کردن یک عنصر به لیست مقادیر در 1s 8.3، 8.2 // افزودن پارامترهای متد:// - معنی // - کارایی // - علامت (اختیاری) // - تصویر (الزامی)فهرست کنید. افزودن (1980، // مقدار عنصر "سال تولد واسیا"// کارایی ) ؛ فهرست کنید. افزودن(1985، "تولد یولیا") ; // مقادیر می توانند انواع مختلفی داشته باشندفهرست کنید. Add("Polina" , "Child's name" ) ; /// نحوه درج یک عنصر در لیست مقادیر در 1s 8.3، 8.2 // در موقعیت شماره 2 قرار دهید (عناصر از 0 شماره گذاری می شوند) // عنصر با مقدار 2010 و نمایش // "سال تولد دختر مشترکشان"فهرست کنید. Paste(2, 2010, "سال تولد دختر مشترکشان") ; /// نحوه دور زدن عناصر لیست مقادیر در 1s 8.3، 8.2برای هر عنصر از گزارش حلقه فهرست ( عنصر. مشاهده + ": " + رشته (عنصر. مقدار) ) ; چرخه پایان ; /// نحوه پاک کردن لیست مقادیر در 1s 8.3، 8.2فهرست کنید. Clear() ; فهرست کنید. افزودن ("دوشنبه"); فهرست کنید. افزودن ("سه شنبه"); فهرست کنید. افزودن ("چهارشنبه"); /// چگونه می توان تعداد عناصر لیست مقادیر و همچنین /// یک عنصر لیست را با شاخص آن در 1s 8.3، 8.2 دریافت کنید // شماره گذاری از صفربرای Index = 0 By List. Quantity() - 1 Loop Report(List[Index] ) ; چرخه پایان ; /// چگونه یک عنصر لیست را با مقدار آن در 1s 8.3، 8.2 پیدا کنیم ValueTuesday = لیست. FindByValue("سه شنبه") ; /// نحوه پیدا کردن نمایه یک عنصر در لیست در 1s 8.3، 8.2گزارش(فهرست. فهرست(ValueTuesday) ); // 1، چون شماره گذاری از صفر است /// چگونه لیست را بر اساس مقادیر آن در 1s 8.3، 8.2 مرتب کنیم // بود: دوشنبه، سه شنبه، چهارشنبهفهرست کنید. SortByValue(SortingDirection. Descending) ; // شد: چهارشنبه، دوشنبه، سه شنبه /// نحوه حذف یک عنصر از لیست مقادیر در 1s 8.3، 8.2 // اولین عنصر را حذف کنید // پارامتر: عنصر لیست // یا شاخص عنصر// می توانید این لیست را انجام دهید. حذف(لیست[ 0 ] ) ; // یا بیشتر // List.Delete(0); /// نحوه جابجایی یک عنصر از لیست مقادیر در 1s 8.3، 8.2 // عنصر صفر را یک موقعیت به جلو منتقل کنید // بود: دوشنبه سه شنبهفهرست کنید. حرکت (0 , 1 ) ; // شد: سه شنبه دوشنبه /// نحوه ایجاد یک کپی از لیست در 1s 8 ListCopy = فهرست. کپی 🀄() ؛ Colors = New ValueList; رنگ ها افزودن ("قرمز")؛ رنگ ها افزودن ("سبز")؛ رنگ ها افزودن ("آبی")؛ /// نحوه بارگیری مقادیر لیست در یک آرایه در 1s 8.3، 8.2 ArrayColors = رنگ ها. UnloadValues() ; /// نحوه بارگیری مقادیر لیست از یک آرایه در 1s 8.3، 8.2رنگ ها LoadValues ​​(ArrayColors) ; پایان رویه /// چگونه از یک لیست یک مقدار بدون حالت انتخاب کنیم /// مقادیر در 1s 8.3، 8.2رویه &OnClient چگونه رنگها را ModalSelectValue(Command) = New ValueList; رنگ ها افزودن ("قرمز")؛ رنگ ها افزودن ("سبز")؛ رنگ ها افزودن ("آبی")؛ // رویه AfterItemSelect درست در زیر تعریف شده است AlertAfterItemSelection = New AlertDescription( "AfterElementSelection", ThisObject ) ; رنگ ها ShowItemChoice( AlertAfterItemChoice, "رنگ مورد علاقه خود را انتخاب کنید") ؛ EndProcedure &AtClient Procedure AfterElementSelection(Element, Parameters) Export If Element<>تعریف نشده سپس گزارش (مقدار مورد) ; EndIf پایان رویه /// نحوه ایجاد یک علامت غیر معین مقادیر از یک لیست /// مقادیر در 1s 8.3، 8.2رویه &OnClient چگونه رنگها را ModalValueMark(Command) = New ValueList; رنگ ها افزودن ("قرمز")؛ رنگ ها افزودن ("سبز")؛ رنگ ها افزودن ("آبی")؛ // رویه AfterMarkingItems درست در زیر تعریف شده است AlertAfterMarkItems = New AlertDescription( "AfterMarking Items", ThisObject ) ; رنگ ها ShowItemMark( NotificationAfterItemMark, "رنگ های مورد علاقه خود را انتخاب کنید") ؛ رنگ ها FillRemarks(True) ; EndProcedure &OnClient Procedure AfterMarkingElements (Elements, Parameters) Export If Elements<>تعریف نشده سپس برای هر رنگ از عناصر حلقه If Color. پرچم و سپس گزارش (رنگ. ارزش) ; EndIf چرخه پایان ; EndIf پایان رویه /// چگونه یک مقدار را از لیست در 1s 8.3، 8.2 انتخاب کنیم&در رویه کلاینت چگونه رنگها را انتخاب کنیمModalSelectValue(Command) = New ValueList; رنگ ها افزودن ("قرمز")؛ رنگ ها افزودن ("سبز")؛ رنگ ها افزودن ("آبی")؛ انتخاب رنگ = رنگ ها. SelectItem( "رنگ مورد علاقه خود را انتخاب کنید") ؛ اگر رنگ را انتخاب کرد<>تعریف نشده سپس گزارش (SelectColor. Value) ; EndIf پایان رویه /// نحوه ایجاد یک علامت مودال مقادیر از یک لیست /// مقادیر در 1s 8.3، 8.2رویه &OnClient چگونه رنگها را ModalValueMark(Command) = New ValueList; رنگ ها افزودن ("قرمز")؛ رنگ ها افزودن ("سبز")؛ رنگ ها افزودن ("آبی")؛ اگر رنگ ها. علامت گذاری موارد( "رنگ های مورد علاقه خود را انتخاب کنید") سپس برای هر رنگ از چرخه رنگ If Color. پرچم و سپس گزارش (رنگ. ارزش) ; EndIf چرخه پایان ; EndIf // و به این ترتیب می توانید همه علامت ها را یکجا تنظیم کنید // به یک مقدار خاص لیست کنیدرنگ ها FillRemarks(True) ; پایان رویه /// این نمونه ها را دانلود و بر روی کامپیوتر اجرا کنید

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

نحو: درج (,)

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

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

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

لازم به ذکر است که برای مجموعه هایی که رشته ها یک موجودیت مستقل را نشان می دهند (به عنوان مثال، برای TableValues، همچنین می توانیم از متد get index برای حذف ردیف داده شده بعدا استفاده کنیم.

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

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

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

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

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

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

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

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

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

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

نحو: نصب(،)

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

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

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

نحو: گرفتن()

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

مثلا: OurStructure = New Structure("Code,Name", 133, "Vasya");

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

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

مثلا: OurStructure.Insert("Family Members",3);

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

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

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

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

همانطور که برای هر مجموعه جهانی، دسترسی به ویژگی های ساختار با شاخص مجاز است. اما شاخص Structure یک مقدار رشته ای است.

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

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

فهرست مجموعه‌های عمومی ارزش‌ها

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

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

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

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

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

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

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

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

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

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

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

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

ArrayElements = ListPriceTypes.UnloadValues();

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

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

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

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

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

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

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

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

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

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

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

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

انطباق مجموعه جهانی

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

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

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

Match Constructor بر خلاف Struct دارای قابلیت تعیین پارامترها نیست.

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

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

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

مثلا: OurMatch = مسابقه جدید;
مطابقت = 999;

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

این با ساختار متفاوت است.

مجموعه عمومی جدول مقادیر

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

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

تفاوت TableValuesاز یک آرایه دو بعدی:

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

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

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

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

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

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

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

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

مثلا:

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

در توضیحات TableValuesهمانطور که عناصر مجموعه دقیقا هستند RowsTableValues.

برخلاف ستون‌ها که فقط از ویژگی‌ها (نام، نوع، عنوان، عرض) تشکیل شده‌اند، در RowTableValuesهم ویژگی (ارجاع بر اساس نام ستون) و هم روش وجود دارد (شما می توانید یک مقدار را دریافت و تنظیم کنید، با مالکان کار کنید).

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

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

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

واضح ()- برای حذف تمام ردیف ها از TableValues.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ValueVFormData(TreeZn، DerZn);

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

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

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

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

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

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

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

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

List.Add(23);

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

// از طریق هر عنصر لیست حلقه بزنید For Every Element From List Loop Report(Item.Value);

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

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

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

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

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

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

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

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

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

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

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

EndIf فهرست ارزش ها

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

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

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

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

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

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

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

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

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

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

چرخه پایان

قادر به ایجاد یک کپی

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

ListCopy = List.Copy();

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

قابل تبدیل به آرایه

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

ArrayNumbers = لیست. UnloadValues();

// در یک آرایه تخلیه شد

برای A = 0 توسط ArrayNumbers.Quantity() - 1 حلقه

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

چرخه پایان

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

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

راه حل

فهرست = فهرست جدید مقادیر;

// لیستی از مقادیر برای A = 1 By 5 Loop Number = 0 ایجاد کرد.

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

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

فهرست کنید. مرتب سازی بر اساس مقدار (جهت مرتب سازی. صعودی).

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

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