Имя: Пароль:
1C
 
Подскажите. Правильно ли написан запрос SQL?
0 Невский Александр
 
18.11.10
08:51
Хочу написать прямой запрос, который устанавливает на документах пометку на удаление. Все это хочу написать в транзакции - в случае успешного ее выполнения данные должны сохраняться, в случае неудачи - нет.
Написал вот так:

SET IMPLICIT_TRANSACTIONS  OFF
BEGIN TRANSACTION PometkaNaUdalenie
   SAVE TRANSACTION Point1
   UPDATE _Document109 SET _Document109._Marked = 1 WHERE _Document109._Date_Time >="+"'"+Формат(НачалоДня(ДатаНакладных),"ДЛФ=DT")+"' and _Document109._Date_Time<='"+Формат(КонецДня(ДатаНакладных),"ДЛФ=DT")+"'"+ " and _Document109._Marked = 0
TRY    
   COMMIT
CATCH ROLLBACK TRANSACTION PometkaNaUdalenie Point1

Скажите, правильно ли насан сам запрос (именно блок транзакции), или нет? Поправьте меня пожалуйста ...
1 Егор Сергеевич
 
18.11.10
08:59
COMMIT TRANSACTION имхо...
2 Невский Александр
 
18.11.10
09:00
(1)это понятно, доделаю ... Мне сама логика важна - "TRY ... CATCH" - вот это верно?
3 Невский Александр
 
18.11.10
09:01
для сохранения изменений - если удалось сохранить, то все нормально, если нет, то делаем откат транзакции
4 Ненавижу 1С
 
гуру
18.11.10
09:02
я вот этого не понимаю, а что если все плохо, она сама не откатится?
5 Ненавижу 1С
 
гуру
18.11.10
09:03
вообще не понимаю почему у MS SQL Server транзакциями можно управлять на сервере
6 Егор Сергеевич
 
18.11.10
09:06
я бы сделал как-то так:

BEGIN TRY
   BEGIN TRANSACTION;
    UPDATE _Document109 SET _Document109._Marked = 1 WHERE   _Document109._Date_Time >="+"'"+Формат(НачалоДня(ДатаНакладных),"ДЛФ=DT")+"' and _Document109._Date_Time<='"+Формат(КонецДня(ДатаНакладных),"ДЛФ=DT")+"'"+ " and _Document109._Marked = 0  
   COMMIT TRANSACTION;
END TRY
BEGIN CATCH
  ROLLBACK TRANSACTION;  
END CATCH;
7 Егор Сергеевич
 
18.11.10
09:09
http://technet.microsoft.com/ru-ru/library/ms175976.aspx

Там есть про использование try...catch внутри транзакций
8 smitru
 
18.11.10
09:20
(0) Жесть... а нафига изврат???

Ведь у тебя будут помечены на удаление ПРОВЕДЁННЫЕ документы, по которым наверняка есть движения в регистрах...
9 Невский Александр
 
18.11.10
09:23
(8) все это доработано, движения тоже удаляются
на данный момент меня интересует "try ... catch"
10 Невский Александр
 
18.11.10
09:37
А может кто еще знает - чтобы мне быть точно уверенным - при отмене проведения документа и пометке ее на удаление - делается ли хоть какое-нибудь изменение (любое) в таблице табличной части этого документа?
11 Ненавижу 1С
 
гуру
18.11.10
09:37
(10) не в таблице, а таблицАХ в общем случае
имхо, нет
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший