Имя: Пароль:
1C
1С v8
1С ошибка при обмене данными
,
0 andryscha1c
 
18.10.21
11:15
есть внешняя обработка, которая по расписанию раз в день выполняет обмен, а именно, отправляет и принимает через HTTP данные с внешней системы.
Возникло следующее: в какой то момент при загрузке документа, может к примеру, возникнуть ошибка (пользователь номер например забыл вбить) и тогда вся выгрузка падает и обмен прекращается. Можно ли как то реализовать так, что бы при ошибке выгрузка продолжала работать дальше и не падала?
1 бомболюк
 
18.10.21
11:23
Ну например обрабатывать возникающую ошибку самостоятельно, при помощи конструкции Попытка - Исключение - КонецПопытки
2 ДенисЧ
 
18.10.21
11:25
Есть такое слово "Попытка исключение конецпопытки"
3 andryscha1c
 
18.10.21
11:31
(1) тогда придется всю выгрузку описывать в таких конструкциях, и необходимо заранее самостоятельно предполагать, где может возникнуть ошибка
4 Serg_1960
 
18.10.21
11:34
Чисто теоретически, в принципе, во внешней обработке можно установить обмен в режиме загрузки данных - всё бесконтрольно принимается "как есть"...
5 SleepyHead
 
гуру
18.10.21
11:36
А можно описать структуру загружаемых данных так, чтобы было понятно, загружено значение из файла обмена или нет. Незагруженные значения отрабатывать до записи данных в базу.

Тогда попытка-исключение не понадобятся
6 andryscha1c
 
18.10.21
11:38
(4) вот это я и видел в типовых, только в какой момент это описать и куда, если обработка с нуля написана, да и планов обмена нет.
7 andryscha1c
 
18.10.21
11:39
(5) это интересно, то есть если структура обязательных полей не заполнена, то объект не записывать а базу?
8 Kassern
 
18.10.21
11:41
(3) всего то нужно несколько попыток. Первая при получении данных с сервиса, вторая при записи документа.
9 Serg_1960
 
18.10.21
11:47
(6) Не зная алгоритмы обработки - сложно что-либо подсказать. Если обработка "с нуля" - то нужно найти место в алгоритме, где объект записывается и там внести изменение (запись через попытку, а если исключение - регистрация ошибки в протоколе обмена и запись через "Объект.ОбменДанными.Загрузка = Истина;". Как-то вот так.
10 andryscha1c
 
18.10.21
12:33
(8) (9) а что если ошибка типа "Поле объекта не обнаружено" которая возникает динамически, за счет неверного выбора элемента пользователем
11 Kassern
 
18.10.21
12:43
(10) Если это json то без проблем можете прочитать в соответствие и проверять наличие свойства перед обработкой.
12 Kassern
 
18.10.21
12:53
(11) Если это XML то можно через фабрику XDTO прочитать, на выходе будет ОбъектXDTO у которого есть метод Свойства(), который выводит текущие свойства у объекта. Так что тоже можно исключить подобные ошибки
13 fisher
 
18.10.21
13:00
(10) Падать по ошибке такого рода - это нормальная практика. fail fast называется. Сразу увидел, сразу разобрался, сразу починил и живешь дальше без проблем. В противном случае у тебя возникает гамбуз отложенных проблем с высокими рисками просрочить критичные.
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой