Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Фильтр формы списка документов          
Constantus Подменю пользователя
сообщение 20.04.17, 14:04
Сообщение #1

Ветеран
*******
Группа: Пользователи
Сообщений: 962
Спасибо сказали: 8 раз
Рейтинг: 0

Приветствую, форумчане!
"Управление торговлей 10.3", (Моби-С 5.5). "ABBYY Ukraine", 2003-2014 (2.3.20.1)

Для ограничения просмотра некоторых документов, например, Реализация, на код при открытии повесил следующее:

    ЭтаФорма.Отбор.Склад.Использование=Истина;
    ЭлементыФормы.Список.Значение.Отбор.Склад.ВидСравнения = ВидСравнения.ВСписке;
    ЭлементыФормы.Список.НастройкаОтбора.Склад.Доступность = Ложь;
............................
    ЭтаФорма.Отбор.Склад.Значение = СписокДокументов;


Где "СписокДокументов", т.е. доступных для просмотра складов...

Код работает исправно. Список открывается с нужными фильтрами, и изменить список доступных складов в форме Отбора и сортировки - невозможно...

Но вот столкнулся с такой ситуацией...
Предположим имеется 10 складов, из них только 3-м складам имеется допуск... В результате я вижу только те Реализации, где присутствуют те 3-и элитных склада.

Но вот теперь пользователю хочется отфильтровать Реализации по одному из этих складов, а доступ к редактированию списка доступных складов закрыт.
Если снять доступность, т.е. сделать её редактируемой, то легким движением руки список превращается в желтую прессу доступной по всем складам.

Можно ли сделать так, чтобы на форме "Отбор и сортировка" поле значения складов осталось редактируемым, несмотря на то, что доступность = ложь?


Bernet Подменю пользователя
сообщение 20.04.17, 14:36
Сообщение #2

Ветеран
Иконка группы
Группа: Местный
Сообщений: 858
Из: Місто щасливих людей
Спасибо сказали: 317 раз
Рейтинг: 0

Constantus @ Сегодня, 15:04 * ,
Это извращения, используйте RLS - Record Level Security или ограничение прав на уровне записи


Signature
Дописываю конфигурации на платформе 8.х.
- Управление торговым предприятием для Украины
- Управление производственным предприятием для Украины
- Управление небольшой фирмой для Украины
- Бухгалтерия для Украины;
- Общепит для Украины
- Ресторан (Рарус)
- Розница

Flexy Подменю пользователя
сообщение 20.04.17, 14:37
Сообщение #3

Танцор с Бубном
Иконка группы
Группа: Местный
Сообщений: 1121
Из: Днепра
Спасибо сказали: 230 раз
Рейтинг: 0

Омг...Противоречивая логика...
Цитата(Constantus @ 20.04.17, 14:04) *
Для ограничения просмотра некоторых документов, например, Реализация
...
Код работает исправно. Список открывается с нужными фильтрами, и изменить список доступных складов в форме Отбора и сортировки - невозможно...
....
Можно ли сделать так, чтобы на форме "Отбор и сортировка" поле значения складов осталось редактируемым, несмотря на то, что доступность = ложь?

Конечно можно. Но это костыль... Юзайте RLS или рисуйте свою, произвольную форму и пишите в ней свою логику.
Завтра юзер захочет так же фильтронуть / сортонуть список перемещений или заказов или еще чего...Что будете все формы перепиливать?

Constantus Подменю пользователя
сообщение 20.04.17, 15:09
Сообщение #4

Ветеран
*******
Группа: Пользователи
Сообщений: 962
Спасибо сказали: 8 раз
Рейтинг: 0

Flexy @ Сегодня, 17:37 * ,


РЛС это возможно и хорошо, но я пробовал РЛС... у меня доступны ограничения только по Организации и Контрагентам... Подскажите как делать ограничения на уровне складов?
Тем более мне предстоит ограничивать еще и по Кассам...

Где и как в "Группу пользователей" в раздел "Вид объекта доступа" добавить Склад и Касса?

Блин "Вид объекта доступа" оказывается Перечисления... там только 2-а значения стоят

Flexy Подменю пользователя
сообщение 20.04.17, 15:40
Сообщение #5

Танцор с Бубном
Иконка группы
Группа: Местный
Сообщений: 1121
Из: Днепра
Спасибо сказали: 230 раз
Рейтинг: 0

Constantus @ Сегодня, 15:09 * ,
Варианты:
1. Делать по аналогии, как реализовано с Контрагентами и Организациями.
2. Сделать свой регистр сведений (Пользователь, ОбъектДоступа, Значение) + свой запрос RLS к этому регистру в нужных таблицах на нужные поля.

Vofka Подменю пользователя
сообщение 20.04.17, 16:02
Сообщение #6

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6

Попробуйте в форме выбора справочника Склады обработать событие Выбор списка и там проверять есть ли доступ у пользователя к выбираемому складу. Если нету, то СтандартнаяОбработка = Ложь и "хорошего вам настроения". Если это работает, то можно сделать отбор доступным, т.к. пользователь все равно ничего лишнего туда выбрать не сможет.

Constantus Подменю пользователя
сообщение 21.04.17, 10:07
Сообщение #7

Ветеран
*******
Группа: Пользователи
Сообщений: 962
Спасибо сказали: 8 раз
Рейтинг: 0

Vofka @ Вчера, 19:02 * ,

Честно сказать не понял как это реализовать. Сделал по-другому. Разместил на форме списка ПолеВыбора, куда в качестве источника прописал все доступные склады + "все доступные"... Вот код

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

    КонецЕсли;    
    
    КонецЕсли;
    

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


К сожалению, в код вписался излишек, это еще один запрос...

    ЭтаФорма.Отбор.Склад.Использование=Истина;
    ЭлементыФормы.Список.Значение.Отбор.Склад.ВидСравнения = ВидСравнения.ВСписке;
    ЭлементыФормы.Список.НастройкаОтбора.Склад.Доступность = Ложь;
    Скл = Справочники.Склады.НайтиПоНаименованию(ПолеВыбора1);


По задумке "Скл" это ссылка на склад для подстановки в:

ЭтаФорма.Отбор.Склад.Значение = Скл;


Но выдает ошибку о несоответствии типов...

Как из Полявыбора с произвольным типом можно получить нужный тип, чтобы активировать фильтр по складу:
ЭтаФорма.Отбор.Склад.Значение = Скл;

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 28.03.24, 12:14
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!