|
Запись документа в транзакции и отмена транзакции | ☑ | ||
---|---|---|---|---|
0
КуплюКровать
19.12.12
✎
16:00
|
Нашел в одной из баз вот такой код, суть его подменить организацию, напечатать с подмененной и вернуть как было
Но как то криво, что думаете об этом? И еще удивило что это работает, то есть запись в базе меняется, хотя транзакция не завершена, вот это странно Если АБС Тогда Если ДокументыОснования.Количество() Тогда НачатьТранзакцию(); ДокОбъект = ДокументыОснования[0].ДокументОснование.ПолучитьОбъект(); ДокОбъект.Организация = Справочники.сталЗначенияПроверки.АБС.ЗначениеПроверки; ДокОбъект.Записать(); ПараметрКоманды = Новый Массив; ПараметрКоманды.Добавить(Ссылка); УправлениеПечатьюКлиент.ВыполнитьКомандуПечати("Документ.СчетФактураВыданный", ИмяМакета, ПараметрКоманды, Неопределено, Неопределено); ОтменитьТранзакцию(); КонецЕсли; КонецЕсли; |
|||
1
Defender aka LINN
19.12.12
✎
16:02
|
Жесть какая. А про транзакцию - иди учи матчасть, двоешник :)
|
|||
2
Лефмихалыч
19.12.12
✎
16:07
|
(0) все работает, как положено
|
|||
3
Rico_1C
19.12.12
✎
16:08
|
(1) Нормальный код, какая жесть-то?!..
|
|||
4
pessok
19.12.12
✎
16:08
|
(0) красотища то какая!
|
|||
5
pessok
19.12.12
✎
16:09
|
(2) во-во. неандертальцы бы 100500 раз документ переписывали. другое дело, что лучше в макет передать параметр :)
|
|||
6
Defender aka LINN
19.12.12
✎
16:11
|
(3) Нет-нет, что ты. Дергать записи в таблицах базы, накапливать блокировки, чтобы Мирьиванне в печатной форме вместо "ООО Вектор" вывело "ООО абырвалг" - это нормально.
|
|||
7
Лефмихалыч
19.12.12
✎
16:13
|
+(2) в том смысле, что код-то гогно и автора надо найти и ему причинить, но такое поведение транзакции - это абсолютно нормально и так и должно быть
|
|||
8
Rico_1C
19.12.12
✎
16:13
|
(5) Он ведь не записывается..
Как ты передашь Параметр, если вызывается Общий модуль - менять всю конфу?!.. |
|||
9
pessok
19.12.12
✎
16:14
|
(8) тебе кто-то мешает поменять данные в ТабДок перед его показыванием?
|
|||
10
Defender aka LINN
19.12.12
✎
16:16
|
(8) ДокОбъект.Записать(); - это мне в коде мерещится, надо полагать, да?
Ну и я что-то не встречал в заповедях запрета на написание своих процедур. Даже с особо циничным использованием копипасты. У вас, видимо, как-то по другому дела обстоят. |
|||
11
pessok
19.12.12
✎
16:17
|
(10) в заповедях есть "не укради". это к вопросу копипасты :)
|
|||
12
Rico_1C
19.12.12
✎
16:19
|
(9) Я так понимаю весь механизм реализован не Модуле объекта, а ч/з кучу промежуточных процедур - в кот. нуно будет добавлять параметр..
|
|||
13
Rico_1C
19.12.12
✎
16:21
|
(10) Запись отменяется Транзакцией - на сколько я понимаю..
|
|||
14
pessok
19.12.12
✎
16:23
|
(12) сам табличный документ же.
Область = ТабДок.Найти(Организация); Область.Текст = АБСОрганизация |
|||
15
Reset
19.12.12
✎
16:23
|
(13) Именно. Сначала записывается, потом отменяется.
|
|||
16
pessok
19.12.12
✎
16:23
|
ВыполнитьКомандуПечати() какие два последних параметра у процедуры?
|
|||
17
Rico_1C
19.12.12
✎
16:26
|
(16) Процедура ВыполнитьКомандуПечати(ИмяМенеджераПечати, ИменаМакетов, ПараметрКоманды, ВладелецФормы, ПараметрыПечати = Неопределено) Экспорт
|
|||
18
pessok
19.12.12
✎
16:29
|
(17) ну вот, она ж форму открывает, на которой ПТД. Ползем в форму, получаем, ползем там в ПТД, делаем (14), профит!
|
|||
19
pessok
19.12.12
✎
16:35
|
вот даже в упыпырище посмотрел
ПечатьДокументовУправляемая. все там прелестно правится. и никаких транзакций вообще не надо |
|||
20
Defender aka LINN
19.12.12
✎
16:47
|
(13) И что с того? Сервер 1С не гоняет данные, код не выполняется, всяческие связанные с записью процедуры не срабатывают и блокировки не возникают?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |