Имя: Пароль:
1C
 
Мониторинг регл. заданий
0 AlphaSpec
 
02.06.17
10:25
Доброго дня. Суть проблемы: есть регл. задание по выгрузке данных в другую базу через COM. Есть желание вести мониторинг этого задания. Для этого я создал внешнюю обработку, которая запускается планировщиком Винды по расписанию через vbs. Обработка смотрит заполнено ли свойство ИнформацияОбОшибке фонового задания регламентного задания. И если, например, вообще удалить COM-компоненту, то обработка выгрузки уходит в эксепшн, и свойство должно бы заполниться, но этого не происходит... Интересует в каком случае при выполнении фонового задания заполняется его свойство ИнформацияОбОшибке.
1 AlphaSpec
 
02.06.17
12:13
Ап!
2 Skylark
 
02.06.17
12:57
(0) Я думаю, что если в обработке у тебя прописана попытка-исключение, то даже если срабатывает исключение, то это означает, что регзадание завершилось. Т.е. типа возникшие ошибки ты сам обработал.
А вот если попытки-исключения нет, то регзадание завершиться аварийно и получит информацию об ошибке.
3 AlphaSpec
 
02.06.17
13:31
(2) В синтакс-помошнике говорится именно об исключении. ИнформацияОбОшибке (ErrorInfo)

Описание:

Предназначен для представления структурированной информации об ошибке (исключении).
4 AlphaSpec
 
02.06.17
13:33
Но исключение должно возникнуть именно в процедуре обработчике регламентного задания. Поэтому возникает другой вопрос: Возможно ли каким-то образом выполняя программно(не интерактивно) обмен данными обработкой УниверсальныйОбменДанными определить - возникали ли исключения в обработке? В составе реквизитов обработки ничего похожего не увидел. Есть ФлагОшибок, но он не информативен, и не во всех исключительных ситуациях взводится. Хочется выполняя обмен программно иметь данные об возникших ошибках обработки. Не меняя код обработки, полагаю - невозможно?
5 Skylark
 
02.06.17
14:15
(4)

Процедура Регзадание()
  Попытка
    / код основного функционала /
  Исключение
    / код обработки ошибки /
  КонецПопытки
КонецПроцедуры

Фоновое задание с такой процедурой будет выполняться успешно ВСЕГДА. Даже если произойдет ошибка в коде основного функционала, фоновое задание завершится успешно (ну если только ошибки не будет уже в коде обработки ошибки).
Если в коде обработки ошибки ты вызовешь метод ИнформацияОбОшибке (ErrorInfo), то получишь эту информацию и   сможешь с ней что-нибудь сделать - отправить сообщение об ошибке по почте или записать в специально созданный для этого регистр/справочник/..., чтобы потом проанализировать.
6 Skylark
 
02.06.17
14:16
Процедура Регзадание()
    / код основного функционала /
КонецПроцедуры

А вот так, если в основном коде будет ошибка, то фоновое задание завершится со статусом "Аварийно" и где-нибудь в его свойствах будет информация об ошибке.
7 Skylark
 
02.06.17
14:19
(4) УниверсальныйОбменДанными при интерактивной работе выдает же сообщения об ошибках? Посмотри этот кусок, вполне вероятно, что при программной работе информация об ошибках также где есть.
8 AlphaSpec
 
02.06.17
14:50
(7) Смотрел. В интерактивном режиме при ошибках вызывается исключение, в котором просто формируется строка и сообщается пользователю. Больше никуда ничего не пишет. Программно похоже не получить без изменений обработки. Что достаточно странно для такой серьезной типовой обработки.
9 Skylark
 
02.06.17
17:58
(8) Не знаю, куда ты смотрел. Я сейчас глянул - в этой обработке предусмотрена целая система вывода сообщений в протокол. Половина закладки "Дополнительные настройки" этому посвящена.
Сто пудов это можно сделать и программно - получить экземпляр обработки, установить соответствующие настроечные реквизиты и вперед. По завершении обмена получить от обработки протокол.
10 AlphaSpec
 
05.06.17
08:18
(9) И я не знаю, куда Вы смотрели ) В протокол обмена типовым функционалом обработки не предусмотрен вывод сообщений об ошибках подключения к ИБ приемнику.
11 AlphaSpec
 
05.06.17
16:00
Вопрос сейчас в другом - есть обработка в справочнике внешних обработок. У обработки есть команда с типом ВыполнениеСерверногоМетода. Для команды настроено расписание выполнения. У меня не получается сэмулировать такие условия, при которых у фонового задания выполнения этой обработки статус был - ЗавершенАварийно. Прописываю полнейшую ересь в коде, но фоновое задание не завершается аварийно. С чем это может быть связано и при каком условии будет статус ЗавершенАварийно?
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.