Имя: Пароль:
1C
 
Как уловить ошибку при проведений документа.
,
0 antihacker
 
29.07.18
13:32
Всем привет ! Вот так иногда мы запрещаем провести документ.

ОбработкаПроведения(Отказ, РежимПроведения)
Отказ= истина;
         сообщить("Найден детальный документ номером 123456 на текущий финансовый год !");
КонецПроцедуры

Все нормально когда мы проводим документ интерактивно. А когда проводишь программно, то просто получаешь,,{HTTPСервис.СинхронизацияДокументов.Модуль(248)}: Ошибка при вызове метода контекста (Записать): Не удалось провести "Утвержденный план финансирования по расходам 2597-000000001 от 29.07.2018 16:03:03"!

Как можно получить сообщение, которого ты получаешь при интерактивном проведений.
1 vde69
 
29.07.18
13:51
надо делать так

ОбработкаПроведения(Отказ, РежимПроведения)
Отказ= истина;
#ЕСЛИ тут какое то условие определяющее, что это сервис, я не помню на память какое
         ВызватьИсключение "Найден детальный документ номером 123456 на текущий финансовый год !" ;
#ИНАЧЕ
Отказ= истина;
сообщить("Найден детальный документ номером 123456 на текущий финансовый год !");
#КонецЕсли
КонецПроцедуры
2 vde69
 
29.07.18
13:52
(1) тогда в сервисе функция ОписаниеОшибки() будет возвращать твой текст
3 antihacker
 
29.07.18
15:21
//Отказ= истина;
#ЕСЛИ Отказ ТОГДА
         ВызватьИсключение "Найден детальный документ номером 123456 на текущий финансовый год !" ;

        
#ИНАЧЕ

#КОНЕЦЕСЛИ

Вот так ? Не работает
4 quest
 
29.07.18
15:26
по идее должно быть не Клиент вместо  Отказ в условии
5 antihacker
 
29.07.18
15:29
quest, не очень понял. Можешь перефразировать ответ ?
6 quest
 
29.07.18
15:33
#ЕСЛИ не клиент ТОГДА

         ВызватьИсключение "Найден детальный документ номером 123456 на текущий финансовый год !" ;

        
#ИНАЧЕ
сообщить("Найден детальный документ номером 123456 на текущий финансовый год !");

#КОНЕЦЕСЛИ
7 antihacker
 
29.07.18
15:38
Это я понял. Дело в том что, когда провожу документ программно , все равно получаю такой ответ

{HTTPСервис.СинхронизацияДокументов.Модуль(250)}: Ошибка при вызове метода контекста (Записать): Ошибка при выполнении обработчика - 'ОбработкаПроведения': {Документ.УтвержденныйПланФинансированияПоРасходам.МодульОбъекта(24)}: Найден детальный документ номером 123456 на текущий финансовый год !
8 antihacker
 
29.07.18
15:38
А хотелось просто получить

"Найден детальный документ номером 123456 на текущий финансовый год !"
9 quest
 
29.07.18
15:41
В документе, вместо сообщить пишешь -
ДополнительныеСвойства.Вставить("ПочемуНепПровели","Найден детальный документ номером 123456 на текущий финансовый год !")

В методе вебсеривса

ТекстОшибка = "";
попытка
   Док.Записать(РежимЗаписи.Проведление)
исключение
  ТекстОшибки = Док.ДополнительныеСвойства.ПочемуНепПровели;
конецпопытки


Ну и дальше уже анализируешь что твам тебе надо.
10 Cyberhawk
 
29.07.18
17:52
Ветка - перепись *овнокодеров
11 Cyberhawk
 
29.07.18
17:54
Я просто оставлю это здесь (фрагмент кода из ветки обработки исключения)
                ИнформацияОбОшибке = ИнформацияОбОшибке();
                Причина = ИнформацияОбОшибке.Причина;
                Если Причина <> Неопределено Тогда
                    #Если _ Тогда
                        Причина = ИнформацияОбОшибке();
                    #КонецЕсли
                    ТелоОтвета = Причина.Описание;
                КонецЕсли;
                ДополнительныеСообщения = ПолучитьСообщенияПользователю();
                Для каждого ДополнительноеСообщение Из ДополнительныеСообщения Цикл
                    ТелоОтвета = ТелоОтвета + Символы.ПС + ДополнительноеСообщение.Текст;
                КонецЦикла;
12 quest
 
29.07.18
22:15
от попытки - не уйти все равно. а как передать  сообщение - это дело не важное.
Но за попытку засветить говнокод -  +1 в карму тебе
13 vde69
 
29.07.18
22:21
модуль проведения

---------------------------------
#ЕСЛИ СCOMСоединение Тогда

         ВызватьИсключение "Найден детальный документ номером 123456 на текущий финансовый год !" ;
#ИНАЧЕ

сообщить("Найден детальный документ номером 123456 на текущий финансовый год !");
#КонецЕсли



модуль от куда вызываешь проведение


попытка
   Док.Записать(РежимЗаписи.Проведление)
исключение
  ТекстОшибки = ОписаниеОшибки();
Сообщить (ТекстОшибки )
конецпопытки