Ошибка при одновременной записи в регистр сведений с управляемой блокировкой #482462


#0 by Faso1
Есть самописная конфа (в свойствах поставил автомат. и упр.) , регистр(упр.блок.) в который пишутся параллельно данные отличающиеся измерением НастройкаЗагрузки. При открытии двух 1с и одновременного запуска обработки с разными измерениями НастройкаЗагрузки получаю: Ошибка при вызове метода контекста (Записать): Конфликт блокировок при выполнении транзакции: Microsoft OLE DB Provider for SQL Server: Lock request time out period exceeded Код на котором все сваливается: Подскажите что не так?
#1 by Vitello
Я конечно не знаток, но блокировки то где?
#2 by Faso1
Так мне ничего блокировать и не нужно. Пусть пишется параллельно.
#3 by mikecool
ну пусть пишется :) база файловая или кл-серв?
#4 by Faso1
Серверная - ошибка ж скульная прилагается :-)
#5 by shuhard
платформу укажи
#6 by Faso1
8.1.15.14
#7 by Faso1
У кого работает параллельная запись - поделитесь рабочим кодом
#8 by Мебиус
Тайм аут вываливается в том случае если время оюидания на блокировке превышает 20 сек. Есть самописная конфа (в свойствах поставил автомат. и упр.)   А для транзакции, в которой выполянется запись какой режим?
#9 by Мебиус
У меня работает Ровно так же как и в
#10 by Faso1
Интересный эффект - если просто записывать(2-я часть кода), то все делает параллельно. А если на одной копии выполняется первый кусок кода(очистка регистра), а на другом запись(2-й кусок) - то ошибка. Если флОчиститьПрайсПоНастройке Тогда
#11 by Мебиус
А чего ты хотел то - в момент очистки наверняка блокируется вся таблица А перед записью идет проверка на уникальность измерений - запрос. Запрос выполнится не может так как записи заблокированы. Кстати какой режим управления блокировками у самого регистра?
#12 by Faso1
Ну так очистка в данном случае ничем не отличается от записи: отбор установлен, просто пишется пустой набор. Режим управляемый.
#13 by Мебиус
Данные отбора для очисткии записи конкурентны?
#14 by Мебиус
Какой отбор при очистке?
#15 by Faso1
Отбор один и тот же на запись и на очистку - НастройкаЗагрузки. При параллельной загрузке НастройкаЗагрузки всегда имеет разнве значения - т.е. не конкурирует. Все последовательно - сначала очистка по настройке, потом запись по ней же в тот же набор.
#16 by Мебиус
Код в выполняется в транзакции?
#17 by Faso1
Нет
#18 by Faso1
Транзакции лепятся самостоятельно - кусками результата запроса
#19 by Faso1
Докопались до того, что НаборЗаписей.Записать(Истина) - видимо даже с отбором лочит таблицу целиком, а с параметром Ложь - не лочит
#20 by Мебиус
Не должен. Какой состав полей отбора и состав измерений РС ?
#21 by Faso1
Отбор - только по НастройкаЗагрузки(справочник). В регистре еще 7 измерений, ресурсов нет.
#22 by Мебиус
Перечислите если не сложно все измерения РС с учетом порядка следования
#23 by Faso1
ДокументЗагрузки, НастройкаЗагрузки, Производитель, КодТовара, Название, НазваниеАнгл, Цена, Колво
#24 by Faso1
ДокументЗагрузки - Ведущее
#25 by Faso1
Регистр: Непериодический, Независимый
#26 by Мебиус
Попробуйте пердвинуть вперед  НастройкаЗагрузки В вашем случае скорре всего блокируется вся таблица кластерного индекса РС так как не указан отбор по первому измерению
#27 by Мебиус
Передвинуть в дереве конфигуратора
#28 by drumandbass
попробуй через запись а не набор, по тому что с наборами через отбор по идее больше SQL отрабатывает. и возможны блокировки, а с записью думаю пошустрее будет.
#29 by Faso1
Гениально! Спасибо огромное - все работает! От записи отказались - получается большие объемы построчно писать дольше
#30 by Мебиус
Не за что.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

Похожие вопросы 1С

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