|
СКД отбор по полю вирт.таблицы (а потом группировка в запросе) | ☑ | ||
---|---|---|---|---|
0
EuVod
09.10.18
✎
11:54
|
Всем привет!
Попробую сформулировать )) есть простая СКД (цель- по простым условиям, задаваемым пользователем в виде отборов) определить подпадающие под всякие хитрые условия условия акций накладные). у СКД есть запрос ВТ по табличной части документа реализации - чтобы можно было отбирать по составу товаров или например чтобы в строке с товаром было ровно 2шт - это ключевой момент. В компоновке указываю поля отбора. (например КолвоШТПоСтроке). Далее идет сворачивание - группировка этой ВТ, чтобы можно было накладывать отборы на аггрегированные показатели (нап. общий литраж или общее колво, или коло разных товарных позиций). И вот тут засада - если накладываю отбор вида Товар в списке Т1, Т2, Т3 И КолвоВсего =6 (т.е. что всего по товарам из этого списка в накладной набралось ровно 6 штук) то все ок Товар в списке Т1, Т2, Т3 И КолвоШтПоСтроке =2 тоже все ок (т.е. отобрались только строки в которых товар в этом списке и в строке ТЧ количество=2) А вот одновременно наложить отбор Товар в списке Т1, Т2, Т3 И КолвоВсего =6 И КолвоШтПоСтроке =2 ругается, чо поле КолвоШтПоСтроке не обнаружено - не могу даже запрос посмотреть, т.к. ругается на КомпоновщикМакета.Выполнить(СхемаСКДУсловияПредоставления, НастройкиСКДУсловияПредоставления, , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")); Видимо я недопонимаю что-о в механизме СКД.. т.е. я то надеялся что тупо в запрос в первой ВТ в секцию ГДЕ поставить Количество=2, а далее уж пойдет группировка (на уровне запроса ЕЩЕ!) и уже в следующую ВТ попадут только отобранные эти записи и на них в свою очередь наложится отбор. По номенклатуре то он фильтрует не жалуется. Если кто дочитал спасибо ) - а за подсказку тем более! текст запроса СКД (тут много букв) ВЫБРАТЬ РеализацияТовары.Ссылка КАК Реализация, РеализацияТовары.Номенклатура КАК Номенклатура, РеализацияТовары.Сумма КАК Сумма, РеализацияТовары.Сумма - РеализацияТовары.СуммаНДС КАК СуммаБезНДС, РеализацияТовары.Количество * РеализацияТовары.Коэффициент КАК КоличествоБЕ, РеализацияТовары.Количество * РеализацияТовары.Коэффициент / ВЫБОР КОГДА ЕСТЬNULL(ЕдиницыАЕ.Коэффициент, 0) = 0 ТОГДА 1 ИНАЧЕ ЕдиницыАЕ.Коэффициент КОНЕЦ КАК КоличествоАЕ, РеализацияТовары.Количество * РеализацияТовары.Коэффициент * ЕдиницыБЕ.Литраж КАК КоличествоЛ, ЕдиницыБЕ.Литраж КАК Литраж, РеализацияТовары.Количество * РеализацияТовары.Коэффициент * ЕдиницыБЕ.ВесНетто КАК КоличествоКГ, ЕдиницыБЕ.ВесНетто КАК Граммаж, РеализацияТовары.Количество * РеализацияТовары.Коэффициент / ВЫБОР КОГДА ЕСТЬNULL(ЕдиницыБлоки.Коэффициент, 0) = 0 ТОГДА 1 ИНАЧЕ ЕдиницыБлоки.Коэффициент КОНЕЦ КАК КоличествоБлоков ПОМЕСТИТЬ ВТ_Товары {ВЫБРАТЬ Реализация.*, Номенклатура.*, Сумма, Литраж, КоличествоБЕ КАК КолвоШТПоСтроке} ИЗ Документ.Реализация.Товары КАК РеализацияТовары ЛЕВОЕ СОЕДИНЕНИЕ Справочник.УпаковкиНоменклатуры КАК ЕдиницыБЕ ПО РеализацияТовары.Номенклатура = ЕдиницыБЕ.Владелец И (ЕдиницыБЕ.Коэффициент = 1) И РеализацияТовары.Номенклатура.ЕдиницаИзмерения = ЕдиницыБЕ.ЕдиницаИзмерения И (НЕ ЕдиницыБЕ.ПометкаУдаления) ЛЕВОЕ СОЕДИНЕНИЕ Справочник.УпаковкиНоменклатуры КАК ЕдиницыАЕ ПО РеализацияТовары.Номенклатура = ЕдиницыАЕ.Владелец И РеализацияТовары.Номенклатура.АльтернативнаяЕдиницаИзмерения = ЕдиницыАЕ.ЕдиницаИзмерения И (НЕ ЕдиницыАЕ.ПометкаУдаления) ЛЕВОЕ СОЕДИНЕНИЕ Справочник.УпаковкиНоменклатуры КАК ЕдиницыБлоки ПО РеализацияТовары.Номенклатура = ЕдиницыБлоки.Владелец И (ЕдиницыБлоки.ЕдиницаИзмерения.Код = "бл") И (НЕ ЕдиницыБлоки.ПометкаУдаления) {ГДЕ РеализацияТовары.Номенклатура.*, РеализацияТовары.Ссылка.* КАК Реализация, ЕдиницыБЕ.Литраж, (РеализацияТовары.Количество * РеализацияТовары.Коэффициент) КАК КолвоШТПоСтроке, ЕдиницыБЕ.ВесНетто КАК Граммаж, (РеализацияТовары.Количество * РеализацияТовары.Коэффициент * ЕдиницыБЕ.Литраж) КАК КолвоЛПоСтроке, (РеализацияТовары.Количество * РеализацияТовары.Коэффициент / ВЫБОР КОГДА ЕСТЬNULL(ЕдиницыАЕ.Коэффициент, 0) = 0 ТОГДА 1 ИНАЧЕ ЕдиницыАЕ.Коэффициент КОНЕЦ) КАК КолвоАЕпоСТроке} ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВТ_Товары.Номенклатура) КАК КоличествоСКЮ, СУММА(ВТ_Товары.КоличествоБЕ) КАК КоличествоБЕ_сумма, СУММА(ВТ_Товары.КоличествоАЕ) КАК КоличествоАЕ_сумма, СУММА(ВТ_Товары.КоличествоЛ) КАК КоличествоЛ_сумма, МИНИМУМ(ВТ_Товары.КоличествоБЕ) КАК КоличествоБЕ_мин, МИНИМУМ(ВТ_Товары.КоличествоАЕ) КАК КоличествоАЕ_мин, МИНИМУМ(ВТ_Товары.КоличествоЛ) КАК КоличествоЛ_мин, СУММА(ВТ_Товары.Сумма) КАК Сумма, СУММА(ВТ_Товары.СуммаБезНДС) КАК СуммаБезНДС, КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВТ_Товары.Литраж) КАК КолвоРазныхЛитражей, ВТ_Товары.Реализация КАК Реализация, СУММА(ВТ_Товары.КоличествоКГ) КАК КоличествоКГ_сумма, МИНИМУМ(ВТ_Товары.КоличествоБлоков) КАК КоличествоБлоков_мин, СУММА(ВТ_Товары.КоличествоБлоков) КАК КоличествоБлоков_всего ПОМЕСТИТЬ ПредвГруппировка {ВЫБРАТЬ КоличествоСКЮ.*, КоличествоБЕ_сумма, КоличествоАЕ_сумма, КоличествоЛ_сумма, КоличествоБЕ_мин, КоличествоАЕ_мин, КоличествоЛ_мин, Сумма, СуммаБезНДС} ИЗ ВТ_Товары КАК ВТ_Товары СГРУППИРОВАТЬ ПО ВТ_Товары.Реализация ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ПредвГруппировка.Реализация КАК Реализация, ПредвГруппировка.КоличествоСКЮ КАК КоличествоСКЮ, ПредвГруппировка.КоличествоБЕ_сумма КАК КоличествоБЕ_сумма, ПредвГруппировка.КоличествоАЕ_сумма КАК КоличествоАЕ_сумма, ПредвГруппировка.КоличествоЛ_сумма КАК КоличествоЛ_сумма, ПредвГруппировка.КоличествоБЕ_мин КАК КоличествоБЕ_мин, ПредвГруппировка.КоличествоАЕ_мин КАК КоличествоАЕ_мин, ПредвГруппировка.КоличествоЛ_мин КАК КоличествоЛ_мин, ПредвГруппировка.Сумма КАК Сумма, ПредвГруппировка.СуммаБезНДС КАК СуммаБезНДС, ПредвГруппировка.КолвоРазныхЛитражей КАК КолвоРазныхЛитражей, ПредвГруппировка.КоличествоКГ_сумма КАК КоличествоКГ_сумма, ПредвГруппировка.КоличествоБлоков_мин КАК КоличествоБлоков_мин, ПредвГруппировка.КоличествоБлоков_всего КАК КоличествоБлоков_всего {ВЫБРАТЬ Реализация.*, КоличествоСКЮ, КоличествоБЕ_сумма, КоличествоАЕ_сумма, КоличествоЛ_сумма, КоличествоБЕ_мин, КоличествоАЕ_мин, КоличествоЛ_мин, Сумма, СуммаБезНДС, КоличествоКГ_сумма} ИЗ ПредвГруппировка КАК ПредвГруппировка {ГДЕ ПредвГруппировка.КоличествоСКЮ, ПредвГруппировка.КоличествоБЕ_сумма, ПредвГруппировка.КоличествоАЕ_сумма, ПредвГруппировка.КоличествоЛ_сумма, ПредвГруппировка.КоличествоБЕ_мин, ПредвГруппировка.КоличествоАЕ_мин, ПредвГруппировка.КоличествоЛ_мин, ПредвГруппировка.Сумма, ПредвГруппировка.СуммаБезНДС, ПредвГруппировка.КоличествоКГ_сумма, ПредвГруппировка.КоличествоБлоков_мин, ПредвГруппировка.КоличествоБлоков_всего} |
|||
1
EuVod
09.10.18
✎
12:14
|
хотя должен уточнить.. почти разорался ))
если просто наложить так условия то сработает.. а если сделать группы условий типа: группа ИЛИ Группа И Всего = 6 ПоСтроке = 2 Группы И Всего = 12 ПоСтроке = 4 вот тогда не срабоатет.. и пожалуй тут ничего не сделаешь, т.к. один запрос так просто под этот отбор не сделаешь |
|||
2
Cyberhawk
09.10.18
✎
12:17
|
Уж очень много букв
|
|||
3
Sasha_H
09.10.18
✎
12:22
|
(2) ты опять здесь флудер?
|
|||
4
Sasha_H
09.10.18
✎
12:24
|
А почему группируете запросом? можно ведь ресурсами получать СКД само все сгруппирует и просуммирует.
|
|||
5
Sasha_H
09.10.18
✎
12:31
|
Попробуйте ВТ_Товары соединить с ПредвГруппировка поидее тогда долно заработать. Насколько я правильно понимаю надо получать итог всего и штук в строке.
У вас должна остаться основная таблица ВТ_товары и все к ней присоединять (только по уму чтобы не двоило) |
|||
6
EuVod
09.10.18
✎
12:34
|
ресурсы не так гибко - мне надо чтобы пользователь настроил только отборы.. в настройках нет группировок - только детальные записи содним полем - собственно накладная, т.к. результат этой СКД потом передается дальше в общую функцию рассчета акций. т.е. все должно унифицировано.. вобщем в (2) я понял причину - видимо это невозможно.. (для отборов с группами сложными )
|
|||
7
Sasha_H
09.10.18
✎
12:37
|
(6) если отчет линейный это ж еще не значит, что скд не сгруппирует. Просто в таком случае надо все поля бахать в группировку вручную и все. Но согласен все зависит от задачи конечному программисту видней как лучше чем со стороны.
попробуйте (5) |
|||
8
EuVod
09.10.18
✎
12:59
|
(5) т.е. оставаить все товары, и для каждого товара повторить все аггрегатные значения. И в компоновке оставиь отборы толькопо последней результирующей таблице.
кстати да, наверное должно сработать. (заодно тогда наверное получаться отборы сложные типа Товар в с писке 1 и тото или Товар в списке 2 и этото) Спасибо ) буду думать |
|||
9
Cyberhawk
09.10.18
✎
13:25
|
(3) ?
|
|||
10
Sasha_H
09.10.18
✎
14:06
|
(9) ты хоть в какой-то из веток дал дельный ответ или так воняешь как обычно?
|
|||
11
Sasha_H
09.10.18
✎
14:10
|
(8) Вы использовали условия ресурса в первой таблице ВТ_товары потому как компоновщик так сделали {}
Тоесть, что получается. Первый запрос уже отбивает строго по этому количеству, а запрос с группировками уже не будет иметь ИТОГ в целом |
|||
12
Sasha_H
09.10.18
✎
14:11
|
Откажитесь от условий {} на этом этапе и наложите уже условия на конечную таблицу.
|
|||
13
EuVod
09.10.18
✎
14:25
|
(12) да, это конечно я понял )
поубирал все условия из компоновки по 1й таблице, + придется изменить настройки - структура, т.е. не детальные записи, а сделать группировку по накладной (иначе она помножится на количество строк ТЧ) - но в целом все, кажется, в схему вписывается вроде. В принципе получилось сделать очень гибкую схему автоматических акций (полагаю погибче хоть и попроще чем в типовой УТ) + с учетом затрат и компнсаций от производителей. Но условия бывают такие замороченные, что прямо теряешься как их формализовать. |
|||
14
Cyberhawk
09.10.18
✎
14:33
|
(10) Конечно, Я все свои посты (положим, за исключением некоторой части постов вопросительного характера) считаю весьма полезными. Далеко ходить не надо - вот посмотри хотя бы в этой ветке. И попрошу без инсинуаций.
|
|||
15
Sasha_H
09.10.18
✎
14:43
|
(13) может и не помножится в ресурсах надо группировки расчетные делать
|
|||
16
EuVod
09.10.18
✎
15:02
|
(13) а мне ресурсы не нужны. мне на выходе нужна таблица из 2х колонок ( Накладная, Акция ) потому что способ предоставления акций в других СКД сидит их потом рассчитывать отдельно надо. (по тем накладным, которые удовлетворили условиям).
|
|||
17
EuVod
09.10.18
✎
15:02
|
(16) было к (15) ))
|
|||
18
EuVod
09.10.18
✎
15:21
|
только отбор по номенклатуре на группировочную таблицу тоже надо наложить иначе неверно..
|
|||
19
EuVod
09.10.18
✎
15:28
|
но тогда нельзя будет группировать условия.. для одного списка номенклатуры одни показатели или для другого - другой ))
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |