Имя: Пароль:
1C
1С v8
Ошибка в транзакции
0 shamannk
 
07.03.12
15:24
Происходит ошибка: В данной транзакции уже происходили ошибки При переборе документов в такой конструкции.
Пока выборка.Следущий() Цикл
  Попытка
     Ссылка=Выборка.ссылка;
    НачатьТранзакцию
    ...
    ...
   номер=Ссылка.номер;
   ЗафиксироватьТранзакцию();
 Исключение
ОтменитьТранзакцию();
КонецПопытки;
КонецЦикла;

И если при переборе доков случается ошибка то следущий то при получения номера следущего дока вываливается ошибка. Что делаю не так?
1 le_
 
07.03.12
15:27
>Что делаю не так?

Ошибки в коде допускаешь.
2 ЧеловекДуши
 
07.03.12
15:28
А накой тебе транзакция?
И давай нам полный код ;)
3 vmv
 
07.03.12
15:28
расстерлять негодяя
4 rs_trade
 
07.03.12
15:30
(0) < Что делаю не так?

Ты не пользуешся отладчиком.
5 shamannk
 
07.03.12
15:47
Выполняется в регл. задание.
6 shamannk
 
07.03.12
17:04
вверх
7 pumbaEO
 
07.03.12
17:09
Повторю:
Ты не пользуешся отладчиком.
8 Reset
 
07.03.12
17:13
Чего вверх, ошибку исправляй. Если ты думаешь, что, написав волшебное слово 'попытка', ты избавился от ошибки, ты глубоко заблуждаешься.
9 rs_trade
 
07.03.12
17:20
(5) фоновые задания тоже отлаживаются. можно в исключение добавить запись журнала регистрации с описанием ошибки.
10 shamannk
 
07.03.12
17:30
(9) Сделано. Проблема в том что при отмене транзакции при получение номера по ссылке вываливается ошибка. Уже и так пробовал. Кажется процедура уже выполняется в транзакции а я добовляю вложенную Тран. вот и ошибка. Может это особенность фоновых задач?
Пока выборка.Следущий() Цикл
НачатьТранзакцию  
Ошибка = Ложь;
Попытка
     Ссылка=Выборка.ссылка;
   
    ...
    ...
   номер=Ссылка.номер;
   
 Исключение
 Ошибка = Истина;
КонецПопытки;
Если ошибка Тогда
ОтменитьТранзакцию();
Иначе
ЗафиксироватьТранзакцию();
КонецЕсли;
КонецЦикла;
11 pumbaEO
 
07.03.12
17:33
Процедура уже выполняется в транзакции а ты добовляеш вложенную Тран. там ошибка вот тебе и пишет "В данной транзакции уже происходили ошибк"

Правильный вопрос содержит в себе ответ.
12 shamannk
 
07.03.12
17:34
(11) Это ваше мнение или факты есть? В описание я токого не нашел и гугль тоже?
13 shamannk
 
07.03.12
17:37
А если в начале отменить транзакцию фоного задания и запустить уже свою. Взлетит?
14 pumbaEO
 
07.03.12
17:38
15 shamannk
 
07.03.12
17:43
(14) Читал. (13) Если отменю транзакцию фоновой задачи то моя будет восприниматься как новая?
16 pumbaEO
 
07.03.12
17:48
Сколько угодно, главное не вложенность.
Может все таки ошибку исправишь? Добавишь несколько проверок....
17 Reset
 
07.03.12
17:50
Джигиты ошибок не исправляют. Они их сторнируют другими.
18 pumbaEO
 
07.03.12
17:54
Ну главное, что бы не комментировали
Отказ = Истина;
19 shamannk
 
07.03.12
17:54
(17) Из за одной ошибки встают 1000 задачь. В неделю выходит 10 админ их исправляет вот тока все остальные джигиты и джигурнишки курят нервно.
20 shamannk
 
07.03.12
17:55
(19) + это временные ошибки пока админ все не поправит
21 Reset
 
07.03.12
17:57
(18) Была ветка, помню, автор писал Отказ=Ложь (где-то в подписке вроде) и отказывался это убрать; винил в нелогичности 1С и требовал от окружающих советов.
22 pumbaEO
 
07.03.12
17:57
А может добавить проверить Ссылку на Null (хз что там за запрос) на Неопределенно, на ССылка.Пустая и Тип , то думаю ошибки и не было бы.
23 pumbaEO
 
07.03.12
18:01
А если понестись еще дальше, то не проверяя тип можно проверить есть ли реквизит в принципе "Номер" по метаданным.

Но ... вы правы, пускай админ работает.
24 shamannk
 
07.03.12
18:03
(22) и (23) Ссылка имеет тип ДокументСсылка и как только пытаюсь получить номер (он есть у всех метадан. доков) то ломается. (15) емеет место ?
25 pumbaEO
 
07.03.12
18:06
А в описании ошибки, че говорит? Или там не документ ссылка, или ссылка потерянная...
26 shamannk
 
07.03.12
18:06
(25) В данной транзакции уже происходили ошибки
27 Reset
 
07.03.12
18:07
(26) Это он тебе уже на слудующую, лол, говорит.
28 Reset
 
07.03.12
18:07
на следущую операцию с БД*
29 shamannk
 
07.03.12
18:07
(25) + Ошибка при получении значения атрибута контекста (номер)
30 pumbaEO
 
07.03.12
18:12
Логически думаем почему у какого-то объекта не может быть атрибута? Может это не тот объект?
т.е. в отладке Ссылка = ДокументСсылка , не пустая и такое сообщение? Не верю. Покажи скрин, с таблом, где будет Ссылка.

заканчивается лимит на сообщения в день...
31 shamannk
 
07.03.12
18:18
(30) Проверял сам при пустой ссылке пытался записывать в журнал рег. Записей не было следовательно не пуста.
32 pumbaEO
 
07.03.12
18:27
ЗаписьЖурналаРегистрации(,,,,,Строка(ССылка)).
Отладка фонового задания.

Еще раз: нету атрибута, значит объект который вы назвали "ссылка" не имеет атрибута, если у всех документов есть атрибут "Номер", значит "ссылка" не есть "ДокументСсылка"
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший