Имя: Пароль:
1C
 
Блокировка записи регистра сведений
0 Stepa86
 
24.03.09
15:57
Есть регистр сведений и документ,
для каждого документа существует одна и только одна запись регистра,
но при изменении этой записи блокируется вся таблица регистра...

У меня уже крыша едет: перепробовал подчинение регистратору, запрос с "Для изменения", управляемые блокировки с БлокировкаДанных = Новый БлокировкаДанных; все время или ошибки какие то, или таблица блокируется вся...

Где посмотреть, почитать, как правильно настроить, чтоб блокировалась тока запись??? Чую, что туплю...

Проверку заблокированности проверяю установкой точки останова в ПриЗаписи модуля регистра, и проведением разных доков из под разных пользователей...
1 Господин ПЖ
 
24.03.09
15:59
элементов сколько в РС? Если мало - скулю покласть на ваши прибамбасы.

ЗЫ надеюсь база на скуле.
2 Stepa86
 
24.03.09
16:03
(1) 6000 пока, база скуль, на файловой все равно всегда вся таблица блокируется... Ощущаются заметные тормоза при проведении, одна из причин - ожидание освобождения таблицы регистра
3 ptiz
 
24.03.09
16:20
Только что проверил на независимом периодическом РС. Не блокирует всю таблицу. Записывает параллельно.
Пробовал без подчинения регистратору?
4 Stepa86
 
24.03.09
16:23
(3) можно код записи? и в какой момент вызывается
5 Stepa86
 
24.03.09
16:25
у меня из обработки проведения вызывается функция с кодом:

МенеджерЗаписи = РегистрыСведений.бпСведенияОЗадачах.СоздатьМенеджерЗаписи();
       
МенеджерЗаписи.Задача    = Ссылка;
МенеджерЗаписи.Сессия    = Сессия;
МенеджерЗаписи.ВерсияБП  = ВерсияБизнесПроцесса;
МенеджерЗаписи.Состояние = Состояние;
       
МенеджерЗаписи.Прочитать();
       
//заполнение ресурсов
       
МенеджерЗаписи.Записать(Истина);
6 ptiz
 
24.03.09
16:27
Я набором делал. Конфигурация в режиме управляемых блокировок.

Процедура ЗаписатьНабор(ЗонаСборки)

   НачатьТранзакцию();
   
   Набор = РегистрыСведений.СводныеЗоныСборки.СоздатьНаборЗаписей();
   Набор.Отбор.Период.Установить('20090101');
   Набор.Отбор.ЗонаСборки.Установить(ЗонаСборки);
   Запись = Набор.Добавить();
   Запись.Период = '20090101';
   Запись.ЗонаСборки = ЗонаСборки;
   Запись.СводнаяЗона = ЗонаСборки;
   
   Набор.Записать();
   
   Предупреждение("Запись зоны " + ЗонаСборки, 60);
   
   ЗафиксироватьТранзакцию();
   
КонецПроцедуры
7 ptiz
 
24.03.09
16:29
И через менеджер записи нормально.
8 Stepa86
 
24.03.09
16:30
(6) если явно не указывать БлокировкаДанных = Новый БлокировкаДанных то конфа работает так же, как в ражиме автоматических блокировок, так?
9 ptiz
 
24.03.09
16:31
(8) Нет. Блокировки тогда минимальные.
Новый БлокировкаДанных дает дополнительные блокировки (например, чтоб один товар 2 раза не отгрузили)
10 Stepa86
 
24.03.09
16:43
(9) а в доке и в регистра какой режим управления блокировками?
11 ptiz
 
24.03.09
16:58
(10) Я не в доке пишу. Проверял обработкой, поэтому и сделал в транзакции.