Отбор и сортировка ОФ

1. Krotov_Valery 27.09.22 11:59 Сейчас в теме
Добрый день коллеги!

Конфигурация УПП - актуальная. Вот таким образом Фильтруем программно данные в форме списка документа для менеджеров - чтобы они видели только свои склады:

Процедура ПриОткрытии()
	ЗаполнитьСклады();
	УстановитьВидимость();
КонецПроцедуры

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

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


Поведение формы недостаточное. Необходимо дать менеджерам возможность фильтрации в пределах назначенных им складов, но необходимое поле отбора становится неактивным для пользовательского использования. Какие есть варианты решить задачу?
Прикрепленные файлы:
По теме из базы знаний
Найденные решения
2. RustamZz 27.09.22 12:19 Сейчас в теме
(1) В УПП есть работающий РЛС по складам. Зачем что-то свое выдумывать? Проблема в этом коде
Элементыформы.ДокументСписок.НастройкаОтбора.Склад.Доступность = Ложь;
Прикрепленные файлы:
Krotov_Valery; +1 Ответить
3. ZergKRSK 129 27.09.22 12:20 Сейчас в теме
4. Stref75 27.09.22 12:28 Сейчас в теме
если не хотите (не можете) включить РЛС то
вариант - на форме делаете список значений и заполняете его необходимым перечнем складов. включаете отображение пометки.
при открытии, устанавливаете отбор по всем складам из списка (или только по какому-то одному). вещаете событие на список Выбор. И в этом событии программно устанавливаете отбор по помеченным складам.

Процедура СтатусыВыбор(Элемент, ЭлементСписка)
	ЭлементСписка.Пометка = НЕ ЭлементСписка.Пометка;
	УстановитьОтбор();
КонецПроцедуры

Процедура УстановитьОтбор()

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

	Элементыформы.ДокументСписок.НастройкаОтбора.Склад.Доступность    =    Ложь;  // это уже из вашего кода добавлено
КонецПроцедуры


Показать
Прикрепленные файлы:
Krotov_Valery; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. RustamZz 27.09.22 12:19 Сейчас в теме
(1) В УПП есть работающий РЛС по складам. Зачем что-то свое выдумывать? Проблема в этом коде
Элементыформы.ДокументСписок.НастройкаОтбора.Склад.Доступность = Ложь;
Прикрепленные файлы:
Krotov_Valery; +1 Ответить
6. Krotov_Valery 17.10.22 09:29 Сейчас в теме
(2) Добрый день. Я правильно понимаю что несмотря на то что в УПП - встроенный РЛС по Подразделениям организации якобы присутствует - по факту он нерабочий? И так и сяк верчу - настроить в лоб работоспособность не могу, при этом по организации и складам работает идеально.
Прикрепленные файлы:
7. RustamZz 17.10.22 11:08 Сейчас в теме
(6) Работает. Вы точно по БУ/НУ хотите ограничить?
8. Krotov_Valery 17.10.22 12:10 Сейчас в теме
(7)
Вы точно по БУ/НУ хотите ограничить?

А здесь можно подробнее. Что значит по БУ/НУ? Задача стоит ограничить форму списка документа "ВводИндивидуальныхГрафиковРаботыОрганизации" только подразделением текущего пользователя. Создал тестового пользователя с двумя ролями - типовая - "Пользователь" и созданная под него атомарная роль "X" с правами только на просмотр данного документа и связанного с ним РС "СводныеИндивидуальныеГрафики". Пользователь включен только в отдельно созданную для него группу "Y" справочника "ГруппыПользователей" с ограничением на просмотр по его текущему подразделению. Результат отрицательный, в форме списка видны документы по всем подразделениям.
9. RustamZz 17.10.22 12:18 Сейчас в теме
(8) Я думал, вы про типовые ограничения спрашиваете. Как у вас сделано - не могу прокомментировать.
3. ZergKRSK 129 27.09.22 12:20 Сейчас в теме
4. Stref75 27.09.22 12:28 Сейчас в теме
если не хотите (не можете) включить РЛС то
вариант - на форме делаете список значений и заполняете его необходимым перечнем складов. включаете отображение пометки.
при открытии, устанавливаете отбор по всем складам из списка (или только по какому-то одному). вещаете событие на список Выбор. И в этом событии программно устанавливаете отбор по помеченным складам.

Процедура СтатусыВыбор(Элемент, ЭлементСписка)
	ЭлементСписка.Пометка = НЕ ЭлементСписка.Пометка;
	УстановитьОтбор();
КонецПроцедуры

Процедура УстановитьОтбор()

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

	Элементыформы.ДокументСписок.НастройкаОтбора.Склад.Доступность    =    Ложь;  // это уже из вашего кода добавлено
КонецПроцедуры


Показать
Прикрепленные файлы:
Krotov_Valery; +1 Ответить
5. Krotov_Valery 27.09.22 13:21 Сейчас в теме
Всем спасибо. Ушел разбираться с RLS.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот