Имя: Пароль:
1C
1С v8
Условие в Запрос на отбор по нескольким парам параметров...
0 warkan
 
28.11.19
15:02
Всем добра!

Подскажите, пожалуйста,
возможно одним запросом выбрать документы, в ТЧ которых, содержатся пары параметров (к примеру, "Номенклатура"+"СерияНоменклатуры")?
Таких "пар" N - в ТЗ с колонками "Номенклатура" и "СерияНоменклатуры", к примеру.

Я додумался только до простого: N запросов на каждую пару.

Но, может быть, это возможно организовать изящнее?..


Большое спасибо!
1 Beduin
 
28.11.19
15:03
(0) Так через И условия делаешь. Или не это?
2 warkan
 
28.11.19
15:05
(1) ну да, возможно и так: в цикле формируешь параметры к Запросу, потом синтезируешь условия отбора в тексте Запроса.
Что-то вида:
(док.ТЧ.Номенклатура = Номенклатура1 и док.ТЧ.Партия = Партия1) ИЛИ
(док.ТЧ.Номенклатура = Номенклатура2 и док.ТЧ.Партия = Партия2) ИЛИ...
3 warkan
 
28.11.19
15:06
Подумал, может есть что-то вроде... В (списокПараметров),
только для ТЗ на 2 колонки...
4 SergTheGreat
 
28.11.19
15:13
(3) Конечно есть, хоть на 2, хоть на 200. Например:
(Номенклатура, СерияНоменклатуры) В
    (ВЫБРАТЬ ВремТаб.Номенклатура, ВремТаб.СерияНоменклатуры ИЗ ВремТаб)
5 warkan
 
28.11.19
15:18
(4) Величайший Серж, дорогой!!!
Можно ссылку на более развернутую информацию?
Не хватает у меня знаний, чтобы понять смысл предоставленного тобою кода...(
Подскажи, где или про что почитать?
Что это за конструкция? Вложенный запрос?
Помоги просветиться.
6 Beduin
 
28.11.19
15:36
ВЫБРАТЬ ПЕРВЫЕ 5
    ДоговорыКонтрагентов.Код КАК Код,
    ДоговорыКонтрагентов.Наименование КАК Наименование
ПОМЕСТИТЬ ВременнаяТаблица
ИЗ
    Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ДоговорыКонтрагентов.Ссылка КАК Ссылка,
    ДоговорыКонтрагентов.Код КАК Код,
    ДоговорыКонтрагентов.Наименование КАК Наименование
ИЗ
    Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
ГДЕ
    (ДоговорыКонтрагентов.Код, ДоговорыКонтрагентов.Наименование) В
            (ВЫБРАТЬ
                ВТ.Код,
                ВТ.Наименование
            ИЗ
                ВременнаяТаблица КАК ВТ)
7 Kigo_Kigo
 
28.11.19
15:38
(5) ВремТаб это ТЗ с колонками Номенклатура,СерияНоменклатуры , как ее сформировать дело вкуса
8 warkan
 
28.11.19
15:40
"Вабэни!" (С)
(6)(7) - Спасибо ОГРОМНОЕ!!!
9 warkan
 
29.11.19
08:26
Всё работает и всё хорошо.
Но, не будет ли наглостью, просить пояснить суть этой конструкции?
Этот отбор по группе полей (то, что в круглых скобках) применим только к временным таблицам (с содержимым, полученным любым способом?)?
10 warkan
 
29.11.19
08:28
или:
ГДЕ
(набор из N полей) В (временная таблица с количеством и Наименованием колонок, соответствующих отбираемому набору из N полей)?
11 catena
 
29.11.19
09:37
Можно даже так:

Выбрать ссылка из справочник.Номенклатура
где (код, наименование) в (Выбрать "000001","Первый товар")
12 НЕА123
 
29.11.19
09:54
(11)
>где (код, наименование) в (Выбрать "000001","Первый товар")

где код = "000001" И наименование = "Первый товар"


интересно, а какой из вариантов быстрее?
13 EVGA
 
29.11.19
10:20
(5) подготовься и сдай спеца по платформе и такие просты вещи перестанут быть тайной.
14 D_E_S_131
 
29.11.19
10:38
Если уж мы делаем временную таблицу, то возможно более нагляднее будет сделать внутреннее соединение этой ВТ с ТЧ по полям "Номенклатура" и "Серия номенклатуры".
15 SergTheGreat
 
02.12.19
09:38
(14) В данном примере да - результат и условия "ГДЕ", и соединения будет одинаков. Но в общем случае во ВТ могут быть не уникальные значения.
Также конструкция из (4) может быть использована в условии виртуальной таблицы.