1с способы оповещения пользователя

Работа с сообщениями пользователю

Для вывода информации пользователю в 1С:Предприятии 8.2 существует специальный механизм сообщений. В этом механизме используется объект встроенного языка СообщениеПользователю . Предполагается, что сообщения выводятся для того, чтобы сообщить пользователю об ошибках. А для информирования о выполняемом действии рекомендуется использовать метод встроенного языка ПоказатьОповещениеПользователя() .

Чтобы понять, как работает новая система сообщений, рассмотрим ситуацию, когда нужно проверить, что некоторые, определенные реквизиты формы заполнены данными.

Платформа позволяет указать, какие реквизиты объектов конфигурации должны автоматически проверяться на заполненность. Если в процессе работы пользователь хочет записать объект, а какой-либо реквизит этого объекта не заполнен, платформа отобразит пользователю сообщение об ошибке. Такое сообщение будет «привязано» к элементу управления в форме. Если щелкнуть на сообщении в окне сообщений, фокус ввода перейдет на указанное поле, а рядом появится информационное окно с текстом сообщения.

Рассмотрим подробно, что при этом происходит и как можно добиться такого же поведения в своем коде. В качестве примера возьмем ситуацию проведения документа.

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

Когда объекту необходимо сформировать сообщение, он ничего не знает о том, где он «родился и живет». Объект знает лишь, что его реквизит не заполнен. Поэтому он создает новый объект СообщениеПользователю и заполняет его свойство Текст описанием ошибки, а свойство Поле заполняет именем своего реквизита, который не заполнен.

После этого наступает ответственный момент — форме надо предоставить информацию о том, чьё это сообщение и в каком реквизите формы хранится наш объект. Это делается для того, чтобы форма могла впоследствии привязать сообщение к нужному элементу управления. Для установки связи объект данных вызывает у объекта сообщения метод УстановитьДанные() , передавая себя в качестве параметра. При этом происходит поиск среди запомненных ранее соответствий «объект — имя реквизита формы». Если для объекта существует значение имени реквизита формы, метод УстановитьДанные() помещает имя реквизита формы в свойство ПутьКДанным объекта СообщениеПользователю , а ссылка объекта (или ключ записи регистра) помещается в свойство КлючДанных .

Теперь сообщение полностью заполнено и готово к тому, чтобы предстать перед пользователем. После выполнения всех действий на сервере пакет сообщений передается с сервера на клиента и показывается в окне сообщений.

ПРИМЕЧАНИЕ
Пока управление не передано обратно на клиента, можно получить массив сообщений методом глобального контекста ПолучитьСообщенияПользователю() .

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

Читайте также:  Назовите способы кодирования невербальной информации

Если свойство КлючДанных заполнено, но в форме отсутствует реквизит с именем из свойства ПутьКДанным , то будет открыта новая форма объекта, в которую будут перенесены все сообщения с таким ключом данных (ссылкой или ключом записи регистра).

Программное создание сообщений

Теперь посмотрим, как можно добиться такого поведения полностью программно.

Первое, что необходимо сделать — зарегистрировать в системе соответствие объекта и имени реквизита формы. Для этого в глобальном контексте реализована функция УстановитьСоответствиеОбъектаИРеквизитаФормы(). Сделать это можно следующим образом:

В данном фрагменте выполняется преобразование объекта из данных формы в реальный объект и устанавливается его соответствие с реквизитом формы по имени «Объект».

Если в дальнейшем требуется создать сообщение, можно сделать это следующим образом:

В этом фрагменте создается новый объект СообщениеПользователю , в котором запоминается Текст сообщения и указывается Поле объекта, ошибка в данных которого вызвала необходимость вывода сообщения. Информация о том, как объект расположен в форме берется из предварительно запомненной пары «Объект/ИмяРеквизитаФормы». В дальнейшем сообщение будет выведено в окно сообщений формы и привязано к соответствующему элементу управления.

ВАЖНО
Привязка объекта к имени реквизита формы действует только для конкретного экземпляр объекта, а не для его ссылки, и живет до тех пор, пока этот экземпляр существует.

Также система позволяет вручную привязать сообщение к форме. Такое может понадобиться, например, при выводе сообщения на стороне клиента, где отсутствуют объекты данных.

ПРИМЕЧАНИЕ
Отметим, что в обоих примерах сообщение, устанавливаемое свойству Текст, указывает строку как 11-ю, а значение, устанавливаемое свойству Поле, указывает на 10-ю. Так сделано потому, что в интерфейсе строки табличных частей начинают нумерацию с 1, а в программном коде — с 0.

Источник

1С 8.3 : Как показать сообщение пользователю? методы: СообщениеПользователю и ПоказатьОповещениеПользователя

В 1С предполагается, что СообщениеПользователю выводятся для того, чтобы сообщить пользователю об ошибках.

А для информирования о выполняемом действии рекомендуется использовать метод встроенного языка ПоказатьОповещениеПользователя().

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

Пример вывода сообщения на клиенте:

При обработке на сервере:

Необходимо зарегистрировать в системе соответствие объекта и имени реквизита формы. Для этого в глобальном контексте реализована функция УстановитьСоответствиеОбъектаИРеквизитаФормы(). Сделать это можно следующим образом:

В данном фрагменте выполняется преобразование объекта из данных формы в реальный объект и устанавливается его соответствие с реквизитом формы по имени «Объект».

Если в дальнейшем требуется создать сообщение, можно сделать это следующим образом:

В этом фрагменте создается новый объект СообщениеПользователю, в котором запоминается Текст сообщения и указывается Поле объекта, ошибка в данных которого вызвала необходимость вывода сообщения. Информация о том, как объект расположен в форме берется из предварительно запомненной пары «Объект/ИмяРеквизитаФормы». В дальнейшем сообщение будет выведено в окно сообщений формы и привязано к соответствующему элементу управления.

Примеры заполнения свойства Поле объекта СообщениеПользователю

ТипШаблонПример
Реквизит ИмяРеквизита Контрагент
Табличная часть ИмяТабличнойЧасти Скидки
Реквизит табличной части ИмяТабличнойЧасти[ИндексСтроки].ИмяРеквизита Номенклатура[10].Количество
Реквизит набора записей [ИндексСтроки].ИмяРеквизита [10].Курс

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

Читайте также:  Основные способы формирования зож

Источник

Заметки из Зазеркалья

Реализовано в версии 8.3.10.2168.

Мы доработали механизм оповещений пользователя. Теперь им одинаково удобно пользоваться как в тонком клиенте, так и в веб-клиенте. Мы изменили внешний вид оповещений и добавили им ряд новых возможностей.

Показ нескольких оповещений

В старой реализации в один момент времени на экране отображалось только одно оповещение. Новое оповещение перекрывало собой предыдущее. Таким образом, если подряд выводилось несколько оповещений, то существовала большая вероятность того, что пользователь не успеет прочитать предыдущее оповещение, так как оно будет перекрыто следующим.

Теперь в большинстве случаев одновременно может отображаться до трёх оповещений:

Это верно для тонкого клиента, толстого клиента, и для веб-клиента, работающего в браузерах 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с в управляемом приложении могут быть вызваны как самой платформой, например, при записи документа, так и разработчиком, если он применит метод глобального контекста ПоказатьОповещениеПользователя().
Код 1C v 8.2 УП
Оповещения появляются в отдельном не модальном окне, по умолчанию привязанному к панели задач операционной системы, и затухают через несколько секунд после появления.
Если вывести несколько оповещений подряд, то пользователь сможет увидеть только последнее.
Последние несколько оповещений можно увидеть на панели истории.

При программном формировании оповещений важно помнить, что метод ПоказатьОповещениеПользователя() доступен только в контексте клиентской части, то есть при работе тонкого, толстого клиента или веб-клиента.
В качестве параметров метода ПоказатьОповещениеПользователя() передается строка с текстом оповещения, навигационная ссылка, текст с пояснением и картинка.
Навигационная ссылка будет представлена в области пояснения как гиперссылка, а в том случае если текст с пояснением не задан, то именно представление навигационной ссылки будет отображено в области пояснения. Получить навигационную ссылку можно для любого объекта базы с помощью глобального метода ПолучитьНавигационнуюСсылку().
Проиллюстрируем вывод оповещения при открытии документа, редактирование которого запрещено.
Код 1C v 8.2 УП
В приведенном примере производится проверка даты запрета редактирования, установленной в константе, и в том случае если открывается документ, попадающий в период запрета, пользователю выводится оповещение. В оповещении установлена навигационная ссылка на открываемый документ, однако в окне оповещения ссылка будет установлена к тексту «Разрешен только просмотр документа».

еще пример:
Код 1C v 8.2 УП

Для Толстого клиента kojinandrej предложил следующий механизм:
1. В модуле обычного приложения в процеду ПриНачалеРаботыСистемы добавляем текст
Код 1C v 8.х
2. Создаем ОбщийМодуль под названием «опМодуль» в модуле вставляем текст
Код 1C v 8.х
3. Создаем регистр сведений «ОповещениеПользователей». Добавляем измерения: «Пользователь» Тип:»СправочникСсылка.Пользователи», «Дата» Тип:»Дата», «Владелец» Тип:»СправочникСсылка.Пользователи», Ресурсы: «Просмотрено» Тип: «Булево», «Оповещение» Тип: «Строка»

4. Добавляем в конфигурацию необходимые Обработки и формы — пользуемся.

Принцип Работы:
При запуске 1с справой стороны в трее открыто оповещение пользователей. Открываем обработку Оповестить, пишим текст сообщения и отметив получателей отправляем сообщение.
Когда сообщение приходит получателю, то форма оповещени появляется с правой стороны. Что бы сообщение считалось прочитаным, его необходимо открыть двойным щелчком правой клавиши мыши и оно откроется в новом окне как показао на третем изображении. В дальнейшем эти сообщения можно будет просматривать во вкладке «Просмотреные»

Источник

Оцените статью
Разные способы