|
Заблокировать регистр накопления | ☑ | ||
---|---|---|---|---|
0
wwwqwert2014
10.10.14
✎
16:22
|
Я программно создаю в процедуре записи в регистре в процедуре. Хочу чтобы пока выполняется процедура, никто не мог вносить изменения в регистр.
Режим управления блокировкой стоит Управляемый. Файловая база. Мне необходимо заблокировать весь регистр. Как мне бы это сделать? |
|||
1
floody
10.10.14
✎
16:25
|
В файловой базе всегда SERIALIZABLE.
|
|||
2
rozer76
10.10.14
✎
16:27
|
если будешь на sql переводить и нет неявной транзакции:
НачатьТранзакцию(); Блокировка =Новый БлокировкаДанных; ЭлементБлокировка=Блокировка.Добавить("РегистрСведений.РеестрПроблемныхДокументов"); ЭлементБлокировка.Режим=РежимБлокировкиДанных.Исключительный; ЭлементБлокировка.УстановитьЗначение("Фирма",ВыбрФирма); Блокировка.Заблокировать(); <пишем в регистр> ЗафиксироватьТранзакцию(); |
|||
3
wwwqwert2014
10.10.14
✎
16:29
|
(1) SERIALIZABLE - можете пояснить по этому моменту?
|
|||
4
wwwqwert2014
10.10.14
✎
16:36
|
просто у меня перезаполнение регистров есть в отчете и с этими двумя моими регистрами работает "РеализацияТоваровУслуг" и "ПлатёжноеПоручениеВходящее".
Вот процедура перезаполнения регистров: Процедура ПерезаполнятьРегистры() НачатьТранзакцию(); Если ЭтотОбъект.ПерезаполнятьРегистры Тогда ЗаполнитьРеализацияТоваровУслуг(); ЗаполнитьПлатежноеПоручениеВходящее(); КонецЕсли; ЗафиксироватьТранзакцию(); КонецПроцедуры Очень мне не хочется, чтобы кто-то влез в эти регистры, пока с ними идёт работа. а внутри этих процедур берутся все документы РеализацияТоваровУслуг до определённой даты , создаётся наборЗаписей с отбором по регистратору и обновляются данные. |
|||
5
ArchLord
10.10.14
✎
16:36
|
http://kb.mista.ru/article.php?id=151 не подойдет?
|
|||
6
wwwqwert2014
10.10.14
✎
16:41
|
Как я понимаю, не подойдёт. Я запросом получаю все нужные документы РеализацияТоваровУслуг и выполняю следующую процедуру
Процедура ЗаполнитьРеализацияТоваровУслуг() Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | РеализацияТоваровУслуг.Ссылка |ИЗ | Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг |ГДЕ | РеализацияТоваровУслуг.Проведен | И РеализацияТоваровУслуг.Дата >= &Дата | |УПОРЯДОЧИТЬ ПО | РеализацияТоваровУслуг.МоментВремени"; Запрос.УстановитьПараметр("Дата",НачалоПериода); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл // Вставить обработку выборки ВыборкаДетальныеЗаписи дПроведениеДокументов.УвеличитьДолгКонтрагента(ВыборкаДетальныеЗаписи.Ссылка); КонецЦикла; //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА КонецПроцедуры и далее по каждой расходной накладной создаю набор записей РН и записываю его. Если я в запросе пропишу Для Изменения, то у меня заблокируются документы РеализацияТоваровУслуг, а мне надо регистр заблокировать |
|||
7
GROOVY
10.10.14
✎
16:43
|
(0) А где блокировки то?
|
|||
8
Kalambur
10.10.14
✎
16:44
|
Жесть
|
|||
9
Necessitudo
10.10.14
✎
16:57
|
(0) В файловой базе ВСЕГДА все таблицы блокируются полностью. Тебе делать вообще ничего не нужно. С тебя 300 рублей.
|
|||
10
rozer76
10.10.14
✎
17:02
|
(9)+ 1
(0) да и блокировки нужны как и "ДЛЯ ИЗМЕНЕНИЯ" когда читаете регистр а потом пишете в него. |
|||
11
palpetrovich
10.10.14
✎
17:26
|
(9) есть подзрение что автор хочет заблокировать регистр сразу после нажатия кнопки отчета
|
|||
12
wwwqwert2014
10.10.14
✎
18:22
|
(11) ДА! Так и хочу
|
|||
13
wwwqwert2014
10.10.14
✎
18:25
|
(9) Ага, конечно. Но это не означает что мне делать ничего не надо будет.
У меня перезаполнение идёт в цикле НачалоЦикла НаборЗаписей_ПоРегистратору_1 НаборЗаписей_ПоРегистратору_1 НаборЗаписей_ПоРегистратору_1 КонецЦикла |
|||
14
wwwqwert2014
10.10.14
✎
18:26
|
(9) Ага, конечно. Но это не означает что мне делать ничего не надо будет.
У меня перезаполнение идёт в цикле НачалоЦикла НаборЗаписей_ПоРегистратору_1 НаборЗаписей_ПоРегистратору_2 НаборЗаписей_ПоРегистратору_3 НаборЗаписей_ПоРегистратору_4 ... НаборЗаписей_ПоРегистратору_n КонецЦикла |
|||
15
wwwqwert2014
10.10.14
✎
18:27
|
и вот когда я работаю с НаборЗаписей_ПоРегистратору_3 и еще не начал работать с НаборЗаписей_ПоРегистратору_4, у меня в этот момент регистр не заблокирован и пользователь может что-то туда запихнуть, а мне надо запретить вносить какие-либо изменения
Как мне это сделать? |
|||
16
wwwqwert2014
10.10.14
✎
18:28
|
Поэтому как только я нижимаю на кнопочку Сформировать, как это и сказал пользователь (11), мне надо заблокировать регистр, чтобы туда никто не влез
|
|||
17
wwwqwert2014
10.10.14
✎
19:43
|
Ну хотя бы намекните, какими способами можно поступить чтобы решить данную проблему, пожалуйста. Вообще идей нет
|
|||
18
rozer76
10.10.14
✎
23:17
|
(17) ну попробуй (2) только сначала получи все регистраторы в табл. и заблокируй по источнику-табл
|
|||
19
hhhh
10.10.14
✎
23:39
|
(17) ну, ДЛЯ ИЗМЕНЕНИЯ и указать этот регистр.
|
|||
20
rozer76
11.10.14
✎
14:01
|
(19) блин когда же читать СП начнем ...ДЛЯ ИЗМЕНЕНИЯ актуально ТОЛЬКО для автоматического режима управления блокировок (в режиме управляемых блокировок следует использовать объект БлокировкаДанных)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |