Выдать Предупреждение после проведения документа

1. MaQo 13.03.24 17:24 Сейчас в теме
Проводиться документ, на сервере производится проверка правильности проводки, в случае неправильного проведения документ нужно провести, но выдать пользователю Предупреждение, окно по центру экрана. Метод Сообщить() малозаметный.

Попытался расширением добавить в событии формы ПередЗаписью - но этот код не отрабатывает. ВызватьИсключение() пишет в центре, что документ не проводиться, что неправда.

Как выдать Предупреждение после проведения документа?
По теме из базы знаний
Найденные решения
2. booksfill 14.03.24 11:23 Сейчас в теме
В модуле формы (СообщениеОбОшибке - строковый реквизит формы):

&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
  Если ЗначениеЗаполнено(ЭтаФорма.СообщениеОбОшибке)  Тогда
    пОписаниеОповещения =  Новый ОписаниеОповещения("обработатьОшибкуПроведения", ЭтаФорма);
    ПоказатьПредупреждение(пОписаниеОповещения, ЭтаФорма.СообщениеОбОшибке, 0, нСтр("ru='При проведнии произошла фигня, не мешающая самому проведению'", "ru") )
  КонецЕсли; 
КонецПроцедуры

&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
  Если ТекущийОбъект.ДополнительныеСвойства.Свойство("Сообщение") Тогда
    ЭтаФорма.СообщениеОбОшибке = ТекущийОбъект.ДополнительныеСвойства.Сообщение;
    ТекущийОбъект.ДополнительныеСвойства.Удалить("Сообщение");
  КонецЕсли; 
КонецПроцедуры

&НаКлиенте
Процедура обработатьОшибкуПроведения(ДопПараметры) Экспорт
  СообщениеОбОшибке = "";
КонецПроцедуры 
Показать


В модуле документа:
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
  ЭтотОбъект.ДополнительныеСвойства.Вставить("Сообщение", "Привет");
КонецПроцедуры


P.S.
Постарайтесь все проверки делать до проведения. Негоже это в транзакции делать.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. booksfill 14.03.24 11:23 Сейчас в теме
В модуле формы (СообщениеОбОшибке - строковый реквизит формы):

&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
  Если ЗначениеЗаполнено(ЭтаФорма.СообщениеОбОшибке)  Тогда
    пОписаниеОповещения =  Новый ОписаниеОповещения("обработатьОшибкуПроведения", ЭтаФорма);
    ПоказатьПредупреждение(пОписаниеОповещения, ЭтаФорма.СообщениеОбОшибке, 0, нСтр("ru='При проведнии произошла фигня, не мешающая самому проведению'", "ru") )
  КонецЕсли; 
КонецПроцедуры

&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
  Если ТекущийОбъект.ДополнительныеСвойства.Свойство("Сообщение") Тогда
    ЭтаФорма.СообщениеОбОшибке = ТекущийОбъект.ДополнительныеСвойства.Сообщение;
    ТекущийОбъект.ДополнительныеСвойства.Удалить("Сообщение");
  КонецЕсли; 
КонецПроцедуры

&НаКлиенте
Процедура обработатьОшибкуПроведения(ДопПараметры) Экспорт
  СообщениеОбОшибке = "";
КонецПроцедуры 
Показать


В модуле документа:
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
  ЭтотОбъект.ДополнительныеСвойства.Вставить("Сообщение", "Привет");
КонецПроцедуры


P.S.
Постарайтесь все проверки делать до проведения. Негоже это в транзакции делать.
3. booksfill 14.03.24 11:41 Сейчас в теме
Да. забыл написать, что если напрягает работа с доп. свойствами, то можете просто на сервере вместо Сообщить, создать
СообщениеПользователю и перехваить их на форме в событии "ПослеЗаписиНаСервере":
рез = ПолучитьСообщенияПользователю(Истина);

По мне, так строк кода столько же, но 1-ом варианте не надо плодить лишний объект СообщениеПользователю.
Судя по тому, что он умеет - это всяко больше (на какие-то миллидоли, ага) напрягает систему.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот