ماژول های رایج قوانین ایجاد ماژول های رایج شرح ماژول های 1c

تقریباً همه اشیاء پیکربندی دارای یک ماژول مدیر هستند و برای اکثر اشیا یک ماژول شی. اغلب، برنامه نویسان تازه کار تفاوت های هدف این دو ماژول را درک نمی کنند.

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

در این مقاله ما به تفاوت های اساسی بین این ماژول ها هم از نظر تئوری و هم با استفاده از یک مثال کاربردی خاص خواهیم پرداخت.

تئوری

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

در ماژول شی، پلتفرم رویه‌ها و توابعی را ذخیره می‌کند که فقط هنگام کار با یک شی خاص، به عنوان مثال، با شی عنصر دایرکتوری "Nomenclature" قابل فراخوانی هستند. ماژول manager شامل رویه ها و توابعی است که می تواند برای همه اشیاء از یک نوع خاص اعمال شود، اما با ایجاد اولیه نمونه ای از آن شی. یعنی برای تغییر یک آیتم از نامگذاری از این ماژول، ابتدا متد ()GetObject را برای ارجاع عنصر اجرا کنید و سپس با آن کار کنید.

بیایید از تئوری به عمل برویم.

تمرین

بیایید به یک مثال عملی برویم. بیایید فرض کنیم که باید مشکل چاپ لیست محصولات را حل کنیم. بیایید دو راه برای تکمیل کار در نظر بگیریم.

روش چاپ در ماژول شی

در ماژول شی دایرکتوری، تابع زیر را اضافه کنید:

// یک مرجع به یک عنصر دایرکتوری به تابع ارسال کنیدتابع PrintSelectedProducts(Link) Export TabDoc = New TabularDocument; Layout = دایرکتوری ها. کالاها GetLayout ("Layout"); درخواست = درخواست جدید; درخواست. متن = "انتخاب | محصولات . ارائه محصول AS،| کالاها . علامت حذف،| کالاها . کد فروشنده |از جانب| فهرست راهنما . محصولات AS محصولات| کجا | کالاها . پیوند B (&آرایه محصول) SetParameter("Array of Products", Link); //از طریق پیوند انتخاب کنید

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

کد برنامه برای فراخوانی روش شیء "PrintSelectedProducts" با استفاده از دستور فرم "Print" در لیست زیر ارائه شده است:

چاپ رویه &OnClient (فرمان) // برای دریافت سند صفحه گسترده تولید شده با رویه سرور تماس بگیرید TabDoc = PrintServer() ; // سند صفحه گسترده تولید شده را نشان دهید TabDoc. نمایش () ; EndProcedure و تابع OnServer PrintServer()// برای فراخوانی یک تابع از ماژول شی، شی فرم را به یک شی دایرکتوری "محصولات" تبدیل کنید ObjectItem = FormAttributeValue("Object") ; // رویه ماژول شی را فراخوانی کنید و پیوندی به عنصر دایرکتوری فعلی ارسال کنید. نتیجه// به سمت مشتری بازگردید

ObjectProduct را برگردانید. PrintSelectedProducts(Object.Link) ; EndFunction

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

روش چاپ در ماژول مدیر

بیایید رویه صادرات زیر را به ماژول مدیر دایرکتوری اضافه کنیم:// آرایه ای از پیوندها را به محصولات ارسال کنید . ارائه محصول AS،| کالاها . علامت حذف،| کالاها . کد فروشنده |از جانب| فهرست راهنما . محصولات AS محصولات| کجا | کالاها . پیوند B (&آرایه محصول)تابع PrintSelectedProducts(ArrayProducts) Export TabDoc = New TabularDocument; Layout = دایرکتوری ها. کالاها GetLayout ("Layout"); درخواست = درخواست جدید; درخواست. متن = "انتخاب | محصولات " ; درخواست. SetParameter(" آرایه محصولات "، آرایه محصولات) ;نتیجه = درخواست اجرا کن()؛

HeaderArea = Layout. GetArea ("عنوان")؛ AreaFooter = Layout. GetArea ("زیرزمین"); TableHeadArea = Layout. GetArea ("سربرگ جدول")؛ TableFooterArea = Layout. GetArea ("TableFooter"); DetailRecordsArea = Layout. GetArea ("جزئیات"); TabDoc. Clear() ; TabDoc. خروجی (AreaTitle) ; TabDoc. خروجی (TableHeadArea)؛ TabDoc. StartAutoGroupingRows(); SelectionDetailRecords = نتیجه. انتخاب کنید() ؛ در حالی که SelectionDetailedRecords. Next() LoopDetailRecordArea. گزینه ها. Fill(SelectionDetailRecords) ; TabDoc. خروجی(DetailedRecordsArea, DetailedRecordsSelection.Level()) ; چرخه پایان ; TabDoc. FinishAutoGroupingRows(); TabDoc. خروجی (TableFooterArea)؛ TabDoc. خروجی (AreaFootground) ; بازگشت TabDoc; EndFunction

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

کد برنامه ماژول فرمان "Print" به شکل زیر است: & در رویه کلاینت Print(Command) TabDoc = PrintServer() ; TabDoc. نمایش () ; EndProcedure و تابع OnServer PrintServer()// آرایه ای از پیوندهای محصولات انتخاب شده را در فهرست دایرکتوری ارسال کنید

// به تابع ماژول مدیر "PrintSelectedProducts"

راهنماهای بازگشت. کالاها PrintSelectedItems(Items.List.SelectedRows) ; EndFunction

در این حالت، نتیجه اجرای دستور در حالت 1C:Enterprise به صورت زیر خواهد بود:

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

در پیکربندی استاندارد "مدیریت تجارت" نسخه 11، ماژول مدیر در همه جا برای چاپ اسناد استفاده می شود. اگر به پیکربندی "Manufacturing Enterprise Management" نگاه کنید، ماژول مدیر عملا استفاده نمی شود، زیرا پیکربندی در نسخه های قدیمی تر پلت فرم نوشته شده است، جایی که هیچ پشتیبانی کاملی از این مکانیسم وجود ندارد.

پیکربندی با مثال هایی از مقاله.

این مقاله سری "اولین مراحل توسعه در 1C" را ادامه می دهد، و به طور مفصل در مورد مسائل زیر بحث می کند:

  • ماژول نرم افزار چیست و از چه بخش هایی تشکیل شده است؟
  • ماژول اپلیکیشن برای چیست؟ چرا دو تا از آنها وجود دارد؟ کدام یک از چه زمانی شروع می شود؟ ظرافت های کار چیست؟
  • چه رویدادهایی با شروع عملیات سیستم مرتبط است، چگونه و کجا باید آنها را پردازش کرد؟
  • ماژول اتصال خارجی برای چیست؟ چه زمانی و چگونه از آن استفاده کنیم؟
  • چه زمانی از ماژول جلسه استفاده می شود؟
  • ماژول های رایج چیست؟ خواص و قوانین عملیاتی آن چیست؟ چرا از ویژگی "استفاده مجدد از مقادیر بازگشتی" استفاده می کنیم؟
  • چه زمانی از ماژول فرم استفاده می شود و چه رویدادهایی را می توان در آن پردازش کرد؟
  • ماژول شی برای چیست؟ از چه بخش هایی تشکیل شده است؟ چگونه می توانم رویدادهای ماژول موجود را ببینم؟
  • ظرافت های کار با ماژول های مدیریت ارزش (برای ثابت ها) و ماژول های مجموعه رکورد (برای ثبات ها) چیست؟
  • تفاوت بین یک ماژول شی و یک ماژول مدیر چیست؟ چه زمانی باید از دومی استفاده کنید؟

قابلیت کاربرد

این مقاله پلتفرم 1C:Enterprise 8.3.4.496 را مورد بحث قرار می دهد. این مطالب همچنین برای نسخه‌های پلتفرم فعلی مرتبط است.

ماژول ها در "1C: Enterprise 8.3"

ماژول ها اشیایی هستند که حاوی کد برنامه هستند.

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

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

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

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

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

در برخی از ماژول ها، متغیرها ممکن است یک مکان کامپایل (در دسترس بودن) روی سرور یا کلاینت داشته باشند. مثلا:

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

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

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

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

لازم به ذکر است که بخش اعلام متغیر و بخش برنامه اصلی برای همه ماژول ها وجود ندارد (یعنی این بخش ها در برخی ماژول ها معتبر نیستند). یک بخش برای توصیف رویه ها و توابع می تواند در هر ماژول وجود داشته باشد.

ماژول برنامه

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

همچنین در ماژول برنامه کنترل کننده های ویژه ای وجود دارد که به شما امکان می دهد رویدادهای خارجی را از تجهیزات رهگیری کنید.

اینها می تواند رویدادهایی از یک کارت خوان مغناطیسی یا ثبت مالی باشد. و این رویدادها را نیز می توان به نوعی پردازش کرد.

لطفاً توجه داشته باشید که راه اندازی تعاملی سیستم است که در ماژول برنامه نظارت می شود.

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

لازم به ذکر است که در پلتفرم 8.3 دو ماژول کاربردی مختلف وجود دارد: ماژول برنامه مدیریت شده و ماژول برنامه منظم. رویدادهای ماژول برنامه مدیریت شده زمانی پردازش می شوند که برنامه مدیریت شده Thin and Thick Client و Web Client راه اندازی می شوند.

مدول برنامه منظمهنگام اجرای Thick Client در حالت کار می کند برنامه منظم، که حاوی رابط دستوری معمول در فرم است منوی اصلی.

اگر برنامه در حال اجرا است اداره می شود، و در حالت برنامه منظم، سپس لازم است که رویه های کنترل کننده مانند ماژول توضیح داده شود برنامه مدیریت شدهو برای ماژول برنامه منظم.

مدول برنامه مدیریت شدهرا می توان از منوی زمینه گره پیکربندی ریشه انتخاب کرد.

این ماژول همچنین می تواند از پالت خصوصیات عنصر پیکربندی ریشه باز شود.

برای باز کردن یک ماژول برنامه منظم، باید به تنظیمات پیکربندی (فرمان گزینه هادر منو سرویس).

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

در این مورد ماژول برنامه منظمباز کردن از ویژگی های گره ریشه نیز امکان پذیر خواهد بود.

لیست رویدادهایی که می توان برای آنها پردازش کرد اداره می شودو برنامه منظمیکسان است.

این ماژول می‌تواند شامل یک بخش اعلان متغیر، یک بخش شرح رویه‌ها و توابع دلخواه و یک بخش برنامه اصلی باشد. اما علاوه بر رویه ها و عملکردهای دلخواه، کنترل کننده رویدادهای ویژه را می توان در ماژول قرار داد.

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

پنجره Procedures and Functions که باز می شود تمام رویه ها و عملکردهای این ماژول و همچنین رویدادهایی را که هنوز گرداننده برای آن ها ایجاد نشده اند نمایش می دهد.

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

هنگامی که یک کنترل کننده رویداد "قبل از" اجرا می شود، عمل در نظر گرفته می شود که هنوز انجام نشده است. هنگامی که کنترل کننده رویداد "at" اجرا می شود، عمل قبلاً تکمیل شده است.

رویداد قبل از راه اندازی سیستمدر لحظه راه اندازی Enterprise 8.3 اتفاق می افتد، اما خود برنامه هنوز روی صفحه ظاهر نشده است. این رویداد دارای پارامتر زیر است: امتناع.

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

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

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

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

در ماژول برنامه منظمچنین محدودیتی وجود ندارد، زیرا این ماژول هنگام بارگیری Thick Client کامپایل می شود. تقریباً همه انواع داده ها در Thick Client در دسترس هستند.

رویه ها، توابع و متغیرهای یک برنامه کاربردی را می توان به عنوان صادرات توصیف کرد.

از آنجایی که ماژول به طور کامل بر روی Client کامپایل شده است، به این معنی است که در رویه های مشتری می توانیم به این متد و این ویژگی دسترسی داشته باشیم.

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

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

بر خلاف ماژول برنامه، که در لحظه راه اندازی تعاملی برنامه شروع می شود، ماژول اتصال خارجی در حالت اتصال COM کار می کند، یعنی. هنگامی که یک شی 1C:Enterprise 8 ایجاد شده و به یک پایگاه داده خاص متصل می شود.

این ماژول دارای رویدادهایی است: هنگام راه اندازی سیستمو پس از خاموش شدن سیستم.

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

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

در ماژول اتصال خارجی، می‌توان متغیرهای صادرات و روش‌های صادراتی را که در سمتی که تماس خارجی با 1C:Enterprise 8.3 انجام می‌شود، در دسترس خواهد بود، توصیف کرد.

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

ماژول جلسه

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

می‌توانید Session Module را از طریق منوی زمینه یا از طریق پالت ویژگی‌های گره ریشه باز کنید.

ماژول جلسه یک رویداد را فراهم می کند SettingSessionParameters.

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

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

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

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

در Session Module می توان فقط رویه ها و توابع را تعریف کرد، یعنی. هیچ بخش توصیف متغیر و هیچ بخش برنامه اصلی وجود ندارد. شما نمی توانید روش های صادرات را در یک Session Module تعریف کنید.

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

  • روش SettingSessionParametersنه تنها هنگام راه اندازی سیستم، بلکه هنگام دسترسی به پارامترهای جلسه غیر اولیه نیز اجرا می شود. آن ها کنترلر SetSessionParameters را می توان به طور مکرر در طول عملیات برنامه فراخوانی کرد.
  • اگر تعداد عناصر در آرایه پارامترهای جلسه صفر باشد (آرایه پارامترهای مورد نیاز دارای نوع داده Undefined است)، این لحظه راه اندازی برنامه است.
  • از آنجایی که Session Module در حالت ممتاز کار می کند و هیچ بررسی حقوق دسترسی وجود نخواهد داشت، شما باید با دقت زیادی با اشیاء پایگاه داده کار کنید، زیرا کاربر می تواند به داده هایی دسترسی پیدا کند که نباید به او ارائه شود.
  • زمانی که سیستم شروع به کار کرد، هنوز به طور قطع مشخص نیست که آیا برنامه راه اندازی می شود یا خیر. در این مورد، اقدامات غیر ضروری ممکن است در کنترل کننده رویداد SetSessionParameters انجام شود.

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

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

شما می توانید هر تعداد ماژول مشترک اضافه کنید. برای در دسترس قرار دادن متدهای Common Module در جای دیگری از پیکربندی، باید با کلمه کلیدی Export تعریف شوند. رویه‌های کلاینت ماژول‌های رایج در Client و سرورها در سرور در دسترس خواهند بود.

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

اگر به یک متغیر سراسری نیاز است، می‌توانید از پارامترهای جلسه یا متغیرهای صادرات ماژول برنامه استفاده کنید.

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

آن ها را ماژول عمومیدر شکل گیری زمینه پیکربندی جهانی شرکت خواهد کرد.

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

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

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

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

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

برای ماژول عمومی V پالت خواصمی توانید ملک را تنظیم کنید ممتاز.

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

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

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

در عین حال، تمام مراحلی که تکمیل اسناد حقوق و دستمزد را تضمین می کند خارج از این موارد است ماژول های رایج. در این رویه ها است که کنترل حقوق دسترسی انجام می شود.

به این ترتیب می توان به بهبود عملکرد قابل توجهی دست یافت. این امر به ویژه در هنگام استفاده از مکانیزمی برای کنترل دسترسی ردیف به ردیف به رکوردهای جدول صادق است.

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

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

آن ها نیاز به گسترش موقت حقوق کاربر و بازگرداندن آنها به حالت اولیه وجود دارد. این اثر را می توان با استفاده از Privileged به دست آورد ماژول های رایج.

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

این روش از سند مربوطه فراخوانی می شود. آن ها در زمان فراخوانی این رویه، در واقع به کاربر حقوق گسترده ای اعطا می شود.

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

علاوه بر این، اگر حالت ویرایش پیکربندی را به برنامه مدیریت شده و برنامه معمولی تغییر دهید، یک زمینه کامپایل دیگری امکان پذیر خواهد بود - Client (برنامه معمولی).

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

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

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

در این مورد، رویه را نمی توان در زمینه ای که برای کل ماژول قابل دسترسی نیست، دسترسی داشت.

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

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

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

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

با این رویکرد، رویه‌های مشتری در ماژول‌های مشترک جداگانه و رویه‌های سرور در ماژول‌های مشترک جداگانه قرار خواهند گرفت.

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

مهم! دسترسی مشتری به متدهای سرور صادراتی یک ماژول مشترک برای کلاینت امکان پذیر است، اما تنها در صورتی که این ماژول مشترک فقط روی سرور کامپایل شده باشد. در این حالت، یک پرچم ویژه برای دسترسی مشتری ارائه می شود .

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

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

به طور پیش فرض، این ویژگی روی Do Not Use تنظیم شده است. سایر مقادیر ممکن: حافظه پنهان در طول تماس، یا برای مدت زمان جلسه.

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

اگر مقدار پارامتر مربوطه برای مدت زمان تماس انتخاب شده باشد، تا زمانی که رویه ای که متد General Module از آن فراخوانی شده است، حافظه پنهان کار می کند. اگر مقدار For the duration of session انتخاب شده باشد، به صورت مشروط فرض می شود که حافظه پنهان در حین کار کاربر عمل می کند.

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

ماژول فرم

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

علاوه بر رویدادهای مرتبط با کنترل‌های فرم (دکمه‌ها، فیلدهای ورودی)، رویدادهایی وجود دارند که مستقیماً با خود فرم مرتبط هستند.

برای مثال، می‌توانید رویداد باز کردن فرم را مدیریت کنید و مقداری اولیه‌سازی اولیه را انجام دهید. همچنین می توانید رویداد بسته شدن فرم را مدیریت کنید و بررسی کنید که آیا کاربر همه چیز را به درستی وارد کرده است یا خیر.

فرم های کنترل شده و فرم های منظم وجود دارد. ماژول های این فرم ها عمدتاً از این جهت متفاوت هستند که ماژول فرم مدیریت شده به وضوح به زمینه تقسیم می شود. هر رویه (عملکرد) باید یک دستورالعمل تدوین داشته باشد. در فرم معمولی، تمام کدها بر روی Client استفاده می شود.

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

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

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

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

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

ماژول شی

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

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

رویداد نوشتن در ماژول Object روی هر نوشتنی از هر شکلی از شی داده شده اجرا می شود. علاوه بر این، اگر شی به صورت برنامه‌نویسی نوشته شده باشد، رویداد ماژول شی فعال می‌شود.

در رویداد ضبط Object Module، می‌توانید تمام بررسی‌ها را برای صحت داده‌های در حال نوشتن ایجاد کنید، زیرا این رویه در زمان مطلقاً هر ضبطی اجرا می‌شود.

ماژول این شی را می توان از طریق منوی زمینه، از پالت Object Properties و از پنجره ویرایش شیء فراخوانی کرد.

شکل زیر لیستی از رویدادهای ماژول دایرکتوری موجود را نشان می دهد.

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

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

لازم به ذکر است که تمام رویه های ماژول Object بر روی سرور کامپایل می شوند. بر این اساس، دستورالعمل های تدوین برای رویه ها و عملکردهای ماژول شی مورد نیاز نیست. برخی از اشیاء پیکربندی Object Modules ندارند.

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

که در ماژول مدیریت ارزششما می توانید رویدادهای نوشتن را اداره کنید ثابت هاو پر کردن پردازش تأیید.

کل زمینه ماژول بر روی سرور اجرا می شود.

برای ثبت یک ماژول Recordset وجود دارد.

این ماژول همچنین توانایی مدیریت رویدادهای نوشتن و انجام بررسی اشغال را دارد.

در ماژول‌های Object، ماژول‌های مدیریت ارزش (برای ثابت‌ها) و ماژول‌های مجموعه رکورد (برای ثبات‌ها) می‌توانید روش‌هایی را توصیف کنید که می‌توان آنها را صادر کرد، و این روش‌ها از بیرون قابل دسترسی خواهند بود.

آن ها علاوه بر استفاده از متدهای ثابت یک کلاس شی، می توانید متدهای اضافی را برای یک شی در ماژول Object ایجاد کنید. این ماژول باید رویه مربوطه را با کلمه کلیدی توصیف کند صادرات.

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

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

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

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

ماژول مدیر

این ماژول برای بسیاری از اشیاء (دایرکتوری ها، اسناد، رجیسترها و غیره) وجود دارد. ماژول یا از طریق منوی زمینه برای شی یا از طریق باز می شود پالت خواص، یا از طریق پنجره ویرایش.

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

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

برای انجام این فراخوانی باید نوع داده را بدست آورد DirectoryManager.

تفاوت بین روش های صادراتی ماژول مدیر و ماژول شی در این است که برای دسترسی به متد ماژول شی، ابتدا باید خود شیء را بدست آورید (یعنی به نحوی یک لینک بدست آورید و سپس این لینک را به یک شی تبدیل کنید). .

پس از این، متغیرهای صادراتی و متدهای Object Module در دسترس خواهند بود. برای ماژول مدیر تماس ساده تر است، به عنوان مثال:
Directories.Counterparties.MethodName

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

تفاوت دوم در این است ماژول شیدر چارچوب یک عنصر خاص نامیده می شود. بر این اساس، می‌توانیم فرض کنیم که برای یک عنصر معین قابل استفاده است (در بیشتر موارد، این دقیقاً منطقی است که استفاده می‌شود).

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

اما در ماژول مدیر می توان مکانیزم جهانی تری ایجاد کرد که در میان چیزهای دیگر، گروهی از عناصر را چاپ می کند.

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

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

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

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

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

ماژول های عمومی 1C- یک شیء فراداده پیکربندی برای 1C 8.3 و 8.2، که کد برنامه را که اغلب در پیکربندی فراخوانی می شود، ذخیره می کند. یک تابع/روش را می توان از هر نقطه از پیکربندی فراخوانی کرد (اگر یک تابع صادراتی باشد).

نحوه استفاده از ماژول اشتراکی

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

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

ویژگی های ماژول های رایج

یکی از ویژگی های اصلی ماژول های به اشتراک گذاشته شده از ماژول های دیگر این است که نمی توانید متغیرهای مشترک را اعلام کنید.

267 درس ویدیویی را در 1C به صورت رایگان دریافت کنید:

بیایید نگاهی دقیق تر به پالت ویژگی های ماژول عمومی بیندازیم:

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

اگر شروع به یادگیری برنامه نویسی 1C کرده اید، دوره رایگان ما را توصیه می کنیم (فراموش نکنید


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

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

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

ماژول برنامه منظم

ماژول برنامه معمولی همان نقش ماژول برنامه مدیریت شده را ایفا می کند، تنها رویدادهای ماژول برنامه معمولی زمانی فعال می شوند که کلاینت ضخیم برنامه معمولی راه اندازی شود.

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

ماژول اتصال خارجی

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

ماژول جلسه

یک شیء پیکربندی کلی به عنوان "پارامترهای جلسه" وجود دارد. ماژول جلسه برای مقداردهی اولیه پارامترهای جلسه ایجاد می شود (رویداد خاصی برای این وجود دارد؛ وقتی برنامه شروع می شود، ابتدا شروع می شود).

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

ماژول های رایج

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

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

در ماژول عمومی، می توانید برخی از پارامترها را تعیین کنید که بر رفتار آن تأثیر می گذارد. اگر چک باکس "Global" در ماژول عمومی علامت زده شود، آنگاه توابع صادرات آن در شکل گیری زمینه جهانی مشارکت خواهند داشت. و می توان مستقیماً از یک زمینه دیگر (بدون ذکر نام ماژول مشترک) به آنها دسترسی داشت: CommonModuleMethod();

شما نباید از ویژگی "Global" ماژول های رایج در همه جا استفاده کنید، زیرا چنین ماژول هایی در هنگام راه اندازی سیستم کامپایل می شوند و شروع برنامه را کاهش می دهند

ماژول شی

بسیاری از اشیاء پیکربندی (دایرکتوری ها، اسناد و غیره) دارای یک ماژول شی هستند. شما می توانید رویدادهای استاندارد را در آن وارد کنید، مانند ایجاد یک آیتم فهرست جدید، ضبط یک شی جدید، حذف، پردازش ارسال یک سند و غیره. رویداد رکورد هم در ماژول فرم وجود دارد (در طول فرآیند ضبط تعاملی، زمانی که کاربر روی دکمه «ضبط» کلیک می‌کند) و هم در ماژول شی وجود دارد.

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

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

ماژول فرم

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

ساختار یک فرم مدیریت شده شامل یک بخش برای توصیف متغیرها، یک بخش برای رویه ها و توابع، و یک بخش برای برنامه اصلی (در زمان اولیه سازی فرم اجرا می شود). ما می توانیم از طریق لیست رویه ها و توابع (Ctrl+Alt+P) یا در پالت خصوصیات خود فرم به رویدادهای فرم استاندارد دسترسی داشته باشیم. همچنین می توانید رویداد ضبط عنصر را به شکل مدیریت شده پردازش کنید (این رویداد فقط برای اشیاء وجود دارد: فهرست ها، اسناد).

ماژول مدیر شی

ماژول مدیر فقط در 1C 8.2 ظاهر شد و در بسیاری از اشیاء پیکربندی وجود دارد. هدف اصلی ماژول مدیر شی این است که رویداد استاندارد "پردازش دریافت داده های انتخابی" را نادیده بگیرد و در آن نیز می توانیم

ماژول مدیریت ارزش

شیء پیکربندی ثابت ماژول شی ندارد، اما یک ماژول بسیار مشابه وجود دارد - ماژول مدیریت ارزش. در ماژول مدیریت ارزش ثابت، می‌توانید رویه‌های مختلف (از جمله موارد صادرات) و همچنین پردازش 3 رویداد را شرح دهید: BeforeWrite، OnWrite، ProcessingFillCheck. این ماژول بر روی سرور کامپایل شده است.

ماژول های Recordset

ماژول مجموعه رکوردها مشابه ماژول شی است و در ثبات ها ذاتی است. رویدادهای استاندارد در ماژول مجموعه رکوردها وجود دارد:

  • قبل از ضبط
  • هنگام ضبط
  • بررسی بالشتک پردازش

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

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

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

نوع ماژول رایج نمونه ای از نام تماس سرور سرور اتصال بیرونی مشتری
(کاربرد معمولی)
مشتری
(برنامه مدیریت شده)
1. سرورمنظور عمومی (یا سرور هدف عمومی)
2. سرور برای تماس از مشتریGeneralPurposeCallServer
3. مشتریمشتری با هدف عمومی (یا هدف عمومی جهانی)
4. مشتری-سرورکلینت سرور

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

  • سرور(چک باکس تماس سرورتنظیم مجدد)،
  • مشتری (برنامه معمولی),
  • اتصال بیرونی.

در این حالت، توانایی فراخوانی رویه‌ها و توابع سرور با پارامترهایی از انواع قابل تغییر تضمین می‌شود (به عنوان مثال، DirectoryObject, DocumentObjectو غیره.). به طور معمول این است:

  • کنترل کننده هایی برای اشتراک رویدادهای اسناد، دایرکتوری ها و غیره، که یک مقدار قابل تغییر (شیء) را به عنوان پارامتر می گیرند.
  • رویه ها و توابع سرور، که یک شی به عنوان پارامتر از ماژول های دایرکتوری ها، اسناد و غیره، و همچنین از ماژول هایی با اشتراک رویداد به آنها منتقل می شود.

ماژول های به اشتراک گذاشته شده در سمت سرور طبق قوانین کلی برای نام گذاری اشیاء ابرداده نامگذاری می شوند.
مثلا: کار با فایل ها, همه منظوره

در برخی موارد، برای جلوگیری از تضاد نام با ویژگی‌های زمینه جهانی، می‌توان یک پسوند اضافه کرد "سرور".
مثلا: RoutineTasksServer, Data Exchange Server.

2.2. ماژول های رایج سرور برای تماس از مشتریشامل رویه ها و توابع سرور است که می تواند از کد مشتری استفاده شود. آنها رابط برنامه نویسی مشتری سرور برنامه را تشکیل می دهند.
چنین رویه ها و توابعی در ماژول های مشترک با ویژگی زیر قرار می گیرند:

  • سرور(چک باکس تماس سرورنصب شده است)

ماژول های رایج سمت سرور برای فراخوانی از یک کلاینت بر اساس قوانین کلی برای نامگذاری اشیاء ابرداده نامگذاری می شوند و باید با یک پسوند نامگذاری شوند. "CallServer".
مثلا: کار با سرور FilesCalling

لطفاً توجه داشته باشید که رویه‌ها و توابع صادرات در این ماژول‌های مشترک نباید دارای پارامترهایی از انواع قابل تغییر باشند ( DirectoryObject, DocumentObjectو غیره)، زیرا انتقال آنها از (یا به) کد مشتری غیرممکن است.

همچنین ببینید:محدودیت در تنظیم پرچم "تماس سرور" برای ماژول های رایج

2.3. ماژول های مشترک مشتریحاوی منطق تجاری مشتری (کارکردی که فقط برای مشتری تعریف شده است) و دارای ویژگی های زیر است:

  • مشتری (برنامه مدیریت شده))
  • مشتری (برنامه معمولی)

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

ماژول های مشترک مشتری با یک پسوند نامگذاری می شوند "مشتری".
مثلا: کار با FilesClient, کلاینت با هدف عمومی

همچنین ببینید: به حداقل رساندن کدهای در حال اجرا روی کلاینت

2.4. در برخی موارد، ایجاد ماژول های مشترک کلاینت-سرور با رویه ها و توابع مجاز است که محتوای آنها در سرور و کلاینت یکسان است. چنین رویه ها و توابعی در ماژول های مشترک با ویژگی های زیر قرار می گیرند:

  • مشتری (برنامه مدیریت شده)
  • سرور(چک باکس تماس سرورتنظیم مجدد)
  • مشتری (برنامه معمولی)
  • اتصال بیرونی

ماژول های رایج از این نوع با postfix نامگذاری می شوند "ClientServer".
مثلا: کار با FilesClient, کلینت سرور

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

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

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

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

اشتراک گذاری