Имя: Пароль:
1C
1С v8
RLS на регистр накопления
0 OnCheck
 
28.08.12
13:56
Вешаю на регистр накопления такой RLS:

ВЫБРАТЬ
   Период,
   ФизЛицо
ИЗ
РегистрНакопления.НДФЛРасчетыСБюджетом КАК ТекущаяТаблица
   ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ
       СоставГруппы.Ссылка КАК ГруппаПользователей
   ИЗ
       Справочник.ГруппыПользователей.ПользователиГруппы КАК СоставГруппы
   ГДЕ
       СоставГруппы.Пользователь = &ТекущийПользователь) КАК ГруппыПользователей
   ПО (ИСТИНА)
   ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Организации КАК ОбособленныеПодразделения
   ПО ОбособленныеПодразделения.ГоловнаяОрганизация = ТекущаяТаблица.Организация
   И НЕ ОбособленныеПодразделения.ГоловнаяОрганизация = ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка)
   ИЛИ ОбособленныеПодразделения.Ссылка = ТекущаяТаблица.Организация
ГДЕ (НЕ 1 В
                   (ВЫБРАТЬ ПЕРВЫЕ 1
                       1 КАК ПолеОтбора
                   ИЗ
                       РегистрСведений.НазначениеВидовОбъектовДоступа КАК НазначениеВидовОбъектовДоступа
                   ГДЕ
                       НазначениеВидовОбъектовДоступа.ГруппаПользователей = ГруппыПользователей.ГруппаПользователей
                       И ВЫБОР
                           КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.ФизическиеЛица)
                               ТОГДА ВЫБОР
                                       КОГДА 1 В
                                               (ВЫБРАТЬ ПЕРВЫЕ 1
                                                   1
                                               ИЗ
                                                   (ВЫБРАТЬ
                                                       1 КАК ПолеОтбора
                                                   ) КАК Оптмизация ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиПравДоступаПользователей КАК НастройкиПравДоступаПользователей
                                                       ПО
                                                           НастройкиПравДоступаПользователей.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.ФизическиеЛица)
                                                           И (НастройкиПравДоступаПользователей.Пользователь = НазначениеВидовОбъектовДоступа.ГруппаПользователей
                                                               ИЛИ НастройкиПравДоступаПользователей.Пользователь = ЗНАЧЕНИЕ(Справочник.ГруппыПользователей.ВсеПользователи))
                                               ГДЕ
                                                   ВЫБОР
                                                       КОГДА НастройкиПравДоступаПользователей.ОбъектДоступа В
                                                       (
                                                       ВЫБРАТЬ ПЕРВЫЕ 1
                                                       
                                                           ГруппыДоступа.ГруппаДоступаФизическогоЛица
                                                       
                                                       ИЗ
                                                           РегистрСведений.ГруппыДоступаФизическихЛиц КАК ГруппыДоступа
                                                       ГДЕ
                                                           ГруппыДоступа.Период <= ТекущаяТаблица.Период
                                                           И ГруппыДоступа.ФизическоеЛицо = ТекущаяТаблица.ФизЛицо
                                                       УПОРЯДОЧИТЬ ПО
                                                           ГруппыДоступа.Период Убыв
                                                       )
                                                       ТОГДА ИСТИНА
                                                       ИНАЧЕ ЛОЖЬ
                                                   
                                                   КОНЕЦ
                                               )
                                           ТОГДА ИСТИНА
                                       ИНАЧЕ ЛОЖЬ
                                   КОНЕЦ
                           ИНАЧЕ ИСТИНА
                       КОНЕЦ = ЛОЖЬ))



Переписан на язык запросов.
Ругает, говорит
Ошибка в ограничении доступа к данным.
объект: 'РегистрНакопления.НДФЛРасчетыСБюджетом', поле: 'Период'; право: 'Чтение'
{(87, 62)}: Поле не найдено "ТекущаяТаблица.Период"
ГруппыДоступа.Период <= ТекущаяТаблица.Период<<?>>
по причине:
{(87, 62)}: Поле не найдено "ТекущаяТаблица.Период"
ГруппыДоступа.Период <= ТекущаяТаблица.Период<<?>>
1 vde69
 
28.08.12
13:59
в рельсе нельзя использовать виртуальные таблицы
2 OnCheck
 
28.08.12
14:00
(1) а я и не использую, разве РегистрНакопления.НДФЛРасчетыСБюджетом это ВТ?
3 OnCheck
 
28.08.12
14:05
этот же самый RLS на РегистрСведений успешно работает.
4 PR
 
28.08.12
14:09
(2) В регистрах накопления нельзя использовать не измерения в ограничении доступа.
А иначе как тебе ВТ считать, на лету что ли?
5 OnCheck
 
28.08.12
14:13
(4) У регистров сведений тоже ВТ есть, и ни че - считаются и поле период доступно в RLS, в смысле оно же тоже там не измерение.
6 PR
 
28.08.12
14:16
(5) У РС ВТ расчитывается на лету, а не хранится. Бегом марш изучать матчасть :))
7 OnCheck
 
28.08.12
14:19
(6) спасибо, не знал, матчасть по мне плачет :-)
а может есть предложение как тогда завязать RLS на период записи?
может прикрутить измерение, и при записи в это измерение записывать Период?
8 PR
 
28.08.12
14:20
(7) Никак. Это дебилизм.
9 OnCheck
 
28.08.12
14:20
+(7) хотя, нет не прокатит, закрывать остатки нормально не получится.
10 PR
 
28.08.12
14:21
+(8) Если это не регистр оборотов ессно. Тогда можно что хочешь.
(9) Именно.
11 OnCheck
 
28.08.12
14:21
(8) ну что ж, все равно спасибо огромное! :-)
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший