|
Отбор по текущему пользователю Волшебник, Климов Сергей, Chameleon1980, nick86, Garikk, JanK, Somebody, phabeZ, Philix, arsik, Fish, kubik_live, unenu, Timon1405, Михаил_, deskut, Анатолий2023, Мультук, kir-g, Злопчинский, BSV, ass1c, Eiffil123, KuznecovvIvan, Fedor-1971, spiller26, vicof, 2S, Daniilvb, корум, del123, RVN, zenik, DiMel_77, nysyssimara, ndrv, Ёпрст, Михаил Козлов, ivanov-i-i, pavlika, Homer, Neo58, DeeK, Niveus, who respawn, Demeteri, denk32, yurikmellon2, youalex, boev82, , АгентБезопаснойНацио, ДенисСмирнов, vyaz, Толич, Vstur, maxab72, Web00001, skafandr, evgeniy_n, lubitelxml, JohnGilbert, AAA, StanyaGeya, ads55, p-soft, evorle145, shuhard, Garykom
| ☑ | ||
|---|---|---|---|---|
|
0
deskut
20.02.26
✎
10:20
|
Имеется форма (управляемая) с динамическим списком. Один из реквизитов списка - Автор (тип - СправочникСсылка.Авторы). Также есть параметр сеанса ТекущийПользователь.
Надо сделать отбор: Автор = &ТекущийПользователь, чтобы пользователь видел только строки, которые имеют к нему отношение. По ряду причин ограничивать на уровне прав доступа я не могу (а было бы легко - "ГДЕ Автор.Наименование = &ТекущийПользователь"), поэтому надо делать именно отбор. Итак, открываю настройки списка, прописываю условие: ГДЕ ... .Автор.Наименование = &ТекущийПользователь На выходе - пустые записи. Что не так? Пробовал разные варианты - и в запросе это прописывать, и в обычных настройках списка в отборе (т.е. без пометки "Произвольный запрос"). |
|||
|
1
Волшебник
20.02.26
✎
10:21
|
слева строка, справа ссылка
|
|||
|
2
deskut
20.02.26
✎
10:21
|
"На выходе - пустые записи" - я имел ввиду, что ничего не выводится в списке.
|
|||
|
3
deskut
20.02.26
✎
10:22
|
(1) Понимаю. Только вот как это устранить?..
|
|||
|
4
deskut
20.02.26
✎
10:31
|
(1) Наоборот ведь. Слева ссылка, справа строка.
|
|||
|
5
Мультук
гуру
20.02.26
✎
10:33
|
(0)
== Цитирую Надо сделать отбор: Автор = &ТекущийПользователь Но отбор делаем совсем другой Автор.Наименование = &ТекущийПользователь Где логика ? >> справа строка Всё зависит от того, что вы суете в &ТекущийПользователь |
|||
|
6
deskut
20.02.26
✎
10:33
|
(5) Первое - визуально. Второе - уже в коде. Большой разницы не вижу, все равно не работает.
|
|||
|
7
unenu
20.02.26
✎
10:40
|
20 лет назад привычна "кормить тролля" имела практический смысл.
сейчас обязанность "кормить бота" разрушает эстетическое восприятие мира. что тут можно советовать? |
|||
|
8
deskut
20.02.26
✎
10:41
|
(5) &ТекущийПользователь - строка.
|
|||
|
9
Fish
гуру
20.02.26
✎
10:44
|
(8) Покажи, как задаёшь параметр.
|
|||
|
10
deskut
20.02.26
✎
10:46
|
(9) Модуль сеанса:
Процедура УстановкаПараметровСеанса(ИменаПараметровСеанса) Если НЕ ИменаПараметровСеанса = Неопределено Тогда ПараметрыСеанса.ТекущийПользователь = ПользователиИнформационнойБазы.ТекущийПользователь().Имя; КонецЕсли; КонецПроцедуры |
|||
|
11
Somebody
20.02.26
✎
10:47
|
(8) криво это, сказали же. ссылку надо передавать
|
|||
|
12
Мультук
гуру
20.02.26
✎
11:02
|
(10)
Всё два вопроса 1) Это типовая конфа ? 2) Код типовой или это вы улучшили ? (9) -> (10) Хехе. :-) |
|||
|
13
deskut
20.02.26
✎
11:05
|
(12) Конфигурация самописная. Всё с нуля.
|
|||
|
14
RVN
20.02.26
✎
12:25
|
(10) Эт Вы прям с козырей зашли.
А тип параметра сеанса у Вас какой? |
|||
|
15
deskut
20.02.26
✎
12:32
|
(14) Строка(100)
|
|||
|
16
RVN
20.02.26
✎
12:40
|
Посмотрите в отладчике:
а точно ли эти 2 ваши строки равны? |
|||
|
17
deskut
20.02.26
✎
13:40
|
Попытаюсь поподробнее объяснить. Хожу где-то возле решения, но что-то не получается.
Открываю форму, в столбце её реквизитов кликаю на реквизит "Список", в окне свойств возле "Настройка списка" нажимаю "Открыть". Появляется такое окно: https://file.printskrin.ru/2026/02/20/imageff3ff9db5de6e6c6.png Ставим условие отбора - "Равно". Левое значение: Автор.Наименование - это Строка. Правое значение: ТекущийПользователь. Но как его вписать? Это параметр сеанса. |
|||
|
18
deskut
20.02.26
✎
13:43
|
Думаю, есть вкладка Параметры - его надо наверно туда вписать. А вот как его туда получить?
|
|||
|
19
2S
20.02.26
✎
13:47
|
(0) Если я верно понял, то Вам нужно что-то типа этого?
&НаСервере Процедура расшПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка) Если <Условие> Тогда ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Список,"Автор",<значение>,ВидСравненияКомпоновкиДанных.Равно,,Истина); Иначе ОбщегоНазначенияКлиентСервер.УдалитьЭлементыГруппыОтбораДинамическогоСписка(Список, "Автор"); КонецЕсли; КонецПроцедуры |
|||
|
20
deskut
20.02.26
✎
13:51
|
Да, ну только без условия, а всегда. Хотелось бы это прямо в те настройки отбора забить.
Я правильно понимаю план действий? 1. Создать параметр ТекущийПользователь на соответствующей вкладке. 2. Кодом при открытии формы присваивать значение параметру (но как?). 3. А уже параметр этот подставляется в условие сравнения в настройках отбора списка. |
|||
|
21
deskut
20.02.26
✎
13:55
|
Прописал условие отбора:
Автор.Наименование Равно ПараметрыДанных.ТекущийПользователь. Параметр этот, соответственно, добавил на вкладке параметров. А как бы туда передавать параметр сеанса? Как-то кодом при открытии формы? |
|||
|
22
2S
20.02.26
✎
13:57
|
(20) Ты бот?
/stop нфхуй ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Список,"Автор",<значение>,ВидСравненияКомпоновкиДанных.Равно,,Истина); где <значение> - твой параметр сеанса. Но ты, походу, не понимаешь разницу между ссылкой и строкой, как выше коллеги писали. (21) "Автор.Наименование Равно ПараметрыДанных.ТекущийПользователь." за такое бить ногами. Работайте со ссылками. |
|||
|
23
Chameleon1980
20.02.26
✎
13:56
|
(20) сиди я сам открою
|
|||
|
24
Мультук
гуру
20.02.26
✎
14:08
|
(21)
Имхо. Вам нужны курсы по программированию в 1С И (Или) изучение хоть какой-нибудь типовой конфигурации. Вы усиленно плаваете в терминах. |
|||
|
25
deskut
20.02.26
✎
14:09
|
(22) Да не бот я.
Этот метод не прокатывает, так как нет БСП. Ну пусть будет не ТекущийПользователь, а ФамилияТекущегоПользователя. |
|||
|
26
2S
20.02.26
✎
14:14
|
(25) Ну тогда в самом ДС определяйте условие или при открытии переопределяйте запрос ДС с условием.
Если упорно сравниваете со строками, то хотя бы обрамите в СокрЛП() |
|||
|
27
Злопчинский
20.02.26
✎
16:03
|
(10) Мудачное решение.
ТекущийПользователь().Имя запросто может быть два разных пользователя с одинаковым Имя или ФамиляТекущегоПользователя |
|||
|
28
Злопчинский
20.02.26
✎
16:03
|
(26) ну и Врег неплохо б добавить
|
|||
|
29
Волшебник
20.02.26
✎
16:07
|
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// текущие задания текущего пользователя
о = СписокТекущие.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
о.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
о.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Исполнитель");
о.ПравоеЗначение = ПараметрыСеанса.ТекущийПользователь;
... |
|||
|
30
Волшебник
20.02.26
✎
18:04
|
нельзя всё запрограммировать мышкой, надо уметь писать строчки в конфигураторе
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |