1с описаниеоповещения дополнительные параметры
Мы доработали механизм оповещений пользователя. Теперь им одинаково удобно пользоваться как в тонком клиенте, так и в веб-клиенте. Мы изменили внешний вид оповещений и добавили им ряд новых возможностей.
Показ нескольких оповещений
В старой реализации в один момент времени на экране отображалось только одно оповещение. Новое оповещение перекрывало собой предыдущее. Таким образом, если подряд выводилось несколько оповещений, то существовала большая вероятность того, что пользователь не успеет прочитать предыдущее оповещение, так как оно будет перекрыто следующим.
Теперь в большинстве случаев одновременно может отображаться до трёх оповещений:
Это верно для тонкого клиента, толстого клиента, и для веб-клиента, работающего в браузерах Internet Explorer и Google Chrome. Браузеры Safari и Mozilla Firefox позволяют отображать неограниченное количество оповещений, а браузер Microsoft Edge показывает одно последнее оповещение, но в нём есть Action Center, в который дублируются все оповещения.
Отображение оповещений при неактивном окне приложения
Раньше в веб-клиенте оповещения выводились только в активное окно браузера. Если пользователь переключался на другое окно или другое приложение, он не видел оповещения. Теперь, при использвании веб-клиента, оповещения отображаются на экране даже в том случае, когда окно приложения свёрнуто или неактивно.
При первом вызове метода ПоказатьОповещениеПользователя() в веб-клиенте в Google Chrome, Mozilla Firefox и Safari браузер будет запрашивать у пользователя разрешение на использование оповещений. Пользователь может разрешить их вывод для данного приложения, либо запретить.
Если пользователь запретит вывод оповещений, то будут использоваться оповещения нового вида, но отрисовываться они будут внутри окна браузера.
Центр оповещений
Чтобы оповещения не пропадали навсегда, мы реализовали центр оповещений. А у самих оповещений мы реализовали новое свойство – СтатусОповещенияПользователя. Оно может принимать два значения: Информация и Важное.
Оповещения со статусом Информация отображаются на экране, и через 10 секунд пропадают (в браузере Microsoft Edge – через 4 секунды). Оповещения со статусом Важное ведут себя точно так же, но при этом они сохраняются в центре оповещений.
Центр оповещений доступен из панели инструментов. О том, что есть новые важные оповещения, сигнализирует оранжевая точка рядом с его иконкой.
В центре оповещений отображаются важные оповещения, на которые пользователь еще не отреагировал - не закрыл или не выполнил связанное с оповещением действие. Оповещения располагаются в порядке их появления, самые новые сверху. Таким образом, даже если пользователь отходил от компьютера, он не пропустит важные оповещения.
Оповещение можно убрать из списка кнопкой очистки. Если с оповещением связано некоторое действие, то после нажатия мышью на текст оповещения оно также пропадёт. Команда Очистить оповещения удаляет из списка все оповещения. При этом если с оповещениями были связаны действия, то они не выполняются.
Выполнение действий при нажатии
В старой реализации единственное действие, которое можно было выполнить при нажатии на оповещение, это переход по навигационной ссылке. Она передавалась в метод вторым параметром.
Теперь мы расширили возможности оповещений, и во втором параметре вы можете передать не только строку с навигационной ссылкой, но и описание оповещения.
Описание оповещения указывает на процедуру, которая должна быть выполнена при нажатии на это оповещение.
Внешний вид
В тонком клиенте в варианте интерфейса Такси стиль оповещений будет максимально близким к стилю оповещений браузера Google Chrome при использовании Notifications API.
Если используется вариант интерфейса Версия 8.2, то стиль и поведение оповещений остаются прежними.
В веб-клиенте внешний вид оповещений определяется используемым браузером. По большому счёту оповещения будут выглядеть так же, как и в тонком клиенте, но у каждого браузера есть свои особенности. Например, вы можете сравнить, как те же самые оповещения покажет Internet Explorer и Mozilla Firefox.
Кроме этого есть и другие особенности. Например, в браузере Internet Explorer поддерживаются только оповещения, отображаемые внутри окна приложения. А в браузере Safari параметр Картинка не поддерживается, и оповещения показываются сверху экрана.
Метод Сообщить в 1С
Метод Предупреждение в 1С
Этот метод имеет следующий синтаксис:
Предупреждение(<Текст предупреждения>,<Таймаут>,<Заголовок окна>)
Текст предупреждения – или непосредственно текст предупреждения, или переменная с типом строка;
Заголовок окна – текст или переменная с типом строка, это значение будет в заголовке окна с предупреждением.
В качестве примера, на форме обработки я создал команду, в которой вывожу предупреждение:
И результат работы:
А если установить таймаут (второй параметр), то через указанное количество секунд окно закроется.
Замечу, что этот метод работает только тогда, когда у конфигурации включен режим использования модальности. Посмотреть на то, какое значение у этого режима можно в палитре свойств конфигурации:
В конфигурациях с таким режимом использования модальности следует применять метод ПоказатьПредупреждение.
Метод ПоказатьПредупреждение в 1С
У этого метода похожий синтаксис:
ПоказатьПредупреждение(<Описание оповещения о завершении><Текст предупреждения>,<Таймаут>,<Заголовок окна>)
Описание оповещения о Завершении – описание процедуры, которая будет вызвана после закрытия окна предупреждения.
Просто, первый параметр оставляем пустым.
Замечу, что метод ПоказатьПредупреждение работает как с включенной, так и с выключенной модальностью, поэтому в Ваших разработках я рекомендую применять именно этот метод!
Подробно о том, как работает метод ПоказатьПредупреждение с первым параметром «Описание оповещения о завершении» читайте в статье ниже:
Более подробно и основательно начальные вопросы программирования в 1С вы можете изучить в
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника.
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog
Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму.
можно оплатить вручную:
В рамках одного сеанса работы в 1С выполнение встроенного языка выполняется последовательно, иначе говоря синхронно. Выполнение происходит в одном потоке, синхронные методы блокируют основной поток до окончания своего выполнения.
Пример синхронного выполнения:
Асинхронные методы не блокируют основной поток. Асинхронность в 1С реализуется с помощью очереди асинхронных задач. Основной поток выполняет задачи из этой очереди, как только сможет это сделать. Важно понимать, что асинхронность это не многопоточность. Многопоточность в 1С реализуется с помощью других механизмов.
Пример асинхронного выполнения в 1С:
Асинхронную технику можно использовать только на клиенте для реализации следующих задач:
- Работа с блокирующими окнами
- Работа с расширением работы с файлами
- Работа с расширением криптографии
- Работа с внешними компонентами
В нашем примере использовать асинхронность через Обещания, но 1С поддерживает два варианта асинхронности:
- Асинхронность через обратные вызовы (ОписаниеОповещения)
- Асинхронность через Обещания
ОписаниеОповещения
Асинхронность через обратные вызовы реализована в 1С с помощью объекта встроенного языка ОписаниеОповещения. Сам термин обратный вызов (call back) называется так, потому что мы сначала передаем ссылку на метод в асинхронную процедуру или функцию, а после выполнения асинхронной процедуры выполняется обратный вызов переданного метода.
Процедуры обратного вызова могут быть только на клиенте, обязательно со словом Экспорт, только в модуле формы, модуле команды или в общем модуле.
ОбратныйВызов = Новый ОписаниеОповещения ( "ОбратныйВызов" , ЭтотОбъект ) ; //данная процедура будет вызвана после того как в предупреждении нажмут "ОК" Процедура ОбратныйВызов ( ДополнительныеПараметры ) Экспорт
Асинхронность через обещания
Обещание
Объект обещание может иметь 3 состояния:
Оператор Ждать
Оператор Ждать позволяет получить результат функции из обещания. Параметром данного оператора может быть только объект с типом обещание. Оператор Ждать можно использовать только в процедурах и функциях, которые отмечены модификатором Асинх. А также у собственных асинхронных функций, которые возвращают обещание тоже нужно указывать модификатор Асинх.
У управляемой формы есть событие ОбработкаОповещения:
Обработчик данного события находится на клиенте и выглядит следующим образом:
Процедура ОбработкаОповещения ( ИмяСобытия , Параметр , Источник )
А также обработку. На форму обработки добавим реквизит Контрагент с типом СправочникСсылка.Контрагенты и реквизит Адрес с типом Строка, доступный только для чтения. При изменении контрагента сделаем заполнение реквизита Адрес адресом из контрагента:
Создадим нового контрагента:
И выберем его на форме обработки:
Адрес заполнился автоматически. Однако, если сейчас изменить адрес контрагента, то на форме по прежнему останется старый адрес:
Вот здесь как раз можно использовать событие ОбработкаОповещения и метод Оповестить().
В модуле формы обработки добавляем событие ОбработкаОповещения:
Процедура ОбработкаОповещения ( ИмяСобытия , Параметр , Источник ) Если ИмяСобытия = "Запись_Контрагент" И Источник = Контрагент ТогдаВ модуль формы контрагента, в событие ПослеЗаписи добавим следующий код:
Здесь после каждой записи выполняется оповещение всех форм об изменении контрагента. Третьим параметром передается ссылка на записанного контрагента.
Если сейчас выбрать контрагента на форме обработки, а потом изменить его адрес, то адрес автоматически обновится на форме обработки.
Нужно учитывать, что при вызове метода Оповестить() выполнение кода продолжится только после выполнения обработчика события ОбработкаОповещения во всех открытых формах. Поэтому не стоит в данном обработчике добавлять код, который может долго выполняться.
Также можно в модуле управляемого приложения или в глобальном клиентском модуле подключить процедуру, которая будет выполняться при каждом вызове метода Оповестить(). Для этого в модуле приложения добавим следующую процедуру:
Читайте также: