خانه - نرم افزار
1s 8.3 را از جدول مقادیر انتخاب کنید. چه روش هایی وجود دارد و چگونه می توان چندین مقدار را به طور همزمان جستجو کرد

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

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

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

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

جدول مقادیر ستون ها

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

از آنجایی که ستون ها مجموعه ای از اشیاء هستند، می توانید ستون ها را اضافه، حذف و ویرایش کنید.

ردیف جدول ارزش

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

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

جدول مقادیر را ایجاد کنید

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

ایجاد جدول با استفاده از سازنده

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

DemoTable = New ValueTable; // اول از همه، TK را مقداردهی اولیه می کنیم // سپس، پارامترهای لازم برای ستون های جدید را تعیین می کنیم و به مجموعه اضافه می کنیم // ایجاد ستون "Nomenclature" Name = "Nomenclature"; ValueType = New TypeDescription("DirectoryLink.Nomenclature"); عنوان = "نامگذاری (محصول)"; DemoTable.Columns.Add(Name, ValueType, Header); // ایجاد ستون "Quantity" Name = "Quantity"; ValueType = New TypeDescription("Number"); DemoTable.Columns.Add(Name, ValueType); // در نتیجه این دستکاری ها، یک جدول خالی با ستون های تایپ شده ایجاد کردیم // اگر نیاز به تایپ دقیق تری از انواع اولیه دارید، باید از نحو توسعه یافته سازنده "Description of Types" استفاده کنید.

ایجاد جدول با کپی کردن

اگر مرجعی با ساختار و/یا ترکیب مناسب دارید، می‌توانید جدول مرجع مقادیر را کپی یا دانلود کنید. اگر جدول مرجع جدول دیگری است، باید از روش "کپی جداول مرجع" استفاده کنید. اگر با یک بخش جدولی یا مجموعه ای از رکوردهای ثبت سر و کار دارید، باید از روش "Unload جدول مقادیر" استفاده کنید. اگر فقط به ساختار نیاز دارید، می توانید از روش "Copy Columns" استفاده کنید.

// گزینه ای با کپی کردن تمام ردیف ها از استاندارد مشخصات فنی اما حفظ تنها دو ستون مشخص شده. DemoTable = TableEtalon.Copy(, ColumnsEtalon); // گزینه ای با کپی کردن ردیف های از پیش انتخاب شده از استاندارد مشخصات فنی، در حالی که دو ستون مشخص شده را حفظ می کند. ColumnsStandard = "نامگذاری، کمیت"; DemoTable = TableEtalon.Copy(RowsEtalon, ColumnsEtalon); // گزینه ای برای کپی کردن ردیف ها از استاندارد مشخصات فنی با استفاده از فیلتر مشخص شده، با حفظ یک ستون "Nomenclature" // تمام ردیف هایی که مقدار در ستون Quantity 0 است انتخاب می شوند، فقط ستون Nomenclature انتخاب ردیف = ساختار جدید(" مقدار" در جدول حاصل ظاهر می شود، 0)؛ ColumnsStandard = "نامگذاری"; DemoTable = TableEtalon.Copy(RowsEtalon, ColumnsEtalon); // گزینه با کپی کاملجدول و حذف بعدی یک ردیف با مقدار فیلد کمیت برابر با صفر و حذف کل ستون "کمیت" انتخاب ردیف = ساختار جدید ("کمیت"، 0); ColumnsStandard = "نامگذاری"; DemoTable = TableEtalon.Copy(RowsEtalon, ColumnsEtalon); TableRow = DemoTable.Find(0, "Quantity"); DemoTable.Delete(TableRow); DemoTable.Columns.Delete("مقدار"); // گزینه های مشابه و اصلاحات آنها را می توان در قسمت های جدولی و مجموعه های رکوردهای ثبت اعمال کرد

ایجاد جدول با پرس و جو

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

// نمونه ای از ایجاد یک جدول خالی بر اساس ساختار رجیستر تجمع // به راحتی می توان حدس زد که از این طریق می توانید یک جدول پر شده را نیز دریافت کنید Query = New Query("SELECT FIRST 0 * From Accumulation Register. Products. در انبار")؛ RequestResult = Request.Execute(); DemoTable = Query Result.Unload(); // نمونه ای از ایجاد یک جدول خالی با استفاده از انواع و نام فیلدهای مشخص شده Query = New Query; Query.Text = "انتخاب TOP 0 | Value(Directory.Nomenclature.EmptyLink) AS Nomenclature, | EXPRESS(0 AS NUMBER(15, 3)) AS Quantity"; RequestResult = Request.Execute(); DemoTable = Query Result.Unload(); // مهم! فراموش نکنید که انواع مقادیر ستون به دست آمده از یک درخواست همیشه دارای نوع Null هستند // بنابراین، TK ایجاد شده توسط درخواست همیشه دارای انواع ستون های ترکیبی است.

