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

1С:Предприятие :: 1С:Предприятие 8 общая

В данной транзакции уже происходили ошибки! - как определить какой объект не смог записать

В данной транзакции уже происходили ошибки! - как определить какой объект не смог записать
Я
   ИС-2
 
15.03.18 - 09:12
Загузка данных в базу через правила обмена. Вылетает с такой ошибкой. Как понимаю при записи какого-то объекта находяшегося в транзакции был установлен флаг Отказ = истина. Например, при записи физ. лица не удалось записать паспортные данные.

Как можно определить в каком объекте был установлен этот флаг?
 
 
   rozer76
 
1 - 15.03.18 - 09:27
(0) ну еще это когда при ошибке в транзикции идет обращение к данным напр. чтение. Где-то не хватает обработка try-exept
   Diman000
 
2 - 15.03.18 - 09:37
В журнал регистрации пиши, потом посмотришь.
   FIXXXL
 
3 - 15.03.18 - 10:17
(0) или номер(код) объекта не уникален
   ИС-2
 
4 - 15.03.18 - 10:21
(2) как можно писать. Нет же ни какого обработчика, который сообщит что при записи такого-то объекта был установлен флаг Отказ = Истина;

Подписку тоже не сделать т.к если стоит Отказ = Истина, то подписка просто не вызывается...

И не понятно как можно найти объект при записи в котором произошла ошибка
   Cyberhawk
 
5 - 15.03.18 - 10:23
Никакой флаг отказа не может приводить к той ошибке, что ты видишь. Просто внутри транзакции было исключение, а потом обращение к данным БД.
   Cyberhawk
 
6 - 15.03.18 - 10:25
По поводу "Где-то не хватает обработка try-exept" из (1) тоже мимо - если обработки исключения нет, то ошибка была бы отображена
   Cyberhawk
 
7 - 15.03.18 - 10:26
С крайне большой вероятностью виноват прикладной код конфигурации
   rozer76
 
8 - 15.03.18 - 10:26
(6) как раз в этом ) если он это словит в попытке то не будет дальше читать данные напр
   Cyberhawk
 
9 - 15.03.18 - 10:26
(либо код, выполняемый при загрузке по правилам обмена)
   Cyberhawk
 
10 - 15.03.18 - 10:27
(8) Не переобувайся. Ты пишешь "Где-то не хватает обработка try-exept", Я на это и отвечаю.
 
 Рекламное место пустует
   бомболюк
 
11 - 15.03.18 - 10:37
(5) + 1, только уточнение: исключение возникло на стороне SQL сервера (например, из-за блокировок), что привело к тому, что открытая транзакция приобрела статус "нефиксируемой" (XACT_STATE() = -1). Таким образом, обработав каким то исключение на клиенте (то есть блок try - except есть), мы все равно не сможем зафиксировать данную транзакцию. Надо откатывать и открывать новую.
   rozer76
 
12 - 15.03.18 - 10:41
(10) че такое переобувайся... рано еше летнюю резину - в москоу минус на дворе ) "Где-то не хватает обработка try-exept" добавит ТС проверку недостающую в эксепте откатит транзакцию и читать не будет из БД и все ок будет
)
   Вафель
 
13 - 15.03.18 - 10:46
(5) Именно так отказ и будет работать, если запись в попытке. а далее обращение к другим объектам
   Вафель
 
14 - 15.03.18 - 10:46
хотя должно записываться более 1 документа в попытке тогда
   ИС-2
 
15 - 27.03.18 - 07:56
еще интересная особенность новых конфигураций - в случае ошибки (например, не заполнено поле) происходит ВызватьИсключение.
Что приводит к тому, что не получается записать все объекты, которые пишешь в транзакции.
Как победить ?
   Сияющий в темноте
 
16 - 27.03.18 - 08:49
наверное,если писать в транзакции только один обьект или группу связанных между собой обьектов,то будет понятно,кто виноват и что не записалось
   TormozIT
 
17 - 27.03.18 - 13:09
Используй техножурнал. Анализируй по нему все события EXCP (исключительные ситуации). Среди них ты скорее всего найдешь нужное место. Также можешь запустить отладку с флагом "Останавливаться по ошибке" и перебирать таким образом все ошибки в процессе выполнения.
   ИС-2
 
18 - 29.03.18 - 09:49
нет ли ни каких возможностей отключить вызвать исключение. Сейчас получается, что если хоть в одном документ произошла ошибка, то все остальные тоже не проведутся.
В рамках этой задачи, это есть плохо

Список тем форума
Рекламное место пустует  Рекламное место пустует
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Э. Йодан
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует