Отбор в форме списка регистра сведений #775375


#0 by TIGER1c
Всем привет! Имеется регистрСведений "Задания" с полями: Пользователь, Задание, дата и т.д. Необходимо чтобы при открытии формы производился отбор по пользователю БД и выводились задания, соответствующие только данному пользователю. Форма управляемая. Как прописать отбор в данном случае?
#1 by Радим1987
Динамический список?
#2 by TIGER1c
а поточнее
#3 by Mankubus
При открытии формы добавляй отбор в дин.список
#4 by TIGER1c
А как передать туда параметр, который будет содержать пользователя. Или я что-то не верно понимаю?
#5 by TIGER1c
апп
#6 by aleks_default
читай  про УстановитьЗначениеПараметра
#7 by Cyberhawk
ОткрытьФорму
#8 by TIGER1c
какое отношение имеет к дин списку?
#9 by TIGER1c
тоже не понял куда это
#10 by aleks_default
ну нет, так нет
#11 by TIGER1c
Есть еще знающие?
#12 by Nuobu
Я знающий! УФ или ОФ?
#13 by TIGER1c
УФ
#14 by Euguln
А подсмотреть в конфигурации не судьба?
#15 by Nuobu
Зайди в форму и глянь, там динамический список используется?
#16 by hhhh
всё же уже сказали. Волшебный пендель еще какой-то нужен?
#17 by Cyberhawk
"Необходимо чтобы при открытии формы производился отбор" в
#18 by TIGER1c
Используется
#19 by TIGER1c
Ну вот открываю я настройку списка, вкладка отбор, вижу доступные поля, выбираю "сотрудник", надо указать чему оно равно. Ну и в моем распоряжении только реквизиты моего регистра. куда это? В модуль формы, в процедуру при открытии?
#20 by TIGER1c
не понимаю зачем. Форма открывается вызовом пользователя. Зачем её открывать программно?
#21 by Nuobu
В процедуру "ПриОткрытии".
#22 by TIGER1c
Сделал в произвольном запросе, но вот проблема, как настроить админу, который должен видеть всё и всех
#23 by TIGER1c
Ведь параметр то жестко прописан в форме, условие в модуле тут не поможет
#24 by Nuobu
Два параметра!
#25 by Cyberhawk
Что "зачем"?
#26 by Fedor-1971
вот тебе на выбор: 1. Динамическое формирование текста запроса в ПрисозданииНаСервере, примерно такое: Список.ТекстЗапроса=Список.ТекстЗапроса+?(РольДоступна(Метаданные.Роли.Администратор, "", "Остальным напиши: Где Пользователь=&текПользватель"); Только тебе видно какой у тебя запрос в ДС. 2. Как вариант: Где Пользователь=&текПользватель ИЛИ &Админ - для сложных запросов в ДС не годится, могут подтормаживать 3. Отборы - настраиваешь отбор ДС делаешь его не активным, в ПриСозданииНаСервере определяешь роль вошедшего, или как-то идентифицируешь админов и включаешь отбор не админам.
#27 by Aleksandr N
ОткрытьФорму В параметрах открытия указываешь параметр "Отбор" - тип "Структура" И не надо никаких великов изобретать.
#28 by Aleksandr N
#29 by Fedor-1971
тут ТС выбирать, извернуться в открываемой форме - универсальное решение или передать параметры - придётся извращаться в месте открытия оной, например, в системном меню.
#30 by Fedor-1971
а как же админы?
#31 by Aleksandr N
В смысле?
#32 by Fedor-1971
твой отбор сработает и для админов, а они ничего не создавали, но должны видеть все записи
#33 by Aleksandr N
В открываемой форме при использовании ничего писать при этом не надо.
#34 by Aleksandr N
ОК: Если ЭтоНеАдмин Тогда
#35 by Fedor-1971
да, а как будешь передавать параметры открытия формы из  системного интерфейса
#36 by Fedor-1971
35+ про это то-же не надо забывать, ТС не озвучил как он открывает форму своего списка
#37 by Aleksandr N
Не понятно.
#38 by Fedor-1971
в козырное решение для формы выбора - можем рулить как хотим, а для основного списка не всегда пригодно. На мой личный взгляд, проще всё замкнуть в рамках самой формы, а не в рамках её открытия, если что-то изменяется в условиях отбора, не придётся шариться по всей конфигурации выясняя где мы вызывали открытие, что-бы установить новые условия работы механизма отбора
#39 by TIGER1c
Спасибо! Пробую делать по совету 1. Для админа все ок. А когда обычный пользователь, то пробелма с параметром
#40 by Fedor-1971
строки местами поменяй. Сначала изменяем текст запроса, потом устанавливаем параметр. Особенность ДС - при установке параметра проверяется его наличие в запросе
#41 by TIGER1c
Спасибо большое! Помог неучу =) Всё получилось. Приложу на всякий случай свой быдлоКод
#42 by Fedor-1971
Вот тебе направление совершенствования: 1.сделай ПараметрСеанса.ТекущийПользователь, 2.заполни его ссылкой на справочник Пользователи при старте 1С 3.используй оный в запросах для сравнение ссылок, а не строк наименований
#43 by TIGER1c
да, сравнивать строки как-то не кошерно
#44 by Fedor-1971
42+ Посмотри в сторону оптимизации кода: Функции дёргай по возможности один раз, чай время тратится
#45 by aleks_default
Лучше сделай в тексте запроса такое условие ГДЕ ВЫБОР КОГДА &ЭтоАдмин ТОГДА ИСТИНА ИНАЧЕ РегистрСведенийЗаданияИПоручения.Сотрудник.Наименование = &ТекПользователь КОНЕЦ И передавай два параметра: ТекПользователь и ЭтоАдмин = РольДоступна(Метаданные.Роли.ПолныеПрава). А то при изменении текста запроса всякие пользовательские  отборы слетают.
#46 by Renat11111
Ты крут.
#47 by Fedor-1971
Текст запроса меняется в ПриСозданииНаСервере там ещё нет отборов, они наложатся позже. Может и ошибаюсь.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С