Модальные окна в 1С
-

Модальные окна в 1С

0
11689
03.09.2022 Сергей Кулажевский

Содержание:

1.     Работа с модальными окнами в 1С

2.     Объект ОписаниеОповещения. Устранение модальности для web клиента в 1С

3.     Сравнение работы кода в режиме с модальностью окон в 1С и без нее  

    

1.     Работа с модальными окнами в 1С

 

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


Модальные окна в 1С широко применялись в обычных формах в системе 1С 8.2, однако со временем развития платформы и перехода на управляемы формы их механика не подходила для корректной работы в тонком либо web клиенте в 1С. Однако потребность в том, что нужно в какой-то момент останавливать возможность работы пользователя осталась.


По сути, сам администратор 1С 8.3 на конкретном предприятии должен понимать нужно ли ему использовать модальность. Так, например, если в компании ведётся активная доработка системы, при этом не используются актуальные методики написания кода в 1С, а пользователи используют только толстый или тонкий клиент будет достаточно перевести работу режима использования модальности в режим «Использовать». Данную операцию выполнить весьма просто:


1) Нужно открыть конфигуратор в 1С

2) Если мы видим дерево конфигурации, то переходим к пункту 3, в противном случае выбираем меню:



Oткрыть конфигуратор в 1С

 

3) Щелкаем правой кнопкой мыши на голове конфигурации и выбираем пункт «Свойства», либо используем сочетание клавиш alt+enter.



Использование модальности окна в 1С

 

4) Режим использования модальности установить в «Использовать».   

 

2.     Объект ОписаниеОповещения. Устранение модальности для web клиента в 1С

 

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


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


3.     Сравнение работы кода в режиме с модальностью окон в 1С и без нее


Для более точного понимания сути работы предлагаю сравнить работу кода в режиме с модальностью и без нее.

Допустим нам нужно перезаполнить табличную часть и задать перед этим вопрос об очистке. В обычном режиме код будет выглядеть так:


&НаКлиенте

Процедура ЗаполнитьТоварыУслуги(Команда)

Результат = Вопрос(«Табличная часть услуг будет очищена. Продолжить?”, РежимДиалогаВопрос.ДаНет);

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

Возврат;

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

//обработка кода

КонецЕсли;

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


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

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


&НаКлиенте

Процедура ЗаполнитьТоварыУслуги (Команда)

Оповещение = Новый ОписаниеОповещения(“ЗаполнитьТоварыУслугиВопросЗавершение”, ЭтотОбъект);

ТекстВопроса = “Табличная часть услуг будет очищена. Продолжить?”;

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

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

&НаКлиенте

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

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

Возврат;

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

КонецЕсли;

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


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


Специалист компании «Кодерлайн»

Сергей Кулажевский

Задать вопрос автору статьи
Тема вопроса*
Ваше имя*
E-mail или телефон*
Ваш вопрос*
 

Добавить комментарий
Текст сообщения*
Защита от автоматических сообщений
 
Услуги программиста 1С
Получите специалиста
для решения всех задач
в области 1С
Программы 1С
Цены и подробное описание программ 1С:Предприятие 8.