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