Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Проверка на вхождение значения в таблицу

Проверка на вхождение значения в таблицу
Я
   MAPATNK2
 
19.02.20 - 10:21
УПП 1.3
Прошу прощения за название, не знал как правильно написать. Суть в чем. Есть справочник пользователей.
Внутри есть таблица "Доступные склады". Хочу в подписке на событие проверять входит дли склад документа в список доступных складов для пользователя.
Но в чем проблема, у пользователя в таблице "Доступные склады" могут быть как и сами склады, так и папки. А ещё с логикой у меня проблемы. Написал простой запрос.
    Запрос = новый запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    ПользователиДоступныеСклады.Склад
    |ИЗ
    |    Справочник.Пользователи.ДоступныеСклады КАК ПользователиДоступныеСклады
    |ГДЕ
    |    ПользователиДоступныеСклады.Склад В ИЕРАРХИИ(&СкладДокумента)
    |    И ПользователиДоступныеСклады.Ссылка = &ПользовСсылка";
    Запрос.УстановитьПараметр("СкладДокумента",Источник.Склад);
    Запрос.УстановитьПараметр("ПользовСсылка",ПользовательСсылка);
    РезультатЗапроса = Запрос.Выполнить().Выгрузить();

Но суть в том, что мне нужно проверять не вхождение складов пользователя в склад документа, а наоборот. Можете помочь с запросом. Допереть не могу.
 
 
   MAPATNK2
 
1 - 19.02.20 - 10:25
Я хотел выгрузить во временную таблицу - таблицу справочника пользователи "Доступные склады", далее проверять склад документа на вхождение... но понял, что столкнулся с такой же проблемой. XD. Т.е. я понимаю, как мне проверить входят ли элементы таблицы "Доступные склады" в "Склад документа", а наоборот - Не понимаю....
   dezss
 
2 - 19.02.20 - 10:26
Так в чем проблема?
&СкладДокумента В ИЕРАРХИИ(ПользователиДоступныеСклады.Склад)
   MAPATNK2
 
3 - 19.02.20 - 10:28
(2) Не понял? Так разве можно? XD. Ну если можно, то проблема решена. Вы пример случайно не могли бы привести?
   vicof
 
4 - 19.02.20 - 10:28
тебе ужепривели
   MAPATNK2
 
5 - 19.02.20 - 10:29
(2) (4) У меня выдает ошибку
   vicof
 
6 - 19.02.20 - 10:31
(5) исправь
   MAPATNK2
 
7 - 19.02.20 - 10:31
(6) Неверные параметры "В ИЕРАРХИИ"
&СкладДокумента В ИЕРАРХИИ(ПользователиДоступныеСклады.Склад)
   pechkin
 
8 - 19.02.20 - 10:35
сначала нужно развернуть все папки. есть разные способы.
ннапример выгрузить все занчения в массив и сдлать запрос по справочнику В ИЕРАРХИИ массив
   MAPATNK2
 
9 - 19.02.20 - 10:38
(8) Т.е. способ выше не рабочий? Только раскрытием?
   pechkin
 
10 - 19.02.20 - 10:39
ну сам же видишь что не рабочий
   MAPATNK2
 
11 - 19.02.20 - 10:40
(10) Понял, спасибо, буду пробовать так.
   MAPATNK2
 
12 - 19.02.20 - 11:29
(10) Спасибо за совет. Сделал так. работает отлично.

ТекушийПользователь = ПользователиИнформационнойБазы.ТекущийПользователь();
    ПользовательСсылка = Справочники.Пользователи.НайтиПоКоду(СокрЛП(ТекушийПользователь));
    Таб = новый Массив;
    Таб = ПользовательСсылка.ДоступныеСклады.Выгрузить(,"Склад");
    Запрос = Новый Запрос;
    Запрос.Текст = 
    "ВЫБРАТЬ
    |    Склады.Ссылка КАК Склад
    |ИЗ
    |    Справочник.Склады КАК Склады
    |ГДЕ
    |    Склады.Ссылка В ИЕРАРХИИ(&ТаблицаСкладов)
    |    И Склады.ЭтоГруппа = ЛОЖЬ
    |    И Склады.Ссылка = &СкладДокумента";
    Запрос.УстановитьПараметр("ТаблицаСкладов",Таб);
    Запрос.УстановитьПараметр("СкладДокумента",Источник.Склад);
    РезультатЗапроса = Запрос.Выполнить().Выгрузить();
   NeoVision
 
13 - 19.02.20 - 12:18
(0)
а так не проще?:
Запрос.Текст =
        "ВЫБРАТЬ
        |    &Склад
        |ИЗ
        |    Справочник.Пользователи КАК Пользователи
        |ГДЕ
        |    Пользователи.ДоступныеСклады.Склад = &Склад
        |    И Пользователи.Ссылка = &Пользователь";
   dezss
 
14 - 19.02.20 - 12:18
Прикольно. Не знал, что так нельзя. Сам не пробовал.
(12) Тогда лучше заменить 
Склады.Ссылка В ИЕРАРХИИ(&ТаблицаСкладов)
На что-то вроде
Склады.Ссылка В ИЕРАРХИИ(ВЫБРАТЬ
        ПользователиДоступныеСклады.Склад
    ИЗ
        Справочник.Пользователи.ДоступныеСклады КАК ПользователиДоступныеСклады
    ГДЕ
        ПользователиДоступныеСклады.Ссылка = &ПользовСсылка)
Что за один запрос к базе все отрабатывало. А то это ж подписка. Лучше б оптимизировать.
   dezss
 
15 - 19.02.20 - 12:18
(13) В (0) написано, что там могут быть группы.
   pechkin
 
16 - 19.02.20 - 12:20
(14) ветку не читал, срсзу писал?
   dezss
 
17 - 19.02.20 - 12:36
(16) С чего так решил?

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.