Каталог решений - УФ. Информационные сообщения пользователям при Записать и закрыть или Провести и закрыть.

УФ. Информационные сообщения пользователям при Записать и закрыть или Провести и закрыть.

УФ. Информационные сообщения пользователям при Записать и закрыть или Провести и закрыть.

В наличии

Как показать пользователю некритические информационные сообщения если он нажал «Записать и закрыть» или «Провести и закрыть».

Категория:

Описание

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

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

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

В итоге реализовал так (для записи элемента справочника, для документов реализация будет подобной же):

1. В форме элемента создал реквизит МассивСообщений типа СписокЗначений для хранения перехваченных с сервера сообщений пользователю.

2. Процедура ПослеЗаписиНаСервере()

&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
    МассивСообщений.Очистить();

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

//Получить сообщения можем лишь на сервере. Как только перейдем на клиент сообщения будут считаться показанными.

    ФиксМассивСообщений = ПолучитьСообщенияПользователю(Истина);

//Записываем сообщения в список значений (реквизит формы МассивСообщений)
    Для Сч = 0 По ФиксМассивСообщений.Количество() - 1 Цикл
        МассивСообщений.Добавить(ФиксМассивСообщений.Получить(Сч));
    КонецЦикла;
КонецПроцедуры

 

3. Процедура ПослеЗаписи()

&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)

//Если сообщения есть, то инициируем их показ пользователю
    Если МассивСообщений.Количество() > 0 Тогда
        ПоказатьСообщенияПользователю();
        МассивСообщений.Очистить();
    КонецЕсли;
КонецПроцедуры

 

4. Создал процедуру ПоказатьСообщенияПользователю()

&НаКлиенте
Процедура ПоказатьСообщенияПользователю()
    Для Каждого Сообщение Из МассивСообщений Цикл

//Сообщения показываем в виде предупреждений, т.к. пока пользователь не нажмет "Ок" форма не закроется. Т.е. только так мы достигаем цели,

//чтобы пользователь увидел сообщения перед закрытием формы
        Предупреждение("" + Сообщение.Значение.Текст);
    КонецЦикла;
КонецПроцедуры

 

 

Все вышеописанные процедуры описаны в модуле формы.

has been added to your cart:
Оформление заказа