|   |   | 
| 
 | Как узнать в запросе количество строк по нужной группировке | ☑ | ||
|---|---|---|---|---|
| 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 | 
        Сам счетчик получаю из запроса след образом:
 Количество(ПродажиОбороты.Контрагент) КАК счетчик | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |