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