Главная » Файлы » Программируем в 1С » 1С Разное

Скачивать материалы с сайта, могут только зарегистрированные пользователи.
Для регистрации заполните два поля ниже!

Через минуту Вы получите "Гостевой доступ"




Почему 1С отказывается от модальных окон ?
2014 Июнь 17, 16:01

Почему 1С отказывается от модальных окон ?

Одно из принципиальных отличий 1С 8.3 от 8.2 это отказ от модальных окон.

Для начала объясню , о каком окне идет речь.

Друзья, модальные окна Вы видите ежедневно, например в своих  веб браузерах

 (Chrome, Mozilla и другие)

Модальные окна есть также и в Windows и Linux.

    

Конечно, они есть и в 1С Предприятии.

Когда у пользователя вылетает подобного рода окно все что находиться у него на заднем плане блокируется, а выполнение кода останавливается до того момента пока пользователь не сделает какое-то действие, например  клик по кнопке «ОК»    

И только после продолжится выполнение кода и закрытие этого окна.

Теперь по умолчанию в 1С 8.3 модальные окна не работают!

 

Пример кода, который не сработает у Вас в режиме без использования модальности.

=========================================

&НаКлиенте
Процедура УдалитьЭлемент (Команда)

Ответ = Вопрос("Удалить элемент справочника ? ", РежимДиалогаВопрос.ДаНет);

Если Ответ = КодВозвратаДиалога.Да Тогда

// что-то делаем

КонецЕсли;

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

=======================================

Вы получите такую ошибку:

Конечно никто не запрещает использовать модальные окна в 1С 8.3, и для того чтоб они у Вас все же работали,  делаем следующие:

В конфигураторе идем в свойства конфигурации, находим там «Режим использования модальности» ставим -  Использовать.

Все! после этого Вы сможете использовать модальные окна в 1С 8.3

Теперь пример как пойти новым путем и сделать возможным вывод диалога, без использования модальности:

=====================================
&НаКлиенте

Процедура УдалитьЭлемент(Команда)

Оповещение = Новый ОписаниеОповещения("УдалитьЭлементВопросЗавершение", ЭтотОбъект);

ТекстВопроса = "Удалить элемент справочника ?";

ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНет);

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

=====================================

&НаКлиенте

Процедура УдалитьЭлементВопросЗавершение (Результат, ДополнительныеПараметры)

Если Результат = КодВозвратаДиалога.Да Тогда

Сообщить("Удален!");

КонецЕсли;

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

=====================================

 

Таким образом, процедура  УдалитьЭлемент()  продолжает выполняться и не ждет от пользователя каких-то действий.

А в процедуре УдалитьЭлементВопросЗавершение() мы пишем код который будет выполняться после действий пользователя.

 

Так почему 1С решила отказаться от использования модальных окон ?

 

Причина тому «Web Клиент» и «Мобильное приложение» в последние время 1с активно развивает эти направления,  и чтоб успешно двигаться вперед нужно решать такие проблемы как, блокировка  всплывающих окон.

С этими модальными окнами борются фактически все браузеры.

По умолчанию в настройках, которых стоит блокировка «всплывающих окон».

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

Надеюсь, данная статья была Вам полезной,  если так пишите в комментарии.

 

С уважением, Богдан. 

Категория: 1С Разное | Добавил: c1
Просмотров: 4566 | Загрузок: 0 | Комментарии: 2 | Рейтинг: 5.0/1

Выразить благодарность - Поделиться с друзьями!

 

Здесь все о технической стороне 1С!

 

Узнай, как правильно администрировать 1С Предприятие
Регистрируйся на бесплатный 7-ми дневный курс сейчас:

Ваш E-Mail в безопасности



Всего комментариев: 2
avatar
1
Спасибо очень полезно !!!
avatar
2
Спасибо
avatar