Имя: Пароль:
1C
 
В данной транзакции уже происходили ошибки!
0 YHVVH
 
01.03.10
08:51
Пишет ошибку
Ошибка при вызове метода контекста (Прочитать): В данной транзакции уже происходили ошибки!
НаборЗаписей.Прочитать();

Вот мой код:
размещается в модкуле объекта БП. При выполнении

Попытка
Организация.Записать();
Исключение
Отказ = Истина;
КонецПопытки;

Если Отказ тогда
НаборЗаписей = РегистрыСведений.Лог.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.ТочкаМаршрута.Установить(ТочкаМаршрутаБизнесПроцесса);
НаборЗаписей.Отбор.БизнесПроцесс.Установить(ЭтотОбъект.Ссылка);
НаборЗаписей.Прочитать();
......
КонецЕсли;
1 YHVVH
 
01.03.10
08:53
собсно вопрос
почему ошибка возникает
2 YHVVH
 
01.03.10
09:00
я так понимаю есть транзакция
в ней вложенная тразакция

во вложенной транзакции происходит ошибка

и что из за этого, нельзя регистр прочитать?
3 Aprobator
 
01.03.10
09:19
сдается мне что весь этот код внутри НачатьТранзакцию и ЗафиксироватьТранзакцию.
А поскольку при выполнении еще выскакивает и в исключение - такое сообщение и вылезает. Почему - хрен знает, но если внутри транзакции есть Попытка и там было исключение - то транзакцию откатит.
4 YHVVH
 
01.03.10
09:21
(3) я не использую НачатьТранзакцию
5 YHVVH
 
01.03.10
09:22
но если внутри транзакции есть Попытка и там было исключение - то транзакцию откатит.

не понял что значит откатит?
6 YHVVH
 
01.03.10
09:24
(4) скорей всего 1с сама их создает при выполнеиии это одна транзакция
при записи элемента справочника другая вложенная.
7 Aprobator
 
01.03.10
09:28
(5) все действия выполняемые внутри транзакции будут отменены.
8 Maxus43
 
01.03.10
09:31
(0) Поставь в отладчике остановку по ошибке, увидишь где косяк
9 Maxus43
 
01.03.10
09:32
(8) + точнее косяк не один, а минимум 2 их будет. имхо
10 YHVVH
 
01.03.10
09:33
(8) (9) не понял
11 YHVVH
 
01.03.10
09:37
есть справочник организаций
при записи идет проверка инн
если он не правильно заполнен
то в модуле объекта справочника призаписии будет отказ = истина
в => сарботает попытка исключение
внутрення транзакция будет отменена

ну так и хрен с ней не записался объект и не зааписался
я не могу понять почему я не могк регистр сведений после этого прочиать?
12 Maxus43
 
01.03.10
09:38
(11) повторяю. Поставь в отладчике остановку по ошибке. Тебе он тыкнет в больное место, а потом уже думай
13 YHVVH
 
01.03.10
09:39
(12)  блин это я уже сделал давно перед тем как сюда вопросы задавать полез.
14 Aprobator
 
01.03.10
09:39
(10) я тоже не понял. Вообще твой код размещается в процедуре ПриЗаписи? Помести его в процедуре ПередЗаписью.
15 YHVVH
 
01.03.10
09:40
(14) в смысле перед записью

код располагется в модуле бизнес процесса
и выполняется при выполнении задачи.
16 Aprobator
 
01.03.10
09:41
(15) тогда я пас. Это я еще не грыз.
17 YHVVH
 
01.03.10
09:42
(12) отладчик выдает ощибку на строчке
НаборЗаписей.Прочитать();
18 YHVVH
 
01.03.10
09:43
(16) да дело ни в этом даже

это может распологаться в модуле проведениии документа
19 Maxus43
 
01.03.10
09:50
(17) погугли по этой ошибке ("В данной транзакции уже происходили ошибки!"). Там описаны причины возникновения данной ошибки, может найдёш похожий случай.
А ошибку эту надо тупо обходить, т.е. использовать вариант не дающий ошибки (проверку перед этит какую-нибудь), например. я так боролся в подобном случае
20 Рэйв
 
01.03.10
09:52
ВСе процедуры с "Отказ" - это транзакции. Поэтому если внутри них еще одна транзакция, то оно так и вылетит по ошибке.
21 Рэйв
 
01.03.10
09:54
+а Попытка это и есть транзакция
22 YHVVH
 
01.03.10
09:55
(21) попытка эта не транзакция
23 Рэйв
 
01.03.10
09:57
(22) предположим ты в попытку поместил кучу кода, с записью изменений в базу. Как думаешь куда они денутся если на последней строчке попытка вывалится в исключние?
24 YHVVH
 
01.03.10
09:57
(20) блин че то я не въезжаю.
25 YHVVH
 
01.03.10
10:00
(23) запишутся
26 Рэйв
 
01.03.10
10:00
Запусти простой код

Попытка
 А=1;
 Попытка
   А=а/0;
 Исключение
    Сообщить("дошло до исключения 2");
 КонецПопытки;
Исключение
     Сообщить("дошло до исключения 1");
   
КонецПопытки;
27 YHVVH
 
01.03.10
10:01
че запускать то
28 YHVVH
 
01.03.10
10:01
вывлится в сиключение
29 Maxus43
 
01.03.10
10:01
(22) По названию Попытка может и не транзакция. А по Сути? Не транзакция?
30 YHVVH
 
01.03.10
10:01
а при чем тут это?
31 Рэйв
 
01.03.10
10:01
вывалится в твою ошибку : В этой транзакции уже были ошибки
32 YHVVH
 
01.03.10
10:02
(31) погодь
33 YHVVH
 
01.03.10
10:04
написал дошел доисключение2
34 Рэйв
 
01.03.10
10:06
и сообщить написал? Может у нас разные 1С?:)...у мнея всегда вываливалось с сообщением о том что ошибка уже была:)
35 YHVVH
 
01.03.10
10:06
(34) написал

дошел доисключение2

и все
36 Рэйв
 
01.03.10
10:07
все страньше и страньше...
37 YHVVH
 
01.03.10
10:08
че вы меня тут запутали попытка какая нафиг транзакция
попытка
это попытка
транзакция это транзакция

ппопытка относиткся в основном не к данным, и не откатывает изменения
в самой БД
38 Maxus43
 
01.03.10
10:10
(37) Если ничего не путаю, то при Попытка 1с создает не явную транзакцию
39 vde69
 
01.03.10
10:13
(38) с какого перепою?

ИХМО по сабжу:
1с не поддерживает вложеные транкзации...
40 YHVVH
 
01.03.10
10:15
Попытка
       Город = Справочники.Города.СоздатьЭлемент();
       Город.Наименование = "Попытка 1";
       Город.Записать();
       
       Город = Справочники.Города.СоздатьЭлемент();
       Город.Наименование = "Попытка 2";
       Город.Записать();
       
       А = 1/0;
   Исключение
       
   КонецПопытки;
   
   НачатьТранзакцию();
   
   
       Город = Справочники.Города.СоздатьЭлемент();
       Город.Наименование = "транзакция 1";
       Город.Записать();
       
       Город = Справочники.Города.СоздатьЭлемент();
       Город.Наименование = "транзакция 2";
       Город.Записать();
       
   ОтменитьТранзакцию();
   
Есть разница?
41 YHVVH
 
01.03.10
10:16
(39) поддерживает , только отмена ведет к отмене всех транзакций.
2 + 2 = 3.9999999999999999999999999999999...