Модальные окна VS Не модальные окна. Что выбрать?
1.
timeforlive
17
29.05.15 07:49
Сейчас в теме
Делаю внешнюю обработку с обычной и управляемой формами.
Но вот не задача - если создавать дополнительные окна на форме (например, Предупреждения), то что все таки выбрать:
1. Модальные окна (т.е. как в обычном windowse);
2. Не модальные окна (которые нам предлагает 1С) - но работает только в версии 8.3
Конечно, я пока что придерживаюсь Модальных окон и вот моя функция:
Если версия платформы 8.3, то для вызова модального окна в режиме 1С:Предприятие нужно сделать следующее - в свойствах конфигурации должно быть установлено для параметра "Режим использования модальности" значение "Использовать".
Хочу послушать советы остальных, кто как с этим сталкивался и что решал.
Стоит ли делать обработку с модальными окнами, ведь любая конфигурация может работать с ними, а вот с НЕ модальными окнами только 8.3
Скажу сразу, универсальную обработку на все случаи жизни делать не хочу, но обработка нужна для использования на различных версиях платформ.
Но вот не задача - если создавать дополнительные окна на форме (например, Предупреждения), то что все таки выбрать:
1. Модальные окна (т.е. как в обычном windowse);
2. Не модальные окна (которые нам предлагает 1С) - но работает только в версии 8.3
Конечно, я пока что придерживаюсь Модальных окон и вот моя функция:
// Функция создает диалог с вопросом и вариантами ответов (Да, Нет, Отмена)
//
// Параметры:
// СодержаниеВопроса - Тип Строка.:
// ОтветДа - Текст, отображаемый в окне Сообщений (1С:Предприятие), при нажатии на кнопку "Да";
// ОтветНет - Текст, отображаемый в окне Сообщений (1С:Предприятие), при нажатии на кнопку "Нет";
// ОтветОтмена - Текст, отображаемый в окне Сообщений (1С:Предприятие), при нажатии на кнопку "Нет";
// если указано число 0, тогда Текст будет равен Тексту "ОтветНет".
//
// Возвращаемое значение:
// Тип Строка: "да", "нет", "отмена".
//
Функция ВопросДаНет(СодержаниеВопроса, ОтветДа = "", ОтветНет = "", ОтветОтмена = "") Экспорт
Режим = РежимДиалогаВопрос.ДаНетОтмена;
Ответ = Вопрос(СодержаниеВопроса, Режим, 0);
Если Ответ =КодВозвратаДиалога.Да Тогда
Сообщить(ОтветДа);
ВопросДаНет_ответ = "да";
Возврат "да";
ИначеЕсли Ответ = КодВозвратаДиалога.Нет Тогда
Сообщить(ОтветНет);
ВопросДаНет_ответ = "нет";
Возврат "нет";
ИначеЕсли Ответ = КодВозвратаДиалога.Отмена Тогда
Если ОтветОтмена = 0 Тогда
Сообщить(ОтветНет);
ВопросДаНет_ответ = "нет";
Возврат "нет";
Иначе
Сообщить(ОтветОтмена);
ВопросДаНет_ответ = "отмена";
Возврат "отмена";
КонецЕсли
КонецЕсли;
КонецФункции
ПоказатьЕсли версия платформы 8.3, то для вызова модального окна в режиме 1С:Предприятие нужно сделать следующее - в свойствах конфигурации должно быть установлено для параметра "Режим использования модальности" значение "Использовать".
Хочу послушать советы остальных, кто как с этим сталкивался и что решал.
Стоит ли делать обработку с модальными окнами, ведь любая конфигурация может работать с ними, а вот с НЕ модальными окнами только 8.3
Скажу сразу, универсальную обработку на все случаи жизни делать не хочу, но обработка нужна для использования на различных версиях платформ.
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) timeforlive, Лучше сделать три варианта:
1. ОФ - обычные формы
2. УФ (modal) - управляемые формы с модальными окнами
3. УФ (no modal) - управляемые формы без модальных вызовов.
Почему? Потому что
Вот у меня, к примеру, еще модальные окна есть, Но мы с этим боремся (режим без совместимости уже побороли).
Вот в обработке автор учитывает все три варианта.
1. ОФ - обычные формы
2. УФ (modal) - управляемые формы с модальными окнами
3. УФ (no modal) - управляемые формы без модальных вызовов.
Почему? Потому что
но обработка нужна для использования на различных версиях платформ.
Вот у меня, к примеру, еще модальные окна есть, Но мы с этим боремся (режим без совместимости уже побороли).
Вот в обработке автор учитывает все три варианта.
25.
timeforlive
17
16.06.15 05:53
Сейчас в теме
(24) Поручик, спасибо, как раз смотрю сейчас БП 3.0
(23) axelerleo, спасибо, будем бдительны. Я так понял, переделывали формы под не модальные или это речь о типовых конфигурациях? Можно поподробнее.
(22) Serginio, на счет ссылки "автоматического рефакторинга" - это круто, спасибо. Уже изучаю, действительно, не пользовался этим ранее.
(23) axelerleo, спасибо, будем бдительны. Я так понял, переделывали формы под не модальные или это речь о типовых конфигурациях? Можно поподробнее.
(22) Serginio, на счет ссылки "автоматического рефакторинга" - это круто, спасибо. Уже изучаю, действительно, не пользовался этим ранее.
(25) timeforlive,
Переводили дописанную УТ 11.1 на немодальные окна. Воспользовались функцией рефакторинга кода, когда процедура разбивается на несколько.
Добавили кнопку "Заполнить и провести", после рефакторинга она разбилась на три - вызов диалога заполнения, затем завершение (обработчик оповещения), и собственно вызов метода Записать с режимом "Проведение" из формы.
При этом срабатывает подписка на событие "Обработка Проведения", в которой выполняются проверки.
Документ оформлен некорректно, подписка возвращает отказ = истина, но при этом транзакция почему-то все равно фиксируется, документ проводится, а после этого (вызов же асинхронный...) происходит "ОбработкаВыбора" для заполненных полей. На выходе получаем проведенный неправильный документ, да еще и с признаком МОдифицированность = истина :-)
Пока побороть не сумел, отказался от кнопки заполнить и провести, и разбил все на два действия.
Переводили дописанную УТ 11.1 на немодальные окна. Воспользовались функцией рефакторинга кода, когда процедура разбивается на несколько.
Добавили кнопку "Заполнить и провести", после рефакторинга она разбилась на три - вызов диалога заполнения, затем завершение (обработчик оповещения), и собственно вызов метода Записать с режимом "Проведение" из формы.
При этом срабатывает подписка на событие "Обработка Проведения", в которой выполняются проверки.
Документ оформлен некорректно, подписка возвращает отказ = истина, но при этом транзакция почему-то все равно фиксируется, документ проводится, а после этого (вызов же асинхронный...) происходит "ОбработкаВыбора" для заполненных полей. На выходе получаем проведенный неправильный документ, да еще и с признаком МОдифицированность = истина :-)
Пока побороть не сумел, отказался от кнопки заполнить и провести, и разбил все на два действия.
Присоединюсь. Можно программно определять версию платформы и от этого плясать:)
Фишка в том, что 1С все больше уходит в сторону облачных технологий - отказ от модальности раз, и переход на асинхронный вызов ряда методов - два.
Фишка в том, что 1С все больше уходит в сторону облачных технологий - отказ от модальности раз, и переход на асинхронный вызов ряда методов - два.
4.
timeforlive
17
09.06.15 11:23
Сейчас в теме
Облачные технологи (и вообще любые новые) - это всегда "няшно", но вот бизнесмены экономят и предпочитают дешевые и полезные "технологии", а специалисты, которые могут дать этому бизнесмену все что он захочет - мало на новых технологиях... 8ка развивается, а многие до сих пор на Обычных Формах и им сложно разобраться с Управляемыми. Если дать еще шагнуть вперед, то сколько поддержки 1С потребуется, а сколько синхронизаций нужно.
Не буду вдаваться в подробности, можно "холиварить" бесконечно, скажу пока что так - буду идти в сторону Управляемых форм, а с Обычными по мере необходимости, потому что:
1. буду сдавать Специалиста, а там, ессно, УФ;
2. бизнес начинает переходить на 8.3 и приобретать конфы уже с УФ (типа БП 3.0, ЗУП 3.0 и прочее)
Не буду вдаваться в подробности, можно "холиварить" бесконечно, скажу пока что так - буду идти в сторону Управляемых форм, а с Обычными по мере необходимости, потому что:
1. буду сдавать Специалиста, а там, ессно, УФ;
2. бизнес начинает переходить на 8.3 и приобретать конфы уже с УФ (типа БП 3.0, ЗУП 3.0 и прочее)
6.
timeforlive
17
10.06.15 12:21
Сейчас в теме
(5) dj_serega, вы уже работали с не модальными окнами? Обращаюсь к вам и ко всем остальным, кто читает тему:
если есть пример по интерактивному взаимодействию с пользователем (в модальных окнах - это появление диалогового окна с текстом и кнопками для выбора "ок", "отмена"), поделитесь, пожалуйста, буду очень признателен. Заодно, сам "пошаманю" после и выложу свои примеры.
если есть пример по интерактивному взаимодействию с пользователем (в модальных окнах - это появление диалогового окна с текстом и кнопками для выбора "ок", "отмена"), поделитесь, пожалуйста, буду очень признателен. Заодно, сам "пошаманю" после и выложу свои примеры.
(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? Пришла идея - сделать обработку по замене кода для модальных окон на неМодальные окна =)
Спасибо всем, буду смотреть. Решено, нужно в неМодальные погружаться.
вечером поразбираюсь с неМодальностью
(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), что касается модальных и немодальных окон?
хочу узнать у остальных, как обстоит дело с доработкой (изменением) типовой конфигурации с УФ (на платформе 8.3), что касается модальных и немодальных окон?
14.
spacecraft
11.06.15 11:09
Сейчас в теме
(13) timeforlive, в типовых идет переход на асинхронный режим (немодальный). Но это типовые и ориентируются на то, что будут использоваться в том числе и веб-клиентами. Да и мобильное приложение усиленно продвигается.
(6) timeforlive, СП, почаще читай.
Там вот всех интерактивных функциях, есть сноска на альтернативную, с примером и описанием.
причем платформа в режиме совместимости сама подсказывает, в местах которые выполняются в модальном режиме, и желательно переписать в немодальный.
По ним и читаешь справку.
Вопрос-ПоказатьВопрос
ВводЗначения - ПоказатьВводЗначения
ПОместитьФайл - НачатьПомещениеФайла
ВыбратьИзСписка - ПоказатьВыборИзСписка
и т.д
Лично я, "переучился" в немодальном режиме писать, вообще исключительно по справке, без всяких интернетов. )))
Там вот всех интерактивных функциях, есть сноска на альтернативную, с примером и описанием.
причем платформа в режиме совместимости сама подсказывает, в местах которые выполняются в модальном режиме, и желательно переписать в немодальный.
По ним и читаешь справку.
Вопрос-ПоказатьВопрос
ВводЗначения - ПоказатьВводЗначения
ПОместитьФайл - НачатьПомещениеФайла
ВыбратьИзСписка - ПоказатьВыборИзСписка
и т.д
Лично я, "переучился" в немодальном режиме писать, вообще исключительно по справке, без всяких интернетов. )))
Вообще то в большинстве браузеров нет проблем с модальными окнами
Есть ограничения для мобильных устройств
Поддержка overflow: hidden для элемента <body> достаточно ограничена в iOS и Android. В браузере этих устройств, при прокруткі за пределы верхней или нижней модальной части, начинает прокручиваться содержание в <body>.
Но все меняется.
Ну и для упрощения кода могли бы пойти по пути JavaScript или взять функционал очень удобной конструкции из C# await
Есть ограничения для мобильных устройств
Поддержка overflow: hidden для элемента <body> достаточно ограничена в iOS и Android. В браузере этих устройств, при прокруткі за пределы верхней или нижней модальной части, начинает прокручиваться содержание в <body>.
Но все меняется.
Ну и для упрощения кода могли бы пойти по пути JavaScript или взять функционал очень удобной конструкции из C# await
(15) Serginio,
Но хром (как один из основных) в последних версиях уже запрещает модальные окна.
Ссыль на инфу не дам. Где-то читал а где не вспомню так сразу.
Вообще то в большинстве браузеров нет проблем с модальными окнами
Но хром (как один из основных) в последних версиях уже запрещает модальные окна.
Ссыль на инфу не дам. Где-то читал а где не вспомню так сразу.
17.
spacecraft
11.06.15 13:22
Сейчас в теме
(16) dj_serega, Google вообще в разнос пошел. Он еще и Java перестал поддерживать. Он думает, что способен всех нагнуть? Я лично полностью на Мозилу перешел. И поиск в Яндекс.
19.
spacecraft
11.06.15 14:25
Сейчас в теме
(18) Serginio, фреймворк bootstrap никакого отношения к 1С не имеет даже в веб-клиенте. И модальные окна 1С (понятие модальности от 1С) это совсем не то, что называют модальными окнами в bootstrap. В веб-клиенте 1С это всплывающее окно. В Хроме начиная с 37 релиза это отключено (для безопасности).
(19) То есть 1С не может поменять свой Фреймворк? bootstrap это просто Фреймворк свободный набор инструментов для создания сайтов и веб-приложений. Включает в себя HTML и CSS шаблоны оформления для типографики, веб-форм, кнопок, меток, блоков навигации и прочих компонентов веб-интерфейсов, включая JavaScript расширения.
Есть JQuery UI и тд. То есть проще отказаться от модальности вообще, нежели модернизировать свой фремворк?
Так и могли сделать проще на этапе компиляции создавать продолжения например как это сделано в await
Есть JQuery UI и тд. То есть проще отказаться от модальности вообще, нежели модернизировать свой фремворк?
Так и могли сделать проще на этапе компиляции создавать продолжения например как это сделано в await
Вообще проблему модальности можно решить по аналогии с C# await. Так как код транслируется в JavaScript метод который имеет модальный вызов, то создается класс поля которого будут являться локальные переменные метода, а в методы будет собираться код который до модального вызова и после. Соответственно при вызове модального окна будет вызываться форма в которую будут передаваться ссылки на функции при клике на кнопки. И этот код будет прекрасно работать на всех клиентах. Зачем делать ручной рефакторинг если можно сделать автоматический?
Кроме того при вызове таких методов нужно пониать, что этот метод тоже асинхронный и вызывающий метод тоже должен быть подвергнут рефакторингу. В C# такие методы помечаются как async
А вообще то уже давно нужно вводить замыкания в язык.
Кроме того при вызове таких методов нужно пониать, что этот метод тоже асинхронный и вызывающий метод тоже должен быть подвергнут рефакторингу. В C# такие методы помечаются как async
А вообще то уже давно нужно вводить замыкания в язык.
При отказе от модальности и переходе на асинхронные вызовы на релизе 8.3.6.1999 была замечена неприятная ошибка.
Подписки на события срабатывают криво. Так, подписка на событие "при проведении" в определенных условиях возвращает отказ = истина, но при этом транзакция все равно фиксируется, и документ проводится, хотя не должен.
Эта же проверка, если ее вызвать непосредственно в обработке проведения документа, срабатывает корректно, и документ не проводится. Так что будьте бдительны:)
Подписки на события срабатывают криво. Так, подписка на событие "при проведении" в определенных условиях возвращает отказ = истина, но при этом транзакция все равно фиксируется, и документ проводится, хотя не должен.
Эта же проверка, если ее вызвать непосредственно в обработке проведения документа, срабатывает корректно, и документ не проводится. Так что будьте бдительны:)
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот