|
Получить запросом документ содержащий определенный список позиций номенклатуры | ☑ | ||
---|---|---|---|---|
0
Торин
13.02.13
✎
15:28
|
Уважаемые коллеги!
Нужна идея - как запросом выбрать те документы продаж, в которых присутствует некоторый набор позиций номенклатуры, определяемый пользователем? Набор должен быть ВЕСЬ ЦЕЛИКОМ -- т.е. только те реализации, в которых ОДНОВРЕМЕННО ЕСТЬ и ном1 и ном2 и ном3? Количество позиций в наборе и сами позиции определяются пользователем и заранее неизвестны... Отчет для отдела маркетинга -- пытаются таким образом оценить эффективность акций типа "3+1", "4+1"... |
|||
1
mikecool
13.02.13
✎
15:29
|
выбрать список номенклатуры
внутреннее соединение с табличными частями и взять ссылки |
|||
2
Торин
13.02.13
✎
15:32
|
(1) это если бы количество позиций было бы каждый раз одинаковым... тогда да - отбор например по 3 табличным частям и три внутренних соединения...
|
|||
3
Fragster
гуру
13.02.13
✎
15:32
|
у нас акция в реквизит регистра Продажи пишется...
|
|||
4
Торин
13.02.13
✎
15:33
|
Но у меня количество неизвестно и в общем случае вполне может быть двузначным числом...
|
|||
5
Fragster
гуру
13.02.13
✎
15:33
|
но у нас нетленка. В типовой можно отдельный регистр под это дело запилить, чтобы сильно не корежить.
|
|||
6
mikecool
13.02.13
✎
15:33
|
(2) "это если бы количество позиций было бы каждый раз одинаковым" почему? или я тчто то не понял?
|
|||
7
Fragster
гуру
13.02.13
✎
15:33
|
тогда просто отбор по акции в отчете ставить можно
|
|||
8
Торин
13.02.13
✎
15:34
|
здесь стоит стандартная практически недоработанная УТ 10.3. Акция фиксируется документом "установка скидок" требуется проверить как изменились продажи определенных сочентаний товаров...
|
|||
9
Торин
13.02.13
✎
15:34
|
(6) тогда я не понял... можно подробнее?
|
|||
10
mikecool
13.02.13
✎
15:35
|
(9) внутреннее соединение должно выдать только те ссылки, где набор выбранной номенклатуры полностью входит в документ
|
|||
11
GANR
13.02.13
✎
15:36
|
левым соединением подцепить к ТЧ документов временную таблицу с нужной номенклатурой
... ввести поле СУММА(ВЫБОР КОГДА ВТ_Номенклатура.Ссылка is null ТОГДА 1 ИНАЧЕ 0 КОНЕЦ) ОтсутствующиеПоля ... ИМЕЮЩИЕ СУММА(ВЫБОР КОГДА ВТ_Номенклатура.Ссылка is null ТОГДА 1 ИНАЧЕ 0 КОНЕЦ) = 0 Идея ясна? Как-то так... |
|||
12
mikecool
13.02.13
✎
15:36
|
+10 хотя надо проверить
|
|||
13
Торин
13.02.13
✎
15:36
|
(10) вот КАК написать такое условие -- это-то я и спрашиваю...
|
|||
14
Fragster
гуру
13.02.13
✎
15:36
|
(9) берешь запрос к справочнику номенклатуры, на него отбор В Списке, помещаешь во временную таблицу. потом эту таблицу соединяешь уже с документами. из результата соединения убираешь строки, где количество строк в документе меньше количества строк во времеенной таблице
|
|||
15
Fragster
гуру
13.02.13
✎
15:37
|
но это наркомания, правильнее запилить при проведении документа заполнение данных
|
|||
16
GANR
13.02.13
✎
15:37
|
(13) Соединение, группировки и выбор надо особым образом использовать. Условие - никак.
|
|||
17
mikecool
13.02.13
✎
15:38
|
(14) зачем там временная таблица? и без нее спокойно
|
|||
18
mikecool
13.02.13
✎
15:38
|
(13) так я в (1) уже все расписал
|
|||
19
Fragster
гуру
13.02.13
✎
15:39
|
(17) без нее внутри запроса не получится определить, сколько же пользователь напихал в свой список. ну, конечно можно это отдельным параметром передавать...
|
|||
20
GANR
13.02.13
✎
15:40
|
(18) Тогда не весь список попасть может, а только часть. Левое соединение нужно задействовать.
|
|||
21
Торин
13.02.13
✎
15:40
|
(18)"внутреннее соединение должно выдать только те ссылки, где набор выбранной номенклатуры полностью входит в документ" -- нет, не дает, выдает все документы, где есть хотя бы одна позиция...
|
|||
22
mikecool
13.02.13
✎
15:40
|
(19) вложенный подзапрос
|
|||
23
Торин
13.02.13
✎
15:40
|
а нужно именно все
|
|||
24
mikecool
13.02.13
✎
15:42
|
Выбрать Ссылка
Из ТабличнаяЧасть внутреннее соединение (выбрать ссылка Из Справочник.Номенклатура Где Ссылка В(&Список)) Как _Номенклатура По ТабличнаяЧасть.Номенклатура = _Номенклатура.Ссылка так? |
|||
25
Торин
13.02.13
✎
15:42
|
пока самым реальным выглядит (11)
начинаю писать... |
|||
26
GANR
13.02.13
✎
15:43
|
(23) Внимательно присмотритесь к (11).
|
|||
27
Торин
13.02.13
✎
15:43
|
(24) да, так и написал -- не работает...
|
|||
28
mikecool
13.02.13
✎
15:45
|
какие левые соединения?
|
|||
29
ПиН
13.02.13
✎
15:46
|
ха, ишь хитрый какой, запрос за 10 минут написал и думает, что он работать будет...
|
|||
30
Serg_1960
13.02.13
✎
15:46
|
Взять набор номенклатуры, соединить с табличными частями, выбрав различные. Потом сгрупировать записи по ссылке с количеством ссылок, отсортировать по количеству и отобрать только те записи, в которых количество равно количеству в наборе номенклатуры.
|
|||
31
GANR
13.02.13
✎
15:47
|
(28) Это необходимо, чтобы определить, есть ли в списке номенклатуры о т с у т с т в у ю щ и е в ТЧ позиции. Если есть - бракуем документ.
|
|||
32
Тролль главный
13.02.13
✎
15:52
|
ВЫБРАТЬ
Товары.Номенклатура ПОМЕСТИТЬ Товары ИЗ &Товары КАК Товары ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ СУММА(1) КАК КоличествоТовара ПОМЕСТИТЬ Количества ИЗ Товары КАК Товары ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ РеализацияТоваровУслугТовары.Ссылка ИЗ Товары КАК Товары ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары ПО Товары.Номенклатура = РеализацияТоваровУслугТовары.Номенклатура, Количества КАК Количества СГРУППИРОВАТЬ ПО РеализацияТоваровУслугТовары.Ссылка, Количества.КоличествоТовара ИМЕЮЩИЕ КОЛИЧЕСТВО(РАЗЛИЧНЫЕ РеализацияТоваровУслугТовары.Номенклатура) = Количества.КоличествоТовара |
|||
33
GANR
13.02.13
✎
15:57
|
(28)А вот это (32) альтернатива. Хотя ЛС, кажется, шустрей будет.
|
|||
35
mikecool
13.02.13
✎
15:59
|
(31) зачем выбирать заранее не нужные документы? чтобы два раза обработать выборку?
|
|||
36
mikecool
13.02.13
✎
16:00
|
хоть убейте меня, но считаю что грех пользоваться временными таблицами если их результат используется всего один раз
|
|||
37
Тролль главный
13.02.13
✎
16:03
|
(11) один товар может быть в нескольких строках одного документа
(36) допросишься )) |
|||
38
GANR
13.02.13
✎
16:08
|
(37) Тогда МАКСИМУМ вместо сумма
|
|||
39
Торин
13.02.13
✎
16:16
|
Тема закрыта Огромное спасибо Тролль главный(32). Все заработало... Спасибо всем участникам за поддержку интереса к задачке...
|
|||
40
GANR
13.02.13
✎
16:25
|
(34) В дворники пора идти - свежий воздух, хорошая нагрузка. Нда... (11) Кажется, надо к списку номенклатуры слева присоединять ТЧ документа, а не наоборот - без консоли не видно.
|
|||
41
mikecool
13.02.13
✎
16:26
|
(40) вот ты упертый... левое соединение не даст правильного результата
|
|||
42
mikecool
13.02.13
✎
16:26
|
+41 вернее возможно и даст но с использованием лишних телодвижений
|
|||
43
GANR
13.02.13
✎
16:33
|
(42) Даст, делал года 2 назад похожие запросы на MS SQL только.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |