Имя: Пароль:
1C
 
Заблокировать регистр накопления
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) блин когда же читать СП начнем ...ДЛЯ ИЗМЕНЕНИЯ актуально ТОЛЬКО для автоматического режима управления блокировок (в режиме управляемых блокировок следует использовать объект БлокировкаДанных)
Основная теорема систематики: Новые системы плодят новые проблемы.