Имя: Пароль:
1C
1С v8
СКД. Отбор по выбранному сотруднику или текущему пользователю
,
0 Shaman1C
 
01.12.16
11:02
Отчет на СКД. На форму выведены отборы.
Один отбор называется "Сотрудник".
Хотят чтобы если этот отбор заполнен, то в запрос передавался он и делался соответствующий отбор "В данных записях ищем по ФИО сотрудника, по которому задана настройка отчета", иначе "В данных записях ищем по ФИО сотрудника, текущего пользователя 1С, который формирует отчет".

Можно ли как-то передать этот отбор в запрос СКД или как-то по другому можно? Как это вообще делается?
1 torgm
 
01.12.16
11:06
(0) Выведи реквизит, по факту формирования заполняй отбор.
2 DCKiller
 
01.12.16
11:07
(0) Отбор параметром сделай, и в запросе по его заполненности строй условие.
3 Rio_1c
 
01.12.16
11:08
В первом случае это справочник Сотрудники, во втором ПараметрыСеанса.ТекущийПользователь, правда тут нужно сопоставить текущего пользователя и справочник Сотрудники
4 Guk
 
01.12.16
11:08
(0) в процедуре ПриКомпоновкеРезультата анализируй отбор и заполняй его чем надо...
5 Креатив
 
01.12.16
11:09
(0)Посмотри видео Гилёва по СКД или другую матчасть. А если по теме, то сказать, чтобы не выёживались и выбирали сотрудника всегда.
6 torgm
 
01.12.16
11:10
(0) и тему как бы по правильному бы называть.
7 Shaman1C
 
01.12.16
11:39
(2) как связать тогда параметр с полем запроса по которому будет отбор?
8 SergTheGreat
 
01.12.16
11:41
(0) В СКД сделай отбор (недоступный пользователю). В отчете создай реквизит типа "Сотрудник" и именно для него добавь элемент на форму. В модуле объекта создай обработку события ПриКомпоновкеРезультата, в ней анализируй реквизит отчета и заполняй отбор СКД.
И учти замечание (3) - пользователю может соответствовать несколько сотрудников.
9 Guk
 
01.12.16
11:42
(7) а в чем проблема проанализировать соответствующее поле отбора и если оно не заполнено, заполнить его сотрудником с ФИО текущего пользователя?...
10 Shaman1C
 
01.12.16
11:56
Хотелось бы сделать без обработок на форме и программного кода...
11 aleks_default
 
01.12.16
11:58
(9)Проблема в том чтобы определить заполнен он или не заполнен. Что вообще означает "заполнен"? Его вручную заполнили? или он подтянулся из последних сохраненных пользовательских настроек?
В какой момент определять "заполненность" поля?
В общем тупая формулировка задачи.
12 aleks_default
 
01.12.16
12:00
Я бы сделал булевый параметр "Отбор по текущему сотруднику включен/выключен"
13 SergTheGreat
 
01.12.16
12:23
(10) Вы что же и есть за меня будете? ©

Сделай обязательный параметр типа "Сотрудник". В запросе создай временную таблицу с одноименным полем и везде ставь условие по вхождению в эту таблицу. А заполняй эту таблицу в зависимости от параметра. Если он заполнен, то добавляй его значение во временную таблицу. Если нет, то ищи сотрудников, соответствующих текущему пользователю и уже их пихай в эту таблицу.

Гемор, зато без программного кода.