نحوه راه اندازی گوشی های هوشمند و رایانه های شخصی. پرتال اطلاعاتی
  • خانه
  • اخبار
  • جزئیات فرم روی 1 تنظیم شده است. جزئیات فرم مدیریت شده (1Cv8)

جزئیات فرم روی 1 تنظیم شده است. جزئیات فرم مدیریت شده (1Cv8)

چاپ (Ctrl+P)

برای تبدیل اشیاء برنامه به داده های فرم و برگشت، مجموعه ای از روش های جهانی وجود دارد:

  • ValueInFormData()،
  • FormDataInValue()،
  • CopyFormData().

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

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

  • ValueInFormData() - یک شی از نوع برنامه را به داده های فرم تبدیل می کند.
  • DataFormValue() - داده های فرم را به یک شی از نوع برنامه تبدیل می کند.
  • CopyFormData() - کپی هایی از داده هایی که دارای ساختار سازگار هستند. در صورت موفقیت آمیز بودن کپی، True یا اگر ساختار شی ناسازگار باشد، False را برمی‌گرداند.

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

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

بیایید مثالی از نحوه استفاده از تبدیل داده در الگوریتم های خود ارائه دهیم.

&روی سرور
رویه زمانی که روی سرور ایجاد شد (شکست، پردازش استاندارد)
ObjectProduct = Products.FindByName("Coffeepot").GetObject(); ValueInFormData(ObjectItem، Object);
پایان رویه
&OnClient
رویه نوشتن ()
WriteOnServer();
پایان رویه
&روی سرور
رویه WriteOnServer()
ObjectProduct = FormDataValue(Object, Type("DirectoryObject.Products"));
ObjectItem.Write();
پایان رویه

شی ClientApplicationForm همچنین دارای روش های موجود در سرور است:

  • ValueInFormAttributes() - یک شی از نوع برنامه را به یک ویژگی فرم داده شده تبدیل می کند.
  • PropsFormValue() - ویژگی داده فرم را به یک شی از نوع برنامه تبدیل می کند.

استفاده از این روش‌ها معمولا راحت‌تر است، زیرا برای مثال، اطلاعاتی در مورد نوع ویژگی فرم دارند. علاوه بر این، متد Form AttributesValue() مطابقت بین داده های فرم و شی را تنظیم می کند که هنگام تولید پیام استفاده می شود.

همچنین باید به یاد داشته باشید که هنگام تبدیل به داده های فرم (هم با استفاده از روش ValueInFormData() و هم از روش ValueInFormAttributes()) اشیاء از نوع ValueTable یا ValueTree، باید ویژگی زیر را در نظر بگیرید: تمام ستون هایی که در داده ها باید در اشکال تبدیل شی وجود داشته باشد.

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

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

به عنوان اولین پارامتر روش ها PropsFormValue() و FormDataValue() فقط جزئیات فرم از انواع زیر می تواند ظاهر شود:

  • DataFormStructure,
  • DataFormsCollection،
  • DataFormStructureWithCollection،
  • DataFormTree.

بیایید مثالی از استفاده از این روش ها بزنیم.

&روی سرور
رویه RecalculateOnServer()
// ویژگی Object را به یک شی برنامه تبدیل می کند. Document = Form AttributesValue("Object");
// محاسبه مجدد را با استفاده از روش تعریف شده در ماژول سند انجام می دهد. Document.Recalculate();
// شی برنامه را به یک prop تبدیل می کند. ValueВFormAttributes (سند، "شیء");
پایان رویه

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

نسخه فعلی: برای فرم های معمولی 1.09، برای فرم های مدیریت شده 1.12.

پردازش دانلود (برای 1C 8.2، 1C 8.3 (فرم های معمولی)، فایل epf، 47 کیلوبایت)

پردازش دانلود (برای 1C 8.2، 1C 8.3 (فرم های مدیریت شده)، فایل epf، 22 کیلوبایت)

آخرین نسخه برای 1C 8.1: 1.05

پردازش دانلود (برای 1C 8.1، فایل epf، 48 کیلوبایت)

اگر پردازش باز نشد چه باید کرد

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

    نیاز به درک یک پایگاه داده ناآشنا

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

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

    شما باید به اطلاعات مربوطه بروید (مثلاً اظهارنامه گمرکی مشخص شده در فاکتور را باز کنید)، اما آنها فراموش کردند که این قسمت را در دسترس قرار دهند (یعنی نه دکمه با نقطه یا ذره بین و نه F4) (و همچنین اتفاق می افتد که به جای یک فیلد ورودی، آنها یک فیلد انتخاب، یک کتیبه یا یک فیلد ایجاد می کنند که اصلاً در فرم وجود ندارد 🙁)

    شما باید دو شی از یک نوع را با هم مقایسه کنید

ویژگی های متمایز هستند

    امکان اتصال به پیکربندی های استاندارد به عنوان یک فرم چاپی (یعنی در حالت صرفاً کاربر، بدون نیاز به پیکربندی)

    توانایی ضبط یک شی در حالت "تبادل داده - دانلود" - یعنی. "همانطور که هست"

نصب (رابط معمولی)

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

نصب (رابط "مدیریت شده")

توجه: این گزینه نصب فقط در تنظیمات استاندارد 1C کار می کند.

1. به بخش "اداره" و در آنجا - "گزارش‌های اضافی و پردازش" بروید.

2. روی دکمه «افزودن» کلیک کنید و فایل dannye-objecta-upr.epf را انتخاب کنید.

3. در پنجره تنظیمات پردازش، بررسی کنید:

    انتشار: استفاده شده

    چک باکس های زیر علامت زده می شوند: استفاده برای فرم لیست، استفاده از اشیاء برای فرم

4. نصب را با کلیک بر روی OK تأیید کنید

استفاده از پردازش

از یک فرم سند، یک عنصر دایرکتوری. یا فرم لیست

    رابط معمولی - روی دکمه "چاپ..." کلیک کنید

    رابط "مدیریت" - روی دکمه پر کلیک کنید

"داده های شی" را در منو انتخاب کنید - فرم پردازش باز می شود

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

چگونه می توان از یک مقدار مرجع بر روی مشتری، props دریافت کرد

در فرم پردازش، روی مقدار ویژگی کلیک کنید.

برای تغییر جزئیات، کادر کنار مقدار را علامت بزنید. پس از این، مقدار را می توان تغییر داد.

برای ذخیره تغییرات، روی دکمه گزینه مورد نیاز کلیک کنید تا رکورد در حالت «تبادل اطلاعات - دانلود»، رکورد عادی ذخیره شود. انجام (فقط برای اسناد).

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

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

مقایسه اشیاء را می توان انجام داد:

انتخاب 2 شی برای پردازش

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

3. (فقط رابط مدیریت شده). 2 شی را در لیست به طور همزمان انتخاب کنید (برای انجام این کار، دکمه Ctrl را نگه دارید) و پردازش تماس - اشیاء با هم مقایسه می شوند.

اسکرین شات (رابط عادی)

تصاویر صفحه (رابط "مدیریت شده")

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

تغییرات نسخه 1.12 (2017/10/17)

  • برای نسخه با فرم های مدیریت شده، یک اشکال برطرف شد (اگر خود شی دارای ویژگی هدر با همین نام باشد، ویژگی در بخش جدول به روز نمی شود)

تغییرات نسخه 1.10 (1396/01/06)

  • برای گزینه با فرم های مدیریت شده، کار در برخی از تنظیمات استاندارد (حسابداری، UNF) ثابت شده است.

تغییرات نسخه 1.09 (2015/07/07)

  • اضافه شدن نمایش فیلدهای "والد"، "مالک"
  • برای نسخه رابط مدیریت شده، کار بدون ویندوز مودال ارائه شده است.

تغییرات نسخه 1.08 (2014/04/03)

    برای نسخه برای رابط معمولی، سازگاری هنگام کار در پیکربندی "مدیریت شرکت تولیدی" (PEM) 1.3 بهبود یافته است.

تغییرات نسخه 1.07 (04/03/2013)

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

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

تغییرات نسخه 1.06 (2012/05/13)

    نمایش فیلد Object Version

    رفع یک اشکال (مجوزهای فقط خواندنی در پردازش تنظیم نشد)

تغییرات در نسخه 1.05 (05/04/2011)

    رفع یک اشکال (هنگام کار با نسخه 8.2، ضبط سند در حالت ارسال در دسترس نبود)

تغییرات نسخه 1.04 (2011/04/13)

    رفع یک اشکال (هنگام کار در زیر 8.2، دوبار کلیک کردن روی ماوس جزئیات را باز نمی کند)

    اکنون پردازش می تواند به نمایش جزئیات نوع مرجع ادامه دهد.

    یعنی: فرض کنید نمای جزئیات سند "فروش کالا و خدمات" را باز کرده اید. این سند حاوی ویژگی "Counterparty" از نوع "DirectoryLink.Counterparties" است. با کلیک راست بر روی این ویژگی، یک منوی زمینه دریافت خواهید کرد که در آن آیتم های «داده های ویژگی» و «داده های ویژگی در یک پنجره جدید» وجود دارد. با انتخاب یکی از آنها می توانید مشخصات طرف مقابل مربوطه را مشاهده کنید.

تغییرات در نسخه 1.03 (10/15/2010)

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

تغییرات نسخه 1.02 (2010/08/21)

    پیکربندی‌هایی پشتیبانی می‌شوند که در آنها فهرست راهنمای پردازش خارجی «فرم‌های چاپی اضافی» نامیده می‌شود.

تغییرات نسخه 1.01 (2010/01/28)

    رفع خطای زمانی که Object1 خالی بود و Object2 انتخاب شد (با تشکر از rasswet که آن را نشان داد).

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

    ستون "نوع مقدار" به "نوع مقدار احتمالی" تغییر نام داده است و نوع مقدار تعریف شده برای این ویژگی را در پیکربندی نشان می دهد. برای ویژگی هایی که دارای نوع ترکیبی هستند، علاوه بر این، نوع مقدار این ویژگی در شی مشاهده شده نشان داده می شود.

اگر پردازش را به پیکربندی خود متصل کرده اید، آن را به روز کنید:

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

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


زمان در حال تغییر است، پلت فرم 1C در حال بهینه سازی و بهبود است، کلاینت ضخیم فراموش شده است، به همه یک مشتری نازک یا وب بدهید. توسعه دهندگان شروع به انتقال فرم های مرسوم به فرم های مدیریت شده کرده اند، اما همه چیز به این سادگی نیست؛ برخی از مشکلات به دلیل تقسیم اجرای کد برنامه به دو زمینه ایجاد می شود: سرور و مشتری. بنابراین، مثال کد بالا روی تین کلاینت کار نخواهد کرد.

انواع داده های جدید

همچنین به دلیل فرم های مدیریت شده، انواع داده های جدیدی ظاهر شده اند. یک فرم وجود دارد:
ما انواع جزئیات را به خاطر می آوریم و به انواعی که در اشکال زدایی این جزئیات وجود دارد نگاه می کنیم:

انواع داده های فرم جدید
نتیجه می گیریم که از نوع برای نمایش داده های خود شی استفاده می شود DataFormsStructure، برای نمایش درخت مقادیر - DataShapesTreeبرای بخش جدولی - DataFormsCollectionو غیره. یعنی در ماژول فرم روی کلاینت نه با خود شی، بلکه با نمایش آن کار می کنیم! بنابراین، روش هایی که برای مثال برای قسمت جدولی در ماژول شی در دسترس هستند در دسترس نیستدر ماژول فرم

مبارزه با انواع جدید

توسعه دهندگان پلت فرم 1C دو عملکرد را ارائه کردند:
  1. PropsFormValue- ویژگی فرم مشخص شده را به یک شی از نوع برنامه تبدیل می کند.
  2. DataFormValue- داده های فرم را به یک شی از نوع برنامه تبدیل می کند.
فراخوانی این توابع فقط در سرور در دسترس است. بیایید به وظیفه خود برگردیم و کدی را برای تین کلاینت در ماژول فرم در رویداد بنویسیم وقتی CreatedOnServerکه تابعی را از ماژول شی فراخوانی می کند:
&روی سرور


SprObject1 = Form AttributesValue("Object");
SprObject1.OutputMessage(Object.Attributes1);




پایان رویه

هم با کمک یک تابع و هم با کمک O_o دیگر کار می کند. بیایید کد تبدیل را بنویسیم DataShapesTreeدر یک شی از نوع برنامه:
&روی سرور
رویه زمانی که روی سرور ایجاد شد (شکست، پردازش استاندارد)

Value Tree1 = Form AttributesValue("Attribute1");
ValueTree2 = FormDataInValue(ThisForm.Attribute1, Type("ValueTree"));

پایان رویه

ValueTree1 و ValueTree2 دارای یک نوع هستند - ValueTree. پس فرق این توابع چیه؟؟؟

DataFormValue - تابع جهانی استمتن نوشته. نوع شی پشتیبانی شده توسط فرم را به نوع شی پایگاه داده تبدیل می کند: DataFormsStructure --> DirectoryObject.Directory1.

PropsFormValue - یک تابع ماژول فرم، یعنی بر روی سرور در زمینه فرم (&OnServer) فراخوانی شده است. اگر بخواهید این تابع را خارج از متن فرم فراخوانی کنید، پلتفرم یک خطای استثنا ایجاد می کند:
&OnServerWithout Context
Procedure TypeConversion()

// این کد نادرست است، زمینه فرم در دسترس نیست، خطایی رخ خواهد داد!
SprObject2 = FormDataValue(Object, Type("DirectoryObject.Directory1"));
SprObject2.OutputMessage(Object.Attributes1);

پایان رویه

تمام تفاوت ها همین است.

در زیر، اشیاء اصلی 1C که هنگام کار با فرم‌های مدیریت شده استفاده می‌شوند، فهرست شده‌اند. نمونه‌های کد مختصری ارائه شده است که استفاده سنتی از این اشیاء را هنگام نوشتن پیکربندی‌های 1C نشان می‌دهد.

این فرم

در ماژول فرم، در رویه ها استفاده می شود&روی کلاینت و &روی سرور.

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

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

ThisForm.Elements.VersionNumber.Header = "v."+ProgramVersion;

دسترسی به ویژگی هایی که در فرم وجود دارد به صورت زیر انجام می شود:

ThisForm.AdText="سلام رفقا!";

دسترسی ساده به عناصر و جزئیات فرم

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

// عنصر فرم

Elements.VersionNumber.Title = "v."+ProgramVersion;

// جزئیات فرم

Advertisement Text="سلام رفقا!";

ویژگی های بدست آوردن جزئیات فرم (مهم!)

اگر ویژگی فرم دارای یک نوع ساده باشد -رشته، شماره، تاریخ ... سپس می توانید مقدار ویژگی را به سادگی با نام دریافت کنید (تنظیم کنید):

Text=ProductName; // نام محصول یک ویژگی فرم است

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

برای به دست آوردن مقدار یک ویژگی با نوع "پیچیده"، باید از تابع استفاده کنیدFormAttributesValue():

CurrentTable=FormAttributesValue("SelectedConstructionObjects");

برای تنظیم مقدار یک ویژگی "complex"، می توانید از تابع استفاده کنیدValueInFormAttributes(<Значение>, <ИмяРеквизита>) ، هر دو پارامتر مورد نیاز است.

کارکرد FormAttributesValue()و ValueInFormAttributes()فقط روی سرور موجود است

یک شی

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

یا نماد کامل تر:

این شی

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

استفاده: فقط خواندنی

در دسترس بودن: سرور، کلاینت ضخیم، اتصال خارجی.

جزئیات فرم

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

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

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

پسوند فرم- اینها ویژگی ها، روش ها و پارامترهای فرم اضافی شی ManagedForm هستند، مشخصه شی که عنصر اصلی فرم است.

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

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

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

یک فرم مدیریت شده همچنین از نظر نوع داده ای که با آن کار می کند با یک فرم معمولی متفاوت است. اگر فرم معمولی با اکثر انواعی که 1C:Enterprise ارائه می دهد (از جمله انواع DirectoryObject، DocumentObject و غیره) کار می کند، سپس در فرم مدیریت شده می توان دسته بندی های زیر را از انواع مختلف تشخیص داد:

  • انواعی که مستقیماً در فرم استفاده می‌شوند، انواعی هستند که در کنار مشتری نازک و وب وجود دارند (به عنوان مثال، Number، DirectoryLink.Products، GraphicScheme، TabularDocument).
  • انواعی که به انواع داده های ویژه تبدیل می شوند - انواع داده های فرم مدیریت شده. چنین انواعی در لیست جزئیات فرم در داخل پرانتز نمایش داده می شوند، به عنوان مثال (DirectoryObject.Products).
  • لیست پویا (برای جزئیات بیشتر به بخش «فهرست پویا» این فصل مراجعه کنید).

تبدیل اشیاء برنامه به داده های فرم

برخی از انواع برنامه ها (مانند DirectoryObject و غیره) در سمت نازک و سرویس گیرنده وب وجود ندارند (برای جزئیات بیشتر به فصل مفهوم برنامه مدیریت شده مراجعه کنید). بنابراین، این پلتفرم برای نشان دادن این گونه برنامه ها در فرم، انواع داده های ویژه ای را معرفی کرده است که برای کار در فرم های مدیریت شده طراحی شده اند. این ویژگی یک برنامه مدیریت شده، تبدیل اشیاء برنامه به شکل داده را ضروری می کند (و بالعکس).

انواع داده های زیر استفاده می شود:

  • Form DataStructure – شامل مجموعه ای از خواص از نوع دلخواه است. ویژگی ها می توانند سایر ساختارها، مجموعه ها یا ساختارهایی با مجموعه باشند. این نوع به عنوان مثال به شکل DirectoryObject نشان داده می شود.
  • FormDataCollection فهرستی از مقادیر تایپ شده، شبیه به یک آرایه است. یک عنصر مجموعه با نمایه یا شناسه قابل دسترسی است. دسترسی با شناسه ممکن است در برخی موارد در دسترس نباشد. این به دلیل نوع شیء کاربردی است که توسط این مجموعه نشان داده شده است. شناسه می تواند هر عدد صحیحی باشد. این نوع به عنوان مثال در قالب یک قسمت جدولی نشان داده می شود.
  • Form DataStructureWithCollection یک شی است که به صورت یک ساختار و یک مجموعه نمایش داده می شود. می توان با آن مانند هر یک از این نهادها رفتار کرد. این نوع به عنوان مثال مجموعه ای از رکوردها را در یک فرم نشان می دهد.
  • Form DataTree – یک شی طراحی شده برای ذخیره داده های سلسله مراتبی.

یک شی برنامه توسط یک یا چند عنصر داده فرم نمایش داده می شود. به طور کلی، سلسله مراتب و ترکیب داده های فرم به پیچیدگی و اتصال اشیاء کاربردی فرم مدیریت شده بستگی دارد.

به عنوان مثال، یک سند حاوی یک بخش جدولی با یک شی از نوع FormDataStructure (خود سند) نشان داده می شود که یک شی از نوع FormDataCollection (بخش جدولی سند) تابع آن است.

مهم!هنگام توسعه یک پیکربندی، مهم است که به یاد داشته باشید که اشیاء برنامه فقط در سرور در دسترس هستند، در حالی که اشیاء داده فرم را می توان هم در سرور و هم در سرویس گیرنده استفاده کرد.

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

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

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

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

توجه داشته باشید. باید به خاطر داشت که ویژگی تنظیم شده روی صفت والد بر تمام ویژگی های فرعی تأثیر می گذارد. به عنوان مثال، اگر ویژگی Use همیشه برای قسمت جدولی سند پاک شود، سیستم در نظر می‌گیرد که این ویژگی برای تمام جزئیات فرعی نیز پاک می‌شود (علی‌رغم وضعیت واقعی ویژگی).

روش‌هایی برای تبدیل داده‌های شی برنامه به داده‌های فرم

برای تبدیل اشیاء برنامه به داده های فرم و برگشت، مجموعه ای از روش های جهانی وجود دارد:

  • ValueInFormData()،
  • FormDataInValue()،
  • CopyFormData().

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

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

  • ValueInFormData() - یک شی از نوع برنامه را به داده فرم تبدیل می کند.
  • FormDataInValue() – داده های فرم را به یک شی از نوع برنامه تبدیل می کند.
  • CopyFormData() - داده های فرمی را کپی می کند که ساختاری سازگار دارند. در صورت موفقیت آمیز بودن کپی، True یا اگر ساختار شی ناسازگار باشد، False را برمی‌گرداند.

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

بیایید مثالی از نحوه استفاده از تبدیل داده در الگوریتم های خود ارائه دهیم.

&OnServerProcedure هنگام CreateOnServer (شکست، پردازش استاندارد)

ObjectProduct = Directories.Products.FindByName("Coffeepot").GetObject(); ValueInFormData(ObjectItem، Object);

پایان رویه

&OnClient رویه نوشتن()

WriteOnServer();

پایان رویه

رویه &روی سرور WriteOnServer()

ObjectProduct = FormDataValue(Object, Type("DirectoryObject.Products")); ObjectItem.Write();

پایان رویه

شی ManagedForm همچنین دارای روش های موجود در سرور است:

  • ValueВFormAttribute() – یک شی از نوع برنامه را به ویژگی فرم مشخص شده تبدیل می کند.
  • FormAttributeVValue() – یک ویژگی داده فرم را به یک شی از نوع برنامه تبدیل می کند.

استفاده از این روش‌ها معمولا راحت‌تر است، زیرا برای مثال اطلاعاتی در مورد نوع جزئیات فرم دارند. علاوه بر این، متد Form AttributesValue() مطابقت بین داده های فرم و شی را تنظیم می کند که هنگام تولید پیام استفاده می شود. می‌توانید در بخش «قابلیت‌های ناوبری سرویس» در مورد این موضوع بیشتر بخوانید.

بیایید مثالی از استفاده از این روش ها بزنیم.

رویه &روی سرور RecalculateOnServer()

// ویژگی Object را به یک شی برنامه تبدیل می کند. Document = Form AttributesValue("Object"); // محاسبه مجدد را با استفاده از روش تعریف شده در ماژول سند انجام می دهد. Document.Recalculate(); // شی برنامه را به یک prop تبدیل می کند. ValueВFormAttributes (سند، "شیء");

پایان رویه

رابط نرم افزاری

FormDataTree

  • FindById
  • GetItems

شرح:

طراحی شده برای مدل سازی یک درخت در داده های فرم مدیریت شده.

این شی را می توان به/از XDTO سریال کرد. نوع XDTO مربوط به این شی در فضای نام تعریف شده است. نام نوع XDTO:

GetItems

نحو:

GetItems()

ارزش برگشتی:

نوع: Form DataCollection of Tree Elements.

شرح:

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

در دسترس بودن: کلاینت، سرور، تین کلاینت، سرویس گیرنده وب.

FindById

نحو:

FindById(<Идентификатор>)

گزینه ها:

<Идентификатор>(ضروری)

نوع: شماره شناسه عنصر درخت.

ارزش برگشتی:

نوع: FormDataTreeElement.

شرح:

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

در دسترس بودن: کلاینت، سرور، تین کلاینت، سرویس گیرنده وب.

FormDataTreeItem

خواص:

<Имя свойства> (<Имя свойства>)

  • GetId (GetId)
  • GetParent
  • GetItems
  • ویژگی

شرح:

عنصر درخت داده فرم.

FormDataTreeItemCollection

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

برای یک شی، می توان مجموعه را با استفاده از عملگر For every... From... Loop پیمایش کرد. پیمایش عناصر مجموعه را انتخاب می کند. دسترسی به عنصر مجموعه با استفاده از عملگر [...] امکان پذیر است. شاخص عنصر به عنوان آرگومان ارسال می شود.

  • درج کنید
  • اضافه کردن
  • فهرست (IndexOf)
  • شمردن
  • پاک کردن
  • گرفتن
  • حرکت
  • حذف

شرح:

مجموعه ای از عناصر چوبی.

در دسترس بودن: کلاینت، سرور، تین کلاینت، سرویس گیرنده وب.

همچنین ببینید:

  • FormDataTreeElement، روش GetElements
  • DataFormTree، متد GetItems

ویژگی های کار با درخت ارزش

به روز رسانی درخت

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

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

راه حل: قبل از به روز رسانی باید درخت را پاک کنید.

مثلا:

&روی رویه سرور ClearTree(Elements) برای هر عنصر از عناصر Loop ClearTree(element.GetElements()); چرخه پایان عناصر.Clear(); پایان رویه

&روی رویه سرور Fill Concept Tree() dConcepts = srProperties.Build Concept Tree(OnDate, Meta.CurrentIB()); ClearTree(ConceptTree.GetItems()); ValueInFormData(dConcepts، ConceptTree); پایان رویه

رویه &OnClient OnDateOnChange(Element) Fill ConceptTree(); پایان رویه

بهترین مقالات در این زمینه