Имя: Пароль:
1C
 
в данной транзакции уже происходили ошибки проведение доков
0 Strimteam
 
28.06.11
17:02
При проведении документа, иногда (!), возникает такая ошибка. В форме указано только эта надпись без других пояснений на код.
Конфигурация допиленая "Торговка", документ заказ покупателя.
Просмотрел на наличие вложенных транзакций - не нашёл.
В чём ещё может быть причина такой ошибки?
1 Господин ПЖ
 
28.06.11
17:03
в проведении происходит ошибка
2 Axel2009
 
28.06.11
17:06
(0) вложенные для кого? для вас или 1с?
3 Maxus43
 
28.06.11
17:08
Попытка
Исключение

поищи при выполнении. или остановку по ошибке включи
4 Dem1urg
 
28.06.11
17:09
Если в транзакции возникает ошибка обращения к СУБД даже если место возникновения ошибки находилось внутри Попытка...Исключение транзакция завершена не будет и вывалится по ошибке.
5 Господин ПЖ
 
28.06.11
17:09
>или остановку по ошибке включи

это ничего не даст... она имеет свойство вываливаться не там где был косяк
6 Strimteam
 
28.06.11
17:11
Пробовал остановку по ошибке - не увидел ошибок.
Получается что любые функции, которые идут после запуска ОбработкаПроведения, в которых есть попытки будут при исключении выпадать в такую ошибку? Если правильно понимаю, то ОбработкаПроведения начинает транзакцию (неявно).
7 Maxus43
 
28.06.11
17:13
(5) Если дело в попытке-исключении, то остановка там встаёт, это самый распространёный случай обычно
8 Господин ПЖ
 
28.06.11
17:13
не есть попытки... а выпадение в исключение. вложенные транзакции - ошибка во вложенной приводит к отмене верхней
9 Strimteam
 
28.06.11
17:15
(8) ну я и имел ввиду при попадании в исключение срабатывает такая ошибка.
Получается нужно выкидывать все конструкции попытки из обработки проведения?
10 Axel2009
 
28.06.11
17:26
(6) конечно начинает.
11 Dem1urg
 
28.06.11
17:33
(6) Не все. Только невосстановимые. К ним относятся все ошибки связанные с СУБД. Попытка вывалившаяся в исключение из-за деления на 0 пройдет нормально.
12 Strimteam
 
28.06.11
17:37
Ну получается что нужно убирать все попытки с возможным исключение по ошибке СУБД.

Ещё есть варианты, при которых выпадает такая ошибка кроме вложенных транзакций и попыток в другую транзакцию?
13 Strimteam
 
28.06.11
17:42
Дурацкий пример, но всё же - предположим, что при проведении одного документа вызывается проведение другого документа. При проведении второго документа вызывается отмена транзакции - первый док получается вывалиться с этой ошибкой?
14 Axel2009
 
28.06.11
17:45
(13) это пример вложенных транзакций.
15 ИС-2
 
28.06.11
17:46
скорее всего, где-то в коде происходит запись документа, регистра. Посмотри для успешных документов журнал регистрации. Или сделай подписку для всех объектов ПередЗаписью, что посмотреть что затрагивается при проведении.
16 Strimteam
 
28.06.11
17:51
(15) дык вся соль в том, что отказ транзакции срабатывает только в 1 из 150 документов (грубо на вскидку) - поймать практически нереально.
(15) про регистры - но это только, если ещё установлены какие-то обработки в модуле регистра, иначе не вижу смысл зачем туда смотреть.
17 Jolly Roger
 
28.06.11
17:59
(16) >отказ транзакции срабатывает только в 1 из 150 документов (грубо на вскидку) - поймать практически нереально.

нереально, если не использовать обработку исключения...
18 Strimteam
 
28.06.11
18:01
(17) это если попытка. Уже везде (где нашёл) добавил сообщения при обработке исключения.
19 Jolly Roger
 
28.06.11
18:07
(18) а если не попытка, автору по рукам...
20 sda553
 
28.06.11
18:12
Способ смоделировать такую ошибку искуственно:
Создаем в конфигураторе документ1, у него в процедуре ПриЗаписи в модуле документа пишем

Процедура ПриЗаписи()
  ВызватьИсключение "Не хочу записываться";
КонецПроцедуры

Создаем в конфигураторе документ2 у него в модуле в ОбреботкеПроведения пишем

Док = Документы.Документ1.СоздатьДокумент();
Попытка
Док.Записать();
Исключение
КонецПопытки

ВОт и все, теперь каждый раз при проведении будет выдаваться как у него в данной транзакции уже происходили ошибки
21 Господин ПЖ
 
28.06.11
18:14
забористее всего себя ведет отладчик... у меня все переменные в нет принимали значение "в данной транзакции уже происходили ошибки".

функция в проведении которая хотела Структура.Дата очень на это дело удивлялась...
22 Strimteam
 
07.07.11
11:04
Если в транзакции произойдёт обращение к несуществующей перменной а-ля

Если Ложь Тогда
   переменная1 = 0;
КонецЕсли
выбратьконф = перменная1;

как это будет обработано?
23 sda553
 
07.07.11
14:35
Переменная не определена (перменная1)
выбратьконф = <<?>>перменная1;
24 sda553
 
07.07.11
14:35
(22) А транзакция отменится
Закон Брукера: Даже маленькая практика стоит большой теории.