Использование модальных окон в данном режиме запрещено (1С 8.3)
«Использование модальных окон в данном режиме запрещено» — такая ошибка беспокоит пользователей 1С с приходом нового интерфейса платформы 1С 8.3 — “такси”.
Для быстрого исправления ошибки достаточно сменить режим модальности в свойствах конфигурации.
Для этого зайдите в систему в режиме конфигуратор с правами администратора базы данных, откройте конфигурацию:
В открытой конфигурации вызовите контекстное меню, нажав на корень конфигурации правой кнопкой, выбрав «Свойства»:
Откроются свойства и немного пролистав вниз, в подпункте «Cовместимость» вы и можете изменить режим модальности. После чего ошибки будут пропускаться.
После этого сохраните и примените изменения, нажав клавишу «F7».
Уже более 10 000 компаний работают
в облачной 1С от 42Clouds
— Консультация по 1С Бесплатно!
— Поддержка 24/7 по техническим вопросам: в чате, по телефону, по почте
— Все типовые конфигурации онлайн, доступ через RDP, Remote App, Web
Содержание:
1. Где можно увидеть такой текст сообщения о том, что использование модальных окон запрещено и что это значит?
2. Изменение настройки использования модального режима окна в конфигураторе
3. Изменение программного кода для открытия модального окна
1. Где можно увидеть текст сообщения о том, что использование модальных окон запрещено и что это значит?
Обычно, текст «Использование модальных окон в данном режиме запрещено» можно увидеть в составе программной ошибки при работе в пользовательском интерфейсе на последних версиях платформы 1С.
1С высокими темпами двигается в WEB. А WEB, в свою очередь, имеет свои ограничения и прикладные моменты, требующие уважения. Так в интернет при работе в браузере назойливая реклама плотно засела во всплывающих окнах. Разработчикам браузеров этот метод работы с пользователями известен, поэтому, в подавляющем большинстве в настройках браузеров всплывающие окна по умолчанию отключены. Помимо этого, часть браузеров вообще не поддерживают всплывающие окна.
Такое ограничение вынуждены учитывать разработчики 1С, ведь при использовании модальных окон мы как раз работаем с всплывающими окнами, которые блокируют весь интерфейс программы, ожидая определенного действия пользователя, когда открывается модальное окно.
И этот факт мог бы легко остаться незамеченным, вызывая некорректную работу 1С в WEB, если бы не забота разработчиков 1С и назидательное напоминание о том, что при разработке программных интерфейсов необходимо учитывать среду использования создаваемых программ.
Начиная с версии 8.3.3.721 (06.09.2013) появилась настройка, доступная через конфигуратор, «Режим использования модальности». По умолчанию значение этой настройки «Не использовать». Подобный шаг информирует разработчиков прикладных решений 1С:Предприятие о том, что не везде программа будет вести себя корректно, и что необходимо обеспечить ее корректное поведение не только для работы в интерфейсе 1С, но и в других местах их потенциального использования для открытия модальных окон.
То есть программная ошибка в данном случае – это предупреждение. А предупреждения всегда оставляют право выбора. Поэтому варианты реагирования на контекст «Использование модальных окон в данном режиме запрещено» могут быть следующими:
1. Если использование прикладного решения планируется исключительно в интерфейсе 1С, то достаточно изменить значение настройки в конфигураторе, чтобы ошибка больше не возникала.
2. Если же использование прикладного решения планируется в WEB интерфейсе, тогда стоит пересмотреть подход к написанию программного кода с учетом обозначенных ранее ограничений браузеров.
2. Изменение настройки использования модального режима окна в конфигураторе
Для того чтобы исключить появление ошибки программы 1С про модальный режим окна, если написанная программа не планируется к использованию в WEB, достаточно установить значение «Использовать» или «Использовать с предупреждениями» у настройки «Режим использования модальности».
Найти эту настройку можно в свойствах конфигурации в разделе «Совместимость» (правая кнопка на «Корне» конфигурации -> Свойства -> Последний раздел свойств.
Путь настройки для разрешения открытия модальных окон
Режим использования модальности — Использовать с предупреждениями
3. Изменение программного кода для открытия модального окна
Есть несколько способов избавления от модальности в разрабатываемой конфигурации. Среди них:
1. Проверка конфигурации -> Логическая проверка -> Расширенная проверка -> Поиск использования модальности (для ручного исправления);
2. Рефакторинг -> Модальные вызовы -> Найти модальные вызовы модуля (проверка одного конкретного модуля для ручного исправления);
3. Конфигурация -> Рефакторинг -> Анализ модальных вызовов конфигурации (проверка всей конфигурации с анализом возможности автоматического исправления).
А само изменение подразумевает замену одних конструкций, использующих модальность на конструкции, не использующие модальность. Далее приведена таблица, в которой обозначены модальные методы и их немодальные аналоги.
Специалист компании «Кодерлайн»
Сергей Пушкин
Почему возникает ошибка «Использование модальных окон в данном режиме запрещено»?
Если в процессе выполнения уроков у вас появилась такая ошибка — исправить её очень легко.
Вернитесь в конфигуратор и выберите пункт меню «Конфигурация» -> «Открыть конфигурацию»:
В открывшемся окне нажмите правой кнопкой на пункте «Конфигурация» и выберите из раскрывшегося меню пункт «Свойства»:
Откроется окно со свойствами конфигурации (справа):
Пролистайте его в самый низ и найдите там пункт «Режим использования модальности»:
Установите его значение в «Использовать»:
Внимание! Обратите внимание, что если вы используете платформу 1С, отличную от той, что мы скачивали в первом уроке (более поздней версии), то у вас также будет присутствовать поле «Режим использования синхронных вызовов…». Его также нужно установить в «Использовать».
Наконец, выберите пункт меню «Конфигурация» -> «Сохранить конфигурацию»:
Готово! Теперь ошибки больше не возникнет.
Пояснения ниже — для тех кому интересно, что мы сделали.
Мы включили режим использования модальности в нашей конфигурации. По умолчанию этот режим выключен и это не позволяет нам использовать такие команды как ВвестиЧисло, ВвестиСтроку, ВвестиДату, ОткрытьЗначение.
Дело в том, что эти команды относятся к модальным. Их вызов приводит к тому, что перед пользователем появляется окно (например, для ввода информации), которое блокирует возможность работы с программой, пока окно не закроется.
А так как наличие таких окон крайне нежелательно при работе с 1С через веб-браузер, то при разработке новых конфигураций режим модальности по умолчанию выключен.
Мы же можем смело включать его, так как пишем учебные примеры, не рассчитанные на работу в интернете.
С уважением,
Владимир Милькин
+4
1С 8.3 : Использование модальных окон в данном режиме запрещено! Модальные окна не работают, как быть?
В конфигураторе в свойства конфигурации, есть параметр «Режим использования модальности»
Если установить Не использовать, то — принципе весь код, который после ОткрытьФормуМодально() Вопрос(), Предупреждение(), Выборов и диалогов открытия-сохранения станет работать с ошибками!
Рассмотрим пример с Использовать:
Код 1C v 8.3
&НаКлиенте
Процедура КомандаВопрос(Команда)
Ответ = Вопрос("Ну что скажешь? ", РежимДиалогаВопрос.ДаНет);
Если Ответ = КодВозвратаДиалога.Да Тогда
Сообщить("Ответили ДА!");
КонецЕсли;
КонецПроцедуры
В режиме Предприятие получаем
Если мы поставим Режим использования модальности = Не использовать то получим ошибку: Использование модальных окон в данном режиме запрещено
Теперь код нужно писать по новому:
Код 1C v 8.3
&НаКлиенте
Процедура КомандаВопросПоНовому(Команда)
Оповещение = Новый ОписаниеОповещения("ОтветНаВопросЗавершение", ЭтотОбъект);
ТекстВопроса = "Ну что скажешь?";
ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
КонецПроцедуры
&НаКлиенте
Процедура ОтветНаВопросЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = КодВозвратаДиалога.Да Тогда
Сообщить("Ответили ДА");
КонецЕсли;
КонецПроцедуры
в результате
Почему 1С решила отказаться от использования модальных окон ?
В наш век развития мобильных технологий все идет к тому — что скоро все будут работать на планшетах и телефонах. 1С сделала для этого «Web Клиент» и «Мобильное приложение». И чтобы успешно двигаться вперед нужно решать такие проблемы как, блокировка всплывающих окон. Ведь даже обычные браузеры по умолчанию блокируют модальные (всплывающие) окна!
|
|||
haggart
09.03.17 — 15:05 |
Коллеги, добрый день. |
||
Aleksandr N
1 — 09.03.17 — 15:12 |
(0) Прекращена поддержка модальных окон при работе в веб-клиенте с использованием любого веб-браузера. Источник: http://downloads.v8.1c.ru/content//Platform/8_3_10_1981/1cv8upd.htm#ddb4f238-c206-11e6-a3f7-0050569f678a |
||
Amra
2 — 09.03.17 — 15:13 |
Вы тестируйте, тестируйте, глядишь когда 8.3.10 выйдет из тестового режима, то ошибок будет поменьше |
||
Aleksandr N
3 — 09.03.17 — 15:15 |
(2) Это не ошибка. |
||
Amra
4 — 09.03.17 — 15:16 |
(3) Да вижу уже) Значит ТС не читал перед обновлением |
||
haggart
5 — 09.03.17 — 15:18 |
(1) Спасибо. 1С — казлы |
||
elCust
6 — 09.03.17 — 15:20 |
(5) До вечного бана осталось 3…2…1 |
||
Провинциальный 1сник
7 — 09.03.17 — 15:25 |
(3) Это диверсия |
||
Dmitry1c 8 — 09.03.17 — 15:28 |
(5) ух |
2 + 2 = 3.9999999999999999999999999999999… |
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку «Обновить» в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Отказ от модальности
Современные конфигурации 1с используют управляемые формы и почти всегда оптимизированы под веб-клиент, для этого в свойствах конфигурации режим использования модальности включен в положение не использовать.
Две основные причины отказа от модальности это асинхронное выполнение программного кода и блокировка модальных окон в браузерах.
1с начала пропаганду отказа от модальности в 2013 году, но модальные окна до сих пор встречаются.
Отказ от модальности, заметка от 1с от января 2013 года.
Использование модальных окон в данном режиме запрещено!
Ошибка при использовании модальных функций
На днях в работе столкнулся вот с таким кодом.
&НаКлиенте Процедура СоздатьЗаказНаПроизводство(Команда Если Модифицированность Тогда Режим = РежимДиалогаВопрос.ДаНет; Ответ = Вопрос(НСтр("ru = 'В документе есть изменения. Записать?';" + " en = 'Do you want to continue?'"), Режим, 0); Если Ответ = КодВозвратаДиалога.Нет Тогда Возврат; Иначе Записать(); КонецЕсли; КонецЕсли; //Код прикладного решения КонецПроцедуры
Код будет работать в толстом клиенте, на обычных формах, но в современных конфигурациях выдаст ошибку “Использование модальных окон в данном режиме запрещено!”.
Что бы убрать модальность, нужно заменить функцию “Вопрос” на функцию “ПоказатьВопрос”.
Разница в синтаксисе
Синтаксис команд очень похож, но из-за асинхронности команды показать вопрос, он немного отличается.
Вопрос()
Вопрос(<ТекстВопроса>, <Кнопки>, <Таймаут>, <КнопкаПоУмолчанию>, <Заголовок>, <КнопкаТаймаута>)
Работает в 1с начиная с версии 8.0.
ПоказатьВопрос()
ПоказатьВопрос(<ОписаниеОповещенияОЗавершении>, <ТекстВопроса>, <Кнопки>, <Таймаут>, <КнопкаПоУмолчанию>, <Заголовок>, <КнопкаТаймаута>)
Работает в 1с начиная с версии 8.3.3.
Отказываемся от модальности
Для того что бы убрать модальность перепишем код используя асинхронную функцию 1с показатьвопрос.
&НаКлиенте Процедура СоздатьЗаказНаПроизводство(Команда) Если Модифицированность Тогда Режим = РежимДиалогаВопрос.ДаНет; Оповещение = Новый ОписаниеОповещения("ПослеЗакрытияВопроса", ЭтотОбъект, Параметры); ПоказатьВопрос(Оповещение, НСтр("ru = 'В документе есть изменения. Записать?';" + " en = 'Do you want to continue?'"), Режим, 0); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ПослеЗакрытияВопроса(Результат, Параметры) Экспорт Если Результат = КодВозвратаДиалога.Нет Тогда Возврат; КонецЕсли; Записать(); //Код прикладного решения КонецПроцедуры
Запускаем и проверяем код.
Ошибка про модальное окно ушла, программа работает как надо.
Материалы от 1с на тему отказа от модальности
- Инструменты рефакторинга и отказа от модальности
- Вариант работы интерфейса без использования модальных окон
- Асинхронные вызовы расширений браузеров и внешних компонентов
- Разработка конфигураций в режиме без использования модальности
The 1C:Enterprise developers forum
|
||||||
|
||||||
|
||||||
Subscribe |
Users browsing this topic (guests: 1, registered: 0, hidden: 0)