|
непонятное поведение отладчика в попытке | ☑ | ||
---|---|---|---|---|
0
Stim
24.10.12
✎
15:21
|
вот такой код:
док = Объект.списокДокументов[0].документ; Номер = док.номер; докОб = Док.ПолучитьОбъект(); НомерДляПроверки = ""; ВвестиСтроку(НомерДляПроверки,"введите номер документа"); Попытка докОб.Номер = НомерДляПроверки; докОб.записать(); Исключение докОб.номер = Номер; докОб.записать(); КонецПопытки; код тестовый, не пинать. включена остановка по ошибке. внимание вопрос: почему отладчик останавливается по ошибке на строке докОб.записать(); в попытке и в строке докОб.записать(); в исключении?? в исключении не должно быть никакой ошибки |
|||
1
Нуф-Нуф
24.10.12
✎
15:23
|
Попытка
докОб.Номер = НомерДляПроверки; докОб.записать(); Исключение Попытка докОб.номер = Номер; докОб.записать(); Исключение Сообщить("и вторая попытка не удалась"); КонецПопытки; КонецПопытки; |
|||
2
Живой Ископаемый
24.10.12
✎
15:23
|
гы... с чего ты взял? что не долженбыть никакой ошибки? А вдруг там дата запрета редактирования стоит и документ старый...
Впихни в исключение еще с десяток каскадных попыток.. вдруг с 11-го раза запишетт? |
|||
3
DomovoiVShoke
24.10.12
✎
15:27
|
||||
4
Stim
24.10.12
✎
15:33
|
(2) ничего такого нет.
|
|||
5
Stim
24.10.12
✎
15:34
|
+ маленькое уточнение:
происходит все в транзакции |
|||
6
Stim
24.10.12
✎
15:34
|
т.е.
начатьТранзакцию(); Попытка докОб.Номер = НомерДляПроверки; докОб.записать(); Исключение докОб.номер = Номер; докОб.записать(); КонецПопытки; ЗафиксироватьТранзакцию() |
|||
7
Stim
24.10.12
✎
15:35
|
и код поросенка
Попытка докОб.Номер = НомерДляПроверки; докОб.записать(); Исключение Попытка докОб.номер = Номер; докОб.записать(); Исключение Сообщить(ОписаниеОшибки()); Ошибки = ИСТИНА; КонецПопытки; КонецПопытки; выдает ошибку Ошибка при вызове метода контекста (Записать): В данной транзакции уже происходили ошибки! |
|||
8
Stim
24.10.12
✎
15:35
|
т.е.
Попытка докОб.Номер = НомерДляПроверки; докОб.записать(); Исключение Попытка докОб.номер = Номер; докОб.записать(); Исключение Сообщить(ОписаниеОшибки()); Ошибки = ИСТИНА; КонецПопытки; КонецПопытки; если НЕ Ошибки тогда ЗафиксироватьТранзакцию(); Иначе ОтменитьТранзакцию(); КонецЕсли; |
|||
9
Stim
24.10.12
✎
15:35
|
как это обойти?
|
|||
10
Starhan
24.10.12
✎
15:36
|
первый раз вставь Сообщить(ОписаниеОшибки());
и озвучь ошибку пжл |
|||
11
Stim
24.10.12
✎
15:37
|
(10) неуникальное значение номера, первая ошибка
|
|||
12
Stim
24.10.12
✎
15:37
|
вторая - "В данной транзакции уже происходили ошибки!"
|
|||
13
palpetrovich
24.10.12
✎
15:39
|
(12)а без транзакции код из (1) ?
|
|||
14
Starhan
24.10.12
✎
15:39
|
а без начать транзакцию такой код работает?
Попытка докОб.Номер = НомерДляПроверки; докОб.записать(); Исключение докОб.номер = Номер; докОб.записать(); КонецПопытки; дело втом что любая запись это опять же транзакция :0 |
|||
15
Stim
24.10.12
✎
15:40
|
(14) без транзакции
докОб.номер = Номер; докОб.записать(); прекрасно работает |
|||
16
bodri
24.10.12
✎
15:43
|
Попытка
докОб.Номер = НомерДляПроверки; докОб.записать(); КонецПопытки; ненадо тот же номер заного присваивать, при исключении можно добавить Сообщить(<<ЗДЕСЬ РУГАТЕЛЬСТВА>>) |
|||
17
Stim
24.10.12
✎
15:46
|
(16) Александр, я спрашиваю ПОЧЕМУ ТАК ПРОИСХОДИТ и не КАК ЭТО СДЕЛАТЬ
если вы не знаете по сабже - просто ничего не пишите |
|||
18
Stim
24.10.12
✎
15:47
|
тьфу. и = а
вобщем, код тестовый и в попытке все должно быть так, как есть |
|||
19
lubja
24.10.12
✎
15:47
|
а ОбменДанными.Загрузка = Истина поможет?
|
|||
20
Stim
24.10.12
✎
15:47
|
вопрос можно ли обойти ошибку в транзакции
|
|||
21
Stim
24.10.12
✎
15:48
|
(19) блиин, ну причем тут это?
зы. ответь в ацку |
|||
22
lubja
24.10.12
✎
15:48
|
(21) где куда чего ответить? )
|
|||
23
Starhan
24.10.12
✎
15:49
|
у тебя получается
НачатьТранзакцию() Попытка Исключение опять НачатьТранзакцию() //при записи документа начимнается транзакция КонецПопытки; А если начать транзакцию в транзакции с ошибкой то вываливается ошибка. :) ИМХО сам не тестил. но можешь проверить. |
|||
24
Stim
24.10.12
✎
15:49
|
(22) куда-нибудь
|
|||
25
Stim
24.10.12
✎
15:50
|
+ не могу пробиться через твой спам-фильтр) наверное, не случайно
|
|||
26
Stim
24.10.12
✎
15:57
|
(23) и как это обойти? мне нужно записать док в исключении, но с расчетом, что потом можно откатить транзакцию, если что
|
|||
27
bodri
24.10.12
✎
15:58
|
попробуй режим записи поставить в
докОб.записать(); |
|||
28
Stim
24.10.12
✎
15:58
|
(27) режим записи по умолчанию в записать, причем здесь это?
|
|||
29
Stim
24.10.12
✎
15:59
|
+ док прекрасно записывается, на него не действуют никакие проверки, кроме уникальности номера
|
|||
30
Stim
24.10.12
✎
16:04
|
неужели никак не побороть?
|
|||
31
Живой Ископаемый
24.10.12
✎
16:07
|
побороть.. не использовать попытку. искать самому.
|
|||
32
Stim
24.10.12
✎
16:08
|
(31) ага, так и придется скорее всего..
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |