Управляемая блокировка периодич. регистра сведений. #574428


#0 by f87
Блокируются все данные совпадающие по измерениям, без учета ПЕРИОДА. А хочу заблокировать только первые 5 записей регистра. Вот код... Спасибо
#1 by 5 Элемент
База файловая?
#2 by Maxus43
общие модули аналогично Нику называть щас модно?) оставить след в истории?
#3 by Рыжий Лис
А блокировка СУБД или 1С?
#4 by Maxus43
и это, какой режим блокировки стоит в конфигураторе у самой конфы и этих регистров?
#5 by f87
- не совсем понял вопрос, думаю 1С Режим управления блокировкой (конф) - Управляемая Режим управления блокировкой (Регистр) - Управляемая Транзакция так же - Управляемая Повторюсь, блокируются все записи совподающие по измерениям. Интересное наблюдение при отладке...
#6 by Vovan1975
тупой вопрос - а чего не используете конструкцию "ДЛЯ ИЗМЕНЕНИЯ" ?
#7 by Господин ПЖ
у него все управляемое.. так что 1с
#8 by Maxus43
а если не источник юзать? ЭлементБлокировкиДанных (DataLockItem) УстановитьЗначение (SetValue) Для пространства РегистрСведений.<имя> - Период (если есть), <имя измерения>;
#9 by Vetal_978
как-то давно тоже пытался блокировку по периоду сделать - не получилось, но у меня вываливалась какая-то ошибка. Семен Семеныч...
#10 by f87
Периодичность - В пределах секунды Что ты хочешь сказать?
#11 by Maxus43
я хочу сказать что попробуй использовать не "ИспользоватьИзИсточникаДанных" а устанавливай явно методом УстановитьЗначение
#12 by f87
Ща попробую
#13 by f87
Только вот не понятно <БлокируемоеЗначение> - Тип Произвольный либо Диапазон Так вот пять записей содержит разные измерения. Значет блокировать по одной записи?
#14 by Maxus43
имхо по периоду как раз заблокировать, все измерения... конкретно произвольные наборы записей блокирнуть хз
#15 by f87
Но блокируется ВСЯ таблица. Что за хрень не знаю. На период вообще не реагирует. И ни каких ошибок!
#16 by f87
А главное если зделать То, аналогично, полная тишина.
#17 by ProgAL
может быть надо
#18 by f87
Мой регистр не подчинен регистратору (Независимый)
#19 by Jolly Roger
какой релиз платформы? сервер 32 или 64?
#20 by Sonny
Хорошо бы так же понять: каким образом автор узнал, что блокируются все записи по измерениям без учета периода?
#21 by f87
Вопрос не потеме. Создай свой сабж я тебе отвечу.
#22 by Sonny
Кхм... Вообще-то это тебе нужно, а не мне. У меня всё работает нормально. Но если влом ответить, тогда в сад, помогать тебе желания уже нет.
#23 by МихаилМ
если первые 5 будут все на разных страницах то блокировка может быть не страничная, а на всю таблицу. это нормально,  если период не первое поле в кластерном индексе.
#24 by Господин ПЖ
какие страницы/таблицы... в упр. режиме sql вообще не при делах...
#25 by Рыжий Лис
Блокировки и в управляемом режиме могут быть как 1С, так и SQL. Если во время открытой транзакции прочитать из базы данных, запрос сформированный платформой будет без hint'а NOLOCK и прочитанные данные будут заблокированы SQL. Например если приведенный кусок кода вызывается из обработки проведения документа и поле Инкремент не индексировано и не первое в таблице или количество записей регистра невелико, план запроса будет использовать index scan или table scan. В результате все записи прошедшие через scan будут заблокированы SQL.
#26 by artik2
и на какой период записи будут заблокированы?
#27 by Рыжий Лис
До конца транзакции. Либо явной ЗавершитьТранзакцию, либо завершения проведения документа.
#28 by 5 Элемент
>> и прочитанные данные будут заблокированы SQL иди учи мат часть
#29 by VVi3ard
на самом деле дело говорит.
#30 by VVi3ard
ТС приведи полностью сообщение о блокировке так же в консоли SQL можно посмотреть тип блокировки это тоже не помешало бы.
#31 by VVi3ard
В мат части(ИТС) в статье Анализ и устранение взаимоблокировок описан случай который описал 25
#32 by 5 Элемент
как они блокируются?
#33 by f87
Когда данные заблокированны (остановка при отладке), то из другово клинента пытаюсь открыть запись вылетает: Где посмотреть тип блокировки - не нашел. Вроде пишет везде разделяемая, а я в коде указал исключительную.
#34 by 5 Элемент
где у тебя стоит точка останова? В твоем коде точно стоят комментарии на коде который изменяет записи?
#35 by Sonny
Без паяльника не взлетит :)
#36 by 5 Элемент
В общем есть предположение что у автора изменяются записи. В этом случае SQL ставит блокировку. На что он поставит только ему известно: за прочтенные записи или на всю таблицу. Точка останова стоит после изменения записей. В этом случае будет срабатывать блокировка SQL, т.к. нельзя читать записи заблокированные при изменении.
#37 by Господин ПЖ
>Если во время открытой транзакции прочитать из базы данных, запрос сформированный платформой будет без hint'а NOLOCK и прочитанные данные будут заблокированы SQL почему бы... там readcommited в управляемом... и опять же читать он их будет в shared без "ДЛЯ ИЗМЕНЕНИЯ", нах ему их блокировать?
#38 by f87
Данные точно не меняются (за комментировал) Остановка в конце процедуры "Возврат Истина;" "предположение что у автора изменяются записи." я же код выложил, записи просто блокируются в транзакции, затем разблокируются Спасибо за ваши мысли, много интересного. Вот мои наблюдения. Записи блокирутся моим кодом адекватно, все по измерениям. Укажу одно или же три измерения, меняю значения - блокировка ставится корректно. Бонально 1С не ставит блокировку по периоду. Может глюк какой-то? 8.2 (8.2.14.533) Есть мысль зделать рег. не периодическим, и добавить ИЗМЕРЕНИЕ Период. Буду пробовать
#39 by f87
Ну в общем то все. Убрал периодичность, создал измерение "Период1". Результат: блокируются строго пять записей из запроса, даже при наличии совпадений по другим измерениям. Вывод: 1С не ставит блокировку по стандартному реквизиту "Период"! Есть мысли?
#40 by jump if zero
>>блокируются строго пять записей из запроса, даже при наличии совпадений по другим измерениям если период то же одинаковый - то такого быть не может, блокировка накладывается по совокупности измерений включая период , а не на результат запроса в 5 строчек и по периоду тоже работает. и запрос у тебя выполняется вне управляемой транзакции , а значит может читать еще не закоммиченные данные и при таком условии запросто возможно пересечение по измерениям сдругой транзакцией
#41 by f87
Период естественно различный, интервал в секкунду/две Запрос не блокирует данные, а лишь выбирает пять записей (вне транзакции, т.н. "Грязное чтение") которые я в дальнейшем ПОПРОБУЮ заблокировать. И если будет пересечение с другой транзакцией то "Блокировка.Заблокировать;" выдаст исключение.
#42 by 5 Элемент
в транзакции не может быть грязного чтения
#43 by f87
???
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С