Имя: Пароль:
1C
1С v8
как исключить запись непроводимого документа?
0 BigShmax
 
11.08.11
13:31
конструкция

       
Попытка

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


проблема  в том  что всплыло  что документ записывается, но потом вылетает сообщение об ошибке проведения. в результате документ записан  с недостающими строками и проведен :0-(
1 Reset
 
11.08.11
13:32
Плохо :(
2 BigShmax
 
11.08.11
13:35
еще бы
3 PVV65
 
11.08.11
13:39
(0) Т.е. существует ошибка проведения и документ проведен? Не понятен вопрос.
4 BigShmax
 
11.08.11
13:44
нет.  документ до этого уже был проведен.
в результате  этой обработки  происходит  добавление строк далее

ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);

по факту  документ записывается  но не проводится из-за ошибки  но статус проведенности остается и табличная часть изменилась.
5 unregistered
 
11.08.11
13:44
(0) Бред какой-то.

Скорее всего вы записываете документ еще ДО этого момента в отдельной транзакции. Потом видимо добавляете строки и записываете второй раз с режимом Проведение. Вот во второй транзакции и происходят ошибки.

Если в транзакции происходят ошибки, то транзакция отменяется целиком.
Запись и проведение в 1С производится в одной транзакции.


Если хотите иметь записанный документ вне зависимости от ошибок проведения, то записывайте сначала с режимом Запись, а только потом с режимом Проведение.
6 Scooter
 
11.08.11
13:45
НачатьТранзакцию ?
7 BigShmax
 
11.08.11
13:46
именно хочу полный откат. а  в результате   имею  не перепроведенный документ но с измененной табл частью
8 unregistered
 
11.08.11
13:49
(4) >> не проводится из-за ошибки  но статус проведенности остается и табличная часть изменилась.

Такого не может быть. Запись и проведение происходят в одной транзакции.

(7) >> хочу полный откат

Так и должно быть.
Анализируй код.
Где-то происходит запись вне транзакции, которая открывается твоей строкой кода из (0) ДокументОбъект.Записать(Ре...
9 BigShmax
 
11.08.11
13:51
(8)   ок   беру таймаут.  еще раз погуляю по коду.
10 unregistered
 
11.08.11
13:54
(9) Как вариант весь код (от начала до конца) завернуть в транзакцию НачатьТранзакцию - ЗафиксироватьТранзакцию.

В случае ошибок откатывать транзакцию.
11 PVV65
 
11.08.11
14:09
Попробуй так (хотя транзакция лучше)-

ФормаДок = ДокументОбъект.ПолучитьФорму();
ФормаДок.ПриЗаписиПерепроводить = Истина;
ФормаДок.ЗаписатьВФорме(РежимЗаписиДокумента.Проведение);