در جدول مقادیر 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);

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

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

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، سپس در نتیجه اعمال متد FindRows() همه سطرهایی را که هر دو کارمند و 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);

اگر ستون مطابقت دارد<>تعریف نشده سپس

// ویژگی های ستون را دریافت کنید.
نام = 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، کار با جداول جایگاه برجسته ای را اشغال می کند.

به جداول 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 انجام داد.