نحوه راه اندازی گوشی های هوشمند و رایانه های شخصی. پرتال اطلاعاتی
  • خانه
  • مشاوره
  • چرا خطای "استفاده از روش های همزمان در مشتری ممنوع است" رخ می دهد؟ استفاده از روش های همزمان بر روی مشتری ممنوع است 1s.

چرا خطای "استفاده از روش های همزمان در مشتری ممنوع است" رخ می دهد؟ استفاده از روش های همزمان بر روی مشتری ممنوع است 1s.

"استفاده از پنجره های مدال در این حالت ممنوع است" - این خطا اکنون با ورود رابط جدید پلت فرم 1C 8.3 - " " کاربران و برنامه نویسان 1C را آزار می دهد.

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

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

ما به خصوص اغلب یک خطای مدالیته را در روش های 1C زیر مشاهده می کنیم:

  • سوال؛
  • هشدار؛
  • OpenValue.

با انتشار رابط جدید "تاکسی"، توسعه دهندگان پلت فرم 1C 8 تصمیم درستی گرفتند - سعی کردند توسعه دهندگان راه حل های برنامه را به روشی جدید آموزش دهند. آنها یک ویژگی را در پلت فرم جدید گنجانده اند - "حالت حالت".

تعمیر سریع

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

برای انجام این کار، در حالت وارد سیستم شوید، پیکربندی را باز کنید:

در یک پیکربندی باز، با کلیک راست بر روی ریشه پیکربندی و انتخاب "Properties"، منوی زمینه را فراخوانی کنید:

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

ویژگی های پیکربندی باز می شود، جایی که در پاورقی ویژگی مورد نظر ما وجود دارد - "Modality use mode"، حالت "Use" را انتخاب کنید:

پس از آن، با فشار دادن کلید "F7" تغییرات را ذخیره و اعمال کنید.

راه حل صحیح مشکل

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

اخطار، سؤال، کادرهای محاوره‌ای و سایر روش‌ها همگی باید به روشی جدید بازنویسی شوند.

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

مثلا:

  • هشدار - ShowWarning;
  • Question - ShowQuestion (جزئیات - );
  • - ShowInputNumbers.

در همان زمان، یک شی تخصصی ظاهر شد - توضیحات اعلان.

مثال جایگزینی:

String = "" ; EnterString(رشته، "یک مقدار رشته را وارد کنید") Notify("شما وارد کردید" + رشته) ;

باید با:

String = "" ; DescriptionAlerts = New DescriptionAlerts( "TestLineInput"، ThisForm) ; ShowLineInput(DescriptionAlerts, String, "یک مقدار رشته را وارد کنید") ;

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

&در رویه کلاینت TestInputString(ReceivedValue، PassedParameters) Export Notify("شما وارد کردید" + رشته) ; پایان رویه

فرم هایی که در پیکربندی ایجاد می شوند به همین ترتیب باز می شوند. کافی است روش "OpenFormModal" را با "OpenForm" جایگزین کنید و توضیحی از هشدار و روش جدید مورد نیاز برای آن را مشخص کنید.

برای مسدود کردن دسترسی به فرم فراخوانده شده با باز کردن یک فرم، فقط مقدار «Block مالک پنجره» را در ویژگی «Window Opening Mode» فرم مشخص کنید:

چاپ (Ctrl+P)

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

&OnClient
روش حذف (فرمان)
DeleteFiles(Temporary Files Directory()، GetMaskAllClientFiles());

پایان رویه
تکنیک ناهمزمان متفاوت به نظر می رسد:

&OnClient
روش حذف (فرمان)
پاسخ به تماس = جدید DescriptionAlerts("GetTemporaryFileDirectoryCompletion"، ThisObject، "DeleteError"، ThisObject);
StartGettingTemporaryFileDirectory(Callback);
پایان رویه
&OnClient
روش GetTemporaryFileDirectoryCompletion(TemporaryFileDirectoryName، AdditionalParameters)صادرات
پاسخ به تماس = جدید DescriptionAlerts("DeleteCompletion"، ThisObject، "FileError"، ThisObject);
StartDeletingFiles(Callback، TemporaryFileDirectoryName، GetMaskAllClientFiles());
پایان رویه
&OnClient
روش DeleteComplete (گزینه های اضافی) صادر کنید
اطلاع رسانی ("حذف با موفقیت انجام شد")؛
پایان رویه
&OnClient
روش FileError (ErrorInfo، StandardProcessing، AdditionalOptions)صادرات
گزارش ("هنگام انجام عملیات فایل با خطایی مواجه شد: " + BriefErrorIntroduction(ErrorInfo));
پایان رویه

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

کار با فایل ها در سرویس گیرنده وب

کار با فایل ها در وب کلاینت دارای تعدادی ویژگی است:
1. بدون نصب برنامه های افزودنی، در هر مرورگر وب، فقط متدهای GetFile() و StartPlaceFile() در دسترس هستند. روش PlaceFile() هنگام کار با مرورگر وب Google Chrome پشتیبانی نمی‌شود و اگر پیکربندی اجازه استفاده از روش‌های modal را نمی‌دهد (ویژگی پیکربندی حالت استفاده Modality، اینجا را ببینید).
2. هنگام نصب برنامه افزودنی برای کار با فایل ها در همه مرورگرهای وب به جز Google Chrome، هر دو روش همزمان و ناهمزمان برای کار با فایل ها در دسترس هستند (همگام یا ناهمزمان بستگی به ویژگی پیکربندی حالت استفاده Modality دارد).
3. فقط یک پسوند ناهمزمان برای کار با فایل ها برای مرورگر وب Google Chrome موجود است. عملیات همزمان پشتیبانی نمی شود.
4. پسوند فایل از کار بر روی پروتکل HTTPS با استفاده از گواهی مشتری پشتیبانی نمی کند.
نکته 1: برای عملکرد صحیح پسوند مدیریت فایل در مرورگر وب Microsoft Internet Explorer استفاده از آن توصیه می شود
کتابخانه های Microsoft Core XML Services (MSXML) نسخه 4.0 یا 6.0.
نکته 2. پسوند فایل برای مرورگر وب Microsoft Internet Explorer در پوشه %APPDATA%\1C\1СEWebExt\FileSystemExtIE نصب شده است.

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

بعد از تغییر تنظیمات یا کد 1C مشکل برطرف می شود.

چنین محتوای اطلاعاتی به شما امکان می دهد عملکرد برنامه 1C را بازیابی کنید و همچنین در آینده از اشتباهات جدی که باعث ایجاد مشکلات می شود جلوگیری کنید.

الگوریتم تصحیح خطاها در 1C

خطای زیر نیز در 1C ظاهر می شود: "استفاده از روش های همزمان در مشتری ممنوع است." در صورت وقوع نباید وحشت کنید؛ کافی است با مطالعه توصیه‌های ارزشمند کاربران با تجربه، دنباله اقدامات خود را پیمایش کنید.

ایجاد تغییرات در تنظیمات برنامه

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

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

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

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

تغییر کد

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

کد برنامه را باز کنید. نام رویه (Procedure OpenLiFile1()) و انتهای آن (EndProcedure) را بدون تغییر بگذارید، اما بدنه رویه را به طور اساسی تغییر دهید.

شما فقط باید سه خط بنویسید:

Alert = New AlertDescription("RecordOrMore",ThisObject);
QuestionText = "بنویسید؟";
ShowQuestion(Alert، QuestionText، DialogModeQuestion.YesNo);

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

پیاده سازی شده در نسخه 8.3.5.1383, 8.3.6.1977.

گرایش های مدرن

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

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

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

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

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

روش های ناهمزمان

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

مثلا به جای روش رمزگذاری ()ما اکنون استفاده از روش را توصیه می کنیم StartEncrypt():

Cryptography Manager.Encrypt(<ИсходныеДанные>, <Получатели>) Cryptography Manager.Start Encryption(<ОписаниеОповещения>, <ИсходныеДанные>, <Получатели>)

به جای روش GetFiles () - StartGettingFiles():

GetFiles(<ПолучаемыеФайлы>, <ПолученныеФайлы>, <РасположениеФайлов>, <Интерактивно>) شروع به دریافت فایل ها ((<ОписаниеОповещения>, <ПолучаемыеФайлы>, <РасположениеФайлов>, <Интерактивно>)

بجای SetExternalComponent()- StartInstallingExternalComponents():

SetExternalComponent(<Местоположение>) شروع به نصب اجزای خارجی (<ОписаниеОповещенияОЗавершении>, <Местоположение>)

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

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

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

شما معمولاً برای چنین استثناهایی در کد برنامه خود مدیریت ارائه می دهید. با استفاده از اپراتور تلاش... استثنا. اما اکنون این غیر ممکن می شود، زیرا در زمان تماس ناهمزمان، کد برنامه اجرا نمی شود. بر این اساس، اپراتور کار نمی کند تلاش... استثنا.

  • NameProcedureProcessingErrors;
  • ErrorProcessingModule.

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

ویژگی پیکربندی

همانطور که در مورد رد مدالیته، کل راه حل برنامه به طور کلی باید بداند که "چیست". یا معین است یا غیر معین. یا همزمان یا ناهمزمان است.

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

ماهیت استفاده از آن به شرح زیر است:

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

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

به طور طبیعی، مانند تماس‌های مدال، احتمالاً سؤالی دارید. آیا باید راه حل برنامه خود را دوباره انجام دهم؟ و به طور کلی، آیا باید از این روش های ناهمزمان در راه حل کاربردی جدیدم استفاده کنم؟

چه زمانی نیاز است؟

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

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

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

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

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

Refactoring

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

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

بنابراین، ما این ابزارهای موجود را برداشتیم، آنها را گسترش دادیم و آنها را از "دور شدن از حالت" به "انتقال به ناهمزمانی" تغییر جهت دادیم. در هسته خود، انتقال به روش های ناهمزمان مشابه اقداماتی است که هنگام کنار گذاشتن مدالیته انجام می شود. تماس‌های قدیمی، «غیر مد»، همزمان (مدال) باید با تماس‌های ناهمزمان جدید، «مد» جایگزین شوند. پردازش هشدارها.

در این فرم به روز شده، ابزارهای refactoring در نسخه در دسترس شما قرار گرفته است 8.3.6.1977 .

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

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

بهترین مقالات در این زمینه