Please enable JavaScript.
Coggle requires JavaScript to display documents.
Разработка конфигураций в режиме без использования модальности - Coggle…
Разработка конфигураций в режиме без использования модальности
Развитие продуктов «1С» и платформы «1С:Предприятие»
Проблемы web-клиета
Ограничения программ, используемых для работы в Интернете
Ограничения, связанные с качеством связи между клиентским приложением и сервером
Проблемы поддержки модальных окон в среде Интернет
Модальные окна являются элементом синхронной модели. Они блокируют исполнение логики приложения, позволяя выполнять ее участки последовательно, друг за другом, в зависимости от результата, полученного от пользователя. Модальное окно открывается в результате выполнения модального метода
Общие принципы при переходе на асинхронную модель построения бизнес-логики
В синхронной модели код, зависящий от выбора пользователя, выполняется последовательно и модальность обеспечивается как для разработчика, так и для пользователя
В асинхронной модели мы можем получить результат только обрабатывая события, которые возникают, когда пользователь делает свой выбор. При этом на время ожидания выбора код приложения не останавливается, и оно продолжает работать
Механизмы платформы для отказа от модальности
механизмы, которые обеспечивают работу в немодальном режиме
механизмы, помогающие перейти в этот режим
Новый режим интерфейса
"Не использовать" - это новый, немодальный режим работы, стандартный режим для новых конфигураций
"Использовать с предупреждением" - этот режим предназначен для разработчика. Он не препятствует использованию модальных окон, но каждый раз, когда открывается модальное окно, выдаёт предупреждающее сообщение
"Использовать" - режим, обеспечивающий совместимость новой версии платформы со старыми конфигурациями, работающими в модальном режиме
Новый режим открытия окна формы
ОписаниеОповещенияОЗакрытии – В него передаётся то описание оповещения, которое указано в методе ОткрытьФорму(). После закрытия формы исполнение кода продолжается с процедуры, указанной в этом описании оповещения.
РежимОткрытияОкна - появилось новое значение БлокироватьВесьИнтерфейс, которое следует использовать для того, чтобы из всего интерфейса пользователю была бы доступна только одна открытая форма.
Новые асинхронные средства платформы для взаимодействия с пользователем
Для реализации асинхронной модели в первую очередь требуется возможность описания процедур-обработчиков оповещений, которые будут вызваны системой при завершении выбора пользователя
ИмяПроцедуры
Модуль
ДополнительныеПараметры
В некоторых случаях результат выбора может отсутствовать или передаваться несколькими параметрами
Их имена начинаются со слова Показать либо Начать, например, ПоказатьВопрос() вместо Вопрос(), НачатьПомещениеФайла() вместо ПоместитьФайл(), и так далее
Первым параметром принимают объект ОписаниеОповещения, указывающий на процедуру модуля, которая будет выполнена после того как пользователь сделает выбор в блокирующем окне
Не возвращают значения, вместо этого результат выбора пользователя будет передан в
процедуру модуля, описанную объектом ОписаниеОповещения
Дополнительно реализован новый метод глобального
контекста
Разработка конфигурации в немодальном режиме
Не надо беспокоиться о свойствах самой конфигурации
следует подумать прежде чем использовать блокирующие окна, или методы, открывающие диалоги в блокирующем режиме
если вы решили использовать блокирующие диалоги, то вместо старых, модальных методов, следует использовать их новые немодальные аналоги
чтобы открыть форму в блокирующем режиме вместо метода
ОткрытьФормуМодально() нужно использовать метод ОткрытьФорму()
если форма всегда будет открываться только в блокирующем режиме, в конфигураторе нужно установить её свойство РежимОткрытияОкна в значение "Блокировать весь интерфейс"
так как указывать ОписаниеОповещения нужно во всех методах, использующих
блокирующие окна, в конфигураторе есть возможность автоматизировать эту работу
Типовые сценарии при переходе на асинхронную модель
Вопрос в модуле команды, формы или в общем модуле
Наиболее частым сценарием является получение информации от пользователя во время исполнения какой-либо команды
Вопрос в модуле управляемого приложения
Особенность этого примера заключается в том, что нет возможности сослаться на модуль приложения с помощью свойства ЭтотОбъект