Модальные окна VS Не модальные окна. Что выбрать?

1. timeforlive 17 29.05.15 07:49 Сейчас в теме
Делаю внешнюю обработку с обычной и управляемой формами.
Но вот не задача - если создавать дополнительные окна на форме (например, Предупреждения), то что все таки выбрать:
1. Модальные окна (т.е. как в обычном windowse);
2. Не модальные окна (которые нам предлагает 1С) - но работает только в версии 8.3

Конечно, я пока что придерживаюсь Модальных окон и вот моя функция:

// Функция создает диалог с вопросом и вариантами ответов (Да, Нет, Отмена)
//
// Параметры:
//  СодержаниеВопроса	    - Тип Строка.:
//  ОтветДа 				- Текст, отображаемый в окне Сообщений (1С:Предприятие), при нажатии на кнопку "Да";
//  ОтветНет				- Текст, отображаемый в окне Сообщений (1С:Предприятие), при нажатии на кнопку "Нет";
//  ОтветОтмена				- Текст, отображаемый в окне Сообщений (1С:Предприятие), при нажатии на кнопку "Нет";
//  если указано число 0, тогда Текст будет равен Тексту "ОтветНет".
// 
// Возвращаемое значение:
//  Тип Строка: "да", "нет", "отмена".
// 
Функция ВопросДаНет(СодержаниеВопроса, ОтветДа = "", ОтветНет = "", ОтветОтмена = "") Экспорт
	Режим = РежимДиалогаВопрос.ДаНетОтмена;
	Ответ = Вопрос(СодержаниеВопроса, Режим, 0);
	
	Если Ответ =КодВозвратаДиалога.Да Тогда
		Сообщить(ОтветДа);
		ВопросДаНет_ответ = "да";
		Возврат "да";
	ИначеЕсли Ответ = КодВозвратаДиалога.Нет Тогда
		Сообщить(ОтветНет);
		ВопросДаНет_ответ = "нет";
		Возврат "нет";
	ИначеЕсли Ответ = КодВозвратаДиалога.Отмена Тогда
		Если ОтветОтмена = 0 Тогда
			Сообщить(ОтветНет);
			ВопросДаНет_ответ = "нет";
			Возврат "нет";
		Иначе
			Сообщить(ОтветОтмена);
			ВопросДаНет_ответ = "отмена";
			Возврат "отмена";
		КонецЕсли
	КонецЕсли;
КонецФункции
Показать


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

Хочу послушать советы остальных, кто как с этим сталкивался и что решал.
Стоит ли делать обработку с модальными окнами, ведь любая конфигурация может работать с ними, а вот с НЕ модальными окнами только 8.3

Скажу сразу, универсальную обработку на все случаи жизни делать не хочу, но обработка нужна для использования на различных версиях платформ.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. dj_serega 396 29.05.15 07:54 Сейчас в теме
(1) timeforlive, Лучше сделать три варианта:
1. ОФ - обычные формы
2. УФ (modal) - управляемые формы с модальными окнами
3. УФ (no modal) - управляемые формы без модальных вызовов.

Почему? Потому что
но обработка нужна для использования на различных версиях платформ.

Вот у меня, к примеру, еще модальные окна есть, Но мы с этим боремся (режим без совместимости уже побороли).

