В общем модуле "орОтраслевыеРешения"
Замените две функции:
орПолучитьДатуЗапретаРедактирования() И
орПолучитьИнтервалЗапретаРедактирования()
на предложенные.
Функция орПолучитьДатуЗапретаРедактирования(ЭтотОбъект) Экспорт
Если обПраво("РедактированиеДокументовВЗакрытомПериоде",ЭтотОбъект.Права,,ЭтотОбъект) Тогда
Возврат Дата('00010101');
КонецЕсли;
Если ТипЗнч(ЭтотОбъект)=Тип("ДокументОбъект.УРВ_ПакетРабот") Тогда
//Пакет работ блокируем в закрытом периоде если только он проведен
Если НЕ ЭтотОбъект.Проведен Тогда
Возврат Дата('00010101');
КонецЕсли;
ИначеЕсли ТипЗнч(ЭтотОбъект)=Тип("ДокументОбъект.ЗаказНаАвтомобиль") Тогда
//Если заказ еще не обслужен, то он НЕ блокируется не зависимо от даты запрета редактирования
ОстаткиЗаказаНаАвтомобиль=РегистрыНакопления.ЗаказыАвтомобилей.Остатки(,Новый Структура("Заказ",ЭтотОбъект.Ссылка));
Если ОстаткиЗаказаНаАвтомобиль.Итог("Количество")<>0 ИЛИ
ОстаткиЗаказаНаАвтомобиль.Итог("Резерв")<>0 Тогда
Возврат Дата('00010101');
КонецЕсли;
КонецЕсли;
Возврат обПолучитьПраваИНастройкиПользователя(ЭтотОбъект.Организация,"ДатаЗапретаРедактирования",ЭтотОбъект);
КонецФункции // орПолучитьДатуЗапретаРедактирования()
Функция орПолучитьИнтервалЗапретаРедактирования(ЭтотОбъект, ТекущееВремя=Неопределено) Экспорт
ТекущееВремя = ?(ТекущееВремя=Неопределено, ТекущаяДата(), ТекущееВремя);
ДатаДокумента = ЭтотОбъект.Дата;
СтруктураИнтервалаЗапрета = Новый Структура("НижнГраница, ВерхГраница", ДатаДокумента, ДатаДокумента);
Если обПраво("РедактированиеДокументовВЗакрытомПериоде",ЭтотОбъект.Права,,ЭтотОбъект) Тогда
Возврат СтруктураИнтервалаЗапрета;
КонецЕсли;
Если ТипЗнч(ЭтотОбъект)=Тип("ДокументОбъект.УРВ_ПакетРабот") Тогда
//Пакет работ блокируем в закрытом периоде если только он проведен
Если НЕ ЭтотОбъект.Проведен Тогда
Возврат СтруктураИнтервалаЗапрета;
КонецЕсли;
ИначеЕсли ТипЗнч(ЭтотОбъект)=Тип("ДокументОбъект.ЗаказНаАвтомобиль") Тогда
//Если заказ еще не обслужен, то он НЕ блокируется не зависимо от интервала запрета редактирования
ОстаткиЗаказаНаАвтомобиль=РегистрыНакопления.ЗаказыАвтомобилей.Остатки(,Новый Структура("Заказ",ЭтотОбъект.Ссылка));
Если ОстаткиЗаказаНаАвтомобиль.Итог("Количество")<>0 ИЛИ
ОстаткиЗаказаНаАвтомобиль.Итог("Резерв")<>0 Тогда
Возврат СтруктураИнтервалаЗапрета;
КонецЕсли;
КонецЕсли;
Если обПраво("РедактироватьВЗаданномИнтервале", ЭтотОбъект.Права,,ЭтотОбъект) Тогда
СтруктураИнтервалаЗапрета.Вставить("НижнГраница", НачалоДня(ТекущееВремя-обПраво("ДнейМеньше",ЭтотОбъект.Права,,ЭтотОбъект)*86400));
СтруктураИнтервалаЗапрета.Вставить("ВерхГраница", КонецДня(ТекущееВремя+обПраво("ДнейБольше",ЭтотОбъект.Права,,ЭтотОбъект)*86400));
КонецЕсли;
Возврат СтруктураИнтервалаЗапрета;
КонецФункции // орПолучитьИнтервалЗапретаРедактирования()