Имя: Пароль:
1C
1С v8
Управляемая блокировка не на всю транзакцию, а чуть раньше
,
0 sdemon72
 
14.01.22
12:29
Скорее всего дурацкий вопрос, но вдруг. Есть условно-длинная транзакция создания некоего документа, внутри которой в цикле происходит обращение к регистру сведений, хранящему порядковые номера некоторых объектов, за следующим номером (если для такого объекта номера еще нет, то добавляется запись в регистр с максимальным номером по регистру +1).
И чтобы разные сеансы не получили один и тот же номер при одновременном обращении, перед чтением регистра я делаю исключительную блокировку на весь регистр (весь, т.к. мне надо получить макс.номер по всему регистру). И после получения нового номера и записи его в регистр, мне уже его держать заблокированным в общем-то не нужно (даже если транзакция будет отменена, пропуски номеров не страшно).
Есть какой-то способ снять блокировку регистра, не дожидаясь завершения транзакции?
1 ИС-2
 
naïve
14.01.22
12:30
Конструкция для изменения ?

ВЫБРАТЬ
    ABCКлассификацияПокупателей.Период,
    ABCКлассификацияПокупателей.Регистратор,
    ABCКлассификацияПокупателей.НомерСтроки,
    ABCКлассификацияПокупателей.Активность,
    ABCКлассификацияПокупателей.Контрагент,
    ABCКлассификацияПокупателей.ABCКлассПокупателя
ИЗ
    РегистрСведений.ABCКлассификацияПокупателей КАК ABCКлассификацияПокупателей
ГДЕ
    ABCКлассификацияПокупателей.Контрагент = &Контрагент

ДЛЯ ИЗМЕНЕНИЯ
2 ДенисЧ
 
14.01.22
12:33
Ну получи номер до транзакции...
3 H A D G E H O G s
 
14.01.22
12:33
(0) ФоновоеЗадание с ожиданием завершения
4 sdemon72
 
14.01.22
12:34
Режим блокировки управляемый, забыл сказать
5 sdemon72
 
14.01.22
12:35
(3) Стесняюсь спросить - предлагаете внутри транзакции запустить фоновое задание и ждать его завершения?
6 H A D G E H O G s
 
14.01.22
12:35
(5) Да. Чебынет, это быстро.
7 sdemon72
 
14.01.22
12:39
(5) хм, смело... но я бы за такое дал канделябром по голове :))))
8 sdemon72
 
14.01.22
12:39
(2) да, тоже вариант...
9 sdemon72
 
14.01.22
12:40
Ну штатных механизмов именно снятия блокировки внутри транзакции не существует, как я понимаю?
10 Fragster
 
гуру
14.01.22
12:41
(9) да
11 sdemon72
 
14.01.22
12:42
Понял, всем спасибо, в т.ч. и за идеи
12 2mugik
 
15.01.22
13:22
(0)А он у тебя тот же номер не возьмет? Который в незакрытой транзакции?
13 2mugik
 
15.01.22
13:23
(0)т.е. он запишет в базу то что в не закрытой транзакции?
14 pechkin
 
15.01.22
13:28
Разбей транзакцию на части: номер и все остальное
15 pechkin
 
15.01.22
13:29
Те создал док, закрыл 1 транзакцию.
Во 2 заполнил и провел