Имя: Пароль:
1C
1С v8
Помогите плиз с запросом
0 Avalone2010
 
20.01.15
17:10
Здравствуйте. Помогите пожалуйста с запросом.Есть таблицы:
Номенклатура(реквизиты: ГруппаДоступа)
ГруппыДоступа
Пользователи
ДоступПоГруппам(реквизиты: Пользователь. Табличные части: Группы доступаб реквизит ТЧ ГруппаДоступа).

Для номенклатуры задаются группы доступа. Например
Сандали детские - ГД:Обувь
Шпатлевка - ГД:Стройматериалы

В справочнике ГруппыДоступа создается элемент: У Петрова есть доступ к ГД Обувь, у Иванова к Стройматериалам, а для Сидорова ничего не задаем, значит у него доступ есть ко всему.
Подскажите с запросом который бы выводил:
Иванов-стройматериалы
Петров - Обувь
Сидоров - Стройматериалы
Сидоров - Обувь
1 vicof
 
20.01.15
17:12
Соединение таблиц плюс проверка на пустое значение в соединении
2 Avalone2010
 
20.01.15
17:15
(1) если не трудно можно поподробнее?
3 vicof
 
20.01.15
17:19
Полное соединение по группе доступа, выбор когда группазаполнена тогда пользователи.группа = группы.ссылка иначе истина конец.
4 Avalone2010
 
20.01.15
17:26
(3) Не понимаю, вы уж извините. Подскажите что здесь исправит что бы заработало(запрос привел как пример что бы понимать о каких таблицах идет речь):
ВЫБРАТЬ
    ГруппыДоступа.Ссылка
ИЗ
    Справочник.НастройкаRLS.ГруппыДоступаНоменклатуры КАК НастройкаRLSГруппыДоступаНоменклатуры
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ГруппыДоступа КАК ГруппыДоступа
        ПО (НастройкаRLSГруппыДоступаНоменклатуры.ГруппаДоступаНоменклатуры = ГруппыДоступа.Ссылка)
            И (НастройкаRLSГруппыДоступаНоменклатуры.Ссылка.Пользователь = &Пользователь
5 vicof
 
20.01.15
17:28
И где тут "Есть таблицы:
Номенклатура(реквизиты: ГруппаДоступа)
ГруппыДоступа
Пользователи
ДоступПоГруппам(реквизиты: Пользователь. Табличные части: Группы доступаб реквизит ТЧ ГруппаДоступа). "?
6 Avalone2010
 
20.01.15
17:33
ну примерно название давал :) Извините, в след раз давать как есть. Решил с помощью временных таблиц:
ВЫБРАТЬ
    НастройкаRLSГруппыДоступаНоменклатуры.ГруппаДоступаНоменклатуры
ИЗ
    Справочник.НастройкаRLS.ГруппыДоступаНоменклатуры КАК НастройкаRLSГруппыДоступаНоменклатуры
ГДЕ
    НастройкаRLSГруппыДоступаНоменклатуры.Ссылка.Пользователь = &Пользователь

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    ГруппыДоступа.Ссылка
ИЗ
    Справочник.ГруппыДоступа КАК ГруппыДоступа
ГДЕ
    НЕ 1 В
                (ВЫБРАТЬ
                    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ НаличиеограничениеПрав.Ссылка) КАК Ссылка
                ИЗ
                    (ВЫБРАТЬ ПЕРВЫЕ 1
                        НастройкаRLS.Ссылка КАК Ссылка
                    ИЗ
                        Справочник.НастройкаRLS КАК НастройкаRLS
                    ГДЕ
                        НастройкаRLS.Пользователь = &Пользователь) КАК НаличиеограничениеПрав)
7 Avalone2010
 
20.01.15
17:37
(6) Да, этот запрос выбирает доступные для пользователя группы доступа, по этим группам дальше фильтруется номенклатура.
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn