نحوه راه اندازی گوشی های هوشمند و رایانه های شخصی پرتال اطلاعاتی
  • خانه
  • خطاها
  • وظایف برنامه ریزی شده در 1s 8.3. وظایف پس زمینه: ویژگی ها، قابلیت ها، سفارشی سازی

وظایف برنامه ریزی شده در 1s 8.3. وظایف پس زمینه: ویژگی ها، قابلیت ها، سفارشی سازی

". در آن، ما ویژگی های جدیدی را در نظر خواهیم گرفت که به رابط سیستم مربوط نمی شوند، اما به طور قابل توجهی عملکرد ارائه شده پلت فرم 1C: Enterprise 8 را گسترش می دهند.

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

این مقاله در مورد پلتفرم 1C: Enterprise نسخه 8.3.4.437 بحث می کند. تمام عملکردهای توضیح داده شده در مقاله به نسخه 8.3.11 به روز شده است.

سایر نوآوری ها در "1C: Enterprise 8.3"

بیایید در ادامه با نوآوری های پلتفرم 1C: Enterprise 8.3 آشنا شویم.

پس‌زمینه و وظایف برنامه‌ریزی‌شده در پایگاه اطلاعاتی فایل

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

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

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

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

اگر فایل IB است سپس
=
Constants.UserForRunningRoutineTasksIn FileVariant.Get();
اگر hlValueVariable("GlCurrentUser") =
UserForPerformanceReglTasksسپس
// با فاصله زمانی چند ثانیه، روش کار با کارهای برنامه ریزی شده را فراخوانی کنید
پشتیبانی از کار معمولی برای نسخه فایل();
فاصله برای نظرسنجی=
Constants.IntervalFor PollingRegularJobsIn FileVariant.Get();
اگر فاصله برای نظرسنجی= تعریف نشده
یا فاصله برای نظرسنجی= 0 سپس
فاصله برای نظرسنجی= 60 ;
EndIf
ConnectHandlerExpectations("SupportRegular JobForFileVersion",
فاصله برای نظرسنجی);
EndIf
EndIf

در سکو 8.3 کار پس‌زمینه و کارهای برنامه‌ریزی‌شده را در پایگاه اطلاعات فایل بدون استفاده از فراخوانی روش زمینه جهانی پیاده‌سازی کرد RunProcessingJobs ().

کارهای پس‌زمینه و برنامه‌ریزی‌شده مستقیماً در یکی از برنامه‌های کلاینت (کلاینت نازک و ضخیم) یا یک برنامه افزودنی وب سرور اجرا می‌شوند.

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

کارهای پس زمینه به صورت متوالی اجرا می شوند، به عنوان مثال. تنها یک کار پس زمینه (از جمله برنامه ریزی شده) را می توان در یک برنامه مشتری در یک زمان اجرا کرد.

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

وظایف برنامه ریزی شده توسط اولین برنامه مشتری به ترتیب راه اندازی انجام می شود، که منعی برای انجام وظایف برنامه ریزی شده ندارد (برای غیرفعال کردن جلسه باید با پارامتر خط فرمان شروع شود. / AllowExecuteScheduledJobs -خاموش).

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

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

کارهای برنامه ریزی شده هر 60 ثانیه یک بار پردازش می شوند.

توجه داشته باشید که وظایف برنامه ریزی شده راه حل کاربردی (در نسخه فایل) زودتر از 1 دقیقه پس از راه اندازی برنامه مشتری شروع به اجرا کردند. با شروع نسخه 8.3.8، این زمان دو برابر شده است و بنابراین حداکثر 2 دقیقه پس از راه اندازی کلاینت (در نسخه فایل) کارهای برنامه ریزی شده شروع به اجرا می کنند.

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

در زیر کدی وجود دارد که موارد فوق را نشان می دهد:

برای بزرگنمایی روی تصویر کلیک کنید.

محاسبه چک جمع ها

مکانیسم‌هایی برای محاسبه جمع‌های چک داده در این پلتفرم ظاهر شده‌اند.

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

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

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

این شی دو روش دارد: اضافه کردن()و افزودن فایل()که مجموع هش را بر اساس داده های ارسال شده در پارامترها به روز می کند.

سکو 8.3.4.437 از محاسبه توابع هش زیر پشتیبانی می کند: CRC32, MD5, SHA1, SHA256... اما توابع SHA1و SHA256در پلت فرم تلفن همراه پشتیبانی نمی شود.

بیایید به یک مثال ساده نگاهی بیندازیم. فرض بر این است که در سرور در فهرست برنامه یک فایل وجود دارد " ragent.exe". نیاز به محاسبه MD5مجموع این فایل است.

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

& OnClient
محاسبه رویه (فرمان)
نتیجه = CalculateOnServer();
گزارش (رشته (نتیجه))؛
پایان رویه
&روی سرور
عملکرد CalculateOnServer()
هش = جدید HashingData(HashFunction .MD5);
Hash.AddFile(برنامه های کاتالوگ() + "Ragent.exe")؛
بازگشت Hash.HashSum;
EndFunction

در پلتفرم ویرایش 8.3.10+ در روش اضافه کردن()هدف - شی HashingDataاستفاده از جریانی از داده های باینری امکان پذیر شد که استفاده از آنها را در حل مشکلات مختلف کاربردی به روز رسانی مجموع هش بسیار ساده کرد.

کار با نسخه های امن پروتکل ها SMTP / POP3

در سکو 8.3 استفاده از نسخه های محافظت شده پروتکل ها ممکن شد SMTP / POP3(شرایط وجود دارد SMTPS / POP3Sیا SSLSMTP / SSLPOP3).

برای شی InternetPostalProfileویژگی های جدید را پیاده سازی کرد:

  • از SSLSMTP استفاده کنید;
  • ازSSLPOP3 استفاده کنید;
  • فقط SMTP احراز هویت امن;
  • فقط احراز هویت امن POP3.

خواص AuthenticationSMTPو احراز هویت POP3هدف - شی InternetPostalProfileو همچنین شمارش ها روش احراز هویت SMTPو روش احراز هویت POP3توصیه نمی شود - آنها برای سازگاری پشتیبانی می شوند.

استفاده از پروتکل امن SMTPSامکان ارسال نامه از 1Cبا استفاده از صندوق پستی گوگل.

بیایید به یک مثال نگاه کنیم. در فرم فیلدهایی را برای وارد کردن موضوع نامه و آدرس گیرنده و برای وارد کردن متن نامه - فیلد برای سند فرمت شده قرار می دهیم.

برای بزرگنمایی روی تصویر کلیک کنید.

با فشردن دکمه ارسالکد زیر اجرا خواهد شد:

& OnClient
روش ارسال (فرمان) ایمیل = ایمیل جدید اینترنتی; پروفایل = جدید InternetPostalProfile;
Profile.SMTP ServerAddress= "Smtp.googlemail.com"؛
نمایه. کاربر SMTP= “[ایمیل محافظت شده]” ;
Profile.Password SMTP= "رمز عبور"؛
نمایه: از SSLSMTP استفاده کنید= درست
Profile.SMTP Port = 465; تلاش
Mail.Connect(مشخصات)؛
یک استثنا
گزارش (DescriptionBugs ());
برگشت ؛
پایان تلاش; MailMessageText= “” ;
پیوست ها = ساختار جدید;
متن. دریافت HTML(MailMessageText، پیوست ها )؛ پیام ایمیل= جدید پیام اینترنتی پست;
MailMessage.Recipients.Add(به چه کسی)؛
موضوع پیام ایمیل= موضوع؛
MailMessage.Text.Add(MailMessageText,
MailMessageType.html) ایمیل. ارسال ( پیام ایمیل); قطع ارتباط از طریق نامه();
پایان رویه

توجه داشته باشید که در مثال ما، اگر سرور SMTP قادر به ارسال پیام ایمیل به مخاطب (ها) نبود، روش Mail.Send (MailMessage)داشت استثنا می انداخت این باعث ناراحتی های خاصی در بین توسعه دهندگان شد. دلیل پرتاب استثنا مشخص نبود.

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

چاپ دو رو

در سکو 8.2 خود پلتفرم چاپ دو طرفه را کنترل نمی کرد؛ مدیریت این عملکرد فقط با استفاده از درایور چاپگر امکان پذیر بود.

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

شمارش سیستم در زبان داخلی ظاهر شد:

  • نوع چاپ دو طرفه(نه، تلنگر به بالا، تلنگر به چپ)؛
  • (خودکار، بالای آینه، سمت چپ آینه، استفاده نکنید).

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

در پلتفرم نسخه 8.3.9، سیستم enumerationTypeDouble-SidedPrint دارای مقدار جدیدی است. از تنظیمات چاپگر استفاده کنید... انتخاب این مقدار امکان استفاده از تنظیمات چاپگر را در هنگام چاپ اسناد سیستم فراهم می کند. در حالت سازگاری نسخه 8.3.8، رفتار تغییر نکرده است و تنظیمات چاپگر مربوطه نادیده گرفته می شود.

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

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

  • توانایی کنترل در دسترس بودن سرویس های وب به طور پیش فرض (ویژگی pointEnableCommonعنصر ws);
  • توانایی کنترل اجرای کارهای پس زمینه در نسخه فایل (ویژگی اجازه اجراهای برنامه ریزی شدهعنصر ws).

اگر چک باکس "انتشار خدمات وب به صورت پیش فرض"روی نشانک "پایه ای"بررسی شده است، سرویس های وب انتخاب شده به طور خودکار پس از به روز رسانی نشریه منتشر می شوند.

در غیر این صورت، وب سرویس ها به عنوان منتشر نشده علامت گذاری می شوند. این پرچم با ویژگی مطابقت دارد pointEnableCommonعنصر wsدر پرونده default.vrdبرای پیکربندی وب سرویس گیرنده و وب سرویس.

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

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

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

سفارشی سازی "کارهای پس زمینه در حالت فایل"ویژگی مطابقت دارد اجازه اجراهای برنامه ریزی شدهعنصر ws در فایل default.vrd.

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

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

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

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

شماره گذاری اشیاء پایگاه اطلاعاتی

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

نشانی از اینکه کدام شماره یا کد منحصر به فرد نیست به متن پیام در مورد نقض منحصر به فرد بودن یک شماره یا کد اضافه شده است.

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

توابع انبوه زبان بیان سیستم ترکیب داده

توابع انبوه جدید در زبان بیان سیستم ترکیب داده پیاده سازی می شوند:

  • هر یک()؛
  • هر ();
  • GeneralCollection Standard Deviation ();
  • SampleDefusion ();
  • SampleDispersion ();
  • GeneralCollection Dispersion ();
  • کلکسیون کوواریانس ();
  • کوواریانس نمونه ();
  • همبستگی()؛
  • شیب رگرسیون ();
  • RegressionSegment ();
  • RegressionNumber ();
  • رگرسیونR2 ();
  • RegressionAverageX ();
  • RegressionAverageY ();
  • RegressionAverageSXX ();
  • RegressionAverageSYY ();
  • میانگین رگرسیون SXY ().

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

برای بزرگنمایی روی تصویر کلیک کنید.

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

همچنین عملکرد جدید مورد توجه است طبقه بندی ABC ()... نتیجه تابع یک عدد کلاس خواهد بود که از 1 شروع می شود (1 مربوط به کلاس A، 2 به کلاس B، 3 به کلاس C و غیره است).

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

انتخاب کنید
مصرف کالا,
مصرف کالامحصولات.مقدار
از جانب
Document.ExpenseProduct.Productچگونه مصرف کالاها

بیایید یک فیلد محاسبه شده جدید تعریف کنیم کلاس:

برای بزرگنمایی روی تصویر کلیک کنید.

بیایید منابع را به صورت زیر پیکربندی کنیم:

برای بزرگنمایی روی تصویر کلیک کنید.

در حالت سفارشی، گزارش به صورت زیر است:

در پایان، یادآور می شویم که از نسخه ای به نسخه دیگر در پلت فرم 1C 8.3، مکانیسم ACS به طور مداوم در حال بهبود و اصلاح است و نمی توان این تغییرات را به طور کامل در چارچوب مقاله "تازه کار" ما آورد. و زائد به نظر می رسد، زیرا با کار بر روی نسخه فعلی پلت فرم، همیشه می توانید از سیستم های کمکی مختلف برای کمک به تجزیه و تحلیل یک یا جنبه دیگر از عملکرد این مکانیسم استفاده کنید.

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

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

مفهوم برنامه نویسی ناهمزمان

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

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

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

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

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

وظایف پس زمینه در "1C: Enterprise 8"

در 1C: Enterprise 8، کارهای پس زمینه برای انجام کارهای کاربردی به صورت ناهمزمان طراحی شده اند. آنها می توانند کارهای پس زمینه کودک را ایجاد کنند، برای مثال، برای موازی کردن محاسبات پیچیده در سرورهای مختلف خوشه به روش مشتری-سرور.

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

مکانیسم وظیفه هم در سرویس گیرنده-سرور و هم در حالت فایل کار می کند، اما امکانات مدیریت و اجرای وظایف در هر دو گزینه کمی متفاوت است.

گزینه سرویس گیرنده-سرور

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

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

گزینه فایل

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

قبلاً، اجرای خودکار وظایف نیازمند راه‌اندازی یک جلسه جداگانه و اضافی 1C: Enterprise بود که به عنوان زمان‌بندی کار استفاده می‌شد. و در این جلسه لازم بود به صورت دوره ای متد زبان embedded اجرا شود ExecuteJobProcessing ().این رویکرد نسبتاً دست و پا گیر، ناخوشایند بود و استفاده از پس زمینه و کارهای برنامه ریزی شده در حالت عملیات فایل را به شدت محدود می کرد.

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

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

یک نقطه ضعف آشکار مشاغل پس زمینه 1C: از آنجایی که آنها در سمت سرور اجرا می شوند، امکان کار تعاملی با کاربر وجود ندارد (مثلاً نمی توانید پیام یا اطلاعات دیگری را نمایش دهید، همه این داده ها باید در پایگاه اطلاعات ذخیره شده و به نوعی پردازش شوند) .

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

نمونه ای از اجرای کد ناهمزمان در 1C: Enterprise 8

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

بیایید تمام سادگی و لطف اجرای کد ناهمزمان را در 1C: Enterprise 8 نشان دهیم!

مرحله 1.بیایید یک امنیت اطلاعات جدید برای توسعه پیکربندی ایجاد کنیم

گام 2.در پیکربندی، یک ماژول مشترک "AsynchronousHandlers" اضافه کنید

چرا یک ماژول مشترک اضافه کردیم؟ همه چیز در اینجا ساده است: برای انجام عملیات ناهمزمان در "1C: Enterprise 8" از وظایف پس زمینه استفاده می شود که مدیر خود را دارند - "BackgroundJobs Manager". این شی دارای متد Run است که برای شروع کار پس زمینه استفاده می شود.

بیایید به کمک نحو بپردازیم.

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

مرحله 3.در ماژول عمومی "AysynchronousProcessors" ما رویه صادرات OurLongedOperation () را اضافه می کنیم.

رویه صادرات OurLongedOperation (Duration) // شبیه سازی عملیات پیوسته (Duration sec.). OperationStartDate = CurrentDate (); در حالی که CurrentDate () - تاریخ شروع عملیات< Длительность Цикл КонецЦикла; КонецПроцедуры

مرحله 4.پردازش "AsynchronousProgrammingConcept" را به پیکربندی اضافه کنید (شما می توانید پردازش خارجی ایجاد کنید)

یک پروپوزال به فرم اضافه کنید:

مدت (تعداد)

و دو تیم

انجام یک عملیات طولانی؛

ExecuteLongOperationAsynchronously.

مرحله 5.با توجه به راهنمای نحو، ماژول فرم را پر کنید

& در رویه مشتری ExecuteLongOperation (فرمان) ExecuteLongOperationAtServer (); EndProcedure & OnServer Procedure ExecuteLongServerOperation () AsynchronousHandlers.OurLongOperation (Duration); EndProcedure & AtClient Procedure ExecuteLongOperationAsynchronously (Command) ExecuteLongOperationAsynchronouslyAtServer (); EndProcedure & AtServer Procedure ExecuteLongOperationAsynchronouslyOnServer () پارامترها = آرایه جدید; Options.Add (مدت); BackgroundJobs.Run ("AsynchronousHandlers.OurLongOperation"، پارامترها، New UniqueIdentifier، "نمونه ای از مفهوم برنامه نویسی ناهمزمان"); پایان رویه

مرحله 6.بیایید راه اندازی و بررسی کنیم!

نتیجه:

اگر روی دکمه "انجام عملیات طولانی" کلیک کنیم، رابط کاربری برای "مدت" ثانیه مسدود می شود.

اگر روی دکمه «اجرای عملیات طولانی به صورت ناهمزمان» کلیک کنیم، رابط کاربری مسدود نمی شود، بلکه کد برنامه به صورت موازی اجرا می شود.

با نگاه کردن به گزارش می توانیم تأیید کنیم که کد برنامه به صورت ناهمزمان اجرا شده است.

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

نمونه ای از اجرای کد ناهمزمان در 1C: Enterprise 8 با استفاده از BSP

نمونه ای از اجرای مفهوم برنامه نویسی ناهمزمان در "1C: Enterprise 8" در BSP به عنوان مثال پردازش "امور جاری" در نظر گرفته می شود.

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

بیایید کد برنامه فرم را تجزیه و تحلیل کنیم.

رویداد فرم "OnCreateAtServer" رویه را "RunBackgroundJob" می نامد - این همان چیزی است که ما به آن نیاز داریم.

بدون توجه به تفاوت های ظریف، ما این روش را تجزیه و تحلیل می کنیم

و در اینجا می بینیم که از Background Job Manager و روش Run آن استفاده شده است. توجه داشته باشید که توسعه دهندگان یک شناسه منحصر به فرد برای کار پس زمینه نگه می دارند.

برای این، توسعه دهندگان از روش استفاده می کنند ConnectWaitingHandler (<ИмяПроцедуры>, <Интервал>, <Однократно>).



در یک روش قابل اتصال Connectable_VerifyJobProcessing ()توسعه دهندگان یک تابع را فراخوانی می کنند کار تکمیل شده (شناسه شغلی)


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

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

بنابراین، مفهوم برنامه‌نویسی ناهمزمان در 1C: Enterprise 8 پیچیدگی حل مشکلات را برای توسعه‌دهنده کمی افزایش می‌دهد، اما عملکرد برنامه را از نظر کاربر به طرز چشمگیری بهبود می‌بخشد.

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

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

ابتدا بیایید بفهمیم که منظور آنها چیست و تفاوت آنها چیست:

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

فرض کنید شرکت ما چیزی را می فروشد و وب سایت خود را با قیمت دارد. ما می خواهیم آنها را یک بار در روز تخلیه کنیم تا ارتباط آنها حفظ شود.

پیکربندی را باز کنید و یک کار برنامه ریزی شده اضافه کنید.

تنظیم خواص

بیایید مهمترین پارامترهایی را که باید در خصوصیات آن پر شود در نظر بگیریم.

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

تنظیم برنامه

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

یک تنظیم برنامه معمولی را در 1C 8.3 خواهید دید. اینجا هیچ چیز سختی نیست. به عنوان بخشی از این مثال، ما راه اندازی تخلیه قیمت های خود را در سایت هر روز از پنج تا هفت صبح پیکربندی کردیم. در صورتی که کار برنامه ریزی شده قبل از ساعت 7:00 وقت نداشته باشد، روز بعد تکمیل می شود.

مسدود کردن کارهای برنامه ریزی شده

ابزار استاندارد "Administration of 1C Enterprise servers" را اجرا کنید و ویژگی های پایگاه اطلاعاتی را که در آن وظیفه برنامه ریزی شده را ایجاد کرده اید (برای نسخه های سرویس گیرنده-سرور 1C) باز کنید.

در پنجره ای که باز می شود (پس از وارد کردن لاگین و رمز عبور برای دسترسی به IB)، بررسی کنید که پرچم روی آیتم "Blocking of Sched scheduled is enabled" تنظیم نشده باشد. اگر با موقعیتی روبرو هستید که کار انجام نمی شود، ابتدا این تنظیمات را بررسی کنید.

به همین ترتیب، می توانید کارهای برنامه ریزی شده را در 1C 8.3 به طور کامل غیرفعال کنید. برای غیرفعال کردن کارهای پس‌زمینه خاص، می‌توانید از پردازش «کنسول کار پس‌زمینه» که در آخرین نسخه‌ها تعبیه شده است استفاده کنید.

پس زمینه و وظایف برنامه ریزی شده در حالت فایل

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

در این حالت، کارهای برنامه ریزی شده با استفاده از روش "RunJobProcessing ()" فعال می شوند.

همچنین می توانید از ساختار زیر استفاده کنید:

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

ردیابی خطاها در کارهای پس زمینه

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

گزارش تمام ورودی‌هایی را که با انتخاب شما مطابقت دارند را نشان می‌دهد و یک نظر دلیل خطا را نشان می‌دهد.

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

بیایید با یک مورد واقعی شروع کنیم. چندی پیش، یکی از مشتریان ما با شکایتی در مورد "ترمز" 1C از یکی از کارمندانش با ما تماس گرفت. علائم در این واقعیت بیان شد که پس از یک دوره زمانی مشخص، پیکربندی Trade Management 10 به شدت شروع به کند شدن کرد، یا به عبارت ساده تر، برای مدتی معلق ماند.

با تجزیه و تحلیل دقیق تر وضعیت، معلوم شد که این فقط برای یک کارمند اتفاق می افتد، و در هر محل کار، برای مدت طولانی اتفاق افتاده است، اما اگر قبلا "ترمزها" حدود یک ثانیه طول می کشد، اکنون، پس از به روز رسانی، آنها می توانند تا 15-20 ثانیه دوام بیاورند، که کار را بسیار ناراحت کننده می کند.

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

  • "ترمز" به طور مداوم و در فواصل زمانی منظم رخ می دهد
  • فقط یک کاربر "آهسته می شود"
  • در هر محل کار "آهسته می شود".

برای تایید حدس های ما، بیایید نگاه کنیم تنظیمات پارامترهای حسابداری:

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

و اینجا "قهرمان روز" است - وظیفه به روز رسانی فهرست جستجوی متن کامل، که هر 2.5 دقیقه یک بار راه اندازی می شود. در این مورد، با غیرفعال کردن اجرای کارهای برنامه ریزی شده تحت این کاربر، مشکل به طور کامل حل شد، با این حال، این همیشه امکان پذیر یا توصیه نمی شود، بنابراین، در زیر نحوه مدیریت کارهای برنامه ریزی شده و نحوه اطمینان از انجام آنها را بررسی خواهیم کرد. تاثیر منفی بر عملکرد ندارد

برنامه منظم

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

بسیاری از کارهای برنامه ریزی شده از طریق پیکربندی زیرسیستم های مرتبط مدیریت می شوند. به عنوان مثال، تنظیمات مربوط به کارهای برنامه ریزی شده مربوط به تبادل داده ها را باید در تنظیمات تبادل مربوط به EGAIS در تنظیمات تجارت الکل و غیره یافت.

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

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

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

برنامه مدیریت شده

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

برای مدیریت کارهای روتین، یک آیتم هتل در منو وجود دارد مدیریت - پشتیبانی و خدمات.

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

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

توجه ویژه ای باید به هر چیزی که مربوط به فهرست جستجو است معطوف شود. جستجوی تمام متن مطمئناً یک چیز راحت است، اما کار با فهرست آن یک کار بسیار بسیار منابع فشرده است. بنابراین، نباید افراط کرد و آن را رها کرد، بلکه باید به طور جدی در پارامترهای آن تجدید نظر و تنظیم کرد.

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

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

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

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

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

  • برچسب ها:

لطفا جاوا اسکریپت را برای مشاهده فعال کنید

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