РасширПравПользовВ_УБРБД_С_FormEx.dll (Изменённое)
Цель — запрет/разрешение исправлений документов в зависимости от автора создателя Документа. Делал для УРБД,а там как душе угодно.
Отдельная благодарность АЛЬФУ за FormEx. Всё от туда. И плюсы ему, а минусы мне.
- Описание
- Подробнее
Описание
Спр
= СоздатьОбъект(«Справочник.Пользователи»)
; Спр
.
НайтиПоНаименованию
(
ИмяПользователя
(), 1)
; Пользователь
=
Спр
.
ТекущийЭлемент
()
;
Если
Пользователь
.
Выбран
() = 0 Тогда
Спр
.
Новый
()
; Спр
.
Наименование
=
ИмяПользователя
()
; Спр
.
Записать
()
; Пользователь
=
Спр
.
ТекущийЭлемент
()
;
КонецЕсли
;
Если
Пользователь
=«» Тогда
ЗавершитьРаботуСистемы
()
;
КонецЕсли
;
///Добавить в глоб. Приначалеработы системы добавить dll-ы Если
ЗагрузитьВнешнююКомпоненту
(«TurboMD.dll») = 0 Тогда// не обязательно
Предупреждение
(«Неудачная попытка загрузить TurboMD.dll»)
; СтатусВозврата
(0)
;
Возврат
;
КонецЕсли
;
Если
ЗагрузитьВнешнююКомпоненту
(«1CPP.dll») = 0 Тогда// не обязательно
Предупреждение
(«Неудачная попытка загрузить 1CPP.dll»)
; СтатусВозврата
(0)
;
Возврат
;
КонецЕсли
;
//пытаемся загрузить компоненту в формате штатной ВК Если
ЗагрузитьВнешнююКомпоненту
(«FormEx.dll») = 0 Тогда// обязательно
Предупреждение
(«Неудачная попытка загрузить FormEx.dll»)
; СтатусВозврата
(0)
;
// можно глушить, а лучше не глушить Возврат
;
КонецЕсли
;
//Добавить в любое удобное место глобального модуяя / ///========================================== Добавил для запрета Работы в УРБД Процедура
ПроверкаРазрешенияРедактирования
(
Конт
) Экспорт
КретДата
=«»
; КретДата
=
Конт
.
ДатаДок;
//Сообщить(«КретДата==»+КретДата);
ФинРез
=СоздатьОбъект(«Документ.ФинансовыеРезультаты»)
; ФинРез
.
ВыбратьДокументы
(
НачКвартала
(
КретДата
),
КонКвартала
(
КретДата
))
; ДокумЕсть
=0
;
Пока
ФинРез
.
ПолучитьДокумент
()=1 Цикл Если
ФинРез
.
Проведен
()=1 Тогда
Предупреждение
(«У ВАС УВАЖАЕМЫЙ ЕСТЬ ФИН РЕЗЕЛЬТАТ, НАДОБНО СДЕЛАТЬ ЕГО НЕ ПРОВЕДЁННЫМ»)
; ДокумЕсть
=1
;
Если
Конт
.
Проведен
()=0 Тогда
Конт
.
Форма
.
Закрыть
(0)
;
Перейти
~
1
;
Прервать
;
КонецЕсли
;
// Сообщить(«ДокФинРез=»+ФинРез.ТекущийДокумент()); Прервать
;
КонецЕсли
;
КонецЦикла
;
Если
ДокумЕсть
=0
тогда
Если
СокрЛП
(Константа.
РедактироватьДок
)<>«TROY» Тогда Если
Конт
.
Автор
<>
Пользователь
Тогда Если
Конт
.
Проведен
()=1 Тогда
Конт
.
Форма
.
ТолькоПросмотр
(1)
; ФормаРасш
= СоздатьОбъект(«РасширениеФормы»)
; ФормаРасш
.
УстановитьФорму
(
Конт
.
Форма
)
;
//Идентиф=»»; //Заголовок=»»; Для
Х
= 0 По
ФормаРасш
.
КоличествоАтрибутов
() — 1 Цикл //Идентиф= Строка(ФормаРасш.ПолучитьАтрибут(Х).Идентификатор); //Заголовок=Строка(ФормаРасш.ПолучитьАтрибут(Х).Заголовок); Если (
ФормаРасш
.
ПолучитьАтрибут
(
Х
).
Тип
= 3) Тогда // нужно оставить доступ на кнопку «печать» или …. Если (
Строка
(
ФормаРасш
.
ПолучитьАтрибут
(
Х
).
Заголовок
)=«&Печать»)
или
(
Строка
(
ФормаРасш
.
ПолучитьАтрибут
(
Х
).
Заголовок
)=«Печать»)Тогда
ФормаРасш
.
ПолучитьАтрибут
(
Х
).
Доступность
= 1
; ФормаРасш
.
ПолучитьАтрибут
(
Х
).
Видимость
= 1
;
Иначе
ФормаРасш
.
ПолучитьАтрибут
(
Х
).
Доступность
= 0
; ФормаРасш
.
ПолучитьАтрибут
(
Х
).
Видимость
= 0
;
КонецЕсли
;
КонецЕсли
; Конеццикла;
КонецЕсли
;
КонецЕсли
;
КонецЕсли
;
Иначе Если
СокрЛП
(Константа.
РедактироватьДок
)<>«TROY» Тогда
Конт
.
Форма
.
ТолькоПросмотр
(1)
; ФормаРасш
= СоздатьОбъект(«РасширениеФормы»)
; ФормаРасш
.
УстановитьФорму
(
Конт
.
Форма
)
;
//Идентиф=»»; //Заголовок=»»; Для
Х
= 0 По
ФормаРасш
.
КоличествоАтрибутов
() — 1 Цикл //Идентиф= Строка(ФормаРасш.ПолучитьАтрибут(Х).Идентификатор); //Заголовок=Строка(ФормаРасш.ПолучитьАтрибут(Х).Заголовок); Если (
ФормаРасш
.
ПолучитьАтрибут
(
Х
).
Тип
= 3) Тогда // нужно оставить доступ на кнопку «печать» или …. Если (
Строка
(
ФормаРасш
.
ПолучитьАтрибут
(
Х
).
Заголовок
)=«&Печать»)
или
(
Строка
(
ФормаРасш
.
ПолучитьАтрибут
(
Х
).
Заголовок
)=«Печать»)Тогда
ФормаРасш
.
ПолучитьАтрибут
(
Х
).
Доступность
= 1
; ФормаРасш
.
ПолучитьАтрибут
(
Х
).
Видимость
= 1
;
Иначе
ФормаРасш
.
ПолучитьАтрибут
(
Х
).
Доступность
= 0
; ФормаРасш
.
ПолучитьАтрибут
(
Х
).
Видимость
= 0
;
КонецЕсли
;
КонецЕсли
; Конеццикла;
КонецЕсли
;
КонецЕсли
; ~
1
: ДокумЕсть
=0
;
// страховка КонецПроцедуры //===================== Процедура
ПослеОткрытия
(
Конт
) Экспорт
ФормаРасш
= СоздатьОбъект(«РасширениеФормы»)
; ФормаРасш
.
УстановитьФорму
(
Конт
.
Форма
)
;
//Сообщить(«Открыта форма: «+ФормаРасш.ПолныйТипОбъекта()+» [«+ФормаРасш.ПолныйПуть()+»]»); Если
ФормаРасш
.
ТипОбъекта
()=«Документ» Тогда
ПроверкаРазрешенияРедактирования
(
Конт
)
;
КонецЕсли
;
КонецПроцедуры // ======================================

