Небольшие запреты пользователям в Розница 2.3

Обратился клиент с просьбой несколько ограничить возможности кассиров в Розница 2.3.

Попросил, чтобы из внутреннего перемещения нельзя было открыть поступление:

Сделал — запретил открывать форму поступления:

&НаКлиенте
Процедура дор_ПриОткрытииПеред(Отказ)
	Если КЭШ.ЭтоКассир() Тогда 
		Отказ = истина;
		ПоказатьПредупреждение(, "У Вас недостаточно прав просматривать документ поступления");
	КонецЕсли;
КонецПроцедуры

Работает так:

Далее, попросил убрать возможность просматривать закупочные цены. Сделал неотключаемый фильтр по виду цен (расширение регистра сведений ЦеныНоменклатуры):

&НаСервере
Процедура дор_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
	
	//Осипов 2023-09-01 Кассиру - всегда отбор по розничной цене
	Если КЭШ.ЭтоКассир() Тогда 
		ЭлементОтбора = ПолучитьОтборДинамическогоСписка(Список, "ВидЦены");
		ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ВидЦены");
		ЭлементОтбора.ПравоеЗначение = Справочники.ВидыЦен.НайтиПоРеквизиту("Идентификатор", "Розничная");
		ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
		ЭлементОтбора.Использование = Истина;
	КонецЕсли;
	
КонецПроцедуры


    
Функция ПолучитьОтборДинамическогоСписка(Список, Представление) Экспорт  
	
    Для Каждого ЭлементОтбора ИЗ Список.Отбор.Элементы Цикл
        Если ЭлементОтбора.Представление = Представление Тогда
            Возврат ЭлементОтбора;
        КонецЕсли;
    КонецЦикла;
    ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбора.Представление = Представление;
    ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
    ЭлементОтбора.Использование = ложь;
    
    Возврат ЭлементОтбора;

КонецФункции

Самого кассира определяю в модуле с повторным использованием значений на время сеанса КЭШ через принадлежность к группе доступа Кассир:

Функция ДоступнаГруппаДоступа(НаименованиеГруппы)  Экспорт
	З = Новый Запрос(
	"ВЫБРАТЬ
	|	Т.Ссылка КАК Ссылка
	|ИЗ
	|	Справочник.ГруппыДоступа.Пользователи КАК Т
	|ГДЕ
	|	Т.Ссылка.Наименование = &Наименование
	|	И Т.Пользователь = &Пользователь"
	);
	З.УстановитьПараметр("Наименование", НаименованиеГруппы);
	З.УстановитьПараметр("Пользователь", Пользователи.ТекущийПользователь());
	Выборка = З.Выполнить().Выбрать();
	Возврат Выборка.Следующий();
КонецФункции        

Функция ЭтоКассир() Экспорт
	Возврат ДоступнаГруппаДоступа("Кассир");
КонецФункции

Среда: Розница 2.3.14.26 Объем: 1 час

fixin

Программирую на 1С с 1999 года. В 1С просто Гений. В 2020 году ушел из офиса на вольные хлеба фриланса. Принимаю заказы.

Читайте также:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *