Имя: Пароль:
1C
1С v8
Помогите с RLS
0 DmitryZzz
 
14.04.15
10:21
1C 8.2.18.109, УТ 10.3

Документ Корректировка записей регистров с ТЧ "ТаблицаРегистровНакопления", содержащий 2 реквизита - Имя (строка, переменная длина) и Представление(строка, переменная длина)

Хочу ограничить запись документа если, допустим, присутствует Строка в ТЧ "ТоварыНаСкладах".

Создал новую роль, наложил следующие ограничения на Чтение, Добавление, Изменение:

ГДЕ НЕ
(
  Ссылка В
  (
    ВЫБРАТЬ
      К.Ссылка
    ИЗ
      Документ.КорректировкаЗаписейРегистров.ТаблицаРегистровНакопления КАК К
    ГДЕ
      ПОДСТРОКА(К.Имя, 1, 64) НЕ В ("ТоварыНаСкладах")
   )
)

Но получается что если создать новый документ и добавить в ТЧ "ТаблицаРегистровНакопления" строку "ТоварыНаСкладах" то он действительно будет ругаться, однако, если записать его с любой другой строчкой, а потом добавить "ТоварыНаСкладах" то система позволит записать его, но затем при попытке перезаписать/изменить будет выскакивать ограничение доступа.

Соответственно вопрос, это вообще реально реализовать в RLS? Как только не изменял запрос, картина вся та жа... неужели, придется в обработчике передЗаписью()?

Буду благодарен за конструктивный совет, спасибо!
1 DmitryZzz
 
14.04.15
12:56
Ну что, нет специалистов? =)
2 Стальная Крыса
 
14.04.15
13:15
при создании НОВОГО док-та эта RLS работать не будет.

RLS работает с существующими записями в БД, а при создании нового их еще НЕТ!!!
3 fisher
 
14.04.15
13:15
ГДЕ НЕ 1 В
    (ВЫБРАТЬ ПЕРВЫЕ 1 1
    ИЗ Документ.КорректировкаЗаписейРегистров.ТаблицаРегистровНакопления КАК К
    ГДЕ ТекущаяТаблица.Ссылка = К.Сылка И К.Имя = "ТоварыНаСкладах")
4 Fragster
 
гуру
14.04.15
13:16
похоже на то, что при добавлении RLS срабатывает приЗаписи, а при изменении - ПередЗаписью (надо проверить)
5 DmitryZzz
 
14.04.15
15:52
(2) Проблема как раз с уже записанным документом
(3) Не работает

Пока реализовал через событие ПередЗаписью()
6 fisher
 
14.04.15
16:17
(5) А так? И как именно "не работает"?
ТекущаяТаблица ИЗ #ТекущаяТаблица КАК ТекущаяТаблица
ГДЕ НЕ 1 В
    (ВЫБРАТЬ ПЕРВЫЕ 1 1
    ИЗ Документ.КорректировкаЗаписейРегистров.ТаблицаРегистровНакопления КАК К
    ГДЕ ТекущаяТаблица.Ссылка = К.Сылка И К.Имя = "ТоварыНаСкладах")
7 DmitryZzz
 
15.04.15
10:16
(6) Так тоже.

Перечитал первый пост и понял что ошибся немного )
Должно быть так:
Хочу ограничить запись документа если, допустим, присутствует Строка в ТЧ ОТЛИЧНАЯ ОТ "ТоварыНаСкладах".
Но это решается инверитрованием, собственно, не критично.

Не работает, это значит что в уже записанный документ с разрешенным именем "ТоварыНаСкладах" в ТЧ система позволит добавить любую другую...

Ладн, думаю ветку можно закрывать, т.к. сделал через обработчик.
8 fisher
 
15.04.15
10:36
(7) Очень странно. Жалко, нет сейчас времени на эксперименты.
9 DmitryZzz
 
15.04.15
10:50
(8) Спасибо за участие! =)
Если честно, то я уже перебрал множество вариантов запросов, но все впустую.... Сейчас тоже нет свободного времени для дальнейших экспериментов на RLS, так что оставлю до лучших времен )
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн