Имя: Пароль:
1C
1С v8
Фраза ДЛЯ ИЗМЕНЕНИЯ в запросе
0 1dvd
 
06.05.14
10:16
Перечитал кучу инфы, но так и не нашел ответа на простой вопрос.
Если данные блокируются запросом с ключевыми словами "ДЛЯ ИЗМЕНЕНИЯ", а некоторые из данных уже заблокированы кем-то,
выполнится ли запрос?
Или в запрос не попадут такие данные?
1 ДенисЧ
 
06.05.14
10:17
Блокировка будет.
Или вылетит по таймауту, или по взаимоблокировке. Или дождётся
2 1dvd
 
06.05.14
10:18
(1) то есть оборачивать в попытку-исключения смысла нет?
3 ДенисЧ
 
06.05.14
10:19
(2) "Или вылетит по таймауту, или по взаимоблокировке."
4 1dvd
 
06.05.14
10:20
(3) мне нужно запросом убить двух зайцев:
1. Узнать, заблокировано ли
2. Заблокировать

И ждать 2-3 минуты желания нет никакого
5 hhhh
 
06.05.14
10:24
(4) почему 2-3 минуты? Обычно запись идет меньше секунды.
6 MadHead
 
06.05.14
10:25
Исходя из совместимости блокировок. Если была s блокировка, то  u должна наложиться без конфликта. При любой другой изначальном типе блокировки будет ожидание
7 DmitrO
 
06.05.14
10:43
>>1. Узнать, заблокировано ли
В принципе, не правильная постановка вопроса.
Во всех блокировочных механизмах, узнавать "заблокировано ли" смысла не имеет, т.к. может быть так, что сразу через 1 милисекунду после того как ты узнал заблокировано или нет, этот состояние может измениться. И эта милисекунда пройдет даже между строками твоего кода.
Поэтому чтобы узнать
8 DmitrO
 
06.05.14
10:43
надо именно блокировать (улетело раньше) )
9 1dvd
 
06.05.14
13:34
понял. всем спасибо

ещё вопрос. Запросом можно блокировать и те объекты, у которых режим блокировок автоматический, и те, у которых управляемый?
10 Maxus43
 
06.05.14
13:39
Предложение ДЛЯ ИЗМЕНЕНИЯ предназначено для указания необходимости блокировки считываемых в транзакции данных.
Считанные данные становятся недоступными для чтения в других сессиях. Для файлового варианта блокируются указанные таблицы, а для клиент-серверного варианта — только выбранные записи. Блокировка снимается после завершения транзакции
11 DmitrO
 
06.05.14
13:41
(9)Это зависит от режима транзакции, если транзакция управляемая, то предложение запроса ДЛЯ ИЗМЕНЕНИЯ игнорируется.
12 1dvd
 
06.05.14
13:44
(11) ещё раз спасибо!
13 DmitrO
 
06.05.14
13:47
(11)+ А вот какая будет транзакция зависит либо от:
- если в свойствах конфигурации Режим управления блокировкой данных стоит Автоматический и управляемый, то зависит того что указано в объекте который ее начинает.
- иначе неявная транзакция начинаемая объектом будет в том режиме как указано в этом свойстве конфигурации, НЕ ЗАВИСИМО от того что указано в метаданных самого объекта.
14 1dvd
 
06.05.14
13:54
(13) у меня в свойствах конфы указана Автом.+Упр. блокировки.
У самого объекта (РС) - управляемая. сама транзакция управляемая
НачатьТранзакцию(РежимУправленияБлокировкойДанных.Управляемый);

получается, мне использовать запрос не имеет смысла? нужно использовать ЗаблокироватьДанныеДляРедактирования ?
15 DmitrO
 
06.05.14
14:17
(14)Нет. Надо использовать объект БлокировкаДанных для установки блокировок.
16 DmitrO
 
06.05.14
14:18
И да, если режим транзакции Управляемый использование в тексте запроса ДЛЯ ИЗМЕНЕНИЯ на имеет смысла.
17 1dvd
 
06.05.14
14:19
(15) не могу найти, где написано про "если транзакция управляемая, то предложение запроса ДЛЯ ИЗМЕНЕНИЯ игнорируется"

Четко помню, что вне транзакции эти слова игнорируются. Но, вот упр/авт - не могу найти
18 1dvd
 
06.05.14
14:21
19 1dvd
 
06.05.14
14:22
(16) и ещё раз спасибо :)

ЗЫ Асмодей мышей совсем не ловит. Когда уже пасибки с лайками прикрутят?
20 DmitrO
 
06.05.14
14:28
Да, непосредственно в документации по платформе действительно явно не сказано про это. Предлагаю написать в спортлото. :)