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

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

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

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

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

قابلیت پردازش

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

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

تفاوت در پیاده سازی های موجود

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

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

UPD-2018-01-06 (v1.3). رفع اشکالی که در حالت سازگاری 8.3.7 و بالاتر رخ داده است (رفتار سیستم عامل تغییر کرده است).

UPD-2012-08-17 (نسخه 1.2). یک پچ برای پردازش صحیح وظایف برنامه ریزی شده ایجاد شد ، موردی برای نمایش برنامه های انواع محاسبه ثابت شد ، رفتار هنگام تعویض نوع ساختار در ریشه پیکربندی ثابت شد.

P.S. برخی از کارفرمایان در مورد تعداد جداول فیزیکی و مجازی برای ثبت نام هنگام استخدام سوال می کنند. خوب خواهد بود که پاسخ این س questionsالات را بدانید ، به خصوص که این سطح 1C: حرفه ای است. اگر می خواهید نه تنها این پاسخ را یاد بگیرید ، بلکه این جداول را "احساس" کنید ، این پردازش برای شما مناسب است!

داده هایی که منطق عملکرد سیستم را بر اساس 1C تعیین می کنند: Enterprise مربوط به پایگاه اطلاعات هستند. این infobase در یک پایگاه داده به صورت مجموعه ای از جداول ذخیره می شود که برای آن 1C: Enterprise 8.1 می تواند از یکی از چهار سیستم مدیریت پایگاه داده (DBMS) استفاده کند:
* داخلیدر 1C: Enterprise 8.1 (نسخه فایل infobase). در این حالت ، تمام اطلاعات infobase در پرونده ای به نام 1Cv8.1CD ذخیره می شوند. این پرونده دارای یک قالب باینری است و اساساً یک پایگاه داده برای DBMS است که در 1C: Enterprise 8.1 تعبیه شده است.
* Microsoft SQL Server (نسخه سرور مشتری و سرور پایگاه اطلاعات). تمام داده های infobase در پایگاه داده Microsoft SQL Server ذخیره می شوند.
* PostgreSQL (نسخه سرور مشتری و سرور پایگاه اطلاعات). تمام اطلاعات infobase در پایگاه داده PostgreSQL ذخیره می شود.
* IBM DB2 (نسخه سرور مشتری و سرور پایگاه اطلاعات). تمام اطلاعات infobase در پایگاه داده IBM DB2 ذخیره می شود.

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

کل اطلاعات در پایگاه داده به عنوان مجموعه ای از جداول ارائه شده است. در میان آنها چندین جدول وجود دارد که لزوماً در ارائه هرگونه اطلاعات وجود دارد:

* پیکربندی کنید - پیکربندی اصلی infobase. این پیکربندی مربوط به ساختار داده واقعی است و توسط 1C: Enterprise 8.0 در حالت Enterprise استفاده می شود.
* پیکربندی - پیکربندی ویرایش شده توسط تنظیم کننده. وقتی "به روزرسانی پیکربندی پایگاه داده" در تنظیم کننده انجام می شود ، پیکربندی از ConfigSave در Config بازنویسی می شود و برعکس - وقتی عملیات "پیکربندی - پیکربندی پایگاه داده - بازگشت به تنظیمات پایگاه داده" در تنظیمات انجام می شود.
* فایل ها شامل اطلاعات سرویس است ، به عنوان مثال ، در مورد کار با فروشگاه پیکربندی.
* پارامزها شامل پارامترهای infobase است. در میان آنها:
=> لیست کاربران infobase.
=> تنظیمات ملی پایگاه اطلاعات
=> جدول مربوط به اشیا met فراداده و اشیا database پایگاه داده (جداول ، فیلدها ، نمایه ها).
=> برخی اطلاعات دیگر
* _YearOffset - جبران تاریخ ها در پایگاه داده. این جدول فقط هنگام استفاده از Microsoft SQL Server ایجاد می شود.
* DBSchema شامل اطلاعاتی درباره ساختار پایگاه داده 1C: Enterprise است و سایر اشیا database پایگاه داده را که توسط این پایگاه اطلاعاتی استفاده می شود ، تعریف می کند.

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

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

اگر پیکربندی حداقل یک طرح مبادله را با مجموعه پرچم "Infobase توزیع شده" تعریف کند ، جداول زیر ایجاد می شود:

* _ConfigChangeRec - جدول ثبت تغییرات در اشیا conf پیکربندی.
* _ConfigChangeRec_ExtProps - جدول نام پرونده های تغییر یافته خصوصیات خارجی اشیا conf پیکربندی.

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

* ثابت ها
=> _Consts شامل مقادیر فعلی تمام ثابت های تعریف شده در پیکربندی است.
=> _ConstsChangeRec - جدول ثبت تغییرات ثابت. در صورتی که حداقل یک ثابت در حداقل یک طرح تبادل شرکت کند ایجاد شده است.
* برنامه های تبادل
=> _نود - جدول برنامه مبادله
=> _نود _VT - بخش جدول طرح تبادل ، ایجاد شده برای هر بخش جدول.
* منابع
=> _ارجاع - جدول مرجع
=> _ارجاع _VT - بخش جدول کتاب مرجع - برای هر بخش جدول.
=> _ReferenceChangeRec - جدول ثبت تغییرات در فهرست. اگر دایرکتوری حداقل در یک طرح تبادل شرکت کند ایجاد شده است.
* اسناد
=> _سند - یک جدول اسناد برای هر "سند" شی ابرداده.
=> _سند _VT - بخش جدولی سند - برای هر بخش جدولی هر سند.
=> _DocumentChangeRec - جدولی برای ثبت تغییرات شی object فراداده از نوع "سند". در صورتی که حداقل در یک طرح مبادله شرکت کند ، برای هر شی متاداده نوع "سند" ایجاد شده است.
* توالی اسناد
=> _توالی - جدول ثبت اسناد - برای هر دنباله.
=> _حد مرز - جدول مرزهای دنباله - برای هر دنباله.
=> _SequenceChangeRec - جدول ثبت تغییرات توالی. برای هر سکانسی که حداقل در یک طرح تبادل شرکت می کند ایجاد شده است.
* مجلات اسناد.
=> _ ژورنال Document - یک جدول مجله اسناد ، ایجاد شده برای هر مجله اسناد.
* شمارش
=> _انوم - جدول شمارش - برای هر شمارش یکی.
* طرحهایی از انواع مشخصه
=> _Chrc - جدول اصلی نمودار انواع مشخصه.
=> _Chrc _VT - بخش جداولی نمودار انواع مشخصه - برای هر بخش جدول.
=> _ChrcChangeRec - جدولی برای ثبت تغییرات در طرح انواع مشخصه. درصورتی که نمودار انواع مشخصه حداقل در یک طرح تبادل شرکت کند ایجاد شده است.
* نمودارهای حساب
=> _امکان - جدول اصلی نمودار حساب ها.
=> _امکان _ExtDim - جدول انواع حسابهای فرعی نمودار حسابها ، برای نمودار حساب ایجاد شده است اگر حداکثر تعداد زیر حسابها بیشتر از صفر باشد.
=> _امکان _VT - جدول جدول از نمودار حساب ها ، ایجاد شده برای هر بخش جدول از نمودار حساب.
=> _AccChangeRec - جدولی برای ثبت تغییرات در نمودار حساب ها. درصورتی که نمودار حساب حداقل در یک طرح مبادله شرکت کند ایجاد شده است.
* طرح انواع محاسبه
=> _CalcKind - جدول اصلی نمودار انواع محاسبه.
=> _CalcKind _BaseCK - جدولی از انواع محاسبات اساسی ، که برای نمودار انواع محاسبه ایجاد می شود اگر ویژگی "وابستگی پایه" مقدار دیگری غیر از "بستگی ندارد" داشته باشد.
=> _CalcKind _DisplacedCK - جدولی از انواع محاسبات جابجا شده ، که برای نمودار انواع محاسبات ایجاد شده است اگر کادر تأیید "دوره اعتبار استفاده می کند" برای آن انتخاب شده است.
=> _CalcKind _LeadingCK - جدول انواع محاسبات پیشرو - برای هر نمودار انواع محاسبه.
=> _CalcKindDN - در صورت انتخاب کادر انتخاب "دوره اعتبار استفاده" در نمودار انواع محاسبه ، یک جدول کمکی برای سفارش پیش پرداخت ایجاد شده است.
=> _CalcKind _VT - بخش جدول از طرح انواع محاسبه ، ایجاد شده برای هر بخش جدول.
=> _CalcKindChangeRec - جدولی برای ثبت تغییرات در طرح انواع محاسبه. درصورتی که طرح انواع محاسبه حداقل در یک طرح مبادله شرکت کند ایجاد شده است.
* ثبت اطلاعات
=> _InfoReg - جدول حرکات ثبت اطلاعات.
=> _InfoRegChangeRec - جدول ثبت تغییرات در ثبت اطلاعات. درصورتی که ثبت اطلاعات حداقل در یک طرح تبادل شرکت کند ایجاد شده است.
* ثبت انباشت
=> _AccumReg - جدول حرکات ثبت انباشت.
=> _AccumReg کل - اگر مجموع موجودی از موجودی پشتیبانی کند ، جدول مجموع ثبت انباشت است.
=> _AccumRegTurnovers - جدول گردش مالی ثبت انباشت ، اگر این ثبت از گردش مالی پشتیبانی کند.
=> _AccumRegChangeRec - جدولی برای ثبت تغییرات در ثبت انباشت. در صورتی ایجاد می شود که ثبت انباشت حداقل در یک طرح مبادله شرکت کند.
=> _AccumRegOptions - جدولی از تنظیمات برای ذخیره کل ثبت های انباشت ، یکی برای همه ثبت های تجمع.
* ثبت های حسابداری
=> _AcntReg - جدول حرکات ثبت حسابداری.
=> _AcntRegED - یک جدول از مقادیر خرده علامت ثبت نام حسابداری ، ایجاد شده اگر مربوط به نمودار حساب باشد ، که در آن حداکثر تعداد خرده زیر بزرگتر از صفر است.
=> _AccTtl0 - جدول مجموع حساب ها.
=> _AccTtl - جایی که من از 1 تا حداکثر تعداد زیر خالص است. جدول مجموع حساب با تعداد انواع زیر خالص برابر با i.
=> _AccTtlC - یک جدول از کل گردش مالی بین حساب ها ، فقط برای ثبت حسابداری که از مکاتبات پشتیبانی می کند.
=> _AccntRegChangeRec - جدول ثبت تغییرات در ثبت حسابداری. در صورتی ایجاد می شود که ثبت حسابداری حداقل در یک طرح مبادله شرکت کند.
=> _AccntRegOptions - جدول تنظیمات ذخیره کل ، یکی برای همه ثبت های حسابداری.
* ثبت نام محاسبه
=> _CalcReg - جدول حرکات ثبت محاسبه.
=> _CalcRegActPer - اگر کادر تأیید "دوره اعتبار" برای ثبت تسویه تنظیم شود ، جدول دوره های اعتبار واقعی ثبت تسویه ایجاد می شود.
=> _CalcRegChangeRec - جدول ثبت تغییرات در ثبت محاسبه. ایجاد شده برای هر ثبت نام تسویه حساب که حداقل در یک طرح مبادله شرکت می کند.
=> _CalcRegRecalc - جدولی برای محاسبه مجدد ثبت محاسبه ، برای هر محاسبه مجدد ایجاد می شود.
=> _CalcRegRecalcChangeRec - جدول ثبت تغییرات محاسبه مجدد. درصورتی که تخصیص در حداقل یک طرح تبادل شرکت کند ایجاد شده است.
* فرآیندهای کسب و کار
=> _BPRoutePoint - جدول نقاط مسیر فرآیند تجارت برای هر فرآیند کسب و کار.
=> _فرآیند کاری - جدول اصلی فرآیند تجارت.
=> _فرآیند کاری _VT - بخش جدولی فرآیند تجارت برای هر قسمت جدولی.
=> _BusinessProcessChangeRec - یک جدول برای ثبت تغییرات در روند کسب و کار. ایجاد شده برای هر فرآیند تجاری که حداقل در یک طرح مبادله شرکت می کند.
* وظایف
=> _وظیفه - جدول وظایف اصلی
=> _وظیفه _VT - بخش جدول از وظیفه برای هر بخش جدول.
=> _TaskChangeRec - جدولی برای ثبت تغییرات در کارها. برای هر شی each فراداده از نوع "کار" ایجاد شده است که حداقل در یک طرح تبادل شرکت می کند.

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

تعداد این جداول به عملکرد پیکربندی بستگی دارد و می تواند بسیار زیاد باشد. در حالت عادی ، 1C: Enterprise حضور آنها و همچنین یکپارچگی و سازگاری داده های موجود را بررسی نمی کند. بنابراین مهم است که پایگاه داده ای که حاوی پایگاه اطلاعاتی 1C: Enterprise 8.1 است ، از دسترسی غیر مجاز محافظت شود و اصلاح آن فقط با استفاده از 1C: Enterprise انجام شود. برای بررسی آن ، از تابع "مدیریت - آزمایش و تعمیر" که در تنظیم کننده تعبیه شده استفاده کنید.

همچنین مهم است که پایگاه داده ذخیره کننده این infobase پشتیبان گیری شود و فقط به طور کامل بازیابی شود. برای این منظور ، توصیه می شود از ابزارهای پشتیبان پایگاه داده که در DBMS استفاده شده است استفاده کنید. تهیه نسخه پشتیبان از نسخه فایل infobase با کپی کردن فایل 1Cv8.1CD انجام می شود.

تنظیم کننده وظیفه خاصی دارد: مدیریت - پایگاه اطلاعاتی بارگذاری. با کمک آن ، می توانید تمام داده های مربوط به پایگاه اطلاعات را در پرونده مشخص شده (پرونده بارگذاری) بارگذاری کنید و هیچ چیز دیگری. عملکرد معکوس "Load infobase" اجازه می دهد تا تمام داده ها را از پرونده بارگذاری به جای داده های موجود در پایگاه فعلی بارگیری کنید. از این توابع همچنین می توان برای تهیه نسخه پشتیبان از اطلاعات infobase در هر دو نسخه پرونده و نسخه کلاینت-سرور استفاده کرد.

ساختار در زبان برنامه نویسی 1C 8.3 و 8.2 مجموعه ای از جفت "Key" و "Value" است. قسمت "کلید" دارای یک نوع رشته است ، "مقدار" می تواند هر نوع داده را بگیرد. این معمولاً برای ذخیره و انتقال مجموعه ای از پارامترها بین رویه ها استفاده می شود.

ساختار در زبان برنامه نویسی 1C را می توان به دو روش با استفاده از ساختار "جدید" ایجاد کرد.

راه اول:

ساختار \u003d ساختار جدید ؛
ساختار. درج ("KeyParameter1" ، "مقادیر پارامتر شماره 1")؛
ساختار. درج ("KeyParameter2" ، "مقادیر پارامتر شماره 2")؛

راه دوم:

ساختار \u003d ساختار جدید ("KeyParameter1، KeyParameter2" ، "مقادیر پارامتر # 1" ، "مقادیر پارامتر # 2")؛

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

267 آموزش ویدیویی 1C را به صورت رایگان دریافت کنید:

تغییر

می توانید ساختار را با استفاده از روش "Insert ()" اضافه یا تغییر دهید.

Structure.Insert ("KeyName"، KeyValue)؛

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

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

Structure.Remove ("نام اصلی")؛

همچنین می توان همه اشیا in موجود در مجموعه را پاک کرد:

ساختار. پاک ()؛

پیمایش ساختار

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

مثلا:

برای هر کلید و معنی حلقه ساختار
برای مثال ، فرآیند …… // ، مقادیر را تغییر دهید
پایان چرخه ؛

در هر چرخه مشاهده خواهد شد که زمینه های زیر در دسترس ما است: