Приветствую, форумчане!
"Управление торговлей 10.3", (Моби-С 5.5). "ABBYY Ukraine", 2003-2014 (2.3.20.1)
Для ограничения просмотра некоторых документов, например, Реализация, на код при открытии повесил следующее:
ЭтаФорма.Отбор.Склад.Использование=Истина;
ЭлементыФормы.Список.Значение.Отбор.Склад.ВидСравнения = ВидСравнения.ВСписке;
ЭлементыФормы.Список.НастройкаОтбора.Склад.Доступность = Ложь;
............................
ЭтаФорма.Отбор.Склад.Значение = СписокДокументов;
Constantus @ Сегодня, 15:04
,
Это извращения, используйте RLS - Record Level Security или ограничение прав на уровне записи
Омг...Противоречивая логика...
Flexy @ Сегодня, 17:37
,
РЛС это возможно и хорошо, но я пробовал РЛС... у меня доступны ограничения только по Организации и Контрагентам... Подскажите как делать ограничения на уровне складов?
Тем более мне предстоит ограничивать еще и по Кассам...
Где и как в "Группу пользователей" в раздел "Вид объекта доступа" добавить Склад и Касса?
Блин "Вид объекта доступа" оказывается Перечисления... там только 2-а значения стоят
Constantus @ Сегодня, 15:09
,
Варианты:
1. Делать по аналогии, как реализовано с Контрагентами и Организациями.
2. Сделать свой регистр сведений (Пользователь, ОбъектДоступа, Значение) + свой запрос RLS к этому регистру в нужных таблицах на нужные поля.
Попробуйте в форме выбора справочника Склады обработать событие Выбор списка и там проверять есть ли доступ у пользователя к выбираемому складу. Если нету, то СтандартнаяОбработка = Ложь и "хорошего вам настроения". Если это работает, то можно сделать отбор доступным, т.к. пользователь все равно ничего лишнего туда выбрать не сможет.
Vofka @ Вчера, 19:02
,
Честно сказать не понял как это реализовать. Сделал по-другому. Разместил на форме списка ПолеВыбора, куда в качестве источника прописал все доступные склады + "все доступные"... Вот код
Процедура ПолеВыбора1ПриИзменении(Элемент)
// Вставить содержимое обработчика.
Если ПолеВыбора1 = "Все доступные..." Тогда
ПриОткрытии();
Иначе
ЭтаФорма.Отбор.Склад.Использование=Истина;
ЭлементыФормы.Список.Значение.Отбор.Склад.ВидСравнения = ВидСравнения.ВСписке;
ЭлементыФормы.Список.НастройкаОтбора.Склад.Доступность = Ложь;
Скл = Справочники.Склады.НайтиПоНаименованию(ПолеВыбора1);
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Склады.Ссылка как сСклад
|ИЗ
| Справочник.Склады КАК Склады
|ГДЕ
| Склады.Ссылка = &Ссылка";
Запрос.УстановитьПараметр("Ссылка", Скл);
Если Не Запрос.Выполнить().Пустой() Тогда
Результат = Запрос.Выполнить().Выгрузить();
МассивДокументов = Результат.ВыгрузитьКолонку("сСклад");
СписокДокументов= Новый СписокЗначений;
Для Каждого Стр из МассивДокументов Цикл
СписокДокументов.Добавить(Стр);
КонецЦикла;
ЭтаФорма.Отбор.Склад.Значение = СписокДокументов;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
ЭтаФорма.Отбор.Склад.Использование=Истина;
ЭлементыФормы.Список.Значение.Отбор.Склад.ВидСравнения = ВидСравнения.ВСписке;
ЭлементыФормы.Список.НастройкаОтбора.Склад.Доступность = Ложь;
Скл = Справочники.Склады.НайтиПоНаименованию(ПолеВыбора1);
ЭтаФорма.Отбор.Склад.Значение = Скл;
ЭтаФорма.Отбор.Склад.Значение = Скл;
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua