Имя: Пароль:
1C
 
Ограничить редактирование/поиск в отборе отчета
0 Mr_Boogie
 
26.03.24
17:53
Всех приветствую. Подскажите пжлст, может сталкивался кто. 1с КА 2.4, платформа 8.3. Как в настройках отчета ограничить программно поле ввода для значения? чтобы не было возможности поиска/редактирования/создания, а чтоб пользователь мог только провалится получается в форму выбора. Два дня уже голову ломаю. https://ibb.co/j5yNYgD
1 spiller26
 
26.03.24
20:34
(0) Формируй свой список и передавай в СКД
2 spiller26
 
27.03.24
10:57
(0) Если хотите ограничить штатными, то делайте расширение.
В требуемом справочнике в модуле менеджера ограничивайте список.

&После("ОбработкаПолученияДанныхВыбора")
Процедура РасшОграничениеФизЛиц_ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)
	
	Если НЕ РольДоступна("ПолныеПрава") Тогда

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

КонецПроцедуры


А в самих формах выбора в расширении примерно так.

&НаСервере
Процедура РасшОграничениеФизЛиц_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)

	Если НЕ РольДоступна("ПолныеПрава") Тогда
		
		МассивФизЛиц = РасшОграничениеФизЛиц_ДополнительноНаСервере.РасшОграничениеФизЛиц_ДоступныеФизЛицаПользователя();	
		
		Если МассивФизЛиц.Количество() > 0 Тогда
			ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(
				Список,
				"Ссылка",
				МассивФизЛиц,
				ВидСравненияКомпоновкиДанных.ВСписке,
				НСтр("ru = 'Физ.лица только организации'"),
				Истина,
				РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Обычный,
				Неопределено); 
		КонецЕсли;			
	КонецЕсли;			

КонецПроцедуры
3 youalex
 
27.03.24
11:12
(0) исходная задача в чем?
Если нужно ограничить список - можно использовать Параметры редактирования/Параметры выбора
или Тип значения + Доступные значения (всё на закладке Наборы данных редактора СКД)
4 Mr_Boogie
 
27.03.24
16:01
(2) Огромнейшее спасибо, почитал ещё оф документацию и доработал как нужно)
5 Волшебник
 
27.03.24
16:08
(4) Покажите, что получилось
6 Mr_Boogie
 
27.03.24
16:52
(5) &После("ОбработкаПолученияДанныхВыбора")
Процедура TSS_ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)
    Если НЕ УправлениеДоступом.ЕстьРоль("ПолныеПрава") Тогда
        СтандартнаяОбработка = Ложь;
        Запрос = Новый Запрос;
        Запрос.Текст =
            "ВЫБРАТЬ
            |    TSS_ДоступКДДС.СтатьяДДС КАК СтатьяДДС
            |ИЗ
            |    РегистрСведений.TSS_ДоступКДДС КАК TSS_ДоступКДДС
            |ГДЕ
            |    TSS_ДоступКДДС.Пользователь = &Пользователь
            |    И TSS_ДоступКДДС.СтатьяДДС.Наименование ПОДОБНО &СтрокаПоиска";
        
        Запрос.УстановитьПараметр("Пользователь", ПользователиКлиентСервер.ТекущийПользователь());
        Запрос.УстановитьПараметр("СтрокаПоиска", "%" + Параметры.СтрокаПоиска + "%");
        
        РезультатЗапроса = Запрос.Выполнить();
        
        ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
        
        Список = Новый СписокЗначений;        
        Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
             Список.Добавить(ВыборкаДетальныеЗаписи.СтатьяДДС);
        КонецЦикла;

        ДанныеВыбора = Список;        
    КонецЕсли;

КонецПроцедуры
7 Волшебник
 
27.03.24
16:57
(6) Ага, потом ждите заявок типа: "Не могу выбрать статью" и "Пропали статьи ДДС". И совершенно другой программист наткнётся на Ваш код, чертыхнётся... А потом будет муторное согласование доступа и наконец торжественное внесение данных в регистр сведений. И всё ради того, чтобы пользователь случайно не выбрал плохую статью
8 Mr_Boogie
 
27.03.24
17:05
(7) "Не могу выбрать статью" - По сути это и есть главное требование у начальства, чтобы "не нужные глаза" не видели/не могли выбрать, то что им не нужно. Сам регистр вынесен на форму элемента справочника "Статей ддс" отдельной вкладкой. Где по кнопке "добавить", у кого есть админ права, заносит запись в регистр, тем самым предоставляет доступ к нужной статьи и далее пользователь может её выбирать в документах/редактировать/просматривать в отчетах и тд..
9 Волшебник
 
27.03.24
17:06
(8) Админ же не будет это делать просто так, ему нужно основание в виде утверждённой карточки доступа сотрудника. Маршрут согласования доступа уже имеется?
10 Mr_Boogie
 
27.03.24
17:15
(9) Да, это будет делать более высокопоставленное руководство, наподобие ген. дира и гл. буха, у которых имеются админ права
11 Волшебник
 
27.03.24
18:54
(10) Заберите у них админские права, а то они вам базу испортят