ویژگی اصلی فرم. ویژگی فرم اصلی چگونه یک ویژگی جدید در 1s اضافه کنیم

و شیء انتقال داده به ساختار کد، فرم مدیریت شدهدر محیط 1C 8.2.

معرفی

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

در سال 2008 در دسترس قرار گرفت یک نسخه جدیدپلتفرم 1C: Enterprise 8.2 (از این پس به عنوان برنامه مدیریت شده نامیده می شود)، که به طور کامل کل لایه کار با رابط را تغییر می دهد. این شامل رابط فرمان، فرم‌ها و سیستم پنجره است. این نه تنها مدل توسعه را تغییر می دهد رابط کاربریدر پیکربندی، اما همچنین یک معماری جدید برای جداسازی عملکرد بین برنامه مشتری و سرور ارائه می دهد.
یک برنامه مدیریت شده از انواع مشتریان زیر پشتیبانی می کند:

  • Thick Client (حالت راه اندازی عادی و مدیریت شده)
  • تین کلاینت
  • مشتری وب
یک برنامه مدیریت شده از فرم های ساخته شده استفاده می کند تکنولوژی جدید. آنها نامیده می شوند فرم های مدیریت شده. برای تسهیل انتقال، سابق شکل می گیرد (به اصطلاح. اشکال منظم) نیز پشتیبانی می شوند، اما عملکرد آنها در حال توسعه نیست و آنها فقط در حالت راه اندازی کلاینت چربی در دسترس هستند.
تفاوت های اصلی فرم های مدیریت شده برای توسعه دهنده:
  • توضیحی، نه "توسط پیکسل" از ساختار. هنگام نمایش فرم، قرار دادن خاص عناصر به طور خودکار توسط سیستم انجام می شود.
  • تمام عملکردهای فرم در فرم توضیح داده شده است جزئیاتو دستورات. جزئیات داده هایی هستند که فرم با آنها کار می کند و دستورات اقدامات انجام شده هستند.
  • فرم هم روی سرور و هم روی کلاینت اجرا می شود.
  • در زمینه مشتری، تقریباً همه انواع برنامه ها در دسترس نیستند و بر این اساس تغییر داده ها در پایگاه اطلاعات غیرممکن است.
  • برای هر متد یا متغیر فرم باید مشخص شود دستورالعمل تدوین A که محل اجرا (کلاینت یا سرور) و دسترسی به زمینه فرم را مشخص می کند.
در اینجا دستورالعمل هایی برای کامپایل روش های فرم آمده است:
  • &AtClient
  • &روی سرور
  • &OnServerWithoutContext
  • &در مشتری در سرور بدون متن
بیایید موارد فوق را نشان دهیم. اسکرین شات نمونه ای از فرم مدیریت شده و ماژول آن را در حالت توسعه نشان می دهد. توضیحات اعلامی، لوازم جانبی، دستورالعمل های تدوین و غیره را بیابید.

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

بیایید مشکل را تعریف کنیم

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

ساختار کد (ماژول فرم) را به چندین شکل از همان پیکربندی معمولی در نظر بگیرید و سعی کنید الگوها را پیدا کنید.
در زیر ساختار، منظور ما بخش‌هایی از کد است (اغلب اینها بلوک‌های کامنت هستند) که توسط توسعه‌دهنده برای گروه‌بندی روش‌ها و دستورالعمل‌ها برای کامپایل این روش‌ها اختصاص داده شده‌اند.
مثال 1:
روش بخش کنترل کننده رویداد - روی روش کلاینت - روش روی سرور - روی مشتری بخش رویه ها و توابع سرویس عملکردهای کمکی کنترل ورودی
مثال 2:
رویه‌ها و عملکردهای خدمات اسناد پرداخت ارزش‌ها گردانندگان رویداد
مثال 3:
رویه‌های سرویس روی سرور رویه‌های سرویس روی سرویس گیرنده رویه‌های سرویس در سرور بدون زمینه کنترل‌کننده‌های رویداد سرصفحه کنترل‌کننده‌های رویداد فرمان
مثال 4:
رویه‌های همه‌منظوره گردانندگان رویداد فرم رویه‌های زیرسیستم «اطلاعات تماس»
در واقع، ساختار کد از دست رفته است، یا به زبان ساده، شبیه به آنچه در فرم های 8.1 بود:

  • کلمات غیر آموزنده "عمومی، خدماتی، کمکی."
  • ترسو تلاش می کند تا روش های کلاینت و سرور را از هم جدا کند.
  • اغلب روش ها توسط عناصر رابط گروه بندی می شوند "کار با قسمت جدولیمحصولات, اطلاعات تماس”.
  • ترتیب خودسرانه روش ها و گروه های کد. به عنوان مثال، Event Handlers ممکن است در یک شکل در بالا، در شکل دیگر در پایین، به هیچ وجه در شکل سوم برجسته نشده باشند و غیره.
  • و فراموش نکنیم که همه اینها در یک پیکربندی است.
  • بله، تنظیماتی وجود دارد که در آنها کلمات "عمومی، خدمات، کمکی" همیشه در یک مکان قرار دارند، اما ...
چرا به ساختار کد نیاز دارید؟
  • ساده سازی تعمیر و نگهداری
  • یادگیری را ساده کنید.
  • اصلاح اصول کلی/مهم/موفق.
  • ... گزینه شما
چرا استاندارد توسعه موجود از 1C کمکی نمی کند؟
بیایید به اصول منتشر شده بر روی دیسک های ITS و در "راهنماهای توسعه دهنده ..." مختلف که هنگام نوشتن یک فرم مدیریت شده توصیه می شود نگاه کنیم.
  • تعداد تماس های سرور را به حداقل برسانید.
  • حداکثر محاسبات روی سرور
  • تماس‌های سرور غیر متنی سریع‌تر از تماس‌های متنی هستند.
  • برنامه ای با در نظر گرفتن تعامل مشتری و سرور.
  • و غیره
اینها شعارهایی است که کاملا درست است، اما چگونه می توان آنها را محقق کرد؟ چگونه تعداد تماس ها را به حداقل برسانیم، برنامه نویسی در حالت سرویس گیرنده-سرور به چه معناست؟

الگوهای طراحی یا خرد نسلی

تعامل مشتری و سرور برای چندین دهه در فناوری های مختلف نرم افزاری مورد استفاده قرار گرفته است. پاسخ به سوالات مطرح شده در بخش قبل از دیرباز شناخته شده است و در دو اصل اساسی خلاصه شده است.
  • نما از راه دور(از این پس رابط دسترسی از راه دور)
  • شی انتقال داده(از این پس هدف انتقال داده نامیده می شود)
سخنی به مارتین فاولر، شرح او از این اصول:
  • هر شی به طور بالقوه برای دسترسی از راه دور باید داشته باشد رابط با دانه بندی کم، که تعداد تماس های مورد نیاز برای انجام یک روش خاص را به حداقل می رساند. به جای درخواست فاکتور و تمامی امتیازات آن به صورت جداگانه، لازم است تمامی نکات فاکتور را در یک تماس خوانده و به روز کنید. این روی کل ساختار شی تأثیر می گذارد ... به یاد داشته باشید: رابط دسترسی از راه دور شامل منطق دامنه نیست.
  • ... اگر مادری دلسوز بودم، حتما به فرزندم می گفتم: هرگز اشیاء انتقال داده را ننویس! در بیشتر موارد، اشیاء انتقال داده چیزی بیش از این نیستند مجموعه مزارع متورم... ارزش این هیولای نفرت انگیز تنها در امکان نهفته است چندین مورد از اطلاعات را در یک تماس از طریق شبکه منتقل می کند- تکنیکی که برای سیستم های توزیع شده اهمیت زیادی دارد.
نمونه هایی از قالب ها در پلتفرم 1C
API در دسترس یک توسعه دهنده هنگام توسعه یک فرم مدیریت شده شامل نمونه های زیادی از این اصول است.
به عنوان مثال، روش OpenForm()، یک رابط معمولی "درشت".
OpenParameters = ساختار جدید ("Parameter1, Parameter2, Parameter3", Value1, Value2, Value3); Form = OpenForm (FormName, OpenParameters);
مقایسه با سبک v8.1.
Form = GetForm(FormName); Form.Parameter1 = Value1; Form.Parameter2 = Value2; Form.Open();

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

  • DataFormsStructure
  • DataFormsCollection
  • DataFormStructureCollection
  • DataFormsTree
تبدیل اشیاء سیستم انتقال داده به انواع برنامه ها و بالعکس با روش های زیر انجام می شود:
  • ValueVDataForm()
  • FormDataToValue()
  • CopyFormData()
  • ValueVFormProps()
  • FormAttributeToValue()
اغلب هنگام تطبیق از تبدیل صریح استفاده می شود راه حل موجود. متدها ممکن است انتظار پارامترهای ورودی (ویژگی) مانند ValueTable به جای FormDataCollection را داشته باشند، یا متد در زمینه یک شی برنامه تعریف شده است و برای فراخوانی مستقیم از فرم در دسترس نیست.
مثال 1C v8.1:
// در کلاینت در زمینه فرم FillUsersCache(DepartmentReference)
مثال 1C v8.2:
// در سرور در زمینه فرم ProcessingObject = FormAttributeToValue("Object"); ProcessingObject.FillCacheUsers(DepartmentReference); ValueVFormAttribute(ProcessingObject، "Object");

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

  • انواع اولیه (رشته، عدد، بولی)
  • ساختار
  • مکاتبه
  • آرایه
  • پیوندها به اشیاء برنامه (شناسه منحصر به فرد و نمایش متن)
مثال: متد لیستی از دستورات را برای تغییر وضعیت می پذیرد و شرح خطاها را به مشتری برمی گرداند.
&OnServerWithoutContext تابع ServerChangeOrderStatus(Orders, NewStatus) Errors = New Match(); // [order][شرح خطا] برای هر سفارش از Orders Loop StartTransaction(); تلاش DocOb = Order.GetObject(); …. سایر اقدامات، احتمالاً نه تنها با دستور... Exception CancelTransaction(); Errors.Insert(Order, DescriptionError()); پایان تلاش؛ چرخه پایان خطای بازگشت؛ EndFunction // ServerChangeOrderStatus()

ساختار کد

اهداف اصلی که ماژول فرم مدیریت شده باید منعکس کند و به راه حل نزدیک شود.
  • جداسازی کد کلاینت و سرور را پاک کنید.فراموش نکنیم که در زمان اجرا این دو فرآیند متقابل هستند که در هر یک از آنها عملکردهای موجود به طور قابل توجهی متفاوت است.
  • یک انتخاب واضح از رابط دسترسی از راه دور، کدام روش های سرور را می توان از مشتری فراخوانی کرد و کدام را نمی توان؟ نام روش های رابط راه دور با پیشوند "سرور" شروع می شود. این به شما امکان می دهد بلافاصله انتقال کنترل به سرور را هنگام خواندن کد مشاهده کنید و استفاده از نکات متنی را ساده می کند. توجه داشته باشید که توصیه رسمی (ITS) نامگذاری روش‌هایی را با پسوندها، مانند ChangeOrderStatusOnServer () پیشنهاد می‌کند. با این حال، برای تکرار، همه روش های سرور را نمی توان از مشتری فراخوانی کرد، بنابراین دسترسی منطقی مهم تر از مکان کامپایل است. بنابراین، با پیشوند "Server"، ما فقط متدهای در دسترس مشتری را علامت گذاری می کنیم، متد مثالی (ServerChangeOrderStatus) نامیده می شود.
  • خوانایییک موضوع سلیقه ای، زمانی که ماژول با مراحل ایجاد فرم در سرور و روش های دسترسی از راه دور شروع می شود، سفارش را می پذیریم.
  • قابلیت نگهداری.محل افزودن کد جدید باید به وضوح مشخص باشد. نکته مهمکه به طور خودکار توسط متد stub configurator ایجاد می شوند، به انتهای ماژول اضافه می شوند. از آنجایی که کنترل‌کننده‌های رویداد عنصر فرم اغلب به‌طور خودکار ایجاد می‌شوند، بلوک مربوطه در آخر قرار می‌گیرد تا هر کنترل‌کننده به مکان دیگری در ماژول کشیده نشود.
در زیر ساختار اصلی ماژول است که اهداف ذکر شده را پیاده سازی می کند.
  • گزینه گرافیکی - به وضوح جریان اصلی اجرا را نشان می دهد.
  • گزینه متن نمونه ای از طراحی قالب برای درج سریع ساختار در یک ماژول فرم جدید است.

//////////////////////////////////////////////////////////////////////////////// // <(c) Автор="" تاریخ = ""/> // <Описание> // // ///////////////////////////////////////////////////////////////////////// ///////////////////////////// // متغیرهای ماژول //////////////// ///////////////////////////////////////////////////////////////////////// // ///////////// // روی سرور //******* رویدادهای روی سرور ******* &در سرور رویه در ایجاد ایجاد در سرور( شکست، پردازش استاندارد) //درج محتویات کنترل کننده EndProcedure //******* رابط دسترسی از راه دور ******* //******** منطق کسب و کار روی سرور **** *** /////////////////////////////////////////////////////// ///////////////////////////////// // روش‌های رایج مشتری و سرور ///////// ////////////////////////////////////////////////////////////// //////////////// //////// // بر مشتری //******* منطق کسب و کار بر مشتری ******* //******** دستورات ******* //******** رویدادهای روی مشتری ****** ////////////// ////////////////////////////////////////////////////////// ///////////////// / / اپراتورهای برنامه اصلی

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

کار کاربر با دایرکتوری ها و اسناد در 1C شامل پر کردن فیلدهای روی فرم است.

جزئیات 1C فیلدهای دایرکتوری و سندی است که در فرم نمایش داده می شود تا کاربر آنها را پر کند.

اجازه دهید موضوع جزئیات را در 1C با جزئیات در نظر بگیریم.

Requisites 1C چیست؟

هر دایرکتوری و سند 1C از مجموعه ای از فیلدها تشکیل شده است. چنین فیلدهایی جزئیات 1C نامیده می شوند (برای یک برنامه نویس 1C).

در پیکربندی، در درخت پیکربندی 1C، هر دایرکتوری یا سندی را باز کنید و شاخه Requisites را خواهید دید. این لیستی از جزئیات (فیلدهای) دایرکتوری است.

نگاهی به نحوه نمایش همان جزئیات 1C در فرم دایرکتوری 1C بیندازید.

هر ویژگی 1C دارای ویژگی هایی است که نشان می دهد چه نوع مقداری در ویژگی (رشته، عدد و غیره) ذخیره شده است و کاربر چگونه با آن کار خواهد کرد.

روی هر ویژگی 1C کلیک راست کرده و روی Properties کلیک کنید. لیستی از ویژگی های ویژگی انتخاب شده در پنجره سمت راست باز می شود.

ویژگی های اصلی مورد نیاز 1C:

جزئیات استاندارد 1C

همانطور که متوجه شدید، فرم مرجع دارای جزئیات 1C است که در پیکربندی لیست نشده است: گروه، نام، BIC.

در فرم فهرست دایرکتوری، جزئیات 1C نیز وجود دارد که در لیست نیستند: علامت حذف.

اینها الزامات استاندارد 1C هستند. آن چیست؟ هر کدام به طور پیش‌فرض دارای مجموعه‌ای از نیازهای 1C هستند. برای دایرکتوری ها، به عنوان مثال، یک کد و یک نام است. برای مدارک، این تاریخ و شماره است.

جزئیات استاندارد 1C را می توان به صورت زیر مشاهده کرد:

  • با دوبار کلیک کردن روی آن، به ویرایشگر شی 1C (کتاب یا سند مرجع) بروید
  • در ویرایشگر باز شده، تب Data را انتخاب کنید
  • در اینجا می توانید جزئیات استاندارد کد و نام دایرکتوری را تنظیم کنید
  • برای مشاهده لیست کامل، روی دکمه 1C Standard Details کلیک کنید.

جزئیات عمومی 1C

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

ویژگی های پایه های عمومی 1C:

  • استفاده خودکار - یک ویژگی مشترک 1C را به همه دایرکتوری ها و اسناد به طور همزمان اضافه می کند
  • ترکیب - به شما امکان می دهد ویژگی کلی 1C را فقط به فهرست ها و اسناد ضروری اضافه کنید (استفاده خودکار و سپس روی Do not use تنظیم کنید).

نحوه اضافه کردن props 1C

روی شاخه 1C Requisites دایرکتوری مورد نظر کلیک راست کرده و Add را انتخاب کنید.

ما باید نام ویژگی 1C را وارد کنیم، به عنوان مثال، "آدرس دفتر" و یک مترادف برای "آدرس دفتر". نوع پیش‌فرض String را رها می‌کنیم، اما تیک گزینه Unlimited length را بزنید.

بیایید یک ویژگی دیگر 1C را دقیقاً به همان روش اضافه کنیم، فقط نوع Boolean را انتخاب کنید، اجازه دهید آن را "WorksOn Weekends" بنامیم.

نحوه نمایش جزئیات در فرم 1C (کلاینت ضخیم 1C)

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

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

در پانل پیکربندی، روی دکمه "قرار دادن داده ها" کلیک کنید. همچنین می توانید از منوی Form / Data Placement استفاده کنید.

می بینید - جزئیات ما در فرم نمایش داده نمی شود. روی آنها علامت بزنید. و همچنین کادرهای انتخاب Insert labels and Place automatically.

نحوه نمایش جزئیات در فرم 1C (1C Thin Client)

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

در تب Requisites، خط Object را گسترش دهید. لیستی از جزئیات را خواهید دید که قبلاً به فهرست اضافه شده است.

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

جزئیات فرم 1C

در کلاینت ضخیم، فرم جزئیات خاص خود را دارد. آنها در تب Requisites قرار دارند.

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

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

جزئیات دوره ای 1C

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

هیچ جزئیات دوره ای در 1C 8 وجود ندارد. این به صورت زیر اجرا می شود:

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

سوال 10.05 امتحان 1C: پلتفرم حرفه ای. ویژگی فرم اصلی برای چیست؟

  1. منبع داده را برای فرم به عنوان یک کل مشخص می کند
  2. ویژگی های استاندارد پلت فرم را برای کار با داده هایی از نوع مشخص شده برای ویژگی اصلی تعریف می کند
  3. برای ارائه توانایی دسترسی برنامه‌نویسی به ویژگی‌های یک شی از بافت محلی فرم
  4. تجسم ویژگی های شی را در گفتگوی فرم ارائه می دهد
  5. 2 و 3 را درست کنید
  6. 1 و 2 را درست کنید

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


سوال 10.06 امتحان 1C: پلتفرم حرفه ای. جزئیات فرم برای چیست؟
  1. برای توصیف ترکیب داده هایی که در یک فرم نمایش داده، ویرایش یا ذخیره می شوند
  2. برای نمایش و ویرایش داده ها در یک فرم
  3. 1 و 2 را درست کنید

پاسخ صحیح سوم است - هر دو.

سوال 10.07 امتحان 1C: پلتفرم حرفه ای. برای اختصاص ویژگی اصلی به یک فرم مدیریت شده دلخواه...

  1. شما باید کادر "ویژگی اصلی" را در ویژگی های ویژگی فرم علامت بزنید
  2. شما باید ویژگی "داده" فرم را با انتخاب ویژگی فرم مورد نیاز پر کنید

پاسخ صحیح پاسخ دوم است:

سوال 10.08 امتحان 1C: پلتفرم حرفه ای. برای اختصاص ویژگی اصلی به یک فرم معمولی دلخواه...
  1. فرم باید اصلی شود، ویژگی اصلی به طور خودکار تعیین می شود
  2. شما باید کادر "ویژگی اصلی" را در ویژگی های ویژگی فرم علامت بزنید
  3. شما باید وارد منوی "Edit"، آیتم "Main Attributes" شده و مقدار مورد نظر را انتخاب کنید
  4. شما باید ویژگی "داده" فرم را با انتخاب ویژگی فرم مورد نیاز پر کنید

پاسخ صحیح پاسخ چهارم است:

عناصر اصلی با پررنگ برجسته شده اند:

سوال 10.09 امتحان 1C: پلتفرم حرفه ای. اگر یک ویژگی فرم اصلی دارید، آیا می توانید ویژگی فرم اصلی دیگری را اضافه کنید؟
  1. این غیر ممکن است
  2. با تخصیص مقدار مناسب به خاصیت ویژگی فرم امکان پذیر است
  3. فقط هنگام دسترسی به شی "Form" به صورت برنامه نویسی قابل انجام است
  4. با افزودن مقدار دیگری به ویژگی مربوطه فرم امکان پذیر است

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

سوال 10.113 امتحان 1C: سکوی حرفه ای. کدام یک از جزئیات فرم نشان داده شده در شکل اصلی است؟

  1. لیست نرخ ارز
  2. DirectoryObject
  3. فرم های دایرکتوری ویژگی اصلی ندارند
  4. فرم های دایرکتوری دارای تمام جزئیات اولیه هستند
پاسخ صحیح دوم است - پاسخی که پررنگ است.

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

مثلا راهنما نامگذاریممکن است چندین فرم داشته باشد که برای اهداف خاص مورد استفاده قرار می گیرد - ویرایش یک عنصر دایرکتوری، نمایش یک لیست و غیره:

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

فرم های پایه

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

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

و سند دریافت کالا و خدماتترکیب فرم های اصلی متفاوت خواهد بود:

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

فرم های تولید شده به صورت خودکار

یکی از ویژگی های مهم سیستم 1C: Enterprise 8 مکانیسم فرم های تولید خودکار است. این مکانیسم توسعه دهنده را از ایجاد تمام اشکال ممکن برای هر یک از اشیاء پیکربندی آزاد می کند. کافی است توسعه دهنده یک شی پیکربندی جدید اضافه کند و خود سیستم در لحظات مناسب کار کاربر فرم های لازم را برای نمایش اطلاعات موجود در این شی ایجاد می کند.

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

پیوند دادن فرم به داده ها

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

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

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

ساختار فرم

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

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

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

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

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

توسعه دهنده می تواند بر ترتیب عناصر با تنظیمات مختلف تأثیر بگذارد. می تواند ترتیب عناصر را تعیین کند، عرض و ارتفاع مورد نظر را نشان دهد. با این حال، این فقط برخی اطلاعات اضافی برای کمک به سیستم در نمایش فرم است.

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

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

این فرم

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

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

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

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

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

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

دسترسی ساده به عناصر و ویژگی های فرم

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

// عنصر فرم

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

// پایه های تشکیل دهنده

AnnouncementText="سلام رفقا!";

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

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

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

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

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

CurrentTable=FormAttributeToValue("SelectedConstructionObjects");

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

کارکرد FormAttributeToValue()و ValueVFormProps()فقط روی سرور موجود است

یک شی

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

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

این شی

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

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

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