Вход | Регистрация

1С:Предприятие ::

Метки: 

Как уловить ошибку при проведений документа.

Я
   antihacker
 
29.07.18 - 13:32
Всем привет ! Вот так иногда мы запрещаем провести документ.

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

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

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

ОбработкаПроведения(Отказ, РежимПроведения)
Отказ= истина;
#ЕСЛИ тут какое то условие определяющее, что это сервис, я не помню на память какое

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

Отказ= истина;
сообщить("Найден детальный документ номером 123456 на текущий финансовый год !");
#КонецЕсли
КонецПроцедуры
   vde69
 
2 - 29.07.18 - 13:52
(1) тогда в сервисе функция ОписаниеОшибки() будет возвращать твой текст
   antihacker
 
3 - 29.07.18 - 15:21
//Отказ= истина;

#ЕСЛИ Отказ ТОГДА

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

         
#ИНАЧЕ


#КОНЕЦЕСЛИ 

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


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

         
#ИНАЧЕ

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

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

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

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

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

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


Ну и дальше уже анализируешь что твам тебе надо.
   Cyberhawk
 
10 - 29.07.18 - 17:52
Ветка - перепись *овнокодеров
 
 
   Cyberhawk
 
11 - 29.07.18 - 17:54
Я просто оставлю это здесь (фрагмент кода из ветки обработки исключения)
                ИнформацияОбОшибке = ИнформацияОбОшибке();
                Причина = ИнформацияОбОшибке.Причина;
                Если Причина <> Неопределено Тогда
                    #Если _ Тогда

                        Причина = ИнформацияОбОшибке();
                    #КонецЕсли 

                    ТелоОтвета = Причина.Описание;
                КонецЕсли;
                 ДополнительныеСообщения = ПолучитьСообщенияПользователю();
                Для каждого ДополнительноеСообщение Из ДополнительныеСообщения Цикл
                    ТелоОтвета = ТелоОтвета + Символы.ПС + ДополнительноеСообщение.Текст;
                КонецЦикла;
   quest
 
12 - 29.07.18 - 22:15
от попытки - не уйти все равно. а как передать  сообщение - это дело не важное.
Но за попытку засветить говнокод -  +1 в карму тебе
   vde69
 
13 - 29.07.18 - 22:21
модуль проведения

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


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


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



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


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


Список тем форума
  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует