Имя: Пароль:
1C
1С v8
Запрос: Все элементы списка есть в ТЧ объекта
0 ParinovS
 
23.04.12
16:18
Доброго времени суток.
Предисловие: Есть справочник, у него есть ТЧ.
Задача: Необходимо выбрать элементы справочника, у которых есть в ТЧ все элементы из списка, размеры которого могут быть разными (1, 2, ... n элементов). Пример.
Элемент1
ТЧ Элемента1: 1, 2, 3, 4, 5, 6.
Элемент2
ТЧ Элемента2: 1, 2, 3, 4, 5:
Список: 2, 5, 6.
Вывести необходимо только Элемент1, т.к. в нем есть все элементы из списка.
Как организовать запрос?
1 ParinovS
 
23.04.12
16:24
up
2 Domanoff26
 
23.04.12
16:28
список В тчЭлемента?
3 ParinovS
 
23.04.12
16:29
да
4 Baximilian
 
23.04.12
16:32
ВЫБРАТЬ
   ТвойСправочник.Ссылка
ИЗ
   Справочник.ТвойСправочник КАК ТвойСправочник
ГДЕ
   &Список В (ТвойСправочник.ТабличнаяЧасть.РеквизитТЧ)

Попробуй, хотя я не могу гарантировать, что оно не ругнется на параметр если туда передать список или массив.
5 Reset
 
23.04.12
16:32
Выбрать где количество различных из табличной части, соединенной внутренним соединением на временную таблицу со списком, равно количеству элементов в списке.
6 Baximilian
 
23.04.12
16:33
(5) это только количество даст, по твоей логике (2,5,4) = (1,2,3) потому что количество =.
7 Domanoff26
 
23.04.12
16:34
(3) тут я имелл виду (4)
8 Reset
 
23.04.12
16:34
(2)(4)(6) бред
9 Domanoff26
 
23.04.12
16:34
(6) там же соединения. в твоем случае строк будет только одна
10 ParinovS
 
23.04.12
17:01
Baximilian, запрос по ошибке валится...
11 Ненавижу 1С
 
гуру
23.04.12
17:05
выбрать
 ТЧ.ссылка
из справочник.Твой.ТЧ как ТЧ
сгруппировать по ТЧ.ссылка
имеющие количество(различные (выбор когда ТЧ.Реквизит в (&ТвойСписок) тогда ТЧ.Реквизит конец))=&РазмерСписка
12 Reset
 
23.04.12
17:08
(0) пример к (5)

ТаблицаОбязательных=Новый ТаблицаЗначений;
ТаблицаОбязательных.Колонки.Добавить("НекоеЗначение",Новый ОписаниеТипов("ТипНекоегоЗначения"));
// Заполнить ТаблицаОбязательных обязательными значениями
Запрос=Новый Запрос("ВЫБРАТЬ
                   |    ВходнойСписок.НекоеЗначение
                   |ПОМЕСТИТЬ Отбор
                   |ИЗ
                   |    &ВходнойСписок КАК ВходнойСписок
                   |;
                   |ВЫБРАТЬ
                   |    ТабличнаяЧасть.Ссылка
                   |ИЗ
                   |    Справочник.ИмяСправочника.ИмяТабличнойЧасти КАК ТабличнаяЧасть
                   |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Отбор КАК Отбор
                   |        ПО ТабличнаяЧасть.НекоеЗначение = Отбор.НекоеЗначение
                   |
                   |СГРУППИРОВАТЬ ПО
                   |    ТабличнаяЧасть.Ссылка
                   |
                   |ИМЕЮЩИЕ
                   |    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ТабличнаяЧасть.НекоеЗначение) = &Количество");
Запрос.УстановитьПараметр("ВходнойСписок",ТаблицаОбязательных);
Запрос.УстановитьПараметр("Количество",ТаблицаОбязательных.Количество());
//
// На выходе - ссылки на элементы справочника, удовлетворяющие условию в (0)
13 ParinovS
 
23.04.12
17:21
Спасибо:)
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.