|
Как сделать управляемую блокировку на границу последовательности? | ☑ | ||
---|---|---|---|---|
0
simol
13.03.13
✎
16:57
|
Нужно наложить управляемую блокировку на границу последовательности.
Данная блокировка нужна для своей процедуры ее восстановления. При этом движения документов, меняющие регистры которые влияют на последовательность и периодом в регистрах больше самой границы не блокировались. |
|||
1
Лефмихалыч
13.03.13
✎
16:58
|
а теперь то же самое, только по-руски
|
|||
2
Лефмихалыч
13.03.13
✎
16:58
|
с двумя "с"
|
|||
3
Лефмихалыч
13.03.13
✎
16:59
|
не понятно, в чем проблема. Управляемую блокировку берешь и накладываешь так же, как на что угодно другое. Второй абзац вообще не понятен чуть менее, чем полностью
|
|||
4
simol
13.03.13
✎
17:02
|
(1) Если последовательность "Товары". с текущей границей 1.01.2013.
На границу последовательности влияет регистр ТоварыНаСкладах. Мне нужно восстановить последовательность. Я должен получить документ перед границей последовательности и его провести. Чтобы в это время в другом сеансе не сдвинули границу мне ее нужно заблокировать. Но я хочу наложить такую чтобы документы после 1.01.2013 при наложенной блокировке проводились, а до 1.01.2013 не проводились. |
|||
5
simol
13.03.13
✎
17:04
|
Вопросы:
1) Какие сущности блокировать. Сам регистр ТоварыНаСкладах с указанием периода? 2) если я сначала получу границу, а потом наложу блокировку, то менжу получением границы и блокировкой кто-то может вклиниться и изменить границу. |
|||
6
samozvanec
13.03.13
✎
17:05
|
(5) 1.да, 2.да
|
|||
7
Лефмихалыч
13.03.13
✎
17:06
|
отлещь от границы, блокируй регистр по значениям измерений
|
|||
8
simol
13.03.13
✎
17:08
|
(7)(6)Хочу и период подвязать, то я его должен к этой же блокировке и получить :(
|
|||
9
samozvanec
13.03.13
✎
17:12
|
(7) если он хочет сохранить границу, ему нахрен не сдались значения измерений.
(8) блокируй последовательность) |
|||
10
Лефмихалыч
13.03.13
✎
17:13
|
(8) http://lurkmore.so/images/2/28/Ty-nihuya-ne-ponyal.jpg
про блокировки в принципе |
|||
11
samozvanec
13.03.13
✎
17:15
|
(8) ты какой-то больно хитрый. хочешь чтоб и документы проводились, и последовательность не двигали
|
|||
12
samozvanec
13.03.13
✎
17:16
|
+(11) последовательность тогда автоматом не двигай, бери да восстанавливай периодически. или алгоритм установки свой пропиши
|
|||
13
Лефмихалыч
13.03.13
✎
17:18
|
(11) нет, он хочет, чтобы блокировка блокировала, но не блокировала
|
|||
14
samozvanec
13.03.13
✎
17:19
|
(13) будем ждать, авось найдется советчик
|
|||
15
simol
13.03.13
✎
17:35
|
Смотрите.
Допустим каждый день по одному документу. Граница стоит на 1.01. Я в процедуре восстановления 1) Получаю границу последовательности и документ (от 2.01), который нужно обработать для восстановления последовательности. 2) Обрабатываю документ 3) Переношу границу на 2.01 И так в цикле Одна итерация цикла это одна транзакция. Я хочу чтобы между п.1 и п.2 граница не двинулась в прошлый периода. Иначе я в п.3 перезапишу неправильно. Для этого хочу заблокировать движения регистра до 1.01. Но при этом во время п.2 документы с датой больше 1.01 пусть не блокируются. |
|||
16
simol
13.03.13
✎
17:36
|
+(15) "п.1 и п.2" = "п.1 и п.3"
|
|||
17
Киборг
13.03.13
✎
17:41
|
ты сам переносишь границу?
или граница сдвигается автоматически при обработке документов? |
|||
18
simol
13.03.13
✎
17:41
|
(17) при проведении документов сама, при восстановлении я
|
|||
19
Киборг
13.03.13
✎
17:44
|
> при восстановлении я
наверно правильней так: "при восстановлении и автоматически перносится, и я сам переношу" да? |
|||
20
simol
13.03.13
✎
17:50
|
(19)Я методом последовательности Восстановить() для именно этой последовательности не пользуюсь. Так как хочу не перепроведение документов, а только пересчет одного регистра.
Потому в своем восстановлении устанавливаю границу руками |
|||
21
Киборг
13.03.13
✎
17:52
|
это тот регистр, по которому отслеживает изменения последовательность?
|
|||
22
simol
13.03.13
✎
17:53
|
(21) Реально границу двигают 3, пересчитываю при восстановлении один из них.
|
|||
23
simol
13.03.13
✎
17:54
|
+(22)пересчитываю один из них с учетом всех трех. (обновляю автоматические списание с резервов)
|
|||
24
Киборг
13.03.13
✎
17:59
|
так если ты все три запишешь, то граница автоматически сдвинется
тогда тебе останется только следить, что граница сдвинулась на очередной регистратор набора если не сдвинулась, то восстановление прекращай или начинай заново с новой границы такой алгоритм не подойдет? |
|||
25
simol
13.03.13
✎
18:03
|
(24)Граница назад откатывается при записи движений регистра. Автоматически граница вперед (восстановление) двигается только при проведении документа, который в последовательности следующий после границы.
Просто запись регистра вперед не двигает границу, потому я ее руками и двигаю. |
|||
26
simol
13.03.13
✎
18:06
|
Я понял как нужно сделать.
получаю границу, блокирую по ней регистры двигающие последовательность. получаю границу повторно. проверяю если сдвинулась пока блокировал, то завершаю транзакцию, если не сдвинулась - работаю. |
|||
27
Киборг
13.03.13
✎
18:09
|
(25) не знаю как при трех регистрах, но при одном регистре граница сдвигается (хоть вперед, хоть назад) при записи набора, а не при записи документа
|
|||
28
Киборг
13.03.13
✎
18:09
|
(26) а как ты заблокируешь регистры? объектом Блокировка?
|
|||
29
simol
13.03.13
✎
18:11
|
(28) Да - Новый БлокировкаДанных;
|
|||
30
Киборг
13.03.13
✎
18:23
|
попробуй сделать тест: в одной сессии в транзакции установи блокировку записей регистра с помощью БлокировкаДанных, а в другой сессии в транзакции прочитай эти записи регистра, не используя БлокировкаДанных
|
|||
31
Киборг
13.03.13
✎
18:24
|
*прочитай и запиши
|
|||
32
simol
13.03.13
✎
18:28
|
(30)Я проверял. Работает. (У меня управляемые блокировки в конфе.) Если переведут на автомат, то сработает в запросе:
|ДЛЯ ИЗМЕНЕНИЯ //Осталось если переведу на автома | Последовательность._ТоварыВРезерве.Границы |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |