ماژول کار با مشتریان در 1s. ماژول های عمومی پرچم عضویت خارجی

این مقاله سری "اولین گام‌های توسعه در 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 استفاده کنید.

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

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

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

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

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

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

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.

ماژول ها چیست و دقیقا برای چه منظوری در نظر گرفته شده اند؟ ماژول حاوی کد برنامه است. علاوه بر این، شایان ذکر است که بر خلاف پلتفرم 7.7 که کد می‌تواند در ویژگی‌های عناصر فرم و در سلول‌های جداول طرح‌بندی قرار گیرد، در پلتفرم 8.x هر خط کدی باید در یک ماژول قرار گیرد. . به طور معمول، یک ماژول از سه بخش تشکیل شده است - یک بخش برای توصیف متغیرها، یک بخش برای توصیف رویه ها و توابع، و یک بخش برای برنامه اصلی. این ساختار تقریباً برای همه ماژول‌های پلتفرم، به استثنای برخی موارد، معمول است. برخی از ماژول ها بخش توضیحات متغیر یا بخش برنامه اصلی ندارند. به عنوان مثال، Session Module و هر ماژول عمومی.

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

ماژول برنامه

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

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

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

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

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

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

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

ماژول جلسه

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

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

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

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

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

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

ماژول فرم

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

ماژول شی

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

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

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

ماژول مدیر شی

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

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

نمادهای روی نمودار: O.M. مشتری - ماژول مشترک مشتری. O.M. سرور - ماژول مشترک سرور. م.ف. مشتری - رویه های مشتری ماژول فرم. م.ف. سرور - رویه های سرور ماژول فرم.

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

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

  • منطقه اعلام متغیر;
  • حوزه توصیف رویه ها و عملکردها;
  • متن اصلی برنامه.

نمونه ای از ساختار ماژول برنامه:

//******************** منطقه اعلام متغیر **********************

صادرات نام خانوادگی پرم; / /این یک متغیر جهانی است
تغییر نام، نام خانوادگی؛ //این یک متغیر ماژول است
نام کامل پرم; //این نیز یک متغیر ماژول است و قابل دسترسی است

//از هر رویه و عملکرد ماژول ما

//**************** منطقه شرح رویه ها و عملکردها ****************

رویه رویه 1 ()
مجموع متغیر ; / /نتیجه یک متغیر محلی است (متغیر رویه)

مجموع = نام خانوادگی + " "+ نام + " "+ نام وسط;

پایان رویه

تابع تابع1()

// عملگرهای تابع

Return(LastName + " "+ FirstName);

EndFunction

//******************** متن اصلی برنامه ************************

نام خانوادگی = "ایوانف"؛
نام = "ایوان";
نام خانوادگی = "ایوانوویچ";

//******************************************************************************

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

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

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

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

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

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

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

ماژول برنامه، رویه‌ها (هندلر) رویدادهایی را که در ابتدا و انتهای سیستم مقداردهی اولیه می‌شوند، توصیف می‌کند. به عنوان مثال، هنگامی که برنامه شروع به اجرا می کند، می توانید برخی از داده های پیکربندی را به روز کنید، و هنگامی که از برنامه خارج می شوید، می توانید بپرسید که آیا اصلاً ارزش خروج از برنامه را دارد یا خیر. علاوه بر این، این ماژول رویدادهای تجهیزات خارجی، به عنوان مثال، تجارت یا مالی را رهگیری می کند. شایان ذکر است که ماژول برنامه تنها زمانی اجرا می شود که برنامه به صورت تعاملی راه اندازی شود، یعنی زمانی که پنجره برنامه راه اندازی می شود. اگر برنامه در حالت اتصال com راه اندازی شود، این اتفاق نمی افتد.
در پلتفرم 1C 8 دو ماژول برنامه متفاوت وجود دارد. اینها ماژول برنامه منظم و ماژول برنامه مدیریت شده هستند. هنگامی که مشتریان مختلف راه اندازی می شوند، آنها فعال می شوند. بنابراین، زمانی که سرویس گیرنده وب، تین کلاینت و کلاینت ضخیم در حالت برنامه مدیریت شده راه اندازی می شوند، ماژول برنامه مدیریت شده فعال می شود. و زمانی که کلاینت ضخیم در حالت برنامه معمولی راه اندازی می شود، ماژول برنامه معمولی فعال می شود. تنظیم حالت راه اندازی برنامه در ویژگی پیکربندی "حالت راه اندازی اولیه" مشخص شده است.

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

همانطور که در بالا ذکر شد، ماژول برنامه رویدادهای راه اندازی و خاتمه برنامه را مدیریت می کند. برای رسیدگی به هر یک از این رویدادها در ماژول برنامه، یک جفت کنترلر Before... و When... وجود دارد که تفاوت بین آنها به شرح زیر است: هنگام اجرای کد در کنترل کننده Before...، عملیات هنوز انجام نشده است. انجام شده است و ما می توانیم از اجرای آن خودداری کنیم. این همان چیزی است که گزینه Reject برای آن است. در کنترل کننده های On..، این عمل قبلا انجام شده است، و ما نمی توانیم از راه اندازی برنامه یا خروج از آن خودداری کنیم.

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

  • می تواند شامل هر 3 ناحیه باشد
  • در قسمت ریشه پیکربندی قرار دارد

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

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

ماژول جلسه

  • در سمت سرور اجرا می شود
  • در قسمت ریشه پیکربندی قرار دارد

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

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

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

  • ممکن است شامل منطقه ای باشد که رویه ها و عملکردها را توصیف می کند
  • اجرا شده در سمت سرور یا مشتری (بسته به تنظیمات ماژول)
  • در شاخه درخت اشیاء پیکربندی "General" - "General modules" قرار دارد

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

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

این تمرین خوبی است که از پرچم جهانی در همه جا استفاده نکنید. این باعث کاهش زمان راه اندازی برنامه و همچنین بهبود خوانایی کد می شود (البته اگر ماژول مشترک نام کاملاً معنی دار داشته باشد).
- استفاده از بیش از یک پرچم تلفیقی توصیه نمی شود. روش‌های زیادی وجود ندارد که نیاز به اجرا در زمینه‌های مختلف داشته باشند، و اگر چنین روش‌هایی همچنان مورد نیاز باشند، می‌توان یک ماژول مشترک جداگانه برای آنها اختصاص داد.
- پرچم "Call Server" فقط در صورتی معنی دارد که ماژول "در سرور" کامپایل شده باشد. بنابراین، برای جلوگیری از مشکلات مختلف، همه پرچم‌های تلفیقی دیگر باید حذف شوند.
- اگر روش های ماژول شامل پردازش گسترده داده ها، خواندن و نوشتن در پایگاه داده باشد، برای افزایش سرعت کار بهتر است با تنظیم پرچم "ممتاز" کنترل دسترسی را غیرفعال کنید. این حالت فقط برای ماژول های به اشتراک گذاشته شده در سرور در دسترس است.

ماژول فرم

  • می تواند شامل هر 3 ناحیه باشد
  • در سمت سرور و کلاینت اجرا می شود

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

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

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

ماژول شی

  • می تواند شامل هر 3 ناحیه باشد
  • در سمت سرور اجرا می شود

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

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

ماژول مدیر شی

  • می تواند شامل هر 3 ناحیه باشد
  • در سمت سرور اجرا می شود

ماژول مدیر شی فقط از نسخه 1C 8.2 ظاهر شد. ماژول مدیر برای تمام اشیاء برنامه وجود دارد و برای مدیریت این شی به عنوان یک شیء پیکربندی طراحی شده است. ماژول manager به شما اجازه می دهد تا با معرفی رویه ها و توابع (نوشتن) که نه به یک نمونه خاص از یک شی پایگاه داده، بلکه به خود پیکربندی مربوط می شود، عملکرد یک شی را گسترش دهید. ماژول مدیر شی به شما این امکان را می دهد که رویه ها و توابع مشترک را برای یک شی معین قرار دهید و از خارج، به عنوان مثال، از طریق پردازش به آنها دسترسی داشته باشید (البته اگر این رویه یا تابع دارای کلمه کلیدی Export باشد). این چه چیز جدیدی به ما می دهد؟ به طور کلی، چیزی جز سازماندهی رویه ها توسط اشیا و ذخیره آنها در مکان های جداگانه - ماژول های مدیر شی. ما می‌توانیم با موفقیت این رویه‌ها و توابع را در ماژول‌های عمومی قرار دهیم، اما 1C توصیه می‌کند رویه‌ها و عملکردهای کلی اشیاء را در ماژول مدیر شیء قرار دهیم. نمونه هایی از استفاده از رویه ها و عملکردهای ماژول مدیران شی: پر کردن اولیه جزئیات فردی یک فهرست یا سند تحت شرایط خاص، بررسی تکمیل جزئیات یک فهرست یا سند تحت شرایط خاص و غیره.

ماژول فرمان

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

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

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

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

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

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

تابع NewFunction() Export

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



Per = شی. NewFunction();

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

متغیر NewVariable Export

عنصر دایرکتوری = دایرکتوری ها. نامگذاری. FindByCode("000000001");
شی = عنصر دایرکتوری. GetObject();
یک شی. NewVariable= );

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

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

رویه NewProcedure() Export

عنصر دایرکتوری = دایرکتوری ها. نامگذاری. NewProcedure();

یا برای یک متغیر:

متغیر NewVariable Export

عنصر دایرکتوری = دایرکتوری ها. نامگذاری. newVariable;

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

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

تابع چاپ سند (پیوند) صادرات
//شما باید پیوندی به یک سند خاص به این تابع ارسال کنید
بازگشت TabDoc;
EndFunction

در فرم سند، باید رویه‌ای ایجاد کنید که پیوندی را به سند به تابع چاپ ارسال کند.

&OnClient
چاپ رویه (فرمان)
TabDoc = PrintOnServer();
TabDoc. نمایش () ;
پایان رویه
&روی سرور
تابع PrintOnServer()
Doc = FormAttributesValue("Object") ;
سند بازگشت PrintDocument(Object.Link) ;
EndFunction

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

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

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

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

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