Настройка оборудования и программного обеспечения

1с разрешить модальные окна в управляемом приложении. Почему возникает ошибка "Использование модальных окон в данном режиме запрещено"? Отказ от модальности

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

Для работы с этими ситуациями в программе 1С 8.3 предусмотрен новый системный объект «ОписаниеОповещения», который используется для описания вызова процедуры программного модуля при наступлении какого-либо ожидаемого события, такого как закрытие формы или немодального диалога:

Это взгляд на проблему «изнутри» для тех, кто хочет разобраться с первопричиной. В первую очередь для программистов 1С. Как в этой ситуации обычным пользователям исправить ошибку без проработки программного кода? Есть очень простой метод.

Инструкция по исправлению ошибки для обычных пользователей

Шаг 1. Завершить работу:

Шаг 2. Возвращаемся в стартовое меню для запуска конфигурации. Выбираем пункт меню «Конфигурация»:

Шаг 3. Открываем «Конфигуратор»: на верхней панели находим кнопку «Конфигурация», и в предложенном списке выбираем меню «Открыть конфигурацию»:

Шаг 4. Устанавливаем курсор на Конфигурацию и по правой кнопке мышки вызываем контекстное меню, в котором выбираем пункт «Свойства»:

Шаг 5. Открываем форму «Свойства»:

Шаг 6. Находим строчку «Режим использования модальности” (внизу списка):

По умолчанию в программе 1С 8.3 стоит значение «Не использовать». Переводим значение «Не использовать» в значение « Использовать»:

Результат:

Если ошибка «Использование модальных окон в данном режиме запрещено» в 1С 8.3 ушла, то можно работать дальше. Обычно, так и происходит.

Но если ошибка модальности в 1С осталась после выполнения всех этих действий, то следует обратиться к программистам, обслуживающим и поддерживающим вашу программу 1С.

Как работать в интерфейсе “Такси”, как сделать настройку рабочего места “под себя”, настройка панели навигации Избранное, как осуществлять полнотекстовый поиск, приемы работы с журналами, кнопка “выбора” в документах, передача ссылок на документы, верификация и другие возможности в новом интерфейсе – все это можно узнать из нашего видео:

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


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

В платформе 1С версии 8.3 появился новый режим работы программы - без использования модальности. Точнее новых режимов появилось 2: без использования модальности и использовать модальность, но с предупреждением. А старый режим работы обозначен как использовать модальность.

Что это все значит? В ранних версиях платформы мы использовали различные модальные окошки и особо не задумывались об этом. Например, надо вывести предупреждение пользователю или надо задать вопрос или ввести какое-то значение или выбрать файл. Все это модальные окошки.

Что значит модальные? Это значит, что при вызове данного окна оно перекрывает собой все другие окна, то есть выводится на самый верх и блокирует работу с другими окнами до завершения работы с этим окном. Кроме блокировки окон останавливается выполнение кода ровно на том месте, где происходит вызов этого окна и продолжение выполнения кода осуществляется только после закрытия такого окна. С того места, где выполнение остановилось. Проиллюстрирую вызов модального окна на примере вызова формы выбора периода:

&НаКлиенте

СтандартнаяОбработка = Ложь;




Если Диалог.Редактировать() Тогда //Вызов модальной формы. Продолжение выполнения кода произойдет только после закрытия формы.
Элементы.Услуги.ТекущиеДанные.ДатаНачала = Диалог.Период.ДатаНачала;
Элементы.Услуги.ТекущиеДанные.ДатаОкончания = Диалог.Период.ДатаОкончания;
КонецЕсли;

КонецПроцедуры


Как мы видим для обработки вызова модального окна выбора периода достаточно одной процедуры.

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

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

Отдельный нюанс с браузерами для планшетных компьютеров и браузерами для телефонов. В большинстве случаев такие браузеры не поддерживают всплывающие окна. Не совместимы интерфейсы (мониторы и устройства ввода) таких устройств с всплывающими окнами.

Ну и наконец мобильное приложение 1С тоже не совсем сдружилось с модальными окнами.

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

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

СтандартнаяОбработка = Ложь;

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

ДатаНачала = Элементы.Услуги.ТекущиеДанные.ДатаНачала;
ДатаОкончания = Элементы.Услуги.ТекущиеДанные.ДатаОкончания;

СтандартныйПериод.ДатаНачала = ДатаНачала;
СтандартныйПериод.ДатаОкончания = ДатаОкончания;
Диалог.Период = СтандартныйПериод;

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

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

КонецПроцедуры

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

Если Период <> Неопределено Тогда

Элементы.Услуги.ТекущиеДанные.ДатаНачала = Период.ДатаНачала;
Элементы.Услуги.ТекущиеДанные.ДатаОкончания = Период.ДатаОкончания;

КонецЕсли;

КонецПроцедуры


Как мы видим вместо Редактировать() вызывается Показать(). И обработка события выбора уже в другой процедуре.

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

Ну что ж отказываемся от модальности и осваиваем новые технологии для 1С работы в браузерах и мобильных компьютерах.

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

Без ответа на запрос такого окна продолжать работу в программе невозможно. Окно блокирует интерфейс, перекрывает работу других окон, и при этом исполнение кодов программы тоже застопорится на том месте, где произошел вызов диалога – программа ждет завершения действия с ним.

Диалоги, обычно, не вызывают проблем в режиме запуска тонкого и толстого клиента, но проблемы могут возникнуть при работе с веб-клиентом. Это связано с тем, что такие же системные элементы в Интернете используются как рекламные носители, и зачастую в настройках браузера пользователи показ их отключают. Соответственно, их работа блокируется и в программе, работающей через веб-браузер. Поэтому работая с 1С через веб-клиент или на мобильной платформе, надо не забывать выполнять дополнительную настройку браузера и помнить, что мобильный браузер вообще не поддерживает всплывающие сообщения.

Как устранить ошибку в 1С: «Использование модальных окон в данном режиме запрещено»

Такая ошибка начала появляться после перехода 1С на новый интерфейс платформы 1С 8.3 – «Такси». Это связано с тем, что в ней разработчиками была включена работа с окнами, но без режима модальности.

Рис.1

Откроем информационную базу в режиме «Конфигуратор» и посмотрим свойства нашей конфигурации, нажав правой кнопкой мышки и выбрав команду «Свойства». Прокрутив линейку ниже, мы видим раздел «Совместимость», где находится интересующий нас параметр режима и перечислены варианты – «Использовать/Использовать с предупреждением/Не использовать».



Рис.2

После этого необходимо сохранить и обновить изменения в конфигурации. Ошибка, о которой мы говорим, появляется, когда стоит отметка о том, чтобы не использовать режим модальности. Такая возможность появилась, начиная с платформы 8.3.3.721, вышедшей в сентябре 2013 года. То есть, пользователям, работающим на более старых версиях платформы, нет необходимости в отказе от модальности. В других версиях, чтобы окно с ошибкой не появлялось, можно установить просто – «Использовать».

В нашем примере установлена возможность предупреждения. Конечно, в будущем разработчики доработаю конфигурацию для использования других функций в обход модальных окон. Но на сегодняшний день режим из нашего примера как раз и используется разработчиком при переходе, когда не вся конфигурация еще переделана на безмодальный режим. Поэтому программа также будет выдавать сообщения о запрете окон с модальными характеристиками.



Рис.3

Приложения, которые используются через веб-клиент, на iPad, в облаке, например, на «1cfresh.com», не используют этот режим. Во всех новых конфигурациях используется безмодальный режим работы интерфейса.

Отказ от модальности

Разработчики программы 1С, поддерживая общемировые тенденции, стараются приблизить интерфейс программ к веб-образцам и привести его к единому стандарту, давая тем самым возможность пользователям работать в одном окне с привычном «внешником».

Поэтому (и чтобы снять проблемы, описанные выше) было принято решение о ликвидации всплывающих диалогов без ограничения функциональности решений. При этом сообщения в новом режиме работы программы появляются в пределах родительского окна, а не как раньше – в модальном. Хотя оно по-прежнему блокирует весь интерфейс.

То есть нововведение избавляет нас от необходимости допнастройки браузера, стабилизирует веб-клиент и повышает его производительность. Также, поскольку теперь нет необходимости открывать всплывающие окна, любую конфигурацию с такими изменениями можно использовать на любом устройстве.

Если в процессе выполнения уроков у вас появилась такая ошибка - исправить её очень легко.

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

В открывшемся окне нажмите правой кнопкой на пункте "Конфигурация" и выберите из раскрывшегося меню пункт "Свойства":

Откроется окно со свойствами конфигурации (справа):

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

Установите его значение в "Использовать" :

Внимание! Обратите внимание, что если вы используете платформу 1С, отличную от той, что мы скачивали в первом уроке (более поздней версии), то у вас также будет присутствовать поле "Режим использования синхронных вызовов...". Его также нужно установить в "Использовать".

Наконец, выберите пункт меню "Конфигурация" -> "Сохранить конфигурацию":

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

Пояснения ниже - для тех кому интересно, что мы сделали.

Мы включили режим использования модальности в нашей конфигурации. По умолчанию этот режим выключен и это не позволяет нам использовать такие команды как ВвестиЧисло, ВвестиСтроку, ВвестиДату, ОткрытьЗначение.

Дело в том, что эти команды относятся к модальным. Их вызов приводит к тому, что перед пользователем появляется окно (например, для ввода информации), которое блокирует возможность работы с программой, пока окно не закроется.

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

Мы же можем смело включать его, так как пишем учебные примеры, не рассчитанные на работу в интернете.

15
Для принудительного запуска предприятия в Обычном или Управляемом приложении используются следующие ключи: /RunModeOrdinaryApplication запуск толстого клиента в обычном режиме, несмотря на настройки конфигурации и пользователя, от имени которого 3
Нужно чтобы пользователи не могли менять настроенный для них интерфейс! Решение: Для отключения нужно в правах доступа у корневого элемента конфигурации убрать право " Сохранение данных пользователя ". Отключатся настройка панелей и пункт ме 2
В текущей работе пользователь обычно открывает несколько объектов. Это может быть документ, справочник, отчет и т.д. В предыдущем интерфейсе не было проблем быстро найти открытый объект и актуализировать его для дальнейшей работы используя окна или 2
В прошлой статье: Установка адресного классификатора (KLADR) в 1С я рассказал Вам что такое Кладр и как его загрузить в 1С обычные формы (8.0-8.2). В данной статье я расскажу как загрузить Адресный классификатор (KLADR) в управляемом интерфейсе и 2
Часто разрабатывая некую конфигурацию, пользователи хотят прикреплять к элементу справочника фото и чтобы они хранились в базе данных. В этой статье я расскажу как к справочнику объекты строительства подключить хранилище фотографий в виде справочни

Понравилась статья? Поделитесь с друзьями!
Была ли эта статья полезной?
Да
Нет
Спасибо, за Ваш отзыв!
Что-то пошло не так и Ваш голос не был учтен.
Спасибо. Ваше сообщение отправлено
Нашли в тексте ошибку?
Выделите её, нажмите Ctrl + Enter и мы всё исправим!