Вот в этой обработке автор учитывает все три варианта.
amaksimov; +1 Ответить
24. Поручик 4612 15.06.15 11:14 Сейчас в теме
(1)(20) Посмотрите УТ 11.1 релизов текущего года. Там ещё полно различных вызовов модальных диалогов.
В отношении модальности, пожалуй, только БП 3.0 вылизана.
25. timeforlive 17 16.06.15 05:53 Сейчас в теме
(24) Поручик, спасибо, как раз смотрю сейчас БП 3.0
(23) axelerleo, спасибо, будем бдительны. Я так понял, переделывали формы под не модальные или это речь о типовых конфигурациях? Можно поподробнее.
(22) Serginio, на счет ссылки "автоматического рефакторинга" - это круто, спасибо. Уже изучаю, действительно, не пользовался этим ранее.
26. axelerleo 325 16.06.15 10:08 Сейчас в теме
(25) timeforlive,
Переводили дописанную УТ 11.1 на немодальные окна. Воспользовались функцией рефакторинга кода, когда процедура разбивается на несколько.
Добавили кнопку "Заполнить и провести", после рефакторинга она разбилась на три - вызов диалога заполнения, затем завершение (обработчик оповещения), и собственно вызов метода Записать с режимом "Проведение" из формы.
При этом срабатывает подписка на событие "Обработка Проведения", в которой выполняются проверки.
Документ оформлен некорректно, подписка возвращает отказ = истина, но при этом транзакция почему-то все равно фиксируется, документ проводится, а после этого (вызов же асинхронный...) происходит "ОбработкаВыбора" для заполненных полей. На выходе получаем проведенный неправильный документ, да еще и с признаком МОдифицированность = истина :-)
Пока побороть не сумел, отказался от кнопки заполнить и провести, и разбил все на два действия.
3. axelerleo 325 29.05.15 08:54 Сейчас в теме
Присоединюсь. Можно программно определять версию платформы и от этого плясать:)
Фишка в том, что 1С все больше уходит в сторону облачных технологий - отказ от модальности раз, и переход на асинхронный вызов ряда методов - два.
4. timeforlive 17 09.06.15 11:23 Сейчас в теме
Облачные технологи (и вообще любые новые) - это всегда "няшно", но вот бизнесмены экономят и предпочитают дешевые и полезные "технологии", а специалисты, которые могут дать этому бизнесмену все что он захочет - мало на новых технологиях... 8ка развивается, а многие до сих пор на Обычных Формах и им сложно разобраться с Управляемыми. Если дать еще шагнуть вперед, то сколько поддержки 1С потребуется, а сколько синхронизаций нужно.
Не буду вдаваться в подробности, можно "холиварить" бесконечно, скажу пока что так - буду идти в сторону Управляемых форм, а с Обычными по мере необходимости, потому что:
1. буду сдавать Специалиста, а там, ессно, УФ;
2. бизнес начинает переходить на 8.3 и приобретать конфы уже с УФ (типа БП 3.0, ЗУП 3.0 и прочее)
5. dj_serega 396 09.06.15 11:28 Сейчас в теме
(4) timeforlive, Ну тогда предлагаю по УФ (no modal) путешествовать.
6. timeforlive 17 10.06.15 12:21 Сейчас в теме
(5) dj_serega, вы уже работали с не модальными окнами? Обращаюсь к вам и ко всем остальным, кто читает тему:
если есть пример по интерактивному взаимодействию с пользователем (в модальных окнах - это появление диалогового окна с текстом и кнопками для выбора "ок", "отмена"), поделитесь, пожалуйста, буду очень признателен. Заодно, сам "пошаманю" после и выложу свои примеры.
7. dj_serega 396 10.06.15 12:33 Сейчас в теме
(6) timeforlive,
вы уже работали с не модальными окнами?

Сейчас конфа с включенной модальностью. Новые механизмы пишем без модальности.
Вам нужен пример немодальности вопроса?
Воть:
&НаКлиенте
Процедура ВопросПользователю(Команда)
	
	Если Объект.ТЧ.Количество() ИЛИ Объект.ТЧ2.Количество() Тогда
		ПоказатьВопрос(Новый ОписаниеОповещения("ВопросПользователюЗавершение", ЭтотОбъект),
						"Табличные части тч1, тч2 будут очищены. Продолжить?", РежимДиалогаВопрос.ДаНет, 30, КодВозвратаДиалога.Да,, КодВозвратаДиалога.Нет);
	Иначе
		ВопросПользователюЗавершение(КодВозвратаДиалога.Да, "");
	КонецЕсли;
	// SG, вставка 05/06/15 <<<
	
КонецПроцедуры

&НаКлиенте
Процедура ВопросПользователюЗавершение(Результат, ДополнительныеПараметры) Экспорт 
	
	Если Не Результат = КодВозвратаДиалога.Да Тогда
		Возврат;
	КонецЕсли;
	
	Объект.тч1.Очистить();
	Объект.тч2.Очистить();
	
// Это серверная где все выполняется
	ВопросПользователюНаСервере();
	
КонецПроцедуры // ВопросПользователюЗавершение
Показать
11. timeforlive 17 10.06.15 15:09 Сейчас в теме
(7) dj_serega, да, то что надо, остается "внедрить" в обработку ^_^
вечером поразбираюсь с неМодальностью
(9) Boneman, но я так понимаю, что неМодальные пишите для 8.3? Пришла идея - сделать обработку по замене кода для модальных окон на неМодальные окна =)

Спасибо всем, буду смотреть. Решено, нужно в неМодальные погружаться.
12. spacecraft 10.06.15 15:14 Сейчас в теме
(11) timeforlive, изучение работы с немодальными окнами в любом случае изучить стоит. Но если не будут использоваться веб-клиенты, то переводить все на немодальные не стоит. Это даже где-то на сайте 1С прочитал. Никакого выигрыша не получите.
13. timeforlive 17 11.06.15 11:06 Сейчас в теме
(12) spacecraft, спасибо, прислушаюсь к вашему совету. Пока нет острой необходимости в немодальности, но...
хочу узнать у остальных, как обстоит дело с доработкой (изменением) типовой конфигурации с УФ (на платформе 8.3), что касается модальных и немодальных окон?
14. spacecraft 11.06.15 11:09 Сейчас в теме
(13) timeforlive, в типовых идет переход на асинхронный режим (немодальный). Но это типовые и ориентируются на то, что будут использоваться в том числе и веб-клиентами. Да и мобильное приложение усиленно продвигается.
9. Boneman 302 10.06.15 13:03 Сейчас в теме
(6) timeforlive, СП, почаще читай.
Там вот всех интерактивных функциях, есть сноска на альтернативную, с примером и описанием.
причем платформа в режиме совместимости сама подсказывает, в местах которые выполняются в модальном режиме, и желательно переписать в немодальный.
По ним и читаешь справку.
Вопрос-ПоказатьВопрос
ВводЗначения - ПоказатьВводЗначения
ПОместитьФайл - НачатьПомещениеФайла
ВыбратьИзСписка - ПоказатьВыборИзСписка
и т.д

Лично я, "переучился" в немодальном режиме писать, вообще исключительно по справке, без всяких интернетов. )))
dj_serega; +1 Ответить
8. Serginio 946 10.06.15 12:45 Сейчас в теме
Инструменты рефакторинга и отказа от модальности
http://v8.1c.ru/o7/201312ref/index.htm
amaksimov; +1 Ответить
15. Serginio 946 11.06.15 11:55 Сейчас в теме
Вообще то в большинстве браузеров нет проблем с модальными окнами http://bootstrap-3.ru/javascript.php#modals

Есть ограничения для мобильных устройств http://bootstrap-3.ru/getting-started.php#support-fixed-position-keyboards

Поддержка overflow: hidden для элемента <body> достаточно ограничена в iOS и Android. В браузере этих устройств, при прокруткі за пределы верхней или нижней модальной части, начинает прокручиваться содержание в <body>.


Но все меняется.

Ну и для упрощения кода могли бы пойти по пути JavaScript или взять функционал очень удобной конструкции из C# await http://metanit.com/sharp/tutorial/13.3.php
16. dj_serega 396 11.06.15 13:05 Сейчас в теме
(15) Serginio,
Вообще то в большинстве браузеров нет проблем с модальными окнами

Но хром (как один из основных) в последних версиях уже запрещает модальные окна.
Ссыль на инфу не дам. Где-то читал а где не вспомню так сразу.
17. spacecraft 11.06.15 13:22 Сейчас в теме
(16) dj_serega, Google вообще в разнос пошел. Он еще и Java перестал поддерживать. Он думает, что способен всех нагнуть? Я лично полностью на Мозилу перешел. И поиск в Яндекс.
18. Serginio 946 11.06.15 14:06 Сейчас в теме
(16) Так проверь http://bootstrap-3.ru/javascript.php#modals
на декстопе работает
19. spacecraft 11.06.15 14:25 Сейчас в теме
(18) Serginio, фреймворк bootstrap никакого отношения к 1С не имеет даже в веб-клиенте. И модальные окна 1С (понятие модальности от 1С) это совсем не то, что называют модальными окнами в bootstrap. В веб-клиенте 1С это всплывающее окно. В Хроме начиная с 37 релиза это отключено (для безопасности).
21. Serginio 946 11.06.15 15:13 Сейчас в теме
(19) То есть 1С не может поменять свой Фреймворк? bootstrap это просто Фреймворк свободный набор инструментов для создания сайтов и веб-приложений. Включает в себя HTML и CSS шаблоны оформления для типографики, веб-форм, кнопок, меток, блоков навигации и прочих компонентов веб-интерфейсов, включая JavaScript расширения.

Есть JQuery UI и тд. То есть проще отказаться от модальности вообще, нежели модернизировать свой фремворк?
Так и могли сделать проще на этапе компиляции создавать продолжения например как это сделано в await

Модальное окно на HTML5, CSS3 и скрытых чекбоксах
20. alext88 7 11.06.15 14:28 Сейчас в теме
Если УФ, то никакой модальности однозначно
22. Serginio 946 12.06.15 08:44 Сейчас в теме
Вообще проблему модальности можно решить по аналогии с C# await. Так как код транслируется в JavaScript метод который имеет модальный вызов, то создается класс поля которого будут являться локальные переменные метода, а в методы будет собираться код который до модального вызова и после. Соответственно при вызове модального окна будет вызываться форма в которую будут передаваться ссылки на функции при клике на кнопки. И этот код будет прекрасно работать на всех клиентах. Зачем делать ручной рефакторинг http://v8.1c.ru/o7/201312ref/index.htm если можно сделать автоматический?

Кроме того при вызове таких методов нужно пониать, что этот метод тоже асинхронный и вызывающий метод тоже должен быть подвергнут рефакторингу. В C# такие методы помечаются как async http://metanit.com/sharp/tutorial/13.3.php
А вообще то уже давно нужно вводить замыкания в язык.
23. axelerleo 325 15.06.15 10:50 Сейчас в теме
При отказе от модальности и переходе на асинхронные вызовы на релизе 8.3.6.1999 была замечена неприятная ошибка.
Подписки на события срабатывают криво. Так, подписка на событие "при проведении" в определенных условиях возвращает отказ = истина, но при этом транзакция все равно фиксируется, и документ проводится, хотя не должен.
Эта же проверка, если ее вызвать непосредственно в обработке проведения документа, срабатывает корректно, и документ не проводится. Так что будьте бдительны:)
amaksimov; +1 Ответить
Для отправки сообщения требуется регистрация/авторизация

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот