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

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 человек.
Рекламное место пустует