Имя: Пароль:
1C
 
Сомнения в блокировках.
0 Lama12
 
30.11.15
11:15
После перехода на платформу 8.3.6.2390 начались блокировки при чтении предопределенного элемента справочника.
Ситуация.
Есть справочник с предопределенными элементами.
Открывается транзакция.
В транзакции меняются значения одного реквизита предопределенного элемента (у элемента всего один реквизит, не считая стандартных).
В параллельном сеансе, при попытке прочитать значение этого реквизита вызывает конфликт блокировок.
Есть подозрение что дело в реализации чтения. Т.е. чтение производится не запросом, а объектной моделью. Но раньше проблем не было.
Чтение объектной моделью - Справочники.РТС_Константы.НоваяРассылкаРаботает.Знач
Где РТС_Константы - имя справочника;
НоваяРассылкаРаботает - имя предопределенного элемента.
Знач - реквизит элемента справочника.

Вопрос - из-за чего блокировка при чтении? Если запросом открывать будут блокировки или "грязное чтение" все таки сработает?

На ИТС написано что чтение объектной моделью накладывает разделяемую блокировку. Запись эксклюзивную. Но раньше при эксклюзивных блокировках можно было прочитать значение. Теперь этого нельзя?
1 Лефмихалыч
 
30.11.15
11:17
>из-за чего блокировка при чтении?
из-за того, что вы вместо параметров сеанса константы используете и не думаете об оптимизации клиент-серверного взаимодействия от слова "совсем".
2 Lama12
 
30.11.15
11:18
(1) Нельзя параметры сеанса использовать в данном случае. Значения меняются часто и в разных сеансах.
3 2mugik
 
30.11.15
11:18
а в 8.3.6 вообще есть грязное чтение? С 8.3.3 там вроде поменяли работу с СУБД, по крайней мере с СКЛ.
4 Господин ПЖ
 
30.11.15
11:19
>вместо параметров сеанса константы используете

они же в разных таблицах давно живут...
5 Господин ПЖ
 
30.11.15
11:19
>Значения меняются часто и в разных сеансах.

константа меняется? ловите наркомана
6 Lama12
 
30.11.15
11:19
(5) Блин. Это справочник. Название просто у него такое.
7 Гёдза
 
30.11.15
11:20
>>Но раньше при эксклюзивных блокировках можно было прочитать значение.
Никогда нельзя было. Раньше вы скорее всего просто не натыкались на ошибки
8 Lama12
 
30.11.15
11:23
(7) Хм... тоже вариант.
9 Лефмихалыч
 
30.11.15
11:25
(2) значит архитектурная ошибка еще большая, но заклчается она в том, что константы используются не по назначению.

Константы меняются часто.
Константы, Карл! Меняются часто.
Меняются. Часто.
...
10 Lama12
 
30.11.15
11:27
(9) Да не константы. Элемент справочника. Справочник имеет название "РТС_Константы".
11 2mugik
 
30.11.15
11:29
По идее запросом ты откроешь предыдущую версию записи.
12 Господин ПЖ
 
30.11.15
11:37
>На ИТС написано что чтение объектной моделью накладывает разделяемую блокировку

спр. с ТЧ читался в эксклюзиве..
13 Лефмихалыч
 
30.11.15
11:48
(2) не знаю, какую задачу ты пытался решить этим справочником, но решение кривое, как турецкая сабля, и от этого блокировки. Блокировки - это вот такая цена у такого решения. Чтобы не было блокировок, нужно придумать другое решение - в этом чинить нечего, оно работает, как и должно
14 2mugik
 
30.11.15
11:57
(7)У меня в 8.2 вроде читает:(комплексная 1.1 на 8.2 клиент-сервер, конфа на упр. блокировках)

Обработка 1:
    начатьТранзакцию();
       о=полеввода1.ПолучитьОбъект();
       о.Записать();
       предупреждение(1);
    зафиксироватьТранзакцию();
запускаем....
во втором сеансе
Обработка 2:
сообщить(полеввода1.Адрес);

читает...
15 Гёдза
 
30.11.15
11:59
(14) у тебя без транзакции второе чтение, а оно как известно nolock
16 2mugik
 
30.11.15
12:02
(15)Спасибо. Т.е. в 8.2 это будет обычное "грязное чтение"?
17 H A D G E H O G s
 
30.11.15
12:06
На ИТС написано что чтение объектной моделью накладывает разделяемую блокировку. Запись эксклюзивную. Но раньше при эксклюзивных блокировках можно было прочитать значение. Теперь этого нельзя?

чтение объектной моделью накладывает разделяемую ОБЪЕКТНУЮ блокировку
18 H A D G E H O G s
 
30.11.15
12:06
(16) Да
19 H A D G E H O G s
 
30.11.15
12:07
(0)
Режим совместимости какой?
Текст ошибки - какой?
20 Lama12
 
30.11.15
13:07
(19) Спасибо разобрался. У меня во втором сеансе, чтение идет в неявной транзакции. Сразу не заметил. В общем то, это решило.
21 Necessitudo
 
30.11.15
14:21
(17) Даже при чтении вне транзакции?