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