نتیجه

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

در اینجا یک واقعیت کوچک برای شروع وجود دارد - مثال های سادهکار با جدول مقادیر:

1. جدولی از مقادیر ایجاد کنید

ValueTable = New ValueTable;


2. ستون هایی برای جدول مقادیر ایجاد کنید:

ValueTable.Columns.Add("Name");
Value Table.Columns.Add("نام خانوادگی");


3. سطرهای جدید را با استفاده از نام ستون اضافه کنید:


NewLine.Name = "واسیلی";
NewLine.LastName = "Pupkin";


4. چگونه یک مقدار را در جدول مقدار جستجو کنیم:
لازم است یک ردیف جدول حاوی مقدار مورد نظر پیدا کنید.

FoundRow = ValueTable.Find(SearchValue);


5. اولین رخداد را در ستون های خاصی از جدول مقادیر بیابید

FoundRow = ValueTable.Find(SearchValue, "Supplier, Buyer");


6. اگر می‌خواهید همه رخدادها را در جدول مقادیر پیدا کنید:
ما از ساختار جستجو استفاده می کنیم.

SearchStructure = Structure("Employee", SearchValue);
آرایه FoundRows = ValueTable.FindRows(SearchStructure);


بیایید یک ساختار جستجو ایجاد کنیم که هر عنصر آن شامل نام ستون به عنوان یک کلید و مقدار مورد نظر در این ستون به عنوان یک مقدار باشد. ساختار جستجو را به عنوان پارامتر به متد FindLines() می دهیم. در نتیجه، ردیف های جدول را دریافت می کنیم.
اگر یک جستجو برای مقدار مورد نظر به ساختار جستجو اضافه کنید، به عنوان مثال، همچنین در ستون Responsible، در نتیجه اعمال متد FindLines() همه سطرهایی را دریافت می کنیم که در آن ها Employee و Responsible برابر هستند. ارزش جستجو شده

7. نحوه تکرار از طریق جدول مقادیر به ترتیب تصادفی

برای هر ردیف فعلی از جدول مقادیر حلقه
گزارش (CurrentRow.Name);
چرخه پایان

همین مورد با استفاده از شاخص ها:

SeniorIndex = ValueTable.Quantity() - 1;
برای Account = 0 تا SeniorIndex Cycle
گزارش(TableValues[Account].Name);
چرخه پایان


8. حذف یک ردیف جدول مقادیر موجود

ValueTable.Delete (ردیف که باید حذف شود);

بر اساس شاخص

ValueTable.Delete(0);


9. حذف یک ستون موجود از جدول مقدار

ValueTable.Columns.Delete(ColumnDeleted);


بر اساس شاخص

ValueTable.Columns.Delete(0);

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

10. اگر نام ستون ها در متغیرها وجود داشته باشد، چگونه جدول مقادیر را پر کنیم؟

NewRow = ValueTable.Add();
NewRow[ColumnName] = مقدار;


11. چگونه کل ستون جدول ارزش را با مقدار مورد نظر پر کنیم؟
ستون Flag حسابداری مالی در جدول مقادیر جدول مقادیر باید با مقدار False پر شود.

جدول مقادیر. مقادیر را پر کنید (نادرست، "پرچم حسابداری مالی")؛


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

12. چگونه می توانم جدول مقدار "جدول گیرنده" را با داده های جدول ارزش "SourceTable" پر کنم؟

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

جدول گیرنده = جدول منبع.Copy();


گزینه دو: جدول ReceiverTable وجود دارد و حیف است که ستون‌ها و محدودیت‌های آن در انواع داده‌های ستون از دست برود. اما باید داده های ستون هایی را که نام آنها با نام جدول منبع مطابقت دارد را پر کنید.

انتقال جزئی داده برای ستون هایی با نام های منطبق:

برای هر ردیف از SourceTable از چرخه SourceTable
FillPropertyValues ​​(NewRow، SourceTableRow);
پایان چرخه


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

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

کپی کامل داده ها برای ستون هایی با نام های منطبق

همان ستون = آرایه جدید();

برای هر ستون از SourceTable.Columns Cycle
MatchingColumn = TableReceiver.Columns.Find(Column.Name);

اگر MatchingColumn<>تعریف نشده سپس

// ویژگی های ستون را دریافت کنید.
Name = Column.Name;
ValueType = Column.ValueType;
Header = Column.Header;
Width = Column.Width;

// ستون ها را در جدول مقصد جایگزین کنید.
Index = TableReceiver.Columns.Index(MatchingColumn);

TableReceiver.Columns.Delete(Index);
ReceiverTable.Columns.Insert(Index, Name, ValueType, Header, Width);

// نام بعدی ستون های منطبق را به آرایه اضافه کنید.
همان Columns.Add(Column.Name);

endIf;

چرخه پایان

// در ردیف های جدول منبع چرخش کنید.
برای هر ردیف از SourceTable از چرخه SourceTable

// اضافه کردن خط جدیدبه میز دریافت
NewRow = TableReceiver.Add();

// مقادیر را در سلول های منطبق پر کنید.
برای هر ستون نام از ستون هایی با همان نام چرخه
NewRow[ColumnName] = SourceTableRow[ColumnName];

چرخه پایان

چرخه پایان


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

13. چگونه می توان ستون هایی را به جدول مقادیر "ValueTable" با محدودیت نوع اضافه کرد؟

هنگام اضافه کردن یک ستون، به سادگی می توانید نام آن را مشخص کنید و پارامتر دوم متد Add() را دست نخورده بگذارید. در این مورد، نوع داده ستون دلخواه است.

اضافه کردن یک ستون بدون تعیین نوع داده

// یک ستون بدون محدودیت در نوع اضافه کنید.
ValueTable.Columns.Add("Object");


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

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

// محدودیت در انواع داده های ستونی:
// فقط عناصر دایرکتوری "Counterparties".
Table of Values.Columns.Add("Account", New Description of Types("DirectoryLink.Accounts"));


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

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

// برای داده هایی از نوع String محدودیت هایی را آماده و تنظیم کنید.
String Qualifiers = New String Qualifiers(20, AllowedLength.Variable);
ValidTypes = NewTypeDescription("String", StringQualifiers);
ValueTable.Columns.Add("NoteStringShort", ValidTypes);


اقدامات مشابهی را می توان با توجه به واجد شرایط شماره و تاریخ انجام داد.
لطفاً توجه داشته باشید: توصیف‌های نوع می‌تواند توسط سازنده ساخته شود یا «از ابتدا» یا یک توصیف نوع موجود می‌تواند به عنوان پایه استفاده شود.

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

// گسترش توصیف نوع استفاده شده قبلی.
QualifiersNumbers = New QualifiersNumbers(10, 2, ValidSign.Non-negative);
DateQualifiers = New DateQualifiers(DateParts.Date);
Extended ValidTypes = New TypeDescription(ValidTypes, "Number, Date", Number Qualifiers, Date Qualifiers);

ValueTable.Columns.Add("Note", ExtendedAcceptableTypes);

در جدول مقادیر 1C جستجو کنید

چه روش هایی وجود دارد و چگونه می توان چندین مقدار را به طور همزمان جستجو کرد.

دو روش ویژه برای جستجوی جدول مقادیر وجود دارد:

1. پیدا کنید

TVHorizon = Directories.Nomenclature.FindByName("TVHorizon");
FoundString = TZNomenclature.Find(TVHorizon);
//همچنین می توانیم تعیین کنیم که در کدام ستون ها جستجو کنیم تا سرعت جستجو افزایش یابد
FoundString = TZNomenclature.Find(TVHorizon, "Nomenclature");

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

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

2. FindStrings


Selection Structure.Insert("Nomenclature", TVHorizon); // ابتدا ستون را مشخص کنید که کجا باید جستجو کرد و سپس به دنبال چه چیزی بود.

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

یکی دیگر از چیزهای خوب در مورد این روش این است که می تواند چندین ستون از جدول مقادیر را به طور همزمان جستجو کند:


SelectionStructure = ساختار جدید;
Selection Structure.Insert("Nomenclature", TVHorizon);
Selection Structure.Insert("Quantity", 10);
FoundArray of Rows = TZNomenclature.FindLines(SelectionStructure);

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

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

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

بنابراین، در 1C، کار با جداول جایگاه برجسته ای را اشغال می کند.

به جداول 1C "قسمت های جدولی" نیز می گویند. فهرست راهنماها، اسناد و سایر موارد آنها را دارند.

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

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

//گزینه 1 - دسترسی متوالی به نتایج پرس و جو

// جدول را دریافت کنید
Select = Query.Run().Select();
// تمام خطوط نتیجه پرس و جو را به ترتیب مرور می کنیم
در حالی که حلقه () Select.Next
گزارش (Selection.Name);
چرخه پایان

//گزینه 2 - آپلود در جدول مقادیر
Request = New Request("SELECT Name FROM Directory.Nomenclature");
// جدول را دریافت کنید
جدول = Query.Run().Unload().
//بیشتر ما همچنین می توانیم در تمام خطوط تکرار کنیم
برای هر ردیف از چرخه جدول
گزارش (String.Name);
چرخه پایان
//یا به صورت دلخواه به رشته ها دسترسی پیدا کنید
ردیف = Table.Find("Shovel", "Name");

یک ویژگی مهم این است که در جدولی که از نتیجه پرس و جو به دست می آید، تمام ستون ها به طور دقیق تایپ می شوند. به این معنی که با درخواست فیلد Name از فهرست Nomenclature، ستونی از نوع String با طول مجاز بیش از N کاراکتر دریافت خواهید کرد.

جدول روی فرم (کلینت ضخیم)

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

اصول اولیه کار با فرم ها را در درس روی و در درس روی بحث کردیم

بنابراین، بیایید جدول را روی فرم قرار دهیم. برای این کار می توانید جدول را از پنل Controls بکشید. به طور مشابه، می توانید Form/Insert Control را از منو انتخاب کنید.

داده ها را می توان در پیکربندی ذخیره کرد - سپس باید قسمت جدولی موجود (که قبلاً اضافه شده است) شی پیکربندی را که فرم آن را ویرایش می کنید انتخاب کنید.

روی دکمه "..." در ویژگی Data کلیک کنید. برای دیدن لیست قطعات جدولی، باید شاخه Object را گسترش دهید.

وقتی قسمت جدولی را انتخاب می کنید، خود 1C ستون هایی را به جدول روی فرم اضافه می کند. ردیف های وارد شده توسط کاربر در چنین جدولی به طور خودکار همراه با کتاب / سند مرجع ذخیره می شود.

در همان ویژگی Data می توانید یک نام دلخواه وارد کنید و نوع Value Table را انتخاب کنید.

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

با کلیک راست روی جدول می توانید یک ستون اضافه کنید. در ویژگی های یک ستون، می توانید نام آن را (برای مرجع در کد 1C)، عنوان ستون در فرم، ارتباط با ویژگی بخش جدولی را مشخص کنید (اگر یک جدول دلخواه انتخاب نشده باشد، اما یک بخش جدولی).

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

برای مدیریت جدول باید یک پنل فرمان روی فرم نمایش داده شود. مورد منو Form/Insert Control/Command Bar را انتخاب کنید.

در ویژگی های نوار فرمان، کادر تکمیل خودکار را انتخاب کنید تا دکمه های روی پانل به طور خودکار ظاهر شوند.

جدول روی فرم (مشتری نازک/مدیریت شده)

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

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

برای افزودن ستون‌ها، از منوی راست کلیک بر روی این ویژگی فرم استفاده کنید، ستون افزودن ویژگی را انتخاب کنید.

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

برای اینکه یک جدول دارای نوار فرمان باشد، در قسمت خصوصیات جدول، مقادیر موجود در قسمت Usage – Command bar position را انتخاب کنید.

آپلود جدول در اکسل

هر جدول 1C موجود در فرم را می توان چاپ یا در اکسل آپلود کرد.

برای این کار روی یک فضای خالی در جدول کلیک راست کرده و لیست را انتخاب کنید.

در یک کلاینت مدیریت شده (نازک)، اقدامات مشابه را می توان با استفاده از آیتم منو All actions/Display list انجام داد.

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

ویژگی های کار.

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

Form Elements.TableField.CreateColumns();

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

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

راه حل مشکل.

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

