Получить запросом документы только с определенным списком номенклатур

1. Muska 22.01.19 15:33 Сейчас в теме
Добрый день подскажите как в запросе вывести список документов содержащие определенный список номенклатур. Например если в документе есть выбранная номенклатура вместе с невыбранной то такой документ не выводится
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
16. AJlKuP 22.01.19 17:14 Сейчас в теме +0.2 $m
Лучше пойти от обратного:
1. Выбрать всю номенклатуру, кроме выбранной.
2. Выбрать заказы, где есть номенклатура, кроме выбранной.
3. Убрать их из общего списка заказов.
Примерно так:

ВЫБРАТЬ РАЗЛИЧНЫЕ СпрНоменклатура.Ссылка КАК Номенклатура
ПОМЕСТИТЬ ТаблицаНоменклатуры
ИЗ Справочник.Номенклатура КАК СпрНоменклатура
ГДЕ НЕ СпрНоменклатура.Ссылка В (&СписокНоменклатуры)
И НЕ СпрНоменклатура.ЭтоГруппа
;

////////////////////////////////////////////////////////////­­////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ ЗаказКлиентаТовары.Ссылка КАК Заказ
ПОМЕСТИТЬ ТаблицаИсключаемыхЗаказов
ИЗ Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары 
ГДЕ ЗаказКлиентаТовары .Номенклатура В (ВЫБРАТЬ ТаблицаНоменклатуры.Номенклатура ИЗ ТаблицаНоменклатуры)
;

////////////////////////////////////////////////////////////­­////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ ЗаказКлиента.Ссылка КАК Заказ
ИЗ Документ.ЗаказКлиента КАК ЗаказКлиента
ГДЕ НЕ ЗаказКлиентаТовары .Ссылка В (ВЫБРАТЬ ТаблицаИсключаемыхЗаказов.Заказ ИЗ ТаблицаИсключаемыхЗаказов)
Показать


Пункты можно объединить в один запрос с подзапросами, не принципиально.
shulgin; Muska; +2 Ответить
17. user633533_encantado 11 22.01.19 17:27 Сейчас в теме +0.3 $m
Работающий запрос:

ВЫБРАТЬ РАЗЛИЧНЫЕ
	Номенклатура.Ссылка КАК НеНужнаяНоменклатура
ПОМЕСТИТЬ ВТ_ненужная
ИЗ
	Справочник.Номенклатура КАК Номенклатура
ГДЕ
	НЕ Номенклатура.Ссылка В (&СписокНоменклатуры)

ИНДЕКСИРОВАТЬ ПО
	НеНужнаяНоменклатура
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
	Номенклатура.Ссылка КАК НужнаяНоменклатура,
	КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Номенклатура.Ссылка) КАК Количество
ПОМЕСТИТЬ ВТ_Нужная
ИЗ
	Справочник.Номенклатура КАК Номенклатура
ГДЕ
	Номенклатура.Ссылка В(&СписокНоменклатуры)

СГРУППИРОВАТЬ ПО
	Номенклатура.Ссылка

ИНДЕКСИРОВАТЬ ПО
	НужнаяНоменклатура
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
	КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Номенклатура.Ссылка) КАК Количество
ПОМЕСТИТЬ ВТ_КОличество
ИЗ
	Справочник.Номенклатура КАК Номенклатура
ГДЕ
	Номенклатура.Ссылка В(&СписокНоменклатуры)

ИНДЕКСИРОВАТЬ ПО
	Количество
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
	ЗаказКлиентаТовары.Ссылка КАК Ссылка,
	КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЗаказКлиентаТовары.Номенклатура) КАК Количество
ПОМЕСТИТЬ ВТ_НужныеЗаказы
ИЗ
	Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_Нужная КАК ВТ_Нужная
		ПО ЗаказКлиентаТовары.Номенклатура = ВТ_Нужная.НужнаяНоменклатура
ГДЕ
	НЕ ЗаказКлиентаТовары.Номенклатура В
				(ВЫБРАТЬ
					ВТ_ненужная.НеНужнаяНоменклатура КАК НеНужнаяНоменклатура
				ИЗ
					ВТ_ненужная КАК ВТ_ненужная)

СГРУППИРОВАТЬ ПО
	ЗаказКлиентаТовары.Ссылка
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТ_НужныеЗаказы.Ссылка КАК Ссылка
ИЗ
	ВТ_НужныеЗаказы КАК ВТ_НужныеЗаказы
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_КОличество КАК ВТ_КОличество
		ПО (ВТ_КОличество.Количество = ВТ_НужныеЗаказы.Количество)
Показать
1c_borsch; Muska; +2 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
11. leenooks 22.01.19 16:39 Сейчас в теме
(1) Если я правильно понял вашу задачу то могу предложить такой вариант:

ВЫБРАТЬ
	ЗаказКлиента.Ссылка
ПОМЕСТИТЬ ЗаказыСНужнойНоменклатурой
ИЗ
	Документ.ЗаказКлиента КАК ЗаказКлиента
ГДЕ
	ЗаказКлиента.Товары.Номенклатура В ИЕРАРХИИ(&Номенклатура)
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ЗаказКлиента.Ссылка
ПОМЕСТИТЬ ЗаказыСПостороннейНоменклатурой
ИЗ
	Документ.ЗаказКлиента КАК ЗаказКлиента
ГДЕ
	НЕ ЗаказКлиента.Товары.Номенклатура В ИЕРАРХИИ (&Номенклатура)
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ЗаказыСНужнойНоменклатурой.Ссылка
ИЗ
	ЗаказыСНужнойНоменклатурой КАК ЗаказыСНужнойНоменклатурой
		ЛЕВОЕ СОЕДИНЕНИЕ ЗаказыСПостороннейНоменклатурой КАК ЗаказыСПостороннейНоменклатурой
		ПО ЗаказыСНужнойНоменклатурой.Ссылка = ЗаказыСПостороннейНоменклатурой.Ссылка
ГДЕ
	ЗаказыСПостороннейНоменклатурой.Ссылка ЕСТЬ NULL
Показать
13. Muska 22.01.19 16:56 Сейчас в теме
(11)
ВЫБРАТЬ
ЗаказКлиента.Ссылка
ПОМЕСТИТЬ ЗаказыСНужнойНоменклатурой
ИЗ
Документ.ЗаказКлиента КАК ЗаказКлиента
ГДЕ
ЗаказКлиента.Товары.Номенклатура В ИЕРАРХИИ(&Номенклатура)
;

////////////////////////////////////////////////////////////­­////////////////////
ВЫБРАТЬ
ЗаказКлиента.Ссылка
ПОМЕСТИТЬ ЗаказыСПостороннейНоменклатурой
ИЗ
Документ.ЗаказКлиента КАК ЗаказКлиента
ГДЕ
НЕ ЗаказКлиента.Товары.Номенклатура В ИЕРАРХИИ (&Номенклатура)
;

////////////////////////////////////////////////////////////­­////////////////////
ВЫБРАТЬ
ЗаказыСНужнойНоменклатурой.Ссылка
ИЗ
ЗаказыСНужнойНоменклатурой КАК ЗаказыСНужнойНоменклатурой
ЛЕВОЕ СОЕДИНЕНИЕ ЗаказыСПостороннейНоменклатурой КАК ЗаказыСПостороннейНоменклатурой
ПО ЗаказыСНужнойНоменклатурой.Ссылка = ЗаказыСПостороннейНоменклатурой.Ссылка
ГДЕ
ЗаказыСПостороннейНоменклатурой.Ссылка ЕСТЬ NULL
Показать


тоже не то. Надо чтоб если в документе есть ненужная номенклатура вместе с нужной чтоб он не выводился. А во всех этих вариантах выводится документ если в табличной части есть нужная номенклатура. Например в документе 1 есть товар 1,2,4 документ 2 - 1,4, выбираю товар 1, 4 должен вывести только документ 2
21. leenooks 22.01.19 17:55 Сейчас в теме
(13)
Да, вот такой вариант попробуйте, на моих данных сработало как вы хотели:

ВЫБРАТЬ РАЗЛИЧНЫЕ
	ЗаказКлиента.Ссылка
ПОМЕСТИТЬ ЗаказыСНужнойНоменклатурой
ИЗ
	Документ.ЗаказКлиента КАК ЗаказКлиента
ГДЕ
	ЗаказКлиента.Товары.Номенклатура В ИЕРАРХИИ(&Номенклатура)
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
	ЗаказКлиентаТовары.Ссылка
ПОМЕСТИТЬ ЗаказыСПостороннейНоменклатурой
ИЗ
	Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
ГДЕ
	НЕ ЗаказКлиентаТовары.Номенклатура В ИЕРАРХИИ (&Номенклатура)
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ЗаказыСНужнойНоменклатурой.Ссылка
ИЗ
	ЗаказыСНужнойНоменклатурой КАК ЗаказыСНужнойНоменклатурой
		ЛЕВОЕ СОЕДИНЕНИЕ ЗаказыСПостороннейНоменклатурой КАК ЗаказыСПостороннейНоменклатурой
		ПО ЗаказыСНужнойНоменклатурой.Ссылка = ЗаказыСПостороннейНоменклатурой.Ссылка
ГДЕ
	ЗаказыСПостороннейНоменклатурой.Ссылка ЕСТЬ NULL

Показать


Тут есть еще нюанс, что сюда попадают также заказы где только товар 1 или только 4, не знаю какие у вас условия...
23. Muska 22.01.19 18:02 Сейчас в теме
(21)Если выбран товар 1 и 4 то выводить только если в заказе есть товар 1 и 4, по отдельности не надо
2. user633533_encantado 11 22.01.19 15:37 Сейчас в теме
Выбрать документы у которых в табличной части есть нужная номенклатуры, затем выбрать те, у которых есть ненужная.
Отсеить из первой части вторую.
3. Muska 22.01.19 15:43 Сейчас в теме
(2)пример можно, а то мои запросы все равно выводят те документы в которых есть нужная номенклатура вместе с ненужной
4. user633533_encantado 11 22.01.19 15:48 Сейчас в теме
(3) Ваши запросы сначала покажите, вам совет нужен или чтобы я завас сделал ?
5. Muska 22.01.19 15:52 Сейчас в теме
(4)
ВЫБРАТЬ
	ЗаказТовары.Ссылка,
	ЗаказТовары.Номенклатура
ПОМЕСТИТЬ ВТНоменклатура
ИЗ
	Документ.ЗаказКлиента.Товары КАК ЗаказТовары
ГДЕ
	ЗаказТовары.Номенклатура В(&Номенклатура)
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВЫБОР
		КОГДА ВТНоменклатура.Номенклатура.Ссылка ЕСТЬ NULL
			ТОГДА 1
		ИНАЧЕ 0
	КОНЕЦ КАК ОтсутствующиеПоля,
	ВТНоменклатура.Ссылка
ИЗ
	ВТНоменклатура КАК ВТНоменклатура
		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента КАК Заказ
		ПО ВТНоменклатура.Ссылка = Заказ.Ссылка

СГРУППИРОВАТЬ ПО
	ВТНоменклатура.Ссылка,
	ВЫБОР
		КОГДА ВТНоменклатура.Номенклатура.Ссылка ЕСТЬ NULL
			ТОГДА 1
		ИНАЧЕ 0
	КОНЕЦ

ИМЕЮЩИЕ
	СУММА(ВЫБОР
			КОГДА ВТНоменклатура.Номенклатура.Ссылка ЕСТЬ NULL
				ТОГДА 1
			ИНАЧЕ 0
		КОНЕЦ) = 0
Показать
6. kumi2012 103 22.01.19 16:10 Сейчас в теме
А просто выборка с условием:

ГДЕ
    ЗаказТовары.Номенклатура В(&Номенклатура)
   И НЕ ЗаказТовары.Номенклатура В (ВЫБРАТЬ
		Номенклатура.Ссылка КАК НоменклатураОтбор
		ИЗ Справочник.Номенклатура КАК Номенклатура
		ГДЕ НЕ Номенклатура.Ссылка В (&Номенклатура))
7. Muska 22.01.19 16:20 Сейчас в теме
(6)
ГДЕ
ЗаказТовары.Номенклатура В(&Номенклатура)
И НЕ ЗаказТовары.Номенклатура В (ВЫБРАТЬ
Номенклатура.Ссылка КАК НоменклатураОтбор
ИЗ Справочник.Номенклатура КАК Номенклатура
ГДЕ НЕ Номенклатура.Ссылка В (&Номенклатура))


не получается
ВЫБРАТЬ
	ЗаказТовары.Ссылка
ИЗ
	Документ.ЗаказКлиента.Товары КАК ЗаказТовары
ГДЕ
	ЗаказТовары.Номенклатура В (&Номенклатура)
			И НЕ ЗаказТовары.Номенклатура В
					(ВЫБРАТЬ
						Номенклатура.Ссылка КАК НоменклатураОтбор
					ИЗ
						Справочник.Номенклатура КАК Номенклатура
					ГДЕ
						НЕ Номенклатура.Ссылка В (&Номенклатура))
Показать
8. kumi2012 103 22.01.19 16:23 Сейчас в теме
(7) А параметр &Номенклатура - список элементов (не групп)?
9. Muska 22.01.19 16:25 Сейчас в теме
10. kumi2012 103 22.01.19 16:38 Сейчас в теме
(7) Допишите - Сруппировать ПО
12. Muska 22.01.19 16:49 Сейчас в теме
14. kumi2012 103 22.01.19 16:59 Сейчас в теме
ВЫБРАТЬ
    ЗаказТоварыП.Ссылка
ИЗ
(ВЫБРАТЬ ЗаказТовары.Ссылка,
    ЗаказТовары.Номенклатура
    Документ.ЗаказКлиента.Товары КАК ЗаказТовары
ГДЕ
    ЗаказТовары.Номенклатура В (&Номенклатура)
) КАК ЗаказТоварыП
ГДЕ
    НЕ ЗаказТоварыП.Номенклатура В (&Номенклатура)
Показать
singlych; +1 Ответить
15. Muska 22.01.19 17:07 Сейчас в теме
(14)вообще нечего не выводит, хотя есть документ где только выбранные товары
16. AJlKuP 22.01.19 17:14 Сейчас в теме +0.2 $m
Лучше пойти от обратного:
1. Выбрать всю номенклатуру, кроме выбранной.
2. Выбрать заказы, где есть номенклатура, кроме выбранной.
3. Убрать их из общего списка заказов.
Примерно так:

ВЫБРАТЬ РАЗЛИЧНЫЕ СпрНоменклатура.Ссылка КАК Номенклатура
ПОМЕСТИТЬ ТаблицаНоменклатуры
ИЗ Справочник.Номенклатура КАК СпрНоменклатура
ГДЕ НЕ СпрНоменклатура.Ссылка В (&СписокНоменклатуры)
И НЕ СпрНоменклатура.ЭтоГруппа
;

////////////////////////////////////////////////////////////­­////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ ЗаказКлиентаТовары.Ссылка КАК Заказ
ПОМЕСТИТЬ ТаблицаИсключаемыхЗаказов
ИЗ Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары 
ГДЕ ЗаказКлиентаТовары .Номенклатура В (ВЫБРАТЬ ТаблицаНоменклатуры.Номенклатура ИЗ ТаблицаНоменклатуры)
;

////////////////////////////////////////////////////////////­­////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ ЗаказКлиента.Ссылка КАК Заказ
ИЗ Документ.ЗаказКлиента КАК ЗаказКлиента
ГДЕ НЕ ЗаказКлиентаТовары .Ссылка В (ВЫБРАТЬ ТаблицаИсключаемыхЗаказов.Заказ ИЗ ТаблицаИсключаемыхЗаказов)
Показать


Пункты можно объединить в один запрос с подзапросами, не принципиально.
shulgin; Muska; +2 Ответить
17. user633533_encantado 11 22.01.19 17:27 Сейчас в теме +0.3 $m
Работающий запрос:

ВЫБРАТЬ РАЗЛИЧНЫЕ
	Номенклатура.Ссылка КАК НеНужнаяНоменклатура
ПОМЕСТИТЬ ВТ_ненужная
ИЗ
	Справочник.Номенклатура КАК Номенклатура
ГДЕ
	НЕ Номенклатура.Ссылка В (&СписокНоменклатуры)

ИНДЕКСИРОВАТЬ ПО
	НеНужнаяНоменклатура
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
	Номенклатура.Ссылка КАК НужнаяНоменклатура,
	КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Номенклатура.Ссылка) КАК Количество
ПОМЕСТИТЬ ВТ_Нужная
ИЗ
	Справочник.Номенклатура КАК Номенклатура
ГДЕ
	Номенклатура.Ссылка В(&СписокНоменклатуры)

СГРУППИРОВАТЬ ПО
	Номенклатура.Ссылка

ИНДЕКСИРОВАТЬ ПО
	НужнаяНоменклатура
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
	КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Номенклатура.Ссылка) КАК Количество
ПОМЕСТИТЬ ВТ_КОличество
ИЗ
	Справочник.Номенклатура КАК Номенклатура
ГДЕ
	Номенклатура.Ссылка В(&СписокНоменклатуры)

ИНДЕКСИРОВАТЬ ПО
	Количество
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
	ЗаказКлиентаТовары.Ссылка КАК Ссылка,
	КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЗаказКлиентаТовары.Номенклатура) КАК Количество
ПОМЕСТИТЬ ВТ_НужныеЗаказы
ИЗ
	Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_Нужная КАК ВТ_Нужная
		ПО ЗаказКлиентаТовары.Номенклатура = ВТ_Нужная.НужнаяНоменклатура
ГДЕ
	НЕ ЗаказКлиентаТовары.Номенклатура В
				(ВЫБРАТЬ
					ВТ_ненужная.НеНужнаяНоменклатура КАК НеНужнаяНоменклатура
				ИЗ
					ВТ_ненужная КАК ВТ_ненужная)

СГРУППИРОВАТЬ ПО
	ЗаказКлиентаТовары.Ссылка
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТ_НужныеЗаказы.Ссылка КАК Ссылка
ИЗ
	ВТ_НужныеЗаказы КАК ВТ_НужныеЗаказы
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_КОличество КАК ВТ_КОличество
		ПО (ВТ_КОличество.Количество = ВТ_НужныеЗаказы.Количество)
Показать
1c_borsch; Muska; +2 Ответить
22. antz 22.01.19 18:00 Сейчас в теме
(17)
ГДЕ НЕ ЗаказКлиентаТовары.Номенклатура В 
(ВЫБРАТЬ 
ВТ_ненужная.НеНужнаяНоменклатура 
КАК НеНужнаяНоменклатура 
ИЗ 
ВТ_ненужная КАК ВТ_ненужная)


Не надо так делать. Левое соединение и есть null.
24. user633533_encantado 11 22.01.19 18:03 Сейчас в теме
(22) Я знаю, просто накатал пример на быструю руку. Подозреваю, что пришлось бы еще один запрос в пакет писать, чтобы на Null сравнивать.
25. user633533_encantado 11 22.01.19 18:06 Сейчас в теме
(22) (18)

Еще короче вариант, убрал лишнее:

ВЫБРАТЬ РАЗЛИЧНЫЕ
Номенклатура.Ссылка КАК НужнаяНоменклатура,
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Номенклатура.Ссылка) КАК Количество
ПОМЕСТИТЬ ВТ_Нужная
ИЗ
Справочник.Номенклатура КАК Номенклатура
ГДЕ
Номенклатура.Ссылка В(&СписокНоменклатуры)

СГРУППИРОВАТЬ ПО
Номенклатура.Ссылка

ИНДЕКСИРОВАТЬ ПО
НужнаяНоменклатура
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Номенклатура.Ссылка) КАК Количество
ПОМЕСТИТЬ ВТ_КОличество
ИЗ
Справочник.Номенклатура КАК Номенклатура
ГДЕ
Номенклатура.Ссылка В(&СписокНоменклатуры)

ИНДЕКСИРОВАТЬ ПО
Количество
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
ЗаказКлиентаТовары.Ссылка КАК Ссылка,
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЗаказКлиентаТовары.Номенклатура) КАК Количество
ПОМЕСТИТЬ ВТ_НужныеЗаказы
ИЗ
Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_Нужная КАК ВТ_Нужная
ПО ЗаказКлиентаТовары.Номенклатура = ВТ_Нужная.НужнаяНоменклатура

СГРУППИРОВАТЬ ПО
ЗаказКлиентаТовары.Ссылка
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
ВТ_НужныеЗаказы.Ссылка КАК Ссылка
ИЗ
ВТ_НужныеЗаказы КАК ВТ_НужныеЗаказы
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_КОличество КАК ВТ_КОличество
ПО (ВТ_КОличество.Количество = ВТ_НужныеЗаказы.Количество)
26. Muska 23.01.19 08:00 Сейчас в теме
(25)А для полного совпадения какое условие надо добавить? например если в заказе есть товар не исписка, то его не выводить
27. user633533_encantado 11 23.01.19 09:41 Сейчас в теме
(26) Так этот запрос и выдаст тебе полное совпадение. Последние условие проверяет, что количество различной номенклатуры в документе соответстветует твоему списку. Не больше и не меньше.
28. Muska 23.01.19 10:01 Сейчас в теме
(27)Если в документе есть товар 1,2,4 и выбирается товар 1,2 то этот документ попадает тоже
29. user633533_encantado 11 23.01.19 10:26 Сейчас в теме
(28) Вот так не попадет:

ВЫБРАТЬ РАЗЛИЧНЫЕ
	Номенклатура.Ссылка КАК НужнаяНоменклатура,
	КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Номенклатура.Ссылка) КАК Количество
ПОМЕСТИТЬ ВТ_Нужная
ИЗ
	Справочник.Номенклатура КАК Номенклатура
ГДЕ
	Номенклатура.Ссылка В(&СписокНоменклатуры)

СГРУППИРОВАТЬ ПО
	Номенклатура.Ссылка

ИНДЕКСИРОВАТЬ ПО
	НужнаяНоменклатура
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
	КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Номенклатура.Ссылка) КАК Количество
ПОМЕСТИТЬ ВТ_КОличество
ИЗ
	Справочник.Номенклатура КАК Номенклатура
ГДЕ
	Номенклатура.Ссылка В(&СписокНоменклатуры)

ИНДЕКСИРОВАТЬ ПО
	Количество
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
	ЗаказКлиентаТовары.Ссылка КАК Ссылка,
	КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЗаказКлиентаТовары.Номенклатура) КАК Количество
ПОМЕСТИТЬ ВТ_НужныеЗаказы
ИЗ
	Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_Нужная КАК ВТ_Нужная
		ПО ЗаказКлиентаТовары.Номенклатура = ВТ_Нужная.НужнаяНоменклатура

СГРУППИРОВАТЬ ПО
	ЗаказКлиентаТовары.Ссылка
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
	ЗаказКлиентаТовары.Ссылка КАК Ссылка,
	КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЗаказКлиентаТовары.Номенклатура) КАК Количество
ПОМЕСТИТЬ ВТ_НужныеЗаказы1
ИЗ
	Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
ГДЕ
	ЗаказКлиентаТовары.Ссылка В
			(ВЫБРАТЬ
				ВТ_НужныеЗаказы.Ссылка КАК Ссылка
			ИЗ
				ВТ_НужныеЗаказы КАК ВТ_НужныеЗаказы)

СГРУППИРОВАТЬ ПО
	ЗаказКлиентаТовары.Ссылка
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТ_НужныеЗаказы1.Ссылка КАК Ссылка
ИЗ
	ВТ_НужныеЗаказы1 КАК ВТ_НужныеЗаказы1
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_КОличество КАК ВТ_КОличество
		ПО (ВТ_КОличество.Количество = ВТ_НужныеЗаказы1.Количество)
Показать
30. Muska 23.01.19 10:56 Сейчас в теме
(29)
не получается( Поясните для чего необходимо количество различной номенклатуры
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЗаказКлиентаТовары.Номенклатура) КАК Количество


в одном заказе может быть несколько строк с одной номенклатурой
31. user633533_encantado 11 23.01.19 11:14 Сейчас в теме
(30) Несколько строк с одной, но количество различных считает только уникальные.
18. Muska 22.01.19 17:38 Сейчас в теме
Спасибо всем за участия. Завтра доначислят стартмани докину еще за правильный ответ
33. user1135946 24.01.19 09:34 Сейчас в теме
(18)
Спасибо всем за участия. Завтра доначислят стартмани докину еще за правильный ответ

:)
19. bes_d 15 22.01.19 17:38 Сейчас в теме
Полагаю примерно так:
1 Запрос - выбираем доки номенклатура которых есть в массиве
2 запрос - из первого запроса выбираем доки в которые есть номенклатура не в списке
3. соединяем

ВЫБРАТЬ РАЗЛИЧНЫЕ
РеализацияТоваровУслугТовары.Ссылка КАК Ссылка
ПОМЕСТИТЬ т01
ИЗ
Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
ГДЕ
РеализацияТоваровУслугТовары.Номенклатура В (&Номенклатура)
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
РеализацияТоваровУслугТовары.Ссылка КАК Ссылка
ПОМЕСТИТЬ т02
ИЗ
т01 КАК т01
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
ПО (т01.Ссылка = РеализацияТоваровУслугТовары.Ссылка)
ГДЕ
НЕ РеализацияТоваровУслугТовары.Номенклатура В (&Номенклатура)
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
т01.Ссылка КАК Ссылка
ИЗ
т01 КАК т01
ЛЕВОЕ СОЕДИНЕНИЕ т02 КАК т02
ПО (т01.Ссылка = т02.Ссылка)
ГДЕ
т02.Ссылка ЕСТЬ NULL
20. bes_d 15 22.01.19 17:39 Сейчас в теме
32. JohnGalt 57 23.01.19 14:16 Сейчас в теме
Можно кстати соединением посчитать количество строк с нужной номенклатурой и сравнить с требуемым количеством. И отобрать только те, которые равны
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот