نحوه راه اندازی گوشی های هوشمند و رایانه های شخصی. پرتال اطلاعاتی
  • خانه
  • ویندوز فون
  • 1c فراخوانی یک تابع از یک ماژول شی. فراخوانی خارج از زمینه روش های پردازش شی (گزارش) در فرم مدیریت شده

1c فراخوانی یک تابع از یک ماژول شی. فراخوانی خارج از زمینه روش های پردازش شی (گزارش) در فرم مدیریت شده

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ماژول برنامه

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

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

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

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

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

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

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

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

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

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

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

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

در این مورد، ماژول برنامه منظمهمچنین می تواند از ویژگی های گره ریشه باز شود.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

این ماژول دارای رویدادهایی است: در شروع سیستمو هنگام تکمیل سیستم کاری.

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

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

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

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

ماژول جلسه

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

برای ماژول مشترک v پالت خواصمی تواند ویژگی را تنظیم کند ممتاز.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ماژول فرم

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

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

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

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

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

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

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

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

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

ماژول شی

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

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

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

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

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

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

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

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

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

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

V ماژول مدیریت ارزششما می توانید رویدادها را ضبط کنید ثابت هاو پردازش چک padding.

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

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

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

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

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

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

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

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

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

ماژول مدیر

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

در ماژول Manager، می توانید برخی از رویدادهای استاندارد را لغو کنید، به عنوان مثال، in ProcessingDataGettingChoiceهنگامی که یک مورد از جستجو انتخاب می شود، برخی فیلترها یا بررسی های اضافی را می توان انجام داد.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ویژگی های متداول ماژول

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

267 آموزش تصویری 1C را به صورت رایگان دریافت کنید:

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

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

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

اوک 693 22.12.13 22:44 اکنون در موضوع

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

این قیاس به دلیل ماهیت OOP به سادگی بی ربط است. OOP وارث برنامه نویسی رویه ای و مدولار است. مثل این است که پدر و پسر را با هم مقایسه کنیم، در حالی که پدر را نمونه پسر قرار دهیم.

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

این مربوط به مثال ارائه شده در مقاله است. در آنجا این روش دارای دستورالعمل تدوین است و به دلایلی کلمه کلیدی "صادرات" حذف شده است.

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

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

در یک برنامه معمولی، آنها اغلب برای کارهای کاملاً فرانت اند استفاده می شوند:

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

من فکر می‌کنم بسط انتزاع ذاتی در مفهوم "CommonModule" و وارد کردن به پیکربندی مفید باشد.
موجودیت هایی از نوع جدید، مثلاً "ExecutableModule"، مشابه اشیاء ماژول از MS VBA.
"SharedModules" یک مورد خاص از اشیاء "ExecutableModule" است که تقریباً واقع شده است.
به نسبت اشیاء "General Form" و به سادگی "Form" ....

برای شروع، خوب است که فضاهای نام و ابرداده های ماژول ها را در 1C پیاده سازی کنیم، و نه همانطور که اکنون است (نقل از کمک نحو). "تعریف نشده - زیرا قرار نیست از زبان داخلی کار کند"

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

در برنامه نویسی وب کلاسیک، این مشکل با قابلیت جاسازی فرم ها در فرم ها و تماس های ناهمزمان (AJAX) حل می شود، متأسفانه این مورد توسط 1C نادیده گرفته می شود. بنابراین سه گزینه باقی می ماند:

1. از اشکال مختلف استفاده کنید
2. تمام داده های لازم را به مشتری منتقل کنید
3. برای تکان دادن سرور.

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


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

مثال 1: شما باید بر اساس سند طرف مقابل بگیرید.

سرور مشتری
1.selection form -> گرفتن فرم
2. هنگام تعویض<--
3. دریافت طرف مقابل -> مبنای سند ["طرف مقابل"]

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

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

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

& OnServerWithoutContext
تابع What_What_with_what_to (ObjectProcessing، ProcessingTypeString، پارامترها)
ReturnFormDataValue (ProcessingObject, Type (ProcessingTypeString)) .We needFunction (Parameters);
EndFunction

برای روش های ماژول مدیر:

& OnServerWithoutContext
تابع What_What_What_That (نام، پارامترها)
Return Processing [Name] .NecessaryFunction (Parameters);
EndFunction

مقالات مرتبط برتر