![]() |
![]() |
![]() |
|
Поможет ли транзакция избежать ошибок и дублей в регистре | ☑ | ||
---|---|---|---|---|
0
Coldboy
05.09.12
✎
11:13
|
Здравствуйте. Есть файл, беру данные из файла и записываю в регистр сведений, потом беру данные из регистра и их обрабатываю и записываю в другой. И вот хочется, если бы на этом этапе вылетит ошибка отлетел сервер или еще че-нить подобное свет обрубили, то процесс начнется заного, а все его этапы сгорят. Я сделал, так, не знаю поможет ли это и правильно ли, но вот
Попытка НачатьТранзакцию(); ОбработкаDCCCAФайла(Таблица,ОткрытыйФайл.ПолноеИмя); ЗаписьВDСCCAРегистр(Таблица,Строка(ОткрытыйФайл.Имя)); Обработки.Анализ.Создать().НачатьРаботу(); УдалитьФайлы(ОткрытыйФайл.ПолноеИмя); ЗафиксироватьТранзакцию(); Исключение ОтменитьТранзакцию(); КонецПОпытки; Не удалится ли файл, и откаться ли изменения при таком коде? |
|||
1
ОбычныйЧеловек
05.09.12
✎
11:18
|
(0) Время на проверку (удалится файл или нет) у тебя заняло бы максимум 5 минут, но ты не поленился и написал вопрос на форум и сидишь ждешь ответа....
|
|||
2
Coldboy
05.09.12
✎
11:47
|
(1) вопрос в том случае, если сервер слетит) не сидеть же мне щас сервер рубить, когда все работают
|
|||
3
Coldboy
05.09.12
✎
11:47
|
(1) а еще мой вопрос касался, данных который я пытался запихнуть с файла зайдут или нет. Мне нужно либо зашли разом, либо не зашли и ждали новую попытку ...
|
|||
4
Maxus43
05.09.12
✎
11:48
|
ничего никуда не откатится за пределами БД
|
|||
5
Coldboy
05.09.12
✎
11:48
|
(4) в смысле не откатится?
|
|||
6
Maxus43
05.09.12
✎
11:49
|
работа с файлами - безусловное действие, если удалиш внутри транзакции а потом её отмениш - файлы не воскреснут
|
|||
7
Heckfy
05.09.12
✎
11:51
|
ИМХО, все действия запихнуть в одну процедуру, а там уже использовать транзакцию.
|
|||
8
Reset
05.09.12
✎
11:51
|
(6) Вот облом, я думал как раз с начальством строгий разговор провести, надеялся, если что, отменить транзакцию
|
|||
9
Serg_1960
05.09.12
✎
11:54
|
(0) Имхо: удалять надо только тогда, когда транзакция зафиксирована без ошибок - т.е после обработки и сохранения данных в базе.
(6) +1 транзакция - это только для "внутреннего употребления", только для данных самой БД. |
|||
10
pumbaEO
05.09.12
✎
11:59
|
(2) для этого надо иметь тестовый сервер, даже на рабочей машинке на другом порту запустить.
|
|||
11
MrStomak
05.09.12
✎
12:05
|
загонять файл в хранилище значения, делать всё в транзакции, по окончании транзакции писать файл из хранилища на диск
|
|||
12
Coldboy
05.09.12
✎
12:06
|
Да извините.
Попытка НачатьТранзакцию(); ОбработкаDCCCAФайла(Таблица,ОткрытыйФайл.ПолноеИмя); ЗаписьВDСCCAРегистр(Таблица,Строка(ОткрытыйФайл.Имя)); Обработки.Анализ.Создать().НачатьРаботу(); ЗафиксироватьТранзакцию(); УдалитьФайлы(ОткрытыйФайл.ПолноеИмя); Исключение ОтменитьТранзакцию(); КонецПОпытки; так будет корректнее. |
|||
13
Coldboy
05.09.12
✎
12:09
|
щас файл удалится, после фиксации транзакции, тобишь он не нужен, в остальном случае уйдет все исплючение и отменит транзакцию, правильно рассуждаю?
|
|||
14
MrStomak
05.09.12
✎
12:12
|
(13) Да.
|
|||
15
Coldboy
05.09.12
✎
12:13
|
Всем спасибо за помощь!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |