Отбор в списке управляемых форм

1. MamakovTA 12.04.13 10:30 Сейчас в теме
Необходимо, для определенного пользователя, показывать список документов, начиная с определенной даты и сделать неактивной кнопку отбора на форме. Подскажите, как можно реализовать.
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
15. doom2good 141 12.04.13 11:27 Сейчас в теме
(10) WhiteDragon,
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора(Список.Отбор, "Дата", ВашаДата, ВидСравненияКомпоновкиДанных.БольшеИлиРавно,, Истина, РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный);
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. doom2good 141 12.04.13 10:36 Сейчас в теме
1. Воспользоваться датой запрета
2. создать роль, при открытии формы проверять наличие (отсутствие) роли у пользователя и в зависимости от этого устанавливать отбор и изменять доступность кнопки отборов
3. MamakovTA 12.04.13 10:46 Сейчас в теме
(2) это я знаю, меня интересует техническое исполнение, начиная с отбора
4. doom2good 141 12.04.13 10:55 Сейчас в теме
упр приложение? типовой документ?
5. MamakovTA 12.04.13 10:55 Сейчас в теме
6. MamakovTA 12.04.13 10:59 Сейчас в теме
+(4) документ реализации ТиУ
7. MamakovTA 12.04.13 11:00 Сейчас в теме
++(4) общая форма "список документов продажи"
8. doom2good 141 12.04.13 11:01 Сейчас в теме
элементарно. вот нужный метод:
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора(ОбластьПоискаДобавления,
								знач ИмяПоля,
								знач ПравоеЗначение = Неопределено,
								знач ВидСравнения = Неопределено,
								знач Представление = Неопределено,
								знач Использование = Неопределено,
								знач РежимОтображения = Неопределено) Экспорт

Пример использования:
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора
(ДинамическийСписок.Отбор, "КассаККМ", КассаККМ, ВидСравненияКомпоновкиДанных.Равно,, ЗначениеЗаполнено(КассаККМ));


При создании на сервере вставить кусок с установкой
10. MamakovTA 12.04.13 11:07 Сейчас в теме
(8) а как правильно написать, если мне нужно показывать документы, начиная с даты запрета? (дату получил)
15. doom2good 141 12.04.13 11:27 Сейчас в теме
(10) WhiteDragon,
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора(Список.Отбор, "Дата", ВашаДата, ВидСравненияКомпоновкиДанных.БольшеИлиРавно,, Истина, РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный);
9. doom2good 141 12.04.13 11:05 Сейчас в теме
А чтоб пользователь не мог менять, можно использовать последний параметр:
РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
11. _HakerAlex_ 12.04.13 11:11 Сейчас в теме
Может проще сделать RLS на роль данного пользователя, в параметр сеанса добавить дату запрета, и проблема будет решена, он просто физически не будет видеть документы которые не входят в условия.
12. MamakovTA 12.04.13 11:20 Сейчас в теме
(11) база клиента очень большая, а RLS еще замедлит
13. MamakovTA 12.04.13 11:21 Сейчас в теме
(11) да и нубоват я для этого....
14. _HakerAlex_ 12.04.13 11:27 Сейчас в теме
Замедлит не значительно, так как это будет распространяться на одного человека. Так же можно решить проблему через ОткрытьФорму() и передавать правильные параметры формы....Или для этого человека создать отдельную форму и вызывать именно ее методом ОткрытьФорму().... В общем вариантов много...
16. doom2good 141 12.04.13 11:30 Сейчас в теме
(14) AlexPotemkin123, жаль, с РЛС я не знаком(
а отдельную форму делать - это менять все места вызова... проще в этой проверку добавить
17. _HakerAlex_ 12.04.13 11:32 Сейчас в теме
Но RLS как по мне будет самым красивым способом, ибо не надо вмешиваться в код.
1. Скопировал роль
2. Открываешь роль, находишь этот документ
3. Первое в списке "Чтение"
4. Снизу ограничение доступа
5. Нажимаешь "добавить"
6. Слева <прочие поля> не трогаешь, справа пишешь ГДЕ Дата >= &ДатаЗапрета
7. Создаешь параметр сеанса "ДатаЗапрета", с типом дата
8. При запуске его инициализируешь
9. Ставишь роль пользователю, остальные на доступ к этому документу убираешь
10. Ура он ничего не видит......
18. doom2good 141 12.04.13 11:40 Сейчас в теме
(17) AlexPotemkin123, Спасибо, буду знать.
Только есть одно но: тогда придётся трогать все типовые роли, назначенные пользователю, где есть этот объект. Что не есть хорошо.
22. MamakovTA 12.04.13 11:53 Сейчас в теме
(18) как-то не работает этот метод, может я где накосячил....

Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
ДатаЗапрета = ПолучитьДатуЗапрета();
Если ЭтаФорма.Менеджер = "Менеджер"	Тогда
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора(СписокРеализацииТоваровУслуг.Отбор, "Дата", ДатаЗапрета, ВидСравненияКомпоновкиДанных.БольшеИлиРавно,, Истина, РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный);
КонецЕсли;
24. doom2good 141 12.04.13 15:27 Сейчас в теме
(22) WhiteDragon,
Если ЭтаФорма.Менеджер = "Менеджер" Тогда

Странная строчка. Тут бы я лучше проверил дату запрета:
Если ЗначениеЗаполнено(ДатаЗапрета) Тогда

не работает этот метод

Может, он и не заходит на строку установки отбора, или дата запрета пустая?
25. MamakovTA 12.04.13 15:30 Сейчас в теме
(24) прошу прощения за кипиш, все нормально работает, это мой косяк :) не знаете как сделать недоступной кнопку на командной панели?
26. MamakovTA 12.04.13 15:31 Сейчас в теме
(24) дата у меня проверяется в запросе
19. MamakovTA 12.04.13 11:42 Сейчас в теме
(17) а какую роль брать, если на пользователе их много весит?
20. _HakerAlex_ 12.04.13 11:45 Сейчас в теме
Роль которая дает доступ на тип документа который в отборе должен быть.... Типовые роли не мацаем, а берем роль в которой есть данный тип документа и просто копируем. С пользователя главное снять роли где есть доступ на данный документ.
21. MamakovTA 12.04.13 11:50 Сейчас в теме
(20) спасибо большое, буду знать, пока сделаю на форме, а потом уже буду пробовать с ролями... я в 1с всего-ничего 3 месяца :)
23. Diose 12.04.13 12:07 Сейчас в теме
Оставьте свое сообщение

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