Имя: Пароль:
1C
1С v8
Почему не отрабатывает попытка?
,
0 John83
 
19.11.13
16:46
Попытка
    док = Выборка.Ссылка.ПолучитьОбъект();
    док.Записать(РежимЗаписиДокумента.ОтменаПроведения);
    док.Записать(РежимЗаписиДокумента.Проведение);        
Исключение
КонецПопытки;        

Документ не проводится из-за ошибки, но остается непроведенным - почему так?
1 Ненавижу 1С
 
гуру
19.11.13
16:47
нужно обернуть в транзакцию
2 Defender aka LINN
 
19.11.13
16:48
(0) А что заставляет тебя думать, что должно быть как-то иначе?
3 John83
 
19.11.13
16:48
(1) тоже была такая мысль, но интересно, почему попытка не срабатывает?
4 User_Agronom
 
19.11.13
16:48
Автор полагает, что раз всё не прошло - транзакцию нужно отменить...
5 Фокусник
 
19.11.13
16:49
(0)
>но остается непроведенным
Так выполнилось:
док.Записать(РежимЗаписиДокумента.ОтменаПроведения);

вот он и остается НЕ проведенным ;)

Если нужно выполнить только "всю пачку кода целиком", то делай в транзакции...
6 John83
 
19.11.13
16:50
хм.. мне всегда казалось, что попытка это что-то вроде транзакции, но видать заблуждался...
ладно, вопрос снят - всем спасибо
7 Defender aka LINN
 
19.11.13
16:50
(3) Попытка срабатывает, как ей и положено. Ее мало волнует тот факт, что ты не знаешь, как.
8 John83
 
19.11.13
17:06
еще один глупый вопрос
а как в транзакцию обернуть?
делаю
Попытка
    НачатьТранзакцию();
    док = Выборка.Ссылка.ПолучитьОбъект();
    док.Записать(РежимЗаписиДокумента.ОтменаПроведения);
    док.Записать(РежимЗаписиДокумента.Проведение);
    ЗафиксироватьТранзакцию();
Исключение

говорит, что в данной транзакции уже происходили ошибки
9 DJ Anthon
 
19.11.13
17:10
обернуть - это значит снаружи
10 John83
 
19.11.13
17:12
(9)
НачатьТранзакцию();
Попытка

    док = Выборка.Ссылка.ПолучитьОбъект();
    док.Записать(РежимЗаписиДокумента.ОтменаПроведения);
    док.Записать(РежимЗаписиДокумента.Проведение);
    ЗафиксироватьТранзакцию();
Исключение
КонецПопытки;
ЗафиксироватьТранзакцию();

та же ошибка
11 John83
 
19.11.13
17:17
+10 хм.. а сейчас не ругается
ЗЫ так думается, что после исключения нужно еще отменитьТранзакцию()
12 John83
 
19.11.13
17:54
в общем так надо
НачатьТранзакцию();
Попытка

    док = Выборка.Ссылка.ПолучитьОбъект();
    док.Записать(РежимЗаписиДокумента.ОтменаПроведения);
    док.Записать(РежимЗаписиДокумента.Проведение);
    ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
КонецПопытки;

хотя отмену наверное и не надо ставить, но пускай будет
13 MiniMuk
 
19.11.13
17:57
Вот и вырасло поколение программистов программирующих наугад
14 kosts
 
19.11.13
18:29
В чем смысл перед проведением делать отмену проведения?
15 zakidonoff
 
19.11.13
18:30
(14) наверное, так экзотично пометку удаления снимает -)
16 Classic
 
19.11.13
19:01
(13)
Типа раньше никогда наугад не програмили. И шутка про "работает - не трожь" придумана про нынешних одноэсников
17 John83
 
19.11.13
19:02
(14) с УТ 11 работал?
18 vii88
 
19.11.13
19:07
(12) Попробуй так, должно получиться, если что еще добавь попыток

НачатьТранзакцию();
Попытка

    док = Выборка.Ссылка.ПолучитьОбъект();
    док.Записать(РежимЗаписиДокумента.ОтменаПроведения);
    док.Записать(РежимЗаписиДокумента.Проведение);
    Попытка
        ЗафиксироватьТранзакцию();
    Исключение
        НачатьТранзакцию();
        Попытка

            док = Выборка.Ссылка.ПолучитьОбъект();
            док.Записать(РежимЗаписиДокумента.ОтменаПроведения);
            док.Записать(РежимЗаписиДокумента.Проведение);
            Попытка
                ЗафиксироватьТранзакцию();
            Исключение
                НачатьТранзакцию();
                Попытка

                    док = Выборка.Ссылка.ПолучитьОбъект();
                    док.Записать(РежимЗаписиДокумента.ОтменаПроведения);
                    док.Записать(РежимЗаписиДокумента.Проведение);
                    Попытка
                        ЗафиксироватьТранзакцию();
                    Исключение
                        НачатьТранзакцию();
                        Попытка

                            док = Выборка.Ссылка.ПолучитьОбъект();
                            док.Записать(РежимЗаписиДокумента.ОтменаПроведения);
                            док.Записать(РежимЗаписиДокумента.Проведение);
                            Попытка
                                ЗафиксироватьТранзакцию();
                            Исключение
                                
                            КонецПопытки;    
                        Исключение
                            ОтменитьТранзакцию();
                        КонецПопытки;                        
                    КонецПопытки;    
                Исключение
                    ОтменитьТранзакцию();
                КонецПопытки;                
            КонецПопытки;    
        Исключение
            ОтменитьТранзакцию();
        КонецПопытки;        
    КонецПопытки;    
Исключение
    ОтменитьТранзакцию();
КонецПопытки;
19 Жан Пердежон
 
19.11.13
20:27
(17) движения по взаиморасчетам там рег.заданием формируются (и печатной формой), если тебе их нужно перезаполнить - дергай бы код оттуда
20 John83
 
20.11.13
11:28
(19) нет, нужно восстановить последовательность по товарам организаций