Использование модальных окон в данном режиме запрещено (1С 8.3)
«Использование модальных окон в данном режиме запрещено» — такая ошибка сейчас начинает беспокоить пользователей и программистов 1С с приходом нового интерфейса платформы 1С 8.3 — «такси«.
Разработчики технологической платформы 1С идут в ногу со временем, стандартизируя своё решение под мировые стандарты разработки программного обеспечения. Все стандарты так или иначе сводятся к единому интерфейсу, близкому к веб-страницам.
Модальные и всплывающие (pop-up) окна считаются плохим тоном и уже давно перестали быть нормальным при разработке софта. Пользователи привыкли к работе «в одном окне».
Особенно часто мы видим ошибку модальности у следующих методов 1С:
- Вопрос;
- Предупреждение;
- ОткрытьЗначение.
Разработчики платформы 1С 8 с выходом нового интерфейса «такси» приняли верное решение — попытаться переучить разработчиков прикладных решений на новый лад. Они включили в новую платформу возможность — «режим использования модальности».
Быстрое исправление проблемы
Если нет времени разбираться и нужно быстро решить задачу, предлагаем простое, но не совсем правильное решение. Для быстрого исправления ошибки достаточно сменить режим модальности в свойствах конфигурации.
Для этого зайдите в систему в режиме конфигуратор, откройте конфигурацию:
Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>
Получите понятные самоучители по 1С бесплатно:
В открытой конфигурации вызовите контекстное меню, нажав на корень конфигурации правой кнопкой, выбрав «Свойства»:
Откроются свойства конфигурации, где в подвале есть интересующее нас свойство — «Режим использования модальности», выберите режим «Использовать»:
После этого сохраните и примените изменения, нажав клавишу «F7».
Правильное решение задачи
Правильный способ решения этой проблемы — доработать конфигурацию или внешнюю обработку под новые требования.
Предупреждение, вопрос, диалоговые окна и другие модальные окна — всё это необходимо переписывать на новый лад.
Встроенные операторы, которые вызывали модальные окна, необходимо заменить на дублирующие функции.
Например:
- Предупреждение — ПоказатьПредупреждение;
- Вопрос — ПоказатьВопрос (подробно — вопросы при асинхронном вызове);
- ВвестиЧисло — ПоказатьВводЧисла.
При этом появился специализированный объект — ОписаниеОпевещения.
Пример замены:
Строка = ""; ВвестиСтроку(Строка, "Введите строковое значение") Сообщить("Вы ввели " + Строка);
Необходимо заменить на:
Строка = ""; ОписаниеОповещения = Новый ОписаниеОповещения("ТестовыйВводСтроки", ЭтаФорма); ПоказатьВводСтроки(ОписаниеОповещения, Строка, "Введите строковое значение");
При этом добавить подобную процедуру на клиенте, которая отработает, когда значение будет введено пользователем:
&НаКлиенте Процедура ТестовыйВводСтроки(ПолученноеЗначение, ПереданныеПараметры) Экспорт Сообщить("Вы ввели " + Строка); КонецПроцедуры
Формы, которые разрабатываются внутри конфигурации, открываются точно так же. Достаточно заменить метод «ОткрытьФормуМодально» на «ОткрытьФорму», прописав описание оповещения и нужную для него новую процедуру.
Чтобы открывающейся формой закрыть доступ к вызываемой форме, достаточно в свойстве формы указать в свойстве «РежимОткрытияОкна» значение «Блокировать окно владельца»:
Другие статьи по 1С:
- Администрирование (обновление 1С, резервные копии и т.д);
- Программирование 1С
- Обучение 1С
Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):
К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.
СПРОСИТЕ в комментариях!
Дмитрий:
Процедура «ТестовыйВводСтроки» должна быть экспортируемой
Владко:
Есть пример как сделать форму открытие модальное через описаниеоповищения? нифига не понятно….
Семён:
А вот и задача: модальные окна разрешены.
Но иногда через браузер ругается, что модальные запрещены.
Ругается везде, кроме FireFox и iExplore.
Сергей:
Ругается
Процедура ТестовыйВводСтроки(ПолученноеЗначение, ПереданныеПараметры) Экспорт
Сообщить(«Вы ввели » + Строка);
Думаю вместо Строка нужно ПолученноеЗначение.
Knn:
а как сделать запрос без модального окна типа «Вы точно уверены, что хотите удалить эту запись?» ? то есть когда требуется подтверждение от пользователя вида Y/N.
вапро:
Режим модальности считается дурным тоном??? Кто так решил??? По какой логике??? С ума сходят там в 1С.
Аноним:
Дурным тоном только у автора является. В 1С же давно с ума сошли и делают интерфейс для веб-приложения не в веб приложении.
Аноним:
«Разработчики технологической платформы 1С идут в ногу со временем» и поэтому сделали, чтобы если захочешь точку останова включить — лезь в системный реестр и че то там прописывай.
Аноним:
Что вы ноете? Нормально все.
Сергей:
Разработчиков 1С за это «улучшение» нужно повесить на одном суку с разработчиками Вебкита.
Вместо того чтобы реализовать контекстную модальность, вынудили прикладников распараллеливать каждую вторую строку кода. Код и API превратились в помойку, отладка — в кошмар. И без этого в исходниках был бардак, теперь же просто выворачивает, когда приходится лезть в 1С-ное творчество.
Хоть бы послабление для внешних обработок сделали, собаки женского рода. Слов нет, и буковы кончаются.