У метода системы НачатьТранзакцию() есть параметр, с помощью которого можно указать режим управления.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
// Указание режима открываемой транзакции // Транзакция предназначена для записи в информационную базу согласованных изменений. // Все изменения, внесенные в информационную базу после начала транзакции, // будут затем либо целиком записаны, либо целиком отменены. НачатьТранзакцию(РежимУправленияБлокировкойДанных.Управляемый); // Код, исполняемый в рамках транзакции. // ... Если ОбнаруженыОшибки Тогда // Отменяем открытую ранее транзакцию. // Все изменения, внесенные в информационную базу в процессе транзакции, будут отменены. ОтменитьТранзакцию(); КонецЕсли; // Завершаем успешную транзакцию. // Все изменения, внесенные в информационную базу в процессе транзакции, будут записаны. ЗафиксироватьТранзакцию(); |
Следует помнить, что «вложенных» транзакций в системе 1С:Предприятие 8 нет. Также надо иметь в виду, что параметр «действует» только в том случае, если в свойстве конфигурации Режим управления блокировкой данных выбрано значение Автоматический и управляемый. Если для конфигурации установлен режим Автоматический, то все транзакции будут исполняться в автоматическом режиме; если Управляемый, то в управляемом режиме.
Пример:
1 2 3 4 5 6 7 8 9 10 11 12 |
// Увеличение закупочной цены на 5% ВыборкаТоваров = Справочники.Номенклатура.Выбрать(); НачатьТранзакцию(); Пока ВыборкаТоваров.Следующий() Цикл ТоварОбъект = ВыборкаТоваров.ПолучитьОбъект(); ЗакупочнаяЦена = ТоварОбъект.ЗакупочнаяЦена; Если ЗакупочнаяЦена <> 0 Тогда ТоварОбъект.ЗакупочнаяЦена = ЗакупочнаяЦена * 1.05; ТоварОбъект.Записать(); КонецЕсли; КонецЦикла; ЗафиксироватьТранзакцию(); |