Модальность в 1С

 

Клиентские приложения все чаще используются при помощи веб-клиента, что предъявляет определенные требования к коду. В этой статье я постараюсь рассказать о модальности в 1С — когда и почему следует от нее отказаться и как это сделать.

Общая информация

В начале рассмотрим общие вопросы связанные с модальными окнами в 1С.

Что не так с модальными окнами?

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

Все это прекрасно работает в тонком и толстом клиенте и с большим трудом в веб-клиенте. Современные браузеры как правило поддерживают модальные окна (какие-то лучше, какие-то хуже) — открывая их в новом окне как «всплывающее окно». Но из-за того, что всплывающие окна используются в основном для рекламы, их показ отключен по умолчанию практических во всех современных браузерах. Следовательно, в подавляющем большинстве случаев необходима предварительная настройка браузера.

Когда следует отказаться от модальности?

Разумеется отказ от модальности необходим далеко не всегда.

Во-первых, режим работы интерфейса без использования модальности появился в версии технологической платформы 8.3.3.721 (от 06.09.2013) — следовательно, при использовании предыдущих версий технологической платформы, не нужно задумываться об отказе от модальности.

Режим использования модальности
Режим использования модальности

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

  • на iPad;
  • через веб-клиент;
  • в режиме сервиса (например, размещенные на 1cfresh.com).

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

Как все поправить?

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

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

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

Непосредственно при отказе от модальности очень поможет механизм рефакторинга о котором подробно написано в отдельной статье.

Соответствие синхронных методов асинхронным аналогам (на момент написания статьи) можно посмотреть тут.

 

Практические примеры

В качестве практических примеров рассмотрим основные приемы работы с блокирующими окнами.

Работа с блокирующими окнами

Блокирующие окна и закрытие приложения

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

Кроме этого, в обработчике события формы ПередЗакрытием и в обработчике события управляемого приложения ПередЗавершениемРаботыСистемы реализован параметр ТекстПредупреждения.

Взаимодействие этих параметров показано в примере. Сначала открываем форму и сразу после этого завершаем работу приложения:

Затем в модуле открытой формы выясняем, что закрывается не сама форма, а все приложение и пытаемся предотвратить это:

Результат будет выглядеть примерно так:

Обработка закрытия приложения
Обработка закрытия приложения

На этом все, надеюсь, что эта статья была Вам полезна.

Оценка статьи:
УжасноПлохоНеплохоХорошоОтлично (Пока оценок нет)
Загрузка...

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: