Имя: Пароль:
1C
 
запрос сразу с несколькими табличным частям в справочнике
0 Niel_84
 
16.06.26
23:25
Доброго времени суток.

Подскажите, пожалуйста, как выбрать тот элемент справочника, где ни в одном табличной части нет задаваемого параметра?

Делаю вот так:

ВЫБРАТЬ
    Справочник1.Ссылка
ИЗ
    Справочник.Справочник1 КАК Справочник1
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Справочник1.Партнеры КАК СпрПартнеры
        ПО Справочник1.Ссылка = СпрПартнеры.Ссылка
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Справочник1.Товары КАК СпрТовары
        ПО Справочник1.Ссылка = СпрТовары.Ссылка
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Справочник1.Склады КАК СпрСклады
        ПО Справочник1.Ссылка = СпрСклады.Ссылка
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Справочник1.Каналы КАК СпрКаналы
        ПО Справочник1.Ссылка = СпрКаналы.Ссылка
ГДЕ
    Справочник1.ДатаНачала <= &ДатаДок
    И Справочник1.ДатаОкончания >= &ДатаДок
    И СпрПартнеры.Партнер <> &Партнер
    И СпрТовары.Номенклатура <> &СписокНоменклатуры
    И СпрСклады.Склад <> &Склад
    И СпрКаналы.КаналПродаж <> &Канал

вообще ничего не выходит, а должно((

при чем СписокНоменклатуры - это массив товаров
1 timurhv
 
16.06.26
23:33
Точно так?

Справочник1.ДатаНачала <= &ДатаДок
    И Справочник1.ДатаОкончания >= &ДатаДок
2 timurhv
 
16.06.26
23:36
А блин,
И НЕ СпрТовары.Номенклатура В (&СписокНоменклатуры)
3 Niel_84
 
16.06.26
23:38
(1) дата док должна быть в промежутке

так тоже не выходит ничего
Справочник1.ДатаНачала < &ДатаДок
    И Справочник1.ДатаОкончания > &ДатаДок
4 timurhv
 
16.06.26
23:39
Но если это тестовое, там другой запрос дб. Я хз что требуется в итоге и какие данные вносятся.
5 Niel_84
 
16.06.26
23:42
(4) нужна ссылка справочника для дальнейшей работы, где задаваемые параметры не встречаются ни в одной табличной части
6 Niel_84
 
16.06.26
23:43
(2) спасибо изменено, но вышли не все ссылки
7 H A D G E H O G s
 
16.06.26
23:45
Нейросетку послали искать ответы на тупые вопросы?
8 timurhv
 
16.06.26
23:47
(5) в вашем запросе выведутся даже если встречается.
Например, партнеры в тч может быть
Строка 1 = Партнер1
Строка 2 = Партнер2
Строка 3 = Партнер3

Вы накладываете отбор по Партнер1 и ссылка все-равно выведется из-за строки 2 и 3, притом 2 раза.
9 timurhv
 
16.06.26
23:48
(7) это скорее всего тестовое)
10 Niel_84
 
16.06.26
23:51
(8) а как надо тогда?
11 H A D G E H O G s
 
16.06.26
23:52
(9)
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Справочник1.Партнеры КАК СпрПартнеры
        ПО Справочник1.Ссылка = СпрПартнеры.Ссылка

даст NULL в таблице СпрПартнеры, потому что Справочник1.Ссылка - это точно не ссылка на Партнера.

а потом И СпрПартнеры.Партнер <> &Партнер даст ЛОЖЬ, как сравнение с NULL

Там жижица
12 Niel_84
 
16.06.26
23:52
(7) лучше помогите пожалуйста...
13 H A D G E H O G s
 
16.06.26
23:54
(12) Расскажите о себе. Как вы нашли этот форум, как пришли в 1С, зачем вы тут?
14 Niel_84
 
16.06.26
23:58
(11) мне надо проверить сразу во всех ТЧ. как это сделать?
15 Niel_84
 
16.06.26
23:59
(13) если знаете как надо, помогите мне, пожалуйста...
16 H A D G E H O G s
 
17.06.26
00:01
(15) 3 минуты
17 H A D G E H O G s
 
17.06.26
00:09
Держи Аптечку, сорян, что не уложился в 3 минуты, искал нужное.

Человек - это веревка, натянутая между Зверем и Сверхчеловеком. Веревка над Бездной. Опасный путь. Опасно идти вперед, опасно оглядываться назад. Опасно останавливаться и сомневаться. Величие человека в том - что он - мост, а не тупик, что он постоянно ищет и развивается. Я восхищаюсь теми, кто не знает, как жить, ибо они перешли Бездну.

Помог, чем мог. Не подведи.
18 timurhv
 
17.06.26
00:52
(15) выберите вложенным запросом все ссылки, где встречаются в ТЧ по отборам, а потом
ВЫБРАТЬ
    Справочник1.Ссылка
ИЗ
    Справочник.Справочник1 КАК Справочник1
ГДЕ
    Справочник1.ДатаНачала <= &ДатаДок
    И Справочник1.ДатаОкончания >= &ДатаДок
    И НЕ Справочник1.Ссылка В (
ВЫБРАТЬ
    ВыборкаТЧ.Ссылка
ИЗ
    Справочник.Справочник1.Партнеры КАК ВыборкаТЧ
ГДЕ
    ВыборкаТЧ.Ссылка.ДатаНачала <= &ДатаДок И ВыборкаТЧ.Ссылка.ДатаОкончания >= &ДатаДок
    И ВыборкаТЧ.Партнер = &Партнер

ОБЪЕДИНИТЬ

ВЫБРАТЬ
    ВыборкаТЧ.Ссылка
ИЗ
    Справочник.Справочник1.Товары КАК ВыборкаТЧ
ГДЕ
    ВыборкаТЧ.Ссылка.ДатаНачала <= &ДатаДок И ВыборкаТЧ.Ссылка.ДатаОкончания >= &ДатаДок
    И ВыборкаТЧ.Номенклатура В (&СписокНоменклатуры)
....
)
19 timurhv
 
17.06.26
00:56
Но в прод такое (18) не вносить, если это тестовое - будет тема для обсуждения оптимизации вложенного запроса.
2 + 2 = 3.9999999999999999999999999999999...