1c حذف یک عنصر از پیش تعریف شده عناصر منظم و از پیش تعریف شده تفاوت در سمت پایگاه داده است. مشخصات نامعتبر عنصر از پیش تعریف شده

روز خوب.

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

معرفی

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

وقتی همه چیز اشکال زدایی و کار کرد ، معلوم شد که کار برعکس تنظیم شده است و منطق برای مالک انحصاری برای LLC مورد نیاز است و منطق LLC برای مالک انفرادی است. ما می گوییم "مشکلی نیست" و در حالت سازمانی نام موارد را تغییر می دهیم. ورود به کد بسیار مشکل تر است. یک سال می گذرد و شما تحویل می شوید وظیفه جدید: برای SP Sidorov ، منطق بیشتری را تنظیم کنید. شما وارد تنظیم کننده می شوید ، منطق را می نویسید ، شروع به بررسی می کنید و هیچ چیز کار نمی کند ، زیرا در تنظیم کننده IPSidorov و در شرکت - Meteor LLC. مغز خراب است و من می خواهم این چنگک را از بین ببرم. ساده ترین و شهودی ترین حالت این است که نام یک عنصر از پیش تعریف شده را در قالب یک لیست وارد کنید. در اینجا کمین وجود دارد ، فقط با روش می توانید نام از پیش تعریف شده را در 8.2 دریافت کنید. و این روش ناراحتی خاص خود را دارد ، نمی توان آن را در درخواست بدست آورد. آن ها اولین ناراحتی این است که نام قبلی را با مراجعه به دایرکتوری دریافت کنید.

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

حالا در مورد پرونده

اول این که کتاب مرجع اکنون دارای ویژگی "Update predefined data" است.

این رشته به ما چه می دهد؟ اگر روی "Do not Update automatically" تنظیم شده باشد ، سپس با افزودن یک عنصر از پیش تعریف شده ، بلافاصله آن را در مرجع نمی بینیم. آن ها فراداده هیچ ارتباطی با داده ها ندارد. و اگر در فهرست ایجاد نشده باشد ، مراجعه به نام آن از طریق مدیر فهرست منجر به خطای نحوی می شود.

بسیار جالب است ، اما چرا؟ چگونه می توان یک مورد را در مرجع ایجاد کرد؟ و همانطور که می خواهید ، می توانید ایجاد کنید ، یا می توانید آن را با یک موجود پیوند دهید. اکنون جستجو ویژگی "PredefinedDataName" را دارد. ما طبق روال معمول از طریق "References.Contractors.CreateElement ()" یک آیتم کاتالوگ ایجاد می کنیم و ویژگی "PredefinedDataName" آن را برابر با نام مورد از پیش تعیین شده پر می کنیم. یا اگر عنصر از قبل وجود داشته باشد ، شیء آن را دریافت می کنیم و دوباره "PredefinedDataName" را در آن پر می کنیم. همه چيز.

و در آخر کمی شربت

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

با تشکر از توجه شما.

هنگام کار بر روی پلت فرم 1C: Enterprise 8.x ، اغلب لازم است که کد برنامه را به عناصر معمول (از پیش تعریف شده) دایرکتوری متصل کنید. به عنوان مثال ، یک سازمان ممکن است پنج نوع قیمت داشته باشد که تقریباً در همه مکانیزم ها مورد استفاده قرار می گیرد. در عین حال ، دسترسی برنامه ای به یک قیمت خاص در بهترین حالت یا با فشردن یک کد در کتاب مرجع و در بدترین حالت با نام عنصر انجام می شود.

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

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

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

به عنوان یک راه حل ، می توانید یک مرجع برای هر موردی که اغلب مورد استفاده قرار می گیرد در "نوع قیمت اقلام" در ثابت های جداگانه ذخیره کرده و مقادیر مورد نظر را در پرس و جو دریافت کنید. با این حال ، در این مورد ، توسعه دهنده باید برای هر عنصر چنین ثابت جداگانه ای اضافه کند. اگر چنین عناصری نه تنها در فهرست "انواع قیمت کالا" ، بلکه در سایر فهرستها ("رده های شیء" ، "کیفیت" ، "نامگذاری" و موارد دیگر) نیز وجود داشته باشد ، وضعیت بسیار پیچیده تر خواهد شد. سپس تعداد ثابتهای سیستم می تواند چندین برابر شود!

البته ، می توان عناصر از پیش تعریف شده را به هر یک از فهرست ها اضافه کرد و دسترسی به آنها بسیار آسان تر بود. با این حال ، تغییر اشیاء عمومی روند به روزرسانی پیکربندی بسته های فروشنده را پیچیده می کند.

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

راه حل یک مرحله ای

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

برای بدست آوردن یک عنصر از پیش تعریف شده ، بهترین گزینه استفاده از روش جهانی است "PredefinedValue (<Имя>)" ... مسیر کامل به عنصر از پیش تعیین شده به متد به عنوان پارامتر منتقل می شود. نحو مشابه تابع زبان پرس و جو "VALUE ()" است.

برای سهولت توسعه ، توصیه می کنم تابع را برای دریافت مقدار مربوط به یک عنصر از پیش تعریف شده به داخل منتقل کنید ماژول مشترک... در پیکربندی آزمایشی ، برای بارگیری در پیوند انتهای مقاله ، یک ماژول مشترک "مقادیر پیش تعیین شده عنصر" با عملکرد صادرات ایجاد شده است "GetValuePredefinedElement (<ИмяПредопределенногоЭлемента>)" ... کد برنامه عملکرد یک پیوند به یک عنصر از پیش تعریف شده را دریافت می کند ، سپس ، با درخواست ، مقادیر ویژگی "Value" را دریافت می کند. تصویر زیر فهرست کامل عملکرد را نشان می دهد.

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

تاثیر بر عملکرد

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

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

در نسخه سرویس گیرنده-سرویس کار ، نتایج آزمایش تصویری کاملاً متفاوت را نشان می دهد. سرعت به دست آوردن پیوند به عنصر مورد نظر به طور قابل توجهی کاهش نمی یابد (یکی از آزمایشات 0.002 ثانیه را نشان داد. برای جستجو با نام و 0.0008 ثانیه. هنگام کار از طریق یک عنصر از پیش تعریف شده) ، با این حال ، قابلیت اطمینان برنامه به طور قابل توجهی افزایش یافته است!

نتیجه گیری

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

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

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

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

دانلودها:

  1. تخلیه پایگاه آزمایش با مثالهایی از مقاله.

همه تفاوت بین عناصر از پیش تعریف شده و معمولی را می دانند: "عناصر از پیش تعریف شده در حالت Configurator ایجاد می شوند و در حالت 1C: Enterprise حذف نمی شوند." در حالت کاربر ، می توانید یک عنصر از پیش تعریف شده را از مواردی که کاربران با یک نماد خاص اضافه کرده اند ، تشخیص دهید (به تصویر بعدی مراجعه کنید).

اساساً ، عناصر از پیش تعریف شده توسط توسعه دهندگان ایجاد می شوند تا الگوریتم ها را در اشیاء پیکربندی مختلف به آنها متصل کنند. به عنوان مثال ، در پیکربندی "Manufacturing Enterprise Management" در مرجع "Quality" ، توسعه دهندگان یک مورد از پیش تعیین شده "New" را اضافه کردند.

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

// کالاهای ثبت شده CommoditiesOrganisations.مجموعه حرکات = حرکات. محصولات سازمانها ؛ اگر نوع رسید = انتقال. انواع کالاهای درآمدی. در انبار پس از آن // جدولی از مقادیر متناسب با ساختار مجموعه رکورد ثبت شده را دریافت کنید.انتقال جدول = حرکت مجموعه. تخلیه ()؛ // جدول حرکت را پر کنید.همه منظوره. LoadInTableValues ​​(TableBy Products، TableMotions) ؛ // فیلدهای موجودجدول حرکات. FillValues ​​(سازمان ، "سازمان") ؛ جدول حرکات. FillValues ​​(تعریف نشده ، "کمیسر") ؛ جدول حرکات. FillValues ​​(مراجع. کیفیت. جدید ، "کیفیت") ؛ // کیفیت را از یک عنصر از پیش تعریف شده پر کنید

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

تفاوت

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

اما چگونه می توان مطابقت ویژگی ها را با درخت پیکربندی و زمینه های موجود در جدول SQL تعیین کرد؟

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

در جدول مقدار "Fields" ، ما تناسب بین زمینه های جدول SQL و ویژگی های شیء را در درخت فراداده مشاهده می کنیم. در مثال ما ، ساختار فهرست "محصولات" را در نظر می گیریم. همه دایرکتوری ها دارای ویژگی نوع بولین "از پیش تعریف شده" استاندارد هستند که برای عناصر از پیش تعریف شده روی TRUE تنظیم شده است:

با توجه به جدول ذخیره ساختار کتاب مرجع در پایگاه داده ، به طور قطع می توان گفت که فیلد "Predefined" با فیلد "IsMetadata" مطابقت دارد. اگر به محتویات جدول "_Reference37" در پایگاه داده SQL نگاه کنیم ، موارد زیر را خواهیم دید:

در ضبط یک عنصر از پیش تعریف شده ، مقدار فیلد "IsMetadata" روی "0x01" تنظیم شده است که مربوط به پرچم TRUE است. برای موارد معمولی ، مقدار روی "0x00" تنظیم شده است. این تفاوت اصلی بین عناصر از پیش تعریف شده و عناصر معمولی است. همه فیلدهای دیگر به همان شیوه ای که برای موارد معمولی اضافه شده توسط کاربر در پایگاه داده ذخیره می شوند.

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

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

تکمیل

موارد از پیش تعریف شده جزء لاینفک اکثر تنظیمات هستند. استفاده از آنها توسعه را ساده کرده و ساخت کارکردها را منطقاً "هماهنگ" و منسجم می کند.

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

زمان بندی 4 درس:

00:19 تغییرات در فهرست Employees پس از اجرا مشق شب 3 درس دوره
00:35 ویرایش ترتیب ویژگیها در فهرستها
02:54 ایجاد کتاب مرجع نامگذاری
03:40 ایجاد و پیکربندی یک فهرست سلسله مراتبی
05:10 ایجاد گروه خدمات و محصولات در فهرست نامگذاری
06:05 پر کردن کتاب مرجع نامگذاری
07:14 3 راه برای انتقال یک مورد فهرست به گروه دیگر
08:21 ایجاد دایرکتوری انبارها
09:19 ایجاد اقلام فهرست از پیش تعریف شده
11:25 پر کردن دایرکتوری انبارها
12:20 امتحان مواد را در درس 4 شرکت کنید

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

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

فرم های دایرکتوری- ارائه بصری کتاب مرجع. بسته به اینکه دقیقاً چه اقداماتی را می خواهیم با فهرست خود انجام دهیم ، باید دایرکتوری را در "نماهای مختلف" نمایش دهیم. بنابراین ، در درس 4 دوره ، ما ترتیب الزامات را در قالب یک لیست و در قالب یک عنصر مرجع ویرایش کردیم.

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

5 فرم (انواع فرم) برای کتابهای مرجع وجود دارد:

  • شکل عنصر- ایجاد یا ویرایش یک مورد فهرست
  • شکل گروه- ایجاد یا ویرایش گروه فهرست
  • فرم لیست- برای نمایش لیستی از موارد فهرست.
  • فرم انتخاب- برای انتخاب یکی از عناصر در زمینه ای از فرم خاص استفاده می شود از این دفترچه راهنما... به عنوان مثال ، به منظور انتخاب یک انبار خاص از فهرست انبارها در سند دریافت کالا در قسمت انبار ؛
  • فرم انتخاب گروه- برای انتخاب یکی از گروه های این فهرست در زمینه ای از فرم خاص استفاده می شود.

موارد راهنمای از پیش تعریف شده- عناصر دایرکتوری ایجاد شده توسط توسعه دهنده در حالت Configurator ، و از طریق نام 1c از زبان 1c قابل دسترسی است.

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

مهم! از نظر فنی ، کاربر این قابلیت را دارد که یک عنصر فرهنگ لغت از پیش تعریف شده را حذف کند ، اما به عنوان یک قاعده ، کاربران حق حذف عناصر فرهنگ لغت از پیش تعریف شده را ندارند.

تکلیف درس چهارم درس

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

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

ابتدا ، باید خودتان به وضوح درک کنید که عناصر از پیش تعیین شده در پیکربندی وجود دارد و عناصر از پیش تعریف شده در پایگاه اطلاعات (IB) وجود دارد. عناصر IB از پیش تعریف شده فنی رایج ترین عناصر فرهنگ لغت هستند که در آنها ویژگی "PredefinedDataName" مشخص می کند که آنها با کدام عنصر پیکربندی از پیش تعریف شده مطابقت دارند. آنها هیچ تفاوتی با عناصر معمولی ندارند. بر این اساس ، هر عنصر IB معمولی را می توان از پیش تعریف شده ، هر نوع معمولی از پیش تعریف شده را. برای انجام این کار ، فقط مقدار مورد نظر را در props وارد کنید. "PredefinedDataName".

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

می توان آن را به صورت مشروط تشخیص داد سه نوع خطا:
1. "یک مورد از پیش تعیین شده در داده ها وجود ندارد" ؛

3. نشانه نامعتبر از یک عنصر از پیش تعریف شده.

1. "یک مورد از پیش تعیین شده در داده ها وجود ندارد" - oعدم وجود یک عنصر از پیش تعریف شده در پیکربندی در داده های IB.

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

هنگام دسترسی به عنصر گم شده در کد "Directories.Types of ContactInformation.EmailContactPerson" پیام نمایش داده می شود

هنگام مراجعه به موردی در درخواست "VALUE (Directory.Types of ContactInformation.EmailContactPerson)" پیام زیر نمایش داده می شود:

این خطا در صورتی رخ می دهد که یک عنصر در پیکربندی توضیح داده شود ، اما عنصر در پایگاه داده با آن مرتبط نباشد.

برای شروع ، اجازه دهید روشن کنیم که این وضعیت همیشه اشتباه نیست. کاملاً ممکن است از داده های از پیش تعریف شده در نوعی منطق برنامه استفاده شود ، که برای اکثر کاربران ممکن است مورد استفاده قرار نگیرد. در این حالت ، برای اینکه کتاب مرجع برای همه کاربران پیکربندی به هم نریزد ، منطقی است که عناصر از پیش تعریف شده را در پیکربندی تعریف کنید ، اما نه ایجاد آنها در همه IS ، بلکه فقط برای IS هایی که پیکربندی مورد نیاز در آنها وجود دارد. منطق استفاده می شود در این حالت ، برنامه نویس می تواند ویژگی "Do not update predefined data" را برای کتاب مرجع مشخص کرده و هنگام دسترسی به عملکرد ماژول ، به صورت برنامه ای عناصر ایجاد کند. یا اینکه کاربر را قادر سازد تا عناصر از پیش تعریف شده ماژول را بطور مستقل به عناصر معمولی که دارد متصل کند.

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

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

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

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

درخواست = درخواست جدید ؛ Query.Text = "SELECT | انواع اطلاعات تماس. پیوند | FROM | Directory. انواع اطلاعات تماس AS انواع اطلاعات تماس | WHERE | انواع اطلاعات تماس. PredefinedData Name =" " ایمیل شخص مخاطب"" "؛ ElementNoNo.VD = Request.Run (). خالی ()؛

اگر این هنوز در داده های پایگاه داده خطا است ، لازم است که به یک عنصر از پیش تعریف شده از عنصر IB متصل شوید. آن ها لازم است برای سیستم توضیح داده شود که کد برنامه باید با این نام به کدام عنصر امنیت اطلاعات اشاره کند. از لحاظ فنی ، صحافی فقط تعیین نام عنصر از پیش تعریف شده در یک ویژگی است "PredefinedDataName"عنصر IB. برای نصب ، فقط کد را اجرا کنید:

2. "عنصر از پیش تعریف شده منحصر به فرد نیست" - h advoi عناصر از پیش تعریف شده:

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

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

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

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

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

چنین خطاهایی در پایگاه داده را می توان با پرس و جو از فرم تشخیص داد:

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

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

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

3. نشانه نامعتبر از یک عنصر از پیش تعریف شده.

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

برای این کار کافی است یکی از دستورات را اجرا کنید.

// تعریف یک عنصر IB که به گزارش از پیش تعریف شده مورد نیاز (Directories.Type of ContactInformation.EmailContactPerson) پیوند خورده است // عنصر از پیش تعیین شده ای را که گزارش انتخاب شده به آن متصل است تعیین کنید (ReferenceOnItem.Name of PredefinedData)

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

خوب ، به طور مختصر در مورد خطاهای زمانی که کار برنامه اییا در حالت تنظیم کننده:

"مورد از پیش تعریف شده متعلق به آن نیست<Имя справочника>" - هنگام نوشتن یک عنصر از پیش تعریف شده با نامی که با نام موجود در تنظیم کننده دیگر مطابقت ندارد ، خطایی رخ می دهد..

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

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

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

"نام عنصر از پیش تعریف شده منحصر به فرد نیست" - هنگام بروزرسانی به پلت فرم ، چندین عنصر از پیش تعریف شده با یک نام در پیکربندی وجود دارد8.3.6.2332 و بعد. حذف موارد تکراری در پیکربندی ضروری است.

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