СодержаниеО блокировках, причинах их возникновения и решениях этой проблемы информации очень много, поэтому просто опишу одно из программных решений, которое реально помогло полностью исключить блокировки по номенклатуре при проведении документов в крупной информационной системе. Метод подходит только для клиент-серверных систем 1С. Протестировано на платформе 1С:Предприятие 8.2 (8.2.19.130), обычные формы. Решение для случая блокировок по номенклатуре: 1. Добавить новый служебный регистр сведений "БлокировкаПроведенияДокументов". Он не будет содержать данных и необходим только как объект наложения управляемой блокировки. Добавить полные права на этот регистр в общедоступную роль. ![]() ![]() 2. В начало процедуры "ПриЗаписи" модуля проблемного документа добавить код: Процедура ПриЗаписи(Отказ) Если Проведен Тогда Попытка Блокировка = Новый БлокировкаДанных; ЭлементБлокировки = Блокировка.Добавить("РегистрСведений.БлокировкаПроведенияДокументов"); ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный; ЭлементБлокировки.ИсточникДанных = ТабличнаяЧастьНоменклатура; ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Номенклатура", "Номенклатура"); Блокировка.Заблокировать(); Исключение # Если Клиент Тогда Сообщить(СокрЛП(Ссылка) +":"+ Символы.ПС + " Превышено время ожидания возможности проведения! Повторите попытку проведения."); # КонецЕсли Отказ = Истина; Возврат; КонецПопытки; КонецЕсли; //Исходный текст //... КонецПроцедуры При возникновении блокировок по полям другого типа, необходимо в регистр "БлокировкаПроведенияДокументов" добавить новое измерение соответствующего типа и в процедуре "ПриЗаписи" указать соответствующий источник данных для элемента блокировки. Нет комментариев
|