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

Хранилище

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

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

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

Оратор
*****
Группа: Пользователи
Сообщений: 409
Спасибо сказали: 2 раз
Рейтинг: 2

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

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

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


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

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

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

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

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


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

Оратор
*****
Группа: Пользователи
Сообщений: 287
Из: Хмельницкий
Спасибо сказали: 70 раз
Рейтинг: 66

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


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

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

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

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

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

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

Оратор
*****
Группа: Пользователи
Сообщений: 409
Спасибо сказали: 2 раз
Рейтинг: 2

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


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

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

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

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

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

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

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

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

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


Signature
Услуги 1С программиста

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

Оратор
*****
Группа: Пользователи
Сообщений: 409
Спасибо сказали: 2 раз
Рейтинг: 2

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

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

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

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

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


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

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


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

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


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

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

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


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

 

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

Курсы валют: доллар США к гривне Курсы валют: евро к гривне Курсы валют: российский рубль к гривне