Модальні вікна 1c. Що робити, якщо "використання модальних вікон у цьому режимі заборонено"

У Синтаксис-Помічнику для цих команд зазначено, що у випадку, якщо для конфігурації властивість РежимВикористання Модальностівстановлено в Не використовувати, слід використовувати в програмному коді інші команди, такі як ПоказатиПитання(), ПоказатиПопередження(), ПоказатиВведенняЧисла():

Для роботи з цими ситуаціями у програмі 1С 8.3 передбачено новий системний об'єкт «Опис Оповіщення», який використовується для опису виклику процедури програмного модуля при настанні будь-якої очікуваної події, як-от закриття форми або немодального діалогу:

Це погляд на проблему зсередини для тих, хто хоче розібратися з першопричиною. Насамперед для програмістів 1С. Як у цій ситуації звичайним користувачам виправити помилку без опрацювання програмного коду? Існує дуже простий метод.

Інструкція з виправлення помилки для звичайних користувачів

Крок 1. Завершити роботу:

Крок 2. Повертаємось у стартове меню для запуску конфігурації. Вибираємо пункт меню «Конфігурація»:

Крок 3. Відкриваємо «Конфігуратор»: на верхній панелі знаходимо кнопку «Конфігурація», та у запропонованому списку вибираємо меню «Відкрити конфігурацію»:

Крок 4. Встановлюємо курсор на Конфігурацію і правою кнопкою мишки викликаємо контекстне меню, в якому вибираємо пункт «Властивості»:

Крок 5. Відкриваємо форму «Властивості»:

Крок 6. Знаходимо рядок "Режим використання модальності" (внизу списку):

За замовчуванням у програмі 1С 8.3 стоїть значення "Не використовувати". Перекладаємо значення «Не використовувати» у значення «Використовувати»:

Результат:

Якщо помилка «Використання модальних вікон у цьому режимі заборонено» в 1С 8.3 пішла, можна працювати далі. Зазвичай так і відбувається.

Але якщо помилка модальності в 1С залишилася після виконання всіх цих дій, слід звернутися до програмістів, які обслуговують і підтримують вашу програму 1С.

Як працювати в інтерфейсі "Таксі", як зробити налаштування робочого місця "під себе", налаштування панелі навігації Вибране, як здійснювати повнотекстовий пошук, прийоми роботи з журналами, кнопка "вибору" в документах, передача посилань на документи, верифікація та інші можливості новий інтерфейс – все це можна дізнатися з нашого відео:

Більш детально про те, як правильно та швидко організувати навігацію за програмою 1С 8.3, використовуючи новий інтерфейс ТАКСІ, про нові можливості у використанні звичних інструментів, таких як вбудований калькулятор, календар, порівняння файлів, передача посилань на документи колегам розглянуто на нашому курсі ““


Поставте вашу оцінку цій статті:

Впровадження нового інтерфейсу платформи 1С 8.3 - "таксі" - призвело до того, що користувачі та програмісти зіткнулися з помилкою такого змісту: "Використання модальних вікон у цьому режимі заборонено".
Мал. 1

Розробники технологічної платформи 1С прагнуть досягти успіху за світовими тенденціями шляхом приведення програмного забезпечення у відповідність зі світовими стандартами. Останнє ж неминуче призводить до єдиного інтерфейсу, близького до веб-сторінок.

Модальні вікна, що спливають, будучи ознакою поганого тону, вже давно були визнані неприпустимими при розробці софту. У свідомості користувачів твердо укоренилася потреба роботи "в одному вікні".

Розробники платформи 1С спробували залучити розробників прикладних рішень до роботи "по-новому". З впровадженням нового інтерфейсу "таксі" вони доповнили нову платформу новою функцією - "режим використання модальності".

Швидке виправлення проблеми

В умовах відсутності часу при необхідності швидко вирішити завдання, можна вдатися до досить простого, але не надто правильного рішення - слід лише змінити режим модальності у властивостях конфігурації.

З цією метою зайдіть у систему в режим конфігуратора, відкрийте конфігурацію:

Після цього натисканням на корінь конфігурації правою кнопкою миші відкрийте контекстне меню, виберіть "Властивості":


Мал. 3

У властивостях конфігурації у вкладках знайдіть "Режим використання модальності", в ньому виберіть "Використовувати":


Мал. 4

Збережіть та застосовуйте досконалі зміни натисканням клавіші "F7".

У платформі 1С версії 8.3 з'явився новий режим роботи програми без використання модальності. Точніше нових режимів з'явилося два: без використання модальності та використовувати модальність, але з попередженням. А старий режим роботи позначений як використовувати модальність.

Що це все означає?У ранніх версіях платформи ми використовували різні модальні віконця і особливо не замислювалися про це. Наприклад, треба вивести попередження користувачеві чи треба поставити запитання чи ввести якесь значення чи вибрати файл. Все це модальні віконця.

Що означає модальні?Це означає, що при викликі даного вікна воно перекриває собою всі інші вікна, тобто виводиться на верх і блокує роботу з іншими вікнами до завершення роботи з цим вікном. Крім блокування вікон зупиняється виконання коду рівно тому місці, де відбувається виклик цього вікна і продовження виконання коду здійснюється лише після закриття такого вікна. З того місця, де виконання зупинилося. Проілюструю виклик модального вікна на прикладі виклику форми вибору періоду:

&На Клієнті

Стандартна Обробка = Брехня;




Якщо Діалог. Редагувати () Тоді // Виклик модальної форми. Продовження виконання коду відбудеться лише після закриття форми.
Елементи.Послуги.ПоточніДані.ДатаПочатку = Діалог.Період.ДатаПочатку;
Елементи.Послуги.ПоточніДані.ДатаЗакінчення = Діалог.Період.ДатаЗакінчення;
КінецьЯкщо;

КінецьПроцедури


Як бачимо для обробки виклику модального вікна вибору періоду достатньо однієї процедури.

Чому модальні вікна це погано?Тепер розберемося, чому фірма 1С вирішила відмовитись від використання модальних вікон. Ну перш за все це наслідок того, що платформа 1С може використовуватися не тільки у звичайному вигляді - у вигляді робочого стола, але і може запускатися в браузері і може запускатися у вигляді мобільного додатка.

З браузерами проблема така. Модальність вікон в них реалізується за допомогою окремих вікон браузера. Вони практично всіма браузерами підтримуються, але через частого використання таких вікон для реклами практично всі розробники браузерів з ними борються і за замовчуванням відключають можливість використання таких вікон. Як наслідок, щоб забезпечити можливість роботи користувача 1с у браузері доводиться змушувати його дозволяти ці вікна, посвячувати усі тонкощі роботи 1с і браузерів і взагалі перевантажувати непотрібною інформацією.

Окремий нюанс із браузерами для планшетних комп'ютерів та браузерами для телефонів. У більшості випадків такі браузери не підтримують спливаючі вікна. Не сумісні інтерфейси (монітори та пристрої введення) таких пристроїв із спливаючими вікнами.

Ну і нарешті мобільний додаток 1С теж не зовсім здружився з модальними вікнами.

Звідси висновок:модальні вікна не використовувати. А що використати замість них? Замість них потрібно використовувати ті самі вікна, але без режиму модальності. У новій платформі 1С також розробила для кожного вікна такий режим. Він реалізується у вигляді окремого методу кожного діалогу. Такий режим дозволяє викликати вікно, але не зупиняти виконання програмного коду. Технічно в браузерах це реалізується у вигляді псевдо вікна, що з'являється всередині батьківського вікна, але його перекриває. Те, що код продовжує виконуватися після відкриття вікна означає, що ви не зможете відразу за кодом виклику вікна отримувати вибрані в ньому значення. Вони ще не обрані. Тому отримання та обробка цих значень здійснюється в окремій процедурі, яка викликається при закритті такого вікна та вказується ця процедура під час виклику методу відкриття вікна. Розберемо на прикладі того ж вікна вибору періоду.

&На Клієнті
Процедура ПослугиДатаПочаткуПочатокВибору(Елемент, ДаніВибору, СтандартнаОбробка)

Стандартна Обробка = Брехня;

Діалог = Новий ДіалогРедагуванняСтандартногоПеріоду();
СтандартнийПеріод = Новий СтандартнийПеріод();

ДатаПочатку = Елементи.Послуги.ПоточніДані.ДатаПочатку;
ДатаЗакінчення = Елементи.Послуги.ПоточніДані.ДатаЗакінчення;

СтандартнийПеріод.ДатаПочатку = ДатаПочатку;
СтандартнийПеріод.ДатаЗакінчення = ДатаЗакінчення;
Діалог.Період = СтандартнийПеріод;

ОписОповіщення = Новий ОписОповіщення("ОбробкаВиборуПеріоду",ЦяФорма);

Діалог.Показати (Опис Оповіщення)

КінецьПроцедури

&На Клієнті
Процедура ОбробкаВиборуПеріоду(Період,Параметри) Експорт

Якщо період<>Невизначено Тоді

Елементи.Послуги.ПоточніДані.ДатаПочатку = Період.ДатаПочатку;
Елементи.Послуги.ПоточніДані.ДатаЗакінчення = Період.ДатаЗакінчення;

КінецьЯкщо;

КінецьПроцедури


Як бачимо замість Редагувати() викликається Показати(). І опрацювання події вибору вже в іншій процедурі.

Отже, як обходиться без модальності, ми розібралися. Тепер розберемося для чого потрібний режим використання модальності із попередженням. По суті, це такий перехідний режим. Коли ви ще не встигли переробити всю свою конфігурацію на режим без використання модальності, але прагнете цього. І при кожному виклик модального вікна програма буде видавати вам попередження, що в даному режимі небажано викликати модальні вікна.

Ну що ж відмовляємося від модальності та освоюємо нові технології для 1С роботи в браузерах та мобільних комп'ютерах.

"Використання модальних вікон в даному режимі заборонено" - така помилка зараз починає турбувати користувачів і програмістів 1С з приходом нового інтерфейсу платформи 1С 8.3 - "".

Розробники технологічної платформи 1С йдуть у ногу з часом, стандартизуючи своє рішення під світові стандарти розробки програмного забезпечення. Всі стандарти так чи інакше зводяться до єдиного інтерфейсу, близького до веб-сторінок.

Модальні та спливаючі (pop-up) вікна вважаються поганим тоном і вже давно перестали бути нормальним під час розробки софту. Користувачі звикли до роботи "в одному вікні".

Особливо часто ми бачимо помилку модальності у наступних методів 1С:

  • питання;
  • Попередження;
  • ВідкритиЗначення.

Розробники платформи 1С 8 з виходом нового інтерфейсу «таксі» ухвалили правильне рішення - спробувати перевчити розробників прикладних рішень на новий лад. Вони включили у нову платформу можливість – «режим використання модальності».

Швидке виправлення проблеми

Якщо немає часу розбиратися і потрібно швидко розв'язати задачу, пропонуємо просте, але не зовсім правильне рішення. Для швидкого виправлення помилки достатньо змінити режим модальності у властивостях конфігурації.

Для цього зайдіть у систему в режимі , відкрийте конфігурацію:

У відкритій конфігурації викличте контекстне меню, натиснувши на корінь конфігурації правою кнопкою, вибравши «Властивості»:

Отримайте 267 відеоуроків з 1С безкоштовно:

Відкриються властивості конфігурації, де в підвалі є цікава для нас властивість — «Режим використання модальності», виберіть режим «Використовувати»:

Після цього збережіть та застосовуйте зміни, натиснувши клавішу F7.

Правильне вирішення задачі

Правильний спосіб вирішення цієї проблеми – доопрацювати конфігурацію чи зовнішню обробку під нові вимоги.

Попередження, питання, діалогові вікна та інші модальні вікна – все це потрібно переписувати на новий лад.

Вбудовані оператори, що викликали модальні вікна, необхідно замінити на дублюючі функції.

Наприклад:

  • Попередження — ПоказатиПопередження;
  • Питання - ПоказатиПитання (докладно - );
  • - ПоказатиВведенняЧисла.

При цьому з'явився спеціалізований об'єкт - Опис Сповіщення.

Приклад заміни:

Рядок = ""; Строк (Рядок, "Введіть строкове значення") Повідомити("Ви ввели" + Рядок) ;

Необхідно замінити на:

Рядок = ""; ОписОповіщення = Новий ОписОповідання( "ТестовийВведенняРядки", ЕтаФорма) ; ПоказатиВведенняРядки(ОписОповідання, Рядок, "Введіть строкове значення") ;

При цьому додати подібну процедуру на клієнта, яка відпрацює, коли значення буде введено користувачем:

&НаКлієнті Процедура ТестовийВведенняРядки(ОтриманеЗначення, ПереданіПараметри) Експорт Повідомити("Ви ввели " + Рядок) ; КінецьПроцедури

Форми, які розробляються всередині конфігурації, відкриваються так само. Достатньо замінити метод «ВідкритиФормуМодально» на «ВідкритиФорму», прописавши опис оповіщення та потрібну для нього нову процедуру.

Щоб формою, що відкривається, закрити доступ до форми, що викликається, достатньо у властивості форми вказати у властивості «РежимВідкриттяВікна» значення «Блокувати вікно власника»:

Якщо в процесі виконання уроків у вас виникла така помилка - виправити її дуже просто.

Поверніться до конфігуратора та виберіть пункт меню "Конфігурація" -> "Відкрити конфігурацію":

У вікні, натисніть правою кнопкою на пункті "Конфігурація" і виберіть з меню "Властивості":

Відкриється вікно з властивостями конфігурації (праворуч):

Прогортайте його в самий низ і знайдіть там пункт "Режим використання модальності":

Встановіть його значення в "Використовувати":

Увага!Зверніть увагу, що якщо ви використовуєте платформу 1С, відмінну від тієї, що ми завантажували в першому уроці (пізнішої версії), то у вас також буде присутній поле "Режим використання синхронних викликів...". Його також потрібно встановити у "Використовувати".

Нарешті виберіть пункт меню "Конфігурація" -> "Зберегти конфігурацію":

Готово! Тепер помилок більше не виникне.

Пояснення нижче – для тих, кому цікаво, що ми зробили.

Ми включили режим використання модальності у нашій конфігурації. За замовчуванням цей режим вимкнено і це не дозволяє нам використовувати такі команди як ВвестиКількість, ВвестиРядок, ВвестиДату, ВідкритиЗначення.

Справа в тому, що ці команди належать до модальних. Їх виклик призводить до того, що перед користувачем з'являється вікно (наприклад, для введення інформації), яке блокує можливість роботи з програмою, доки вікно не закриється.

Оскільки наявність таких вікон вкрай небажано при роботі з 1С через веб-браузер, то при розробці нових конфігурацій режим модальності за замовчуванням вимкнений.

Ми можемо сміливо включати його, оскільки пишемо навчальні приклади, не розраховані працювати в інтернеті.



Подібні публікації