ایجاد یک جدول در فرم از طریق توصیف جدول مقدار به عنوان یک ویژگی رخ می دهد:
SelectionTypeArray = آرایه جدید; آرایه SelectionType.Add(Type("Value Table")); ChoiceTypeDescription = New TypeDescription(ChoiceTypeArray); آرایه از جزئیات = آرایه جدید; Array of Attributes.Add(New Form Attributes("Schedule Table", Description of SelectionType، """، "TZN")); حال باید یک جدول مقدار برنامه ایجاد کنیم که حاوی داده ها باشد. اگر جدول مقادیر از یک پرس و جو بدست آید، همه چیز کم و بیش مرتب است. اگر جدول به صورت دستی ایجاد شود، می توان از طریق "توضیح انواع" معنای ستون هایی که حاوی اعداد یا تاریخ هستند ایجاد کرد. نکته این است که ستون های جدول مقادیر باید دارای نوعی باشند. به عنوان مثال، اگر انتظار می رود که کاربر داده ها را در این ستون ها به صورت تعاملی پر کند، نمی توانید یک ستون از جدول مقدار را به سادگی با یک نام اضافه کنید؛ باید یک نوع داشته باشد. به خاطر داشته باشید - این بسیار مهم است زیرا ... این انواع را به جدول روی فرم منتقل می کنیم.
ما یک جدول ایجاد می کنیم که شامل چندین ستون است:
CD = NewDateQualifiers (DateParts.Time); ArrayKD = آرایه جدید; ArrayCD.Add(Type("Date")); DescriptionTypesTime = New DescriptionTypes(ArrayCD,CD); TZ = New ValueTable;
TK.Columns.Add("With", DescriptionTypesTime);
TK.Columns.Add("قبل"، DescriptionTypesTime);
TK.Columns.Add("Name");
TK.Columns.Add("Note")؛ // نام کامل و یادداشت - ردیف ها بعد، جدول برنامه TK خود را با داده های لازم پر می کنیم. ما یک جدول TK دریافت می کنیم که حاوی مقادیر لازم است و آماده انتقال به ویژگی فرم ایجاد شده است. چرخه ستون ها برای هر ستون از TK

Array of Attributes.Add(New Form Attributes(Column.Name, Column.ValueType,"ScheduleTable"));
چرخه پایان
ChangeDetails (ArrayDetails)؛
SelectionFieldsTable = Elements.Add("TZN", Type("FormTable"));
SelectionFieldsTable.DataPath = "ScheduleTable";
SelectionFieldTable.Display = TableDisplay.List;

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

چرخه ستون ها برای هر ستون از TK

NewElement = Elements.Add(Column.Name, Type("FormField"), SelectionFieldTable);
NewElement.View = FormFieldView.InputField;
NewElement.DataPath = "ScheduleTable." + Column.Name;
NewElement.Width = 10;
چرخه پایان

طراحی مشروط، اگر به آن نیاز داشته باشیم، آن را به صورت دستی نیز می نویسیم، منوی فرمان - به صورت دستی. دسته های جدول نیز با دست نوشته می شوند. به عنوان مثال، برای اضافه کردن یک کنترل کننده رویداد برای جدول "انتخاب":

جدول SelectionFields.SetAction("Selection","TZNSelection");

برای پردازش این رویداد، یک روش جداگانه در قالب یک رویه تجویز می شود:

&OnClient
رویه TKNSelection (TK، SelectedRow، Field، StandardProcessing)
//فرمانهای هندلر EndProcedure

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

&OnClient

خوب، آخرین چیزی که می خواستم اضافه کنم این است که بعد از تمام این مراحل، حتماً به یاد داشته باشید که جدول تمام شده را به ویژگی form منتقل کنید:

ValueВFormAttributes(ToR، "ScheduleTable");

این چیزی است که در نتیجه داریم:


و در اینجا نحوه رسیدگی به رویداد "انتخاب" است:



پس گفتار

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

می‌توانید پردازشی را دانلود کنید که به صورت برنامه‌ریزی یک جدول مقدار ایجاد می‌کند و آن را به خروجی می‌دهد فرم کنترل شدهبا نظراتی که به شما کمک می کند جداول خود را ایجاد کنید.



 


خواندن:



نحوه پارتیشن بندی هارد دیسک

نحوه پارتیشن بندی هارد دیسک

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

هارد دیسک را به پارتیشن تقسیم می کنیم

هارد دیسک را به پارتیشن تقسیم می کنیم

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

وقتی کامپیوتر روشن می شود بوق می دهد

وقتی کامپیوتر روشن می شود بوق می دهد

تاریخ انتشار: 1390/02/01 مواقعی وجود دارد که کامپیوتر روشن نمی شود، اما شروع به بیپ می کند. اگر گوش کنید، مشخص می شود که ...

تغییر صحیح پسوند فایل در ویندوز نحوه تغییر پسوند آرشیو

تغییر صحیح پسوند فایل در ویندوز نحوه تغییر پسوند آرشیو

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

فید-تصویر RSS