gifts2017

Запрет неоперативного проведения в УТ 10.3 без изменения объектов конфигурации с сохранением поддержки

Опубликовал Павел Данилов (pavlig) в раздел Программирование - Практика программирования

Способ через создание Подписки на события и Общего модуля.

Возникла задача запретить неоперативное проведение пользователями. Проведением задним числом они обходили отрицательные остатки (зачем и в какой ситуации это было нужно, описывать не буду).

Данный способ работает без изменения объектов конфигурации, конфигурация остается на поддержке. Необходимо добавить Подписку на события и общий модуль в конфигурацию.

Пример:

Подписка на событие:
Источник: ДокументОбъект.РеализацияТоваровУслуг
Событие: ПередЗаписью
Обработчик: ЗапретПроведения.ЗапретНеоперативногоПроведения

Общий модуль ЗапретПроведения:

Процедура ЗапретНеоперативногоПроведения(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт
	Если РежимЗаписи = РежимЗаписиДокумента.Проведение И РежимПроведения = РежимПроведенияДокумента.Неоперативный Тогда
		Разрешить = ПользователиИнформационнойБазы.ТекущийПользователь().Роли.Содержит(Метаданные.Роли.ПолныеПрава);
		Если НЕ Разрешить Тогда
			Отказ = Истина;
			Сообщить("У вас нет прав на Неоперативное проведение");
		КонецЕсли;
	КонецЕсли;
КонецПроцедуры

Таким образом, при проведении документа пользователем без Полных прав (условия настраиваем под себя) высвечивается предупреждение и документ не проводится. При этом не нужно лезть в конфигурацию, играться с правами, ролями и т.д.

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Сергей Б (WolfKgn) 30.10.13 08:17
а почему бы вместо
ПользователиИнформационнойБазы.ТекущийПользователь().Роли.Содержит(Метаданные.Роли.ПолныеПрава)

не вставить просто
РольДоступна("ПолныеПрава")

?
sheffchik; КармаковК; S_D_M; pavlig; i_volodin; freezetron; +6 Ответить
2. Ярослав Радкевич (WKBAPKA) 30.10.13 11:30
потомучто наши люди простых путей не ищут и в булочную на такси не ездяют
3. Тимур Багаутдинов (Timur_Bagautdinov) 31.10.13 11:18
Сходу, что приходит в голову. Подписка срабатывает после выполнения основного события. Получается, что-то поделали, а потом передумали.
4. DAnry (DAnry) 06.11.13 14:29
Но конфигурацию все равно надо изменять и, следовательно, снимать с поддержки
5. mikhailovaew (mikhailovaew) 14.01.14 16:33
(4) не совсем верно: нужно включить возможность редактирования с сохранением поддержки. Добавление подписки на событие, кстати, потом при обновлениях вообще никак не мешает.
88wau24ru; +1 Ответить
6. simba08 27.08.14 17:09
"Добавление подписки на событие, кстати, потом при обновлениях вообще никак не мешает." - 100%
Единственное, что хочется добавить - имя новой подписке и новому общему модулю надо давать такое, чтобы 1С-ники нечаяно такое же имя не дали новой своей подписке или новому своему модулю.
Вариантов куча - хоть "МойЗапретПроведения", хоть "ЗапретПроведения_ляляля"
7. Светлана Юрусова (svilsa) 28.11.14 16:20
+ Спасибо, на самом деле очень помогло, потому что даже для верно настроенных прав, в которых запрещено проведение неоперативно, по кнопке "печать" пользователи научились обходить запрет на неоперативное проведение.