پنجره modal در 1s چیست. چرا خطای "استفاده از پنجره های مودال در این حالت ممنوع است" رخ داده است؟ راه حل صحیح مسئله

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

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

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

نحوه حذف خطا در 1C: "استفاده از پنجره های مودال در این حالت ممنوع است"

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

عکس. 1

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



شکل 2

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

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



شکل 3

برنامه هایی که از طریق سرویس گیرنده وب ، در iPad ، در cloud استفاده می شوند ، به عنوان مثال در "1cfresh.com" ، از این حالت استفاده نمی کنند. در تمام تنظیمات جدید از حالت رابط بدون مد استفاده شده است.

رد حالت

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

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

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

Syntax Helper برای این دستورات نشان می دهد که اگر ویژگی پیکربندی باشد نحوه استفادهنصب شده در بکار نبرید، سپس باید از دستورات دیگری مانند کد زیر در برنامه برنامه استفاده کنید ShowQuestion () ، ShowWarning (), ShowEnterNumbers ():

برای کار با این شرایط ، برنامه 1C 8.3 یک شی system جدید سیستم "شرح هشدار" فراهم می کند ، که برای توصیف روش ماژول برنامه در هنگام وقوع یک رویداد مورد انتظار ، مانند بستن فرم یا گفتگوی بدون حالت ، استفاده می شود:

این نگاهی است به مسئله "از درون" برای کسانی که می خواهند با علت اصلی مقابله کنند. در درجه اول برای برنامه نویسان 1C. چطور در این شرایط کاربران عادیخطا را بدون شرح بیشتر برطرف کنید کد برنامه؟ یک روش بسیار ساده وجود دارد.

دستورالعمل های تصحیح خطا برای کاربران عادی

مرحله 1. کار را کامل کنید:

مرحله 2. برای راه اندازی پیکربندی به منوی شروع برگردید. مورد منو "پیکربندی" را انتخاب می کنیم:

مرحله 3. "Configurator" را باز کنید: در پانل بالا دکمه "Configuration" را پیدا کرده و در لیست پیشنهادی ، منوی "Open configuration" را انتخاب کنید:

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

مرحله 5. فرم "Properties" را باز کنید:

مرحله 6. خط "حالت استفاده از روش" (در پایین لیست) را پیدا کنید:

به طور پیش فرض ، برنامه 1C 8.3 روی "استفاده نشود" تنظیم شده است. ما مقدار "Do not use" را به مقدار "Use" ترجمه کنیم:

نتیجه:

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

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

نحوه کار در رابط کاربری "تاکسی" ، نحوه شخصی سازی محل کار "برای خود" ، نوار پیمایش Favorites ، نحوه جستجوی متن کامل ، روش های کار با مجلات ، دکمه "انتخاب" در اسناد ، انتقال پیوند به اسناد ، تأیید و سایر ویژگی ها در رابط جدید - همه اینها را می توانید از فیلم ما یاد بگیرید:

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


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

در این مقاله دلایل اصلی کنار گذاشتن حالت در بستر 1C: Enterprise و روشهای اصلی برای تبدیل بخش کد به یک مدل ناهمزمان جدید مورد بررسی قرار می گیرد.

قابل اجرا بودن

این مقاله در مورد مدل ناهمزمان ساخت منطق تجارت ، سیستم عامل اضافه شده "1C: Enterprise" نسخه 8.3 بحث می کند. اطلاعات ارائه شده مربوط به نسخه های فعلی سیستم عامل است.

امتناع از استفاده از پنجره های استاندارد در سیستم عامل 1C: Enterprise 8.3

هنگام ایجاد پیکربندی بر روی پلت فرم 1C: Enterprise 8 ، لازم است هر از چندگاهی عملکرد برنامه را به حالت تعلیق درآید تا اینکه کاربر تصمیم بگیرد یا عملیاتی انجام دهد.

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

این رفتار را می توان برای مثال با کد زیر تهیه کرد:

& OnClient
روش محصولات پر(تیم)
پاسخ = س (ال ("بخش جدول پاک می شود ، ادامه می دهید؟" ، حالت گفتگوی سوال بله خیر);
اگر پاسخ = بازگشت کد گفتگو بلهسپس
// الگوریتم پر کردن
پایان اگر
پایان رویه

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

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

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

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

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

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

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

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

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

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

اگر گزینه "استفاده" انتخاب شود ، می توانید پنجره های مد را باز کنید. اگر گزینه "Do not use" انتخاب شده باشد ، مجوزها مجاز نیستند. هنگام تلاش برای فراخوانی روشی که پنجره ای مود را باز می کند ، سیستم پیام خطایی را نمایش می دهد:

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

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

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

تفاوت اصلی بین مسدود کردن و پنجره های مودال این است که باز کردن یک پنجره مسدود کننده اجرای کد را مکث نمی کند.

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

کد باید به دو قسمت تقسیم شود:

  • باز کردن یک پنجره مسدود کننده
  • مدیریت انتخاب کاربر.

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

& OnClient
روش محصولات پر(تیم)
هشدار = جدید هشدارها(، این موضوع)

حالت گفتگوی سوال بله خیر);
پایان رویه
& OnClient
روش (نتیجه ، گزینه های اضافی) صادرات
اگر نتیجه = بازگشت کد گفتگو بلهسپس
// الگوریتم پر کردن
پایان اگر
پایان رویه

پس از اجرای رویه ShowQuestion () ، سیستم متوقف نمی شود ، منتظر جواب کاربر ، اجرای کد ادامه دارد.

کاربر فقط پس از اتمام مراحل کامل قادر به انتخاب خواهد بود. این روش صادرات FillProductsQuestionCompletion () است. نام آن را به سازنده شی Alert Description منتقل کردیم.

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

در مثال بالا ، روش فراخوانی شده در ماژول فرم مدیریت شده قرار دارد ، بنابراین ما اینObject را به پارامتر منتقل کردیم.

فراخوانی رویه ای را که در یک ماژول مشترک قرار دارد در نظر بگیرید. برای انجام این کار ، یک ماژول پردازش هشدار عمومی جدید اضافه کنید ، پرچم "Client (برنامه مدیریت شده)" را برای آن تنظیم کنید و پرچم "Global" را علامت گذاری کنید. رویه FillProductsQuestionCompletion () را در این ماژول قرار دهید.

سپس کنترل کننده دستور fill به صورت زیر خواهد بود:

& OnClient
روش محصولات پر(تیم)
هشدار = جدید هشدارها("FillProductsQuestionFinishing",
پردازش هشدارها);
QuestionText = "بخش جدول پاک می شود. ادامه می دهید؟ " ؛
نمایش س Questionال (هشدار ، متن س Questionال ، حالت گفتگوی سوال بله خیر);
پایان رویه

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

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

این شی (از هر نوع) به روشی که در AlertDescription به عنوان آخرین پارامتر توصیف شده منتقل می شود.

با استفاده از مثال قسمت کد بالا ، این کار را می توان به صورت زیر انجام داد:

& OnClient
روش محصولات پر(تیم)
پارامتر 1 = 0
پارامتر 2 = 0؛
لیست پارامترها= ساختار جدید ("پارامتر 1 ، پارامتر 2" ، پارامتر 1 ، پارامتر 2) ؛
هشدار = جدید هشدارها("FillProductsQuestionFinishing"، این موضوع ،
لیست پارامترها);
ShowQuestion (هشدار ، "بخش جدول پاک می شود. ادامه می دهید؟") ،
حالت گفتگوی سوال بله خیر);
پایان رویه
& OnClient
روش پر کردن محصولات سuesال پایان(نتیجه ، گزینه های اضافی) صادرات
اگر نتیجه = بازگشت کد گفتگو بلهسپس
// تجزیه اضافی پارامترها. پارامتر 1
// تجزیه پارامترهای اضافی. پارامتر 2
پایان اگر
پایان رویه

اگر شما فقط باید یک مقدار را تصویب کنید ، از ساختار نمی توان استفاده کرد ، اما این مقدار را به پارامتر AdditionalParameters سازنده شی DescriptionAlerts اختصاص دهید.

بیایید چند نمونه از کار با مسدود کردن پنجره ها را بررسی کنیم.

وظیفه 1. باز کردن فرم دیگر

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

یک فرم کلی "ParameterForm" ایجاد کنید که پارامترهای Parameter1 و Parameter2 و همچنین دستور CloseForm را روی آن قرار می دهیم:

کنترل کننده دستور به صورت زیر است:

کنترل کننده دستور به صورت زیر است: & OnClient
بستن فرم (دستور)
لیست پارامترها= ساختار جدید ( "پارامتر 1 ، پارامتر 2"، پارامتر 1 ، پارامتر 2) ؛
نزدیک ( لیست پارامترها) پایان رویه

برای فرم ، ویژگی WindowOpening Mode را روی "قفل کردن کل رابط" تنظیم کنید:

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

& OnClient
روش پارامترهای Open(تیم)
هشدار = جدید هشدارها("OpenParametersCompletion"، این موضوع)
OpenForm ( "GeneralForm.ParameterForm"،،،،،، اطلاع)؛
پایان رویه
& OnClient
روش پارامترهای Open(نتیجه ، گزینه های اضافی) صادرات
اگر TypeZnch (نتیجه) = نوع ("ساختار") را تایپ کنید
برای هر مقدار کلیدی از چرخه نتیجه
پیام = جدید پیام به کاربر;
Message.Text = "کلید:" " "+ KeyValue.Key +" ""، مقدار = "
+ ارزش کلیدی;
پیام. اطلاعات();
پایان چرخه ؛
پایان اگر
پایان رویه

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

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

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

& OnClient
روش پارامترهای Open(تیم)
هشدار = جدید هشدارها("OpenParametersCompletion"، این موضوع)
OpenForm ( "GeneralForm.ParameterForm"،،،،،، هشدار ،
ModeOpenWindowForms.LockAllInterface
);
پایان رویه

وظیفه 2. هنگام بستن فرم س Questionال کنید

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

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

& OnClient
تغییر دادن نیاز به بستن;
& OnClient
روش قبل از بستن (سلب مسئولیت ، پردازش استاندارد)
اگر نه نیاز به بستن= درست است پس
امتناع = درست است؛
هشدار = جدید هشدارها("BeforeCloseCompletion"، این موضوع)
ShowQuestion (هشدار ، "آیا مطمئن هستید که می خواهید پنجره را ببندید؟") ،
حالت گفتگوی سوال بله خیر
);
پایان اگر
پایان رویه
& OnClient
روش قبل از بستن(نتیجه ، گزینه های اضافی) صادرات
اگر نتیجه = بازگشت کد گفتگو بلهسپس
نیاز به بستن= درست است
نزدیک ()؛
در غیر این صورت
نیاز به بستن= تعریف نشده
پایان اگر
پایان رویه

در روال قبل از بستن فرم ، از کاربر س questionال می شود ، پرچم Refuse روی True تنظیم می شود و فرم بسته می شود.

پس از پاسخ مثبت به سوال ، متغیر NeedCloseForm روی True تنظیم می شود ، فرم دوباره بسته می شود.

وظیفه 3. وارد کردن مقدار عددی

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

برای این کار ، از روش ShowNumberEnter () به جایNumberEnter () استفاده کنید ، که به جای یک پنجره مدرن ، یک پنجره مسدود کننده باز می کند.

& OnClient
روش ورود شماره (فرمان)
هشدار = جدید هشدارها("EnterNumberCompletion"، این موضوع)
ShowEnterNumbers(اطلاعیه ، 0 ، "مقدار را وارد کنید" ، 15 ، 3) ؛
پایان رویه
& OnClient
روش EnterNumbersCompletion را وارد کنید(نتیجه ، گزینه های اضافی) صادرات

پیام = جدید پیام به کاربر;
Message.Text = "شما مقدار را وارد کرده اید" + نتیجه؛
پیام. اطلاعات();
پایان اگر
پایان رویه

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

وظیفه 4. انتخاب رنگ

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

دستور SelectColor را با فرم کنترل کننده زیر به فرم اضافه کنید:

& OnClient
روش انتخاب رنگ (فرمان)
DialogueSelectColors= جدید DialogueSelectColors;
هشدار = جدید هشدارها("SelectColorCompletion"، این موضوع)
گفتگو را انتخاب کنید رنگ.نمایش (اطلاع رسانی) ؛
پایان رویه
& OnClient
روش انتخابهای رنگها(نتیجه ، گزینه های اضافی) صادرات
اگر نتیجه نباشد = تعریف نشده سپس
عناصر. رنگ. رنگ= نتیجه
پایان اگر
پایان رویه

برای اشیا Color ColorSelectDialogue (و همچنین StandardPeriodEdit Dialogue ، FormatString Constructor ، RegularJobScheduleDialogue ، FontSelect Dialogue) ، روش Show () یک پنجره مسدود کننده باز می کند.

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

لازم به ذکر است که شی FileSelectDialog بر خلاف محاوره های انتخاب رنگ یا قلم ، از روش Show () برخوردار نیست ، زیرا اجرای این گفتگوها به طور چشمگیری متفاوت است.

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

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

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

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

و شما فقط دو راه برای حل مسئله شرح داده شده در بالا دارید:

  1. سیستم عامل را برای انتشار نسخه 8.3.10+ (8.3.11) ارتقا دهید ، ویژگی پیکربندی "حالت سازگاری" را بر روی "استفاده نکنید" تنظیم کنید و قطعات کد را که از روشهای معین استفاده می کنند ، به یک مدل ناهمزمان برای ایجاد منطق کسب و کار بازنویسی کنید
  2. به مشتریان خود توصیه کنید از مرورگرهای قدیمی که در آن تماس های معمولی پشتیبانی می شود ، استفاده کنند ( موزیلا فایرفاکسنسخه 37 به پایین ، Chrome زیر نسخه 37 و غیره).

به هر حال ، با شروع نسخه 8.3.11 ، مرورگرهای وب مایکروسافت دیگر پشتیبانی نمی شوند اینترنت اکسپلوررنسخه های 8 و 9.

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

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

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

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

همکاران ، دو چیز وجود دارد که می توانید بی وقفه بخوانید: خوراک VKontakte و لیست تغییرات در نسخه بعدی سیستم عامل ، بنابراین بیایید نتایج نهایی را خلاصه کنیم ؛)

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

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

به جای نتیجه گیری

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

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

15
برای ایجاد یک شرکت در عادی یا معمولی برنامه مدیریت شدهاز کلیدهای زیر استفاده می شود: / RunModeOrdinaryApplicate کلاینت ضخیم را در حالت عادی شروع می کند ، با وجود تنظیمات پیکربندی و کاربری که از طرف او 3
لازم است که کاربران نتوانند رابط کاربری تنظیم شده برای خود را تغییر دهند! راه حل: برای غیرفعال کردن آن ، باید "ذخیره اطلاعات کاربر" را در حقوق دسترسی عنصر پیکربندی ریشه حذف کنید. تنظیم پانل ها و مورد من 2
در کار فعلی ، کاربر معمولاً چندین شی را باز می کند. این می تواند یک سند ، کتاب مرجع ، گزارش و غیره باشد. در رابط قبلی ، هیچ مشکلی برای پیدا کردن سریع یک شی باز و به روزرسانی آن برای کار بیشتر با استفاده از ویندوز یا 2
در مقاله آخر: نصب یک طبقه بندی آدرس (KLADR) در 1C ، من به شما گفتم Kladr چیست و چگونه می توان آن را در فرم های معمولی 1C بارگذاری کرد (8.0-8.2). در این مقاله ، من نحوه بارگذاری طبقه بندی آدرس (KLADR) را در شما توضیح خواهم داد رابط مدیریت شدهو 2
غالباً ، هنگام ایجاد یک پیکربندی خاص ، کاربران می خواهند عکس ها را به عنصر فهرست وصل کنند و به این ترتیب آنها در پایگاه داده ذخیره می شوند. در این مقاله من به شما می گویم که چگونه ذخیره عکس را به صورت مرجع به کتاب مرجع اشیا construction ساختمانی متصل کنید

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

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

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

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

اگر PM عدد()< >0 سپس پاسخ = سوال (" // این خط یک پنجره مدال با یک سوال را نمایش می دهد و اجرای کد متوقف می شود تا زمانی که کاربر پاسخ دهداگر پاسخ = DialogReturnCode. بدون پس بازپرداخت پایان اگر // کاربر با ادامه موافقت کرد PM پاک کردن ()؛ پایان اگر // اقدامات بیشتری انجام دهید // اگر PM خالی باشد یا کاربر به س aboutال درباره پر شدن غذا پاسخ مثبت دهد ، این برنامه به اینجا می رسدانجام اقدامات بیشتر ()؛

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

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

نحوه تغییر کد نوشته شده قبلی:

// لازم است PM را با داده پر کنید // PM را از نظر کامل بودن بررسی کنیداگر PM عدد()< >0 سپس // PM خالی نیست ، باید از کاربر در مورد سرریز بپرسید ShowQuestion (توضیحات جدید Alert (" تکمیل OverflowPTC"، ThisObject، AdditionalParameters)،" نخست وزیر بیش از حد پر خواهد شد. ادامه می دهید؟"، گفتگوی حالت. بله خیر)؛ // این خط پنجره ای با سوال نشان می دهد ، اما اجرای کد متوقف نخواهد شددر غیر این صورت // اگر PM خالی باشد برنامه به اینجا می رسد PerformFternalActions () ؛ پایان اگر // برنامه در هر صورت به اینجا خواهد رسید ، خواه نخست وزیر خالی باشد یا نه // (مگر اینکه البته در کد قبلی خطایی رخ نداده باشد) . . . // روش صادرات در همان ماژول // بعد از پاسخ کاربر به سال تماس گرفته می شود& روی روش کارفرما OverflowPOFC تکمیل (ResponseResult ، پارامترهای اضافی) صادر کردن اگر ResponseResult = DialogReturnCode. پس نه // کاربر از ادامه کار خودداری کردبازپرداخت پایان اگر // اقدامات بعدی را انجام دهید // اگر PM خالی نباشد و کاربر به سوال مثبت درباره پر کردن پاسخ مثبت دهد ، برنامه به اینجا می رسد PM پاک کردن ()؛ PerformFternalActions () ؛ پایان رویه

بنابراین ، از آنجا که با اجرای رویه ShowQuestion برنامه متوقف نخواهد شد ، همه رویدادها باید با دقت کنترل شوند.
هنگام حل این مشکل ، اجرای اقدامات بعدی می تواند در دو رویداد رخ دهد:
1. اگر PM خالی بود
2. اگر PM خالی نبود و کاربر به سوال سرریز پاسخ مثبت داد

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

مکانیسم مشابهی برای عملکردهای متقابل کاربر مشابه (SelectValue ، SelectFrom List و غیره) استفاده می شود