Добрый день коллеги!
Конфигурация УПП - актуальная. Вот таким образом Фильтруем программно данные в форме списка документа для менеджеров - чтобы они видели только свои склады:
Поведение формы недостаточное. Необходимо дать менеджерам возможность фильтрации в пределах назначенных им складов, но необходимое поле отбора становится неактивным для пользовательского использования. Какие есть варианты решить задачу?
Конфигурация УПП - актуальная. Вот таким образом Фильтруем программно данные в форме списка документа для менеджеров - чтобы они видели только свои склады:
Процедура ПриОткрытии()
ЗаполнитьСклады();
УстановитьВидимость();
КонецПроцедуры
Процедура УстановитьВидимость()
Если РольДоступна("ПолныеПрава") Тогда
Возврат;
КонецЕсли;
Если РольДоступна("ТриЗ_МатОтчетыПЗ") Тогда
ОтборСклад = Отбор.Найти("Склад");
ОтборСклад.ВидСравнения = ВидСравнения.ВСписке;
ОтборСклад.Значение = СписокСкладов;
ОтборСклад.Использование = Истина;
Элементыформы.ДокументСписок.НастройкаОтбора.Склад.Доступность = Ложь;
КонецЕсли;
Если РольДоступна("ТриЗ_СтМедСестра") Тогда
ОтборСтатусДокумента = Отбор.Найти("СтатусДокумента");
ОтборСтатусДокумента.ВидСравнения = ВидСравнения.Равно;
ОтборСтатусДокумента.Значение = Перечисления.ТриЗ_СтатусыДокумента.НаУтвержденииСтМедСестры;
ОтборСтатусДокумента.Использование = Истина;
КонецЕсли;
КонецПроцедуры
Процедура ЗаполнитьСклады()
СписокСкладов = Новый СписокЗначений;
нЗапрос = Новый Запрос;
нЗапрос.Текст = "ВЫБРАТЬ
| ТриЗ_ОтветственныеПоПЗ.Склад
|ИЗ
| РегистрСведений.ТриЗ_ОтветственныеПоПЗ КАК ТриЗ_ОтветственныеПоПЗ
|ГДЕ
| ТриЗ_ОтветственныеПоПЗ.Пользователь = &Ответственный
|
|СГРУППИРОВАТЬ ПО
| ТриЗ_ОтветственныеПоПЗ.Склад";
нЗапрос.УстановитьПараметр("Ответственный", ОбщегоНазначения.ТекущийПользователь());
СписокСкладов.ЗагрузитьЗначения(нЗапрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Склад"));
КонецПроцедуры
ПоказатьПоведение формы недостаточное. Необходимо дать менеджерам возможность фильтрации в пределах назначенных им складов, но необходимое поле отбора становится неактивным для пользовательского использования. Какие есть варианты решить задачу?
Прикрепленные файлы:
![](/upload/forum/upload/339/3397efedfb60d6a95c5ea1017a734c9b.png)
По теме из базы знаний
- Ведомость ОС с ОКОФ для Бюджетной бухгалтерии 7.7
- Быстрый отбор в форме списка (выбора) справочника
- Опись инвентарных карточек ОС с отбором по КВД, ЦМО, Подразделению, Группе ОС и сортировкой
- Условное оформление таблицы управляемой формы
- Отбор и сортировка данных в запросе с использованием приоритетов
Найденные решения
если не хотите (не можете) включить РЛС то
вариант - на форме делаете список значений и заполняете его необходимым перечнем складов. включаете отображение пометки.
при открытии, устанавливаете отбор по всем складам из списка (или только по какому-то одному). вещаете событие на список Выбор. И в этом событии программно устанавливаете отбор по помеченным складам.
вариант - на форме делаете список значений и заполняете его необходимым перечнем складов. включаете отображение пометки.
при открытии, устанавливаете отбор по всем складам из списка (или только по какому-то одному). вещаете событие на список Выбор. И в этом событии программно устанавливаете отбор по помеченным складам.
Процедура СтатусыВыбор(Элемент, ЭлементСписка)
ЭлементСписка.Пометка = НЕ ЭлементСписка.Пометка;
УстановитьОтбор();
КонецПроцедуры
Процедура УстановитьОтбор()
СтатусыДляОтбора = Новый СписокЗначений;
Для каждого Эл из Статусы Цикл
Если Эл.Пометка Тогда
СтатусыДляОтбора.Добавить(Эл.Значение);
КонецЕсли;
КонецЦикла;
Отбор.Статус.Использование = СтатусыДляОтбора.Количество()<>0;
Отбор.Статус.ВидСравнения = ВидСравнения.ВСписке;
Отбор.Статус.Значение = СтатусыДляОтбора;
Элементыформы.ДокументСписок.НастройкаОтбора.Склад.Доступность = Ложь; // это уже из вашего кода добавлено
КонецПроцедуры
ПоказатьПрикрепленные файлы:
![](/upload/forum/upload/a07/a077cb172ae56e01ee8b9d2f24e9a221.png)
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2) Добрый день. Я правильно понимаю что несмотря на то что в УПП - встроенный РЛС по Подразделениям организации якобы присутствует - по факту он нерабочий? И так и сяк верчу - настроить в лоб работоспособность не могу, при этом по организации и складам работает идеально.
Прикрепленные файлы:
![](/upload/forum/upload/3a7/3a7d8005b41401571d7b840acd94416a.png)
(7)
А здесь можно подробнее. Что значит по БУ/НУ? Задача стоит ограничить форму списка документа "ВводИндивидуальныхГрафиковРаботыОрганизации" только подразделением текущего пользователя. Создал тестового пользователя с двумя ролями - типовая - "Пользователь" и созданная под него атомарная роль "X" с правами только на просмотр данного документа и связанного с ним РС "СводныеИндивидуальныеГрафики". Пользователь включен только в отдельно созданную для него группу "Y" справочника "ГруппыПользователей" с ограничением на просмотр по его текущему подразделению. Результат отрицательный, в форме списка видны документы по всем подразделениям.
Вы точно по БУ/НУ хотите ограничить?
А здесь можно подробнее. Что значит по БУ/НУ? Задача стоит ограничить форму списка документа "ВводИндивидуальныхГрафиковРаботыОрганизации" только подразделением текущего пользователя. Создал тестового пользователя с двумя ролями - типовая - "Пользователь" и созданная под него атомарная роль "X" с правами только на просмотр данного документа и связанного с ним РС "СводныеИндивидуальныеГрафики". Пользователь включен только в отдельно созданную для него группу "Y" справочника "ГруппыПользователей" с ограничением на просмотр по его текущему подразделению. Результат отрицательный, в форме списка видны документы по всем подразделениям.
если не хотите (не можете) включить РЛС то
вариант - на форме делаете список значений и заполняете его необходимым перечнем складов. включаете отображение пометки.
при открытии, устанавливаете отбор по всем складам из списка (или только по какому-то одному). вещаете событие на список Выбор. И в этом событии программно устанавливаете отбор по помеченным складам.
вариант - на форме делаете список значений и заполняете его необходимым перечнем складов. включаете отображение пометки.
при открытии, устанавливаете отбор по всем складам из списка (или только по какому-то одному). вещаете событие на список Выбор. И в этом событии программно устанавливаете отбор по помеченным складам.
Процедура СтатусыВыбор(Элемент, ЭлементСписка)
ЭлементСписка.Пометка = НЕ ЭлементСписка.Пометка;
УстановитьОтбор();
КонецПроцедуры
Процедура УстановитьОтбор()
СтатусыДляОтбора = Новый СписокЗначений;
Для каждого Эл из Статусы Цикл
Если Эл.Пометка Тогда
СтатусыДляОтбора.Добавить(Эл.Значение);
КонецЕсли;
КонецЦикла;
Отбор.Статус.Использование = СтатусыДляОтбора.Количество()<>0;
Отбор.Статус.ВидСравнения = ВидСравнения.ВСписке;
Отбор.Статус.Значение = СтатусыДляОтбора;
Элементыформы.ДокументСписок.НастройкаОтбора.Склад.Доступность = Ложь; // это уже из вашего кода добавлено
КонецПроцедуры
ПоказатьПрикрепленные файлы:
![](/upload/forum/upload/a07/a077cb172ae56e01ee8b9d2f24e9a221.png)
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот