|
В СКД отчет по полному соответствию таб. части и списком значений | ☑ | ||
---|---|---|---|---|
0
SmirnAlex
17.11.16
✎
14:40
|
Подскажите, как в СКД выбрать документы с ПОЛНЫМ соответствием табличной части и параметром - списком значений. Под полным соответствием понимается: если в документе присутствует номенклатура не из списка, то такие документы не выводить в отчете, если в документе нет какой то номенклатуры из списка, то такие документы не выводить в отчете.
|
|||
1
catena
17.11.16
✎
15:01
|
ВЫБРАТЬ РАЗЛИЧНЫЕ
ПоступлениеТоваровУслугТовары.Ссылка, ПоступлениеТоваровУслугТовары.Номенклатура ПОМЕСТИТЬ тзТовары ИЗ Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары ; //////////////////////////////////////////////////////////////////////////////// Выбрать различные ссылка из (ВЫБРАТЬ тзТовары.Ссылка, СУММА(ВЫБОР КОГДА тзТовары.Номенклатура В (&Список) ТОГДА 1 ИНАЧЕ &КоличествоВСписке*100000 КОНЕЦ) КАК количествоСовпадений ИЗ тзТовары КАК тзТовары СГРУППИРОВАТЬ ПО тзТовары.Ссылка ИМЕЮЩИЕ СУММА(ВЫБОР КОГДА тзТовары.Номенклатура В (&Список) ТОГДА 1 ИНАЧЕ &КоличествоВСписке*100000 КОНЕЦ) = &КоличествоВСписке) как Д |
|||
2
SmirnAlex
17.11.16
✎
15:28
|
Спасибо! Вроде получается.
|
|||
3
youalex
17.11.16
✎
15:42
|
|
|||
4
SmirnAlex
17.11.16
✎
15:52
|
Поясни плз, зачем нужен параметр &КоличествоВСписке и где его заполнять?
|
|||
5
SmirnAlex
17.11.16
✎
15:53
|
На строке &КоличествоВСписке*100000 ругается "Неверные параметры "*""
|
|||
6
youalex
17.11.16
✎
15:59
|
(3) +
ВЫБРАТЬ * ИЗ вт_ЕстьСовпадения ГДЕ НЕ Ссылка В (ВЫБРАТЬ Ссылка ИЗ вт_Расхождения) |
|||
7
SmirnAlex
17.11.16
✎
16:06
|
(6)
Я так уже пробовал делать, только даже проще. Дело в том, что если в список выбрать все товары, вт_Расхождения будет пустая и выйдут все документы. На этом и застрял) |
|||
8
SmirnAlex
17.11.16
✎
16:09
|
(6)
Аналогично работает: ВЫБРАТЬ ЗаказТовары.Ссылка ПОМЕСТИТЬ Таб1 ИЗ Документ.Заказ.Товары КАК ЗаказТовары ГДЕ ЗаказТовары.Номенклатура В(&Номенклатура) ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ЗаказТовары.Ссылка ПОМЕСТИТЬ Таб2 ИЗ Документ.Заказ.Товары КАК ЗаказТовары ГДЕ НЕ ЗаказТовары.Номенклатура В (&Номенклатура) ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Таб1.Ссылка ИЗ Таб1 КАК Таб1 ЛЕВОЕ СОЕДИНЕНИЕ Таб2 КАК Таб2 ПО Таб1.Ссылка = Таб2.Ссылка ГДЕ Таб2.Ссылка ЕСТЬ NULL |
|||
9
SmirnAlex
17.11.16
✎
16:12
|
А нужно так:
Список: Яблоки, Груши, Виноград Документ1: Яблоки, Груши, Виноград - попадает в отчет Документ2: Яблоки, Груши - не попадает в отчет |
|||
10
DrShad
17.11.16
✎
16:16
|
(9) сколько?
|
|||
11
тарам пам пам
17.11.16
✎
18:11
|
(8) через полное соединение нужно делать, например так:
ВЫБРАТЬ РАЗЛИЧНЫЕ РеализацияТоваровУслугТовары.Ссылка, РеализацияТоваровУслугТовары.Номенклатура ПОМЕСТИТЬ ВТДокументы ИЗ (ВЫБРАТЬ РАЗЛИЧНЫЕ РеализацияТоваровУслугТовары.Ссылка КАК Ссылка ИЗ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары ГДЕ РеализацияТоваровУслугТовары.Номенклатура В(&Номенклатура)) КАК ВложенныйЗапрос ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары ПО ВложенныйЗапрос.Ссылка = РеализацияТоваровУслугТовары.Ссылка ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ РАЗЛИЧНЫЕ ВТДокументы.Ссылка, СпрНоменклатура.Ссылка КАК Номенклатура ПОМЕСТИТЬ ВТДокументыСНоменклатурой ИЗ ВТДокументы КАК ВТДокументы ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СпрНоменклатура ПО (СпрНоменклатура.Ссылка В (&Номенклатура)) ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ЕСТЬNULL(ВТДокументы.Ссылка, ВТДокументыСНоменклатурой.Ссылка) КАК Ссылка ИЗ ВТДокументы КАК ВТДокументы ПОЛНОЕ СОЕДИНЕНИЕ ВТДокументыСНоменклатурой КАК ВТДокументыСНоменклатурой ПО ВТДокументы.Ссылка = ВТДокументыСНоменклатурой.Ссылка И ВТДокументы.Номенклатура = ВТДокументыСНоменклатурой.Номенклатура СГРУППИРОВАТЬ ПО ЕСТЬNULL(ВТДокументы.Ссылка, ВТДокументыСНоменклатурой.Ссылка) ИМЕЮЩИЕ МИНИМУМ(НЕ ВТДокументы.Номенклатура ЕСТЬ NULL И НЕ ВТДокументыСНоменклатурой.Номенклатура ЕСТЬ NULL ) = ИСТИНА |
|||
12
SmirnAlex
17.11.16
✎
18:20
|
(11)
Да, то что надо! Работает. Спасибо! |
|||
13
SmirnAlex
17.11.16
✎
18:36
|
(11)
Только можно обойтись без вложенного запроса: ВЫБРАТЬ РАЗЛИЧНЫЕ Заказы.Ссылка КАК Ссылка, Заказы.Номенклатура КАК Номенклатура ПОМЕСТИТЬ ВТДокументы ИЗ Документ.Заказ.Товары КАК Заказы ГДЕ Заказы.Номенклатура В(&Номенклатура) ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ РАЗЛИЧНЫЕ ВТДокументы.Ссылка, СпрНоменклатура.Ссылка КАК Номенклатура ПОМЕСТИТЬ ВТДокументыСНоменклатурой ИЗ ВТДокументы КАК ВТДокументы ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СпрНоменклатура ПО (СпрНоменклатура.Ссылка В (&Номенклатура)) ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ЕСТЬNULL(ВТДокументы.Ссылка, ВТДокументыСНоменклатурой.Ссылка) КАК Ссылка ИЗ ВТДокументы КАК ВТДокументы ПОЛНОЕ СОЕДИНЕНИЕ ВТДокументыСНоменклатурой КАК ВТДокументыСНоменклатурой ПО (ВТДокументы.Ссылка = ВТДокументыСНоменклатурой.Ссылка) И (ВТДокументы.Номенклатура = ВТДокументыСНоменклатурой.Номенклатура) СГРУППИРОВАТЬ ПО ЕСТЬNULL(ВТДокументы.Ссылка, ВТДокументыСНоменклатурой.Ссылка) ИМЕЮЩИЕ МИНИМУМ(НЕ ВТДокументы.Номенклатура ЕСТЬ NULL И НЕ ВТДокументыСНоменклатурой.Номенклатура ЕСТЬ NULL) = ИСТИНА УПОРЯДОЧИТЬ ПО Ссылка |
|||
14
тарам пам пам
18.11.16
✎
09:03
|
(13) нельзя, сравнивать нужно полную таб. часть от документов, а у тебя выберутся только те строки, где есть номенклатура из списка
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |