|
Как узнать в запросе количество строк по нужной группировке | ☑ | ||
---|---|---|---|---|
0
Sharmon
07.02.14
✎
12:53
|
Что-то не могу сообразить.
Есть отчет по регистру накопления Пробдажи (БП). СКД. Группировки по строкам: Контрагент.ТорговыйАгент Период Контрагент Мне нужно вывести дополнительную колонку с количеством контрагентов, по которым были продажи. Т.е. в детальной строке, если сумма продажи > 0, то кол-во = 1. А в итоге по контрагенту (и во всех вышестоящих) идет общее количество. |
|||
1
Sharmon
07.02.14
✎
12:57
|
Т.е. другими словами, мне нужно подсчитать кол-во ненулевых сумм в разрезе контрагентов.
Пробую так. Добавил поле в запрос КоличествоГрупп: ВЫБОР КОГДА ПродажиОбороты.СтоимостьОборот > 0 ТОГДА 1 ИНАЧЕ 0 КОНЕЦ Но выводит кол-во в разрезе номенклатуры, а не контрагентов. |
|||
2
mr_K
07.02.14
✎
13:00
|
||||
3
Sharmon
07.02.14
✎
13:03
|
Спасибо. Не совсем то, что нужно.
|
|||
4
andreymongol82
07.02.14
✎
13:03
|
Самый простой вариант в лоб. Первая временная таблица - считаешь контрагентов. Вторая выбираешь по всем разрезам. Основной запрос - вторая таблица левим соединением к первым.
|
|||
5
Sharmon
07.02.14
✎
13:05
|
попробую. спасибо
|
|||
6
Sharmon
07.02.14
✎
13:18
|
Такой вариант тоже не прошел. Все равно возвращается количество в разрезе номенклатуры (
|
|||
7
andreymongol82
07.02.14
✎
13:27
|
А можно весь запрос показать?
|
|||
8
Sharmon
07.02.14
✎
13:28
|
Запрос сейчас такой:
ВЫБРАТЬ Контрагенты.Ссылка, КОЛИЧЕСТВО(РАЗЛИЧНЫЕ 1) КАК Количество ПОМЕСТИТЬ Контрагенты ИЗ Справочник.Контрагенты КАК Контрагенты СГРУППИРОВАТЬ ПО Контрагенты.Ссылка ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ПродажиОбороты.Номенклатура.НоменклатурнаяГруппа КАК НоменклатурнаяГруппа, ПродажиОбороты.ХарактеристикаНоменклатуры, ПродажиОбороты.ЗаказПокупателя, ПродажиОбороты.ДоговорКонтрагента, ПродажиОбороты.ДокументПродажи, ПродажиОбороты.Подразделение, ПродажиОбороты.Проект, ПродажиОбороты.Организация, ПродажиОбороты.Контрагент, ПродажиОбороты.КоличествоОборот, ПродажиОбороты.СтоимостьОборот, ПродажиОбороты.СтоимостьБезСкидокОборот, ПродажиОбороты.НДСОборот, ПродажиОбороты.Период КАК Месяц, ПродажиОбороты.КоличествоОборот * ПродажиОбороты.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / ПродажиОбороты.Номенклатура.ЕдиницаДляОтчетов.Коэффициент КАК КоличествоЕдиницОтчетов, ПродажиОбороты.КоличествоОборот * ПродажиОбороты.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент КАК КоличествоБазовыхЕдиниц, ВЫБОР КОГДА ПродажиОбороты.СтоимостьБезСкидокОборот = 0 ТОГДА 0 ИНАЧЕ (ПродажиОбороты.СтоимостьБезСкидокОборот - ПродажиОбороты.СтоимостьОборот) / ПродажиОбороты.СтоимостьБезСкидокОборот * 100 КОНЕЦ КАК ПроцентСкидки, ПродажиОбороты.СтоимостьБезСкидокОборот - ПродажиОбороты.СтоимостьОборот КАК СуммаСкидки, ВЫБОР КОГДА ПродажиОбороты.СтоимостьОборот > 0 ТОГДА 1 ИНАЧЕ 0 КОНЕЦ КАК КоличествоГрупп, КОЛИЧЕСТВО(1) КАК Поле1, Контрагенты.Количество, ПродажиОбороты.Номенклатура ИЗ РегистрНакопления.Продажи.Обороты(, , Месяц, ) КАК ПродажиОбороты ЛЕВОЕ СОЕДИНЕНИЕ Контрагенты КАК Контрагенты ПО (Контрагенты.Ссылка = ПродажиОбороты.Контрагент.Ссылка) СГРУППИРОВАТЬ ПО ПродажиОбороты.Контрагент, ПродажиОбороты.ХарактеристикаНоменклатуры, ПродажиОбороты.ЗаказПокупателя, ПродажиОбороты.ДоговорКонтрагента, ПродажиОбороты.ДокументПродажи, ПродажиОбороты.Подразделение, ПродажиОбороты.Проект, ПродажиОбороты.Организация, ПродажиОбороты.КоличествоОборот, ПродажиОбороты.СтоимостьОборот, ПродажиОбороты.СтоимостьБезСкидокОборот, ПродажиОбороты.НДСОборот, ПродажиОбороты.Период, ПродажиОбороты.КоличествоОборот * ПродажиОбороты.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / ПродажиОбороты.Номенклатура.ЕдиницаДляОтчетов.Коэффициент, ПродажиОбороты.КоличествоОборот * ПродажиОбороты.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент, ПродажиОбороты.Номенклатура.НоменклатурнаяГруппа, Контрагенты.Количество, ПродажиОбороты.Номенклатура |
|||
9
1Сергей
07.02.14
✎
13:29
|
Количество(ПродажиОбороты.Контрагент) КАК счетчик
|
|||
10
Sharmon
07.02.14
✎
13:30
|
3 поля возвращают одно и то же (неверно):
КоличествоГрупп, Поле1, Контрагенты.Количество, Все возвращают в разрезе номенклатуры (даже когда я ее не вывожу) |
|||
11
andreymongol82
07.02.14
✎
13:41
|
В итоге нужно все-таки вывести количество контрагентов всего? Или же в каких-то разрезах?
|
|||
12
Sharmon
07.02.14
✎
13:47
|
(9) - то же самое что и мои поля.
Запрос теперь такой: ВЫБРАТЬ ПродажиОбороты.Номенклатура.НоменклатурнаяГруппа КАК НоменклатурнаяГруппа, ПродажиОбороты.ХарактеристикаНоменклатуры, ПродажиОбороты.ЗаказПокупателя, ПродажиОбороты.ДоговорКонтрагента, ПродажиОбороты.ДокументПродажи, ПродажиОбороты.Подразделение, ПродажиОбороты.Проект, ПродажиОбороты.Организация, ПродажиОбороты.Контрагент, ПродажиОбороты.КоличествоОборот, ПродажиОбороты.СтоимостьОборот, ПродажиОбороты.СтоимостьБезСкидокОборот, ПродажиОбороты.НДСОборот, ПродажиОбороты.Период КАК Месяц, ПродажиОбороты.КоличествоОборот * ПродажиОбороты.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / ПродажиОбороты.Номенклатура.ЕдиницаДляОтчетов.Коэффициент КАК КоличествоЕдиницОтчетов, ПродажиОбороты.КоличествоОборот * ПродажиОбороты.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент КАК КоличествоБазовыхЕдиниц, ВЫБОР КОГДА ПродажиОбороты.СтоимостьБезСкидокОборот = 0 ТОГДА 0 ИНАЧЕ (ПродажиОбороты.СтоимостьБезСкидокОборот - ПродажиОбороты.СтоимостьОборот) / ПродажиОбороты.СтоимостьБезСкидокОборот * 100 КОНЕЦ КАК ПроцентСкидки, ПродажиОбороты.СтоимостьБезСкидокОборот - ПродажиОбороты.СтоимостьОборот КАК СуммаСкидки, ВЫБОР КОГДА ПродажиОбороты.СтоимостьОборот > 0 ТОГДА 1 ИНАЧЕ 0 КОНЕЦ КАК КоличествоГрупп, КОЛИЧЕСТВО(ПродажиОбороты.Контрагент) КАК Счетчик, ПродажиОбороты.Номенклатура ИЗ РегистрНакопления.Продажи.Обороты(, , Месяц, ) КАК ПродажиОбороты СГРУППИРОВАТЬ ПО ПродажиОбороты.Контрагент, ПродажиОбороты.ХарактеристикаНоменклатуры, ПродажиОбороты.ЗаказПокупателя, ПродажиОбороты.ДоговорКонтрагента, ПродажиОбороты.ДокументПродажи, ПродажиОбороты.Подразделение, ПродажиОбороты.Проект, ПродажиОбороты.Организация, ПродажиОбороты.КоличествоОборот, ПродажиОбороты.СтоимостьОборот, ПродажиОбороты.СтоимостьБезСкидокОборот, ПродажиОбороты.НДСОборот, ПродажиОбороты.Период, ПродажиОбороты.КоличествоОборот * ПродажиОбороты.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / ПродажиОбороты.Номенклатура.ЕдиницаДляОтчетов.Коэффициент, ПродажиОбороты.КоличествоОборот * ПродажиОбороты.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент, ПродажиОбороты.Номенклатура.НоменклатурнаяГруппа, ПродажиОбороты.Номенклатура |
|||
13
Sharmon
07.02.14
✎
13:52
|
Вот отчет по последнему запросу:
http://i33.fastpic.ru/big/2014/0207/01/36f151afcf3d7451b6d738fe4afa6a01.jpg |
|||
14
Sharmon
07.02.14
✎
13:54
|
Там где цифры 2, 3 и т.д. должно быть везде 1.
|
|||
15
andreymongol82
07.02.14
✎
13:57
|
Картинка недоступна.
|
|||
16
Sharmon
07.02.14
✎
13:58
|
||||
17
andreymongol82
07.02.14
✎
14:20
|
Вот у меня и в консоле и в скд все время единички
Мож где-то не так написал. http://files.mail.ru/51CCF15E84F64CC190A7B82C05EBE95D Правда, там условие не на >0, а на > 100, но вряд ли из-за этого ) |
|||
18
Sharmon
07.02.14
✎
14:28
|
Если нет группировки, то и будут единицы. Т.е. если выводится номенклатура - все нормально. Но у меня группировка по:
Контрагент.ТорговыйАгент Период Контрагент Т.е. я не вывожу детализацию по номенклатуре. |
|||
19
Sharmon
07.02.14
✎
14:30
|
Вот у меня отчет с такими настройками:
http://files.mail.ru/EA00C13AE3DB495C8BC688A77E3C383F |
|||
20
Sharmon
07.02.14
✎
14:32
|
Прошу прощения. Не тот отчет. Вот правильный:
http://files.mail.ru/E1823AB4BC0541D8816F617A353949CC |
|||
21
butterbean
07.02.14
✎
14:49
|
хз как через настройки СКД, а в запросе можно так:
ВЫБРАТЬ Влож.Контрагент.ТорговыйАгент КАК ТорговыйАгент, КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Влож.Контрагент) КАК Поле1 ПОМЕСТИТЬ Табл ИЗ (ВЫБРАТЬ Продажи.Контрагент КАК Контрагент ИЗ РегистрНакопления.Продажи.Обороты КАК Продажи СГРУППИРОВАТЬ ПО ДвиженияДенежныхСредствОбороты.Контрагент ИМЕЮЩИЕ СУММА(Продажи.СуммаОборот) > 0) КАК Влож СГРУППИРОВАТЬ ПО Влож.Организация ; ВЫБРАТЬ *,Табл.ТорговыйАгент,Табл.Поле1 ИЗ РегистрНакопления.Продажи.Обороты КАК Продажи ЛЕВОЕ СОЕДИНЕНИЕ Табл По Контрагент.ТорговыйАгент = Табл.ТорговыйАгент и потом в ресурсах СКД по полю Поле1 сделать МАКСИМУМ(Поле1) по группировке ТорговыйАгент |
|||
22
Sharmon
07.02.14
✎
14:55
|
(21) что-то какой-то нерабочий код. Можете полный текст запроса выложить?
|
|||
23
Sharmon
07.02.14
✎
15:30
|
Вобщем рабочее решение такое.
В Ресурсах СКД добавил реквизит "Счетчик", который вычисляется по след. выражению: Сумма(МАССИВ (ТаблицаЗначений( Различные Счетчик, Контрагент))) И все красиво как надо: http://i60.fastpic.ru/big/2014/0207/3d/2b31bf20e7c319e1e7bcaa3b6401f13d.jpg И даже если детализацию включить по номенклатуре, то же почти корректно (с логической точки зрения): http://i60.fastpic.ru/http://i60.fastpic.ru/big/2014/0207/aa/9afff73ae89de8825d68b5b5abad13aa.jpg |
|||
24
Sharmon
07.02.14
✎
15:42
|
Сам счетчик получаю из запроса след образом:
Количество(ПродажиОбороты.Контрагент) КАК счетчик |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |