Как сделать управляемую блокировку на границу последовательности? #656203


#0 by simol
Нужно наложить управляемую блокировку на границу последовательности. Данная блокировка нужна для своей процедуры ее восстановления. При этом движения документов, меняющие регистры которые влияют на последовательность и периодом в регистрах больше самой границы не блокировались.
#1 by Лефмихалыч
а теперь то же самое, только по-руски
#2 by Лефмихалыч
с двумя "с"
#3 by Лефмихалыч
не понятно, в чем проблема. Управляемую блокировку берешь и накладываешь так же, как на что угодно другое. Второй абзац вообще не понятен чуть менее, чем полностью
#4 by simol
Если последовательность "Товары". с текущей границей 1.01.2013. На границу последовательности влияет регистр ТоварыНаСкладах. Мне нужно восстановить последовательность. Я должен получить документ перед границей последовательности и его провести. Чтобы в это время в другом сеансе не сдвинули границу мне ее нужно заблокировать. Но я хочу наложить такую чтобы документы после 1.01.2013 при наложенной блокировке проводились, а до 1.01.2013 не проводились.
#5 by simol
Вопросы: 1) Какие сущности блокировать. Сам регистр ТоварыНаСкладах с указанием периода? 2) если я сначала получу границу, а потом наложу блокировку, то менжу получением границы и блокировкой кто-то может вклиниться и изменить границу.
#6 by samozvanec
1.да, 2.да
#7 by Лефмихалыч
отлещь от границы, блокируй регистр по значениям измерений
#8 by simol
Хочу и период подвязать, то я его должен к этой же блокировке и получить :(
#9 by samozvanec
если он хочет сохранить границу, ему нахрен не сдались значения измерений. блокируй последовательность)
#10 by Лефмихалыч
про блокировки в принципе
#11 by samozvanec
ты какой-то больно хитрый. хочешь чтоб и документы проводились, и последовательность не двигали
#12 by samozvanec
+ последовательность тогда автоматом не двигай, бери да восстанавливай периодически. или алгоритм установки свой пропиши
#13 by Лефмихалыч
нет, он хочет, чтобы блокировка блокировала, но не блокировала
#14 by samozvanec
будем ждать, авось найдется советчик
#15 by simol
Смотрите. Допустим каждый день по одному документу. Граница стоит на 1.01. Я в процедуре восстановления 1) Получаю границу последовательности и документ (от 2.01), который нужно обработать для восстановления последовательности. 3) Переношу границу на 2.01 И так в цикле Одна итерация цикла это одна транзакция. Я хочу чтобы между п.1 и п.2 граница не двинулась в прошлый периода. Иначе я в п.3 перезапишу неправильно. Для этого хочу заблокировать движения регистра до 1.01. Но при этом во время п.2 документы с датой больше 1.01 пусть не блокируются.
#16 by simol
+ "п.1 и п.2" =  "п.1 и п.3"
#17 by Киборг
ты сам переносишь границу? или граница сдвигается автоматически при обработке документов?
#18 by simol
при проведении документов сама, при восстановлении я
#19 by Киборг
> при восстановлении я наверно правильней так: "при восстановлении и автоматически перносится, и я сам переношу" да?
#20 by simol
Я методом последовательности Восстановить для именно этой последовательности не пользуюсь. Так как хочу не перепроведение документов, а только пересчет одного регистра. Потому в своем восстановлении устанавливаю границу руками
#21 by Киборг
это тот регистр, по которому отслеживает изменения последовательность?
#22 by simol
Реально границу двигают 3, пересчитываю при восстановлении один из них.
#23 by simol
+пересчитываю один из них с учетом всех трех. (обновляю автоматические списание с резервов)
#24 by Киборг
так если ты все три запишешь, то граница автоматически сдвинется тогда тебе останется только следить, что граница сдвинулась на очередной регистратор набора если не сдвинулась, то восстановление прекращай или начинай заново с новой границы такой алгоритм не подойдет?
#25 by simol
Граница назад откатывается при записи движений регистра. Автоматически граница вперед (восстановление) двигается только при проведении документа, который в последовательности следующий после границы. Просто запись регистра вперед не двигает границу, потому я ее руками и двигаю.
#26 by simol
Я понял как нужно сделать. получаю границу, блокирую по ней регистры двигающие последовательность. получаю границу повторно. проверяю если сдвинулась пока блокировал, то завершаю транзакцию, если не сдвинулась - работаю.
#27 by Киборг
не знаю как при трех регистрах, но при одном регистре граница сдвигается (хоть вперед, хоть назад) при записи набора, а не при записи документа
#28 by Киборг
а как ты заблокируешь регистры? объектом Блокировка?
#29 by simol
Да - Новый БлокировкаДанных;
#30 by Киборг
попробуй сделать тест: в одной сессии в транзакции установи блокировку записей регистра с помощью БлокировкаДанных, а в другой сессии в транзакции прочитай эти записи регистра, не используя БлокировкаДанных
#31 by Киборг
*прочитай и запиши
#32 by simol
Я проверял. Работает. (У меня управляемые блокировки в конфе.) Если переведут на автомат, то сработает в запросе:
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С