|
как исключить запись непроводимого документа? |
☑ |
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
|
Попробуй так (хотя транзакция лучше)-
ФормаДок = ДокументОбъект.ПолучитьФорму();
ФормаДок.ПриЗаписиПерепроводить = Истина;
ФормаДок.ЗаписатьВФорме(РежимЗаписиДокумента.Проведение);
|
|