Имя: Пароль:
1C
1С v8
Запрос в транзакции
0 Bolik1979
 
19.04.17
14:39
В модуле БСП обнаружил такой код:
    НачатьТранзакцию();
    Попытка
        Запрос = Новый Запрос;
        .....
        РезультатыЗапроса = Запрос.ВыполнитьПакет();
        ЗафиксироватьТранзакцию();
    Исключение
        ОтменитьТранзакцию();
        ВызватьИсключение;
    КонецПопытки;

Никакой записи в базу нет. Это отголоски других изменений или какой-то хитрый ход 1С?
1 Волшебник
 
модератор
19.04.17
14:41
Если в запросе есть ключевое слово "ДЛЯ ИЗМЕНЕНИЯ", то имеет смысл (накладывает эксклюзивную блокировку на данные, другая транзакция не может прочитать), а иначе нет.
2 Bolik1979
 
19.04.17
14:45
(1) "ДЛЯ ИЗМЕНЕНИЯ" нет, насчет блокировки не знал, спасибо
3 rozer76
 
19.04.17
14:50
4 rozer76
 
19.04.17
14:57
(2) везде вроде уже оправляемые блокировки, "ДЛЯ ИЗМЕНЕНИЯ" для автомата
5 Волшебник
 
модератор
19.04.17
14:58
(2) Если нет ДЛЯ ИЗМЕНЕНИЯ, то я могу предположить только одну цель: в сложном запросе есть несколько пакетов, которые должны получить согласованные данные.
6 Buster007
 
19.04.17
15:36
(6) хм, а почему они будут согласованными?
Блокировка автоматически не накладывается при написании "начатьтранзакцию"
7 Волшебник
 
модератор
19.04.17
15:39
(6) Потому что транзакция видит все свои выбранные данные неизменными. Например, если баланс формируется в транзакции, то активы будут равны пассивам, т.е. новые проводки, которые будут сделаны во время формирования баланса, не повлияют на остатки уже выбранных счетов.

Но такой режим формирования отчётов может наложить слишком большую блокировку и люди не смогут проводить документы.
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn