ماژول های عمومی 1s 8.3. قوانین ایجاد ماژول های مشترک چه چیزی استفاده شود

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

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

ماژول برنامه

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

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

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

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

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

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

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

ماژول جلسه

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

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

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

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

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

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

ماژول فرم

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

ماژول شی

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

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

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

ماژول مدیر شی

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

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

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

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

با این حال، این برنامه باید در جایی نوشته شود، یعنی در جایی قرار گیرد. در بیشتر موارد، کد برنامه در فایل های متنی ساده نوشته می شود. تنها تفاوت این است که پسوند در آنها txt نیست، بلکه cpp. یا .php است.

برنامه 1C کجا نوشته شده است؟

ماژول 1C چیست؟

البته، کد 1C نیز می تواند در برخی از فایل های متنی نوشته شود. با این حال، مفهوم پیکربندی 1C وجود دارد - که نه تنها فهرستی از تنظیمات، قالب های فرم و غیره را شامل می شود، بلکه کد برنامه 1C را نیز شامل می شود. بنابراین، کد 1C در پیکربندی ذخیره می شود.

همانطور که قبلاً در درس های قبلی در مورد آن صحبت کردیم پیکربندی از اشیاء 1C تشکیل شده است. هر شی 1C حاوی اشیاء تودرتو است، به عنوان مثال، یک دایرکتوری چندین فرم دارد.

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

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

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

ماژول های 1C چگونه استفاده می شوند؟

کل برنامه را می توان تقریباً به دو نوع تقسیم کرد:

  • روش شی
  • واکنش به اتفاقات

روش ها. همانطور که قبلاً گفتیم، یک شی 1C یک ساختار یکپارچه است که شامل داده ها و روش های پردازش آن است. این روش ها مجموعه ای از اقدامات (روش ها) هستند که می توانند برای پردازش داده ها فراخوانی شوند. نمونه ای از چنین عملی DirectoryObject.Write () است - یک عنصر دایرکتوری را در پایگاه داده می نویسد.

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

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

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

رویدادهای سیستم - ما شی 1C را در پایگاه داده ثبت کردیم. رویداد سیستم "Write object" رخ داد. می توان واکنشی را پیکربندی کرد که به رویدادهایی رخ دهد که نه توسط کاربر (که دکمه ای را فشار داده یا کار دیگری انجام داده است) بلکه توسط خود سیستم ایجاد می شود. نمونه بارز چنین رویدادی زمانی است که برنامه شروع می شود.

ترتیب اجرای ماژول های 1C

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

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

نقطه ورود در ماژول مربوطه، به ترتیب کنترل کننده رویداد سیستم () BeforeSystemStart و WhenSystemStart () است (یعنی به ترتیب). این توابع ابتدا اجرا می شوند، آنها می توانند چیزی را به طور خودکار شروع کنند.

اگر هیچ چیزی به طور خودکار راه اندازی نشد، رابط 1C در مقابل کاربر باز می شود و سپس همه چیز به آن بستگی دارد. او یک دکمه را فشار می دهد - کنترل کننده کلیک دکمه اجرا می شود (که به نوبه خود می تواند چیزی را به طور خودکار راه اندازی کند).

کار با ماژول های 1C

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

ماژول های نرم افزار حاوی کدهای اجرایی به زبان 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" که در ابتدا اجرا می شود، حتی قبل از رویداد ماژول برنامه قبل از شروع سیستم. بخش اعلام متغیر و بخش برنامه اصلی در آن موجود نیست. شما همچنین نمی توانید روش های صادرات را اعلام کنید. ماژول در سمت سرور کامپایل شده است.

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

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

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

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

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

ماژول فرم

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

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

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

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

ماژول شی

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

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

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

ماژول مدیر شی

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

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

ماژول فرمان

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

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

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

ماژول برنامه 1Cعمدتاً برای دریافت لحظه راه اندازی برنامه و لحظه خاموش شدن آن در نظر گرفته شده است.
همچنین کنترل کننده هایی در اینجا وجود دارد که به شما امکان می دهد یک رویداد خارجی را از تجهیزات رهگیری کنید.

هنگامی که Thin Client، Web Client و Thick Client یک برنامه مدیریت شده راه اندازی می شوند، رویدادهای ماژول برنامه مدیریت شده فعال می شوند.
ماژول برنامه مدیریت شده راه اندازی سیستم تعاملی را نظارت می کند.

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

بیایید به لیست کنترل کننده هایی که می توان با فشار دادن ( Ctrl+Alt+P).
قبل از شروع سیستم - این عمل هنوز رخ نداده است (1C Enterprise 8.2 در حال راه اندازی است، اما خود برنامه هنوز روی صفحه ظاهر نشده است). اگر پارامتر "Failure" روی "True" تنظیم شود، برنامه به سادگی شروع نمی شود. هنگامی که سیستم شروع می شود - عمل قبلاً تکمیل شده است (پارامتر "شکست" وجود ندارد). قبل از خاموش شدن سیستم - برنامه هنوز ناپدید نشده است (پارامتر "شکست" وجود دارد).
در خاموش شدن سیستم، پنجره تعاملی قبلا بسته شده است.

نگاهی به دستیار نحوی بیندازید و درباره رویدادهای برنامه مدیریت شده و منظم بیشتر بخوانید.

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

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

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

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

رویدادهای قبل و حین ....

تفاوت بین رویه های قبل از شروع عملیات سیستم (شکست) و هنگام شروع عملیات سیستم ()

قبل از شروع عملیات سیستم (Refusal) - عمل هنوز کامل نشده است و می توانیم از انجام آن خودداری کنیم.
AtSystemStart() - عمل قبلاً تکمیل شده است و ما نمی توانیم از راه اندازی برنامه یا خروج از آن خودداری کنیم.

همین، از توجه شما متشکرم.

لطفا نظرات خود را بنویسید، نظر شما برای من مهم است.

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

P.S. و من جمالا را دوست دارم - تو از عشق ساخته شده ای

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.

شروع کنید