Имя: Пароль:
1C
1С v8
Сложности с решением задачи использования РЛС
0 brato4karik
 
15.03.13
15:57
Добрый день всем формучанам. Есть задача ограничить доступ к данным на уровне записей.

Для примера приведу регистр накопления который нужно "фильтровать"

Имеет измерение Сотрудник и Период. В ресурсах храниться сумма(доход который заработал конкретный сотрудник)

Поскольку необходимо отображать данные не только по сотруднику но и по группе(например руководитель подразделения - необходимо показать доходы подчиненных).

Поскольку сотрудники могут быть перемещены из одного подразделения в др(могут менять руководителя) то каждый руководитель должен видеть доходы сотрудника только в том периоде когда работник подчинялся ему.

Поскольку в регистре нет измерения(подразделение или руководитель), какой либо аналитики говорившей "для кого данный сотрудник принес доход в текущую дату" необходимо получать периоды подчинения сотрудника руководителю/подразделению

вот собственно и вопрос, можно ли в параметры сеанса записать таблицу значений(или фиксированный массив из 3 колонок) а потом в шаблонах РЛС
каким нибудь образом использовать такую таблицу в конструкции ЛЕВОЕ СОЕДИНЕНИЕ.????
1 shuhard
 
15.03.13
16:03
(0) что-то мешает использовать Рг сведений
2 brato4karik
 
15.03.13
16:05
ммм подробней? не понял обращения
3 ОчкарикСлава
 
15.03.13
16:05
А добавить "Подразделение" в регистр накопления если?
4 MSII
 
15.03.13
16:07
(0) Структура подчиненности сотрудников по периодам где-то же хранится, вот с этой таблицей и соединяй.
5 brato4karik
 
15.03.13
16:08
Да вариант технически возможный, придется перезаписать 72 580 000 записей(довольно много), предыдущая команда разработчиков довольно много допустила просчетов при закладке структуры. Поэтому сейчас не все удается перестроить.
6 brato4karik
 
15.03.13
16:10
(4) да как вариант довольно грамозкий запрос

вот такой, он сейчас получает показатели перед началом работы системы.

но как в шаблон РЛС его вставить грамотно я пока сообразить не могу


ВЫБРАТЬ
   ЯЦФОСотрудникаСрезПоследних.Сотрудник,
   ЯЦФОСотрудникаСрезПоследних.ЦФО,
   ЯЦФОСотрудникаСрезПоследних.Период,
   ЯЦФОСотрудникаСрезПоследних.ПричинаИзмененияСостояния
ПОМЕСТИТЬ СрезСотрудникЦФО
ИЗ
   РегистрСведений.ЯЦФОСотрудника КАК ЯЦФОСотрудникаСрезПоследних
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   &Сотрудник КАК Пользователь,
   ЯЦФО.Ссылка КАК ЦФО
ПОМЕСТИТЬ ЦФОПозователя
ИЗ
   Справочник.ЯЦФО КАК ЯЦФО
ГДЕ
   ЯЦФО.Ссылка В ИЕРАРХИИ
           (ВЫБРАТЬ
               СрезСотрудникЦФО.ЦФО
           ИЗ
               СрезСотрудникЦФО КАК СрезСотрудникЦФО
           ГДЕ
               СрезСотрудникЦФО.Сотрудник = &Сотрудник)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   аа.ЦФО,
   аа.Сотрудник,
   ЕСТЬNULL(МИНИМУМ(аа1.Период), ДАТАВРЕМЯ(3999, 12, 31)) КАК КонецПривязки,
   аа.Период КАК НачалоПривязки,
   аа.ПричинаИзмененияСостояния
ПОМЕСТИТЬ ПериодыПодчинения
ИЗ
   СрезСотрудникЦФО КАК аа
       ЛЕВОЕ СОЕДИНЕНИЕ СрезСотрудникЦФО КАК аа1
       ПО аа.Сотрудник = аа1.Сотрудник
           И аа.Период < аа1.Период
ГДЕ
   аа.ПричинаИзмененияСостояния <> &ПричинаИзмененияСостояния

СГРУППИРОВАТЬ ПО
   аа.ЦФО,
   аа.Период,
   аа.Сотрудник,
   аа.ПричинаИзмененияСостояния
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ЦФОПозователя.Пользователь,
   ЦФОПозователя.ЦФО,
   ПериодыПодчинения.Сотрудник,
   ПериодыПодчинения.КонецПривязки,
   ПериодыПодчинения.НачалоПривязки
ПОМЕСТИТЬ ДоКлиентов
ИЗ
   ЦФОПозователя КАК ЦФОПозователя
       ЛЕВОЕ СОЕДИНЕНИЕ ПериодыПодчинения КАК ПериодыПодчинения
       ПО ЦФОПозователя.ЦФО = ПериодыПодчинения.ЦФО
ГДЕ
   ВЫБОР
           КОГДА &КоличествоПодчиненных > 1
               ТОГДА 1 = 1
           ИНАЧЕ ПериодыПодчинения.Сотрудник = &Сотрудник
       КОНЕЦ
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ДоКлиентов.Пользователь,
   ДоКлиентов.ЦФО,
   ДоКлиентов.Сотрудник,
   ДоКлиентов.КонецПривязки,
   ДоКлиентов.НачалоПривязки,
   ЯКлиентСейлз.Клиент
ПОМЕСТИТЬ ДоДоговора
ИЗ
   ДоКлиентов КАК ДоКлиентов
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЯКлиентСейлз КАК ЯКлиентСейлз
       ПО ДоКлиентов.Сотрудник = ЯКлиентСейлз.Сейлз
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ДоДоговора.Пользователь,
   ДоДоговора.ЦФО,
   ДоДоговора.Сотрудник,
   ДоДоговора.КонецПривязки,
   ДоДоговора.НачалоПривязки,
   ДоДоговора.Клиент,
   ЯКлиентДоговор.Договор
ИЗ
   ДоДоговора КАК ДоДоговора
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЯКлиентДоговор КАК ЯКлиентДоговор
       ПО ДоДоговора.Клиент = ЯКлиентДоговор.Клиент
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший