Имя: Пароль:
1C
1С v8
Расчет среднего значения итогов в запросе
,
0 mrmurza
 
15.07.11
16:33
Нужно что бы в группировках отчета выводилось среднее значение детальных записей. В запросе, в итогах делаю "Среднее(Наценка)". И все вроде хорошо, но нужно добиться того, чтоб те записи, в которых значение ноль, не учитывались при расчете среднего значения итога. Возможно так сделать? А то получается, что если у нас 4 записи со значениями 1,2,3,0, то средняя расчитывается как 6/4, а мне нужно чтоб было 6/3 (так как четвертое значений пустое)
1 73
 
15.07.11
16:34
Замени нули NULL-ами
2 mrmurza
 
15.07.11
16:40
(1)Сделал. Не помогло.
3 Икогнито
 
15.07.11
16:41
(2) а где сделал?
4 mrmurza
 
15.07.11
16:42
(3) ВЫБОР
   КОГДА ВложенныйЗапрос.Цена = 0
       ТОГДА NULL
   ИНАЧЕ (ВЫБОР
           КОГДА ЗапросПоВзаиморасчетам.КоличествоРасход = 0
               ТОГДА NULL
           ИНАЧЕ ЗапросПоВзаиморасчетам.СуммаРасход / ЗапросПоВзаиморасчетам.КоличествоРасход
       КОНЕЦ / ВложенныйЗапрос.Цена - 1) * 100
КОНЕЦ
5 73
 
15.07.11
16:43
Итоги покажи

ЗЫ. СРЕДНЕЕ нужно по такой же конструкции...
6 mrmurza
 
15.07.11
16:46
ИТОГИ
   СРЕДНЕЕ(Процент)
ПО
   ОБЩИЕ,
   Номенклатура
7 mrmurza
 
15.07.11
16:47
не понял про конструкцию в итогах...
8 73
 
15.07.11
16:51
(4) А если ЗапросПоВзаиморасчетам.СуммаРасход = 0 ?
9 73
 
15.07.11
16:52
(7) Не видно к чему СРЕДНЕЕ применяешь.
10 Икогнито
 
15.07.11
16:54
весь запрос покажи
11 mrmurza
 
15.07.11
16:55
(8) ага, понял. сейчас попробую.
(9)кусочек запроса из (4) это и есть поле "Процент"
12 mrmurza
 
15.07.11
16:57
ВЫБРАТЬ РАЗРЕШЕННЫЕ
   ЗапросПоВзаиморасчетам.Организация КАК Организация,
   ПРЕДСТАВЛЕНИЕ(ЗапросПоВзаиморасчетам.Организация) КАК ОрганизацияПредставление,
   ЗапросПоВзаиморасчетам.Контрагент КАК Контрагент,
   ПРЕДСТАВЛЕНИЕ(ЗапросПоВзаиморасчетам.Контрагент) КАК КонтрагентПредставление,
   ЗапросПоВзаиморасчетам.ДоговорКонтрагента КАК ДоговорКонтрагента,
   ПРЕДСТАВЛЕНИЕ(ЗапросПоВзаиморасчетам.ДоговорКонтрагента) КАК ДоговорКонтрагентаПредставление,
   ЗапросПоВзаиморасчетам.ДокументСделка КАК ДокументСделка,
   ПРЕДСТАВЛЕНИЕ(ЗапросПоВзаиморасчетам.ДокументСделка) КАК ДокументСделкаПредставление,
   ЗапросПоВзаиморасчетам.Номенклатура КАК Номенклатура,
   ПРЕДСТАВЛЕНИЕ(ЗапросПоВзаиморасчетам.Номенклатура) КАК НоменклатураПредставление,
   ЗапросПоВзаиморасчетам.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
   ПРЕДСТАВЛЕНИЕ(ЗапросПоВзаиморасчетам.ХарактеристикаНоменклатуры) КАК ХарактеристикаНоменклатурыПредставление,
   ЗапросПоВзаиморасчетам.ДокументДвижения КАК ДокументДвижения,
   ПРЕДСТАВЛЕНИЕ(ЗапросПоВзаиморасчетам.ДокументДвижения) КАК ДокументДвиженияПредставление,
   ЗапросПоВзаиморасчетам.СуммаНачальныйДолг КАК СуммаНачальныйДолг,
   ЗапросПоВзаиморасчетам.СуммаКонечныйДолг КАК СуммаКонечныйДолг,
   ЗапросПоВзаиморасчетам.СуммаПриход КАК СуммаПриход,
   ЗапросПоВзаиморасчетам.СуммаРасход КАК СуммаРасход,
   ЗапросПоВзаиморасчетам.СуммаОплаченоДеб КАК СуммаОплаченоДеб,
   ЗапросПоВзаиморасчетам.СуммаОплаченоКред КАК СуммаОплаченоКред,
   ЗапросПоВзаиморасчетам.КоличествоПриход КАК КоличествоПриход,
   ЗапросПоВзаиморасчетам.КоличествоРасход КАК КоличествоРасход,
   ЗапросПоВзаиморасчетам.КоличествоЕдиницДляОтчетовПриход КАК КоличествоЕдиницДляОтчетовПриход,
   ЗапросПоВзаиморасчетам.КоличествоЕдиницДляОтчетовРасход КАК КоличествоЕдиницДляОтчетовРасход,
   ВЫБОР
       КОГДА ЗапросПоВзаиморасчетам.КоличествоПриход = 0
           ТОГДА 0
       ИНАЧЕ ЗапросПоВзаиморасчетам.СуммаПриход / ЗапросПоВзаиморасчетам.КоличествоПриход
   КОНЕЦ КАК ЦенаПриход,
   ВЫБОР
       КОГДА ЗапросПоВзаиморасчетам.КоличествоРасход = 0
           ТОГДА 0
       ИНАЧЕ ЗапросПоВзаиморасчетам.СуммаРасход / ЗапросПоВзаиморасчетам.КоличествоРасход
   КОНЕЦ КАК ЦенаРасход,
   (ВЫБОР
       КОГДА ЗапросПоВзаиморасчетам.КоличествоРасход = 0
           ТОГДА 0
       ИНАЧЕ ЗапросПоВзаиморасчетам.СуммаРасход / ЗапросПоВзаиморасчетам.КоличествоРасход
   КОНЕЦ - ВЫБОР
       КОГДА ВложенныйЗапрос.Цена = 0
           ТОГДА ВЫБОР
                   КОГДА ЗапросПоВзаиморасчетам.КоличествоРасход = 0
                       ТОГДА 0
                   ИНАЧЕ ЗапросПоВзаиморасчетам.СуммаРасход / ЗапросПоВзаиморасчетам.КоличествоРасход
               КОНЕЦ
       ИНАЧЕ ВложенныйЗапрос.Цена
   КОНЕЦ) * ЗапросПоВзаиморасчетам.КоличествоРасход КАК Прибыль,
   ВложенныйЗапрос.Цена КАК ЦенаОтпускная,
   ВЫБОР
       КОГДА ВложенныйЗапрос.Цена = 0
           ТОГДА NULL
       ИНАЧЕ (ВЫБОР
               КОГДА ЗапросПоВзаиморасчетам.КоличествоРасход = 0
                   ТОГДА NULL
               ИНАЧЕ ЗапросПоВзаиморасчетам.СуммаРасход / ЗапросПоВзаиморасчетам.КоличествоРасход
           КОНЕЦ / ВложенныйЗапрос.Цена - 1) * 100
   КОНЕЦ КАК Процент
{ВЫБРАТЬ
   Организация.*,
   Контрагент.*,
   ДоговорКонтрагента.*,
   ДокументСделка.*,
   Номенклатура.*,
   ХарактеристикаНоменклатуры.*,
   ДокументДвижения.*,
   СуммаНачальныйДолг,
   СуммаКонечныйДолг,
   СуммаПриход,
   СуммаРасход,
   СуммаОплаченоДеб,
   СуммаОплаченоКред,
   КоличествоПриход,
   КоличествоРасход,
   КоличествоЕдиницДляОтчетовПриход,
   КоличествоЕдиницДляОтчетовРасход,
   ЦенаПриход,
   ЦенаРасход,
   Прибыль,
   ЦенаОтпускная,
   Процент}
ИЗ
   (ВЫБРАТЬ
       ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Организация КАК Организация,
       ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Контрагент КАК Контрагент,
       ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента КАК ДоговорКонтрагента,
       ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Сделка КАК ДокументСделка,
       NULL КАК Номенклатура,
       NULL КАК ХарактеристикаНоменклатуры,
       NULL КАК ДокументДвижения,
       ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаУпрНачальныйОстаток КАК СуммаНачальныйДолг,
       ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаУпрКонечныйОстаток КАК СуммаКонечныйДолг,
       0 КАК СуммаПриход,
       0 КАК СуммаРасход,
       0 КАК СуммаОплаченоДеб,
       0 КАК СуммаОплаченоКред,
       0 КАК КоличествоПриход,
       0 КАК КоличествоРасход,
       0 КАК КоличествоЕдиницДляОтчетовПриход,
       0 КАК КоличествоЕдиницДляОтчетовРасход
   ИЗ
       РегистрНакопления.ВзаиморасчетыСКонтрагентами.ОстаткиИОбороты(&ДатаНач, &ДатаКон, Регистратор {(&Периодичность)}, , {(ДоговорКонтрагента.Организация).* КАК Организация, (ДоговорКонтрагента.Владелец).* КАК Контрагент, (ДоговорКонтрагента).* КАК ДоговорКонтрагента, (Сделка).* КАК ДокументСделка}) КАК ВзаиморасчетыСКонтрагентамиОстаткиИОбороты
   
   ОБЪЕДИНИТЬ ВСЕ
   
   ВЫБРАТЬ
       ЗакупкиОбороты.Организация,
       ЗакупкиОбороты.Контрагент,
       ЗакупкиОбороты.ДоговорКонтрагента,
       ЗакупкиОбороты.ЗаказПоставщику,
       ЗакупкиОбороты.Номенклатура,
       ЗакупкиОбороты.ХарактеристикаНоменклатуры,
       ЗакупкиОбороты.ДокументЗакупки,
       0,
       0,
       ЗакупкиОбороты.СтоимостьОборот,
       0,
       0,
       0,
       ЗакупкиОбороты.КоличествоОборот,
       0,
       ВЫБОР
           КОГДА ЗакупкиОбороты.Номенклатура.ЕдиницаДляОтчетов.Коэффициент = 0
               ТОГДА 0
           ИНАЧЕ ЗакупкиОбороты.КоличествоОборот * ЗакупкиОбороты.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / ЗакупкиОбороты.Номенклатура.ЕдиницаДляОтчетов.Коэффициент
       КОНЕЦ,
       0
   ИЗ
       РегистрНакопления.Закупки.Обороты(&ДатаНач, &ДатаКон, Регистратор {(&Периодичность)}, СтатусПартии = &ТоварКупленный {(Организация).* КАК Организация, (Контрагент).* КАК Контрагент, (ДоговорКонтрагента).* КАК ДоговорКонтрагента, (ЗаказПоставщику).* КАК ДокументСделка, (Номенклатура).* КАК Номенклатура, (ХарактеристикаНоменклатуры).* КАК ХарактеристикаНоменклатуры, (ДокументЗакупки).* КАК ДокументДвижения}) КАК ЗакупкиОбороты
   
   ОБЪЕДИНИТЬ ВСЕ
   
   ВЫБРАТЬ
       ПродажиОбороты.Организация,
       ПродажиОбороты.Контрагент,
       ПродажиОбороты.ДоговорКонтрагента,
       ПродажиОбороты.ЗаказПокупателя,
       ПродажиОбороты.Номенклатура,
       ПродажиОбороты.ХарактеристикаНоменклатуры,
       ПродажиОбороты.ДокументПродажи,
       0,
       0,
       0,
       ПродажиОбороты.СтоимостьОборот,
       0,
       0,
       0,
       ПродажиОбороты.КоличествоОборот,
       0,
       ПродажиОбороты.КоличествоОборот * ПродажиОбороты.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / ПродажиОбороты.Номенклатура.ЕдиницаДляОтчетов.Коэффициент
   ИЗ
       РегистрНакопления.Продажи.Обороты(&ДатаНач, &ДатаКон, Регистратор {(&Периодичность)}, {(Организация).* КАК Организация, (Контрагент).* КАК Контрагент, (ДоговорКонтрагента).* КАК ДоговорКонтрагента, (ЗаказПокупателя).* КАК ДокументСделка, (Номенклатура).* КАК Номенклатура, (ХарактеристикаНоменклатуры).* КАК ХарактеристикаНоменклатуры, (ДокументПродажи).* КАК ДокументДвижения}) КАК ПродажиОбороты
   
   ОБЪЕДИНИТЬ ВСЕ
   
   ВЫБРАТЬ
       ДвиженияДенежныхСредств.Организация,
       ВЫРАЗИТЬ(ДвиженияДенежныхСредств.Контрагент КАК Справочник.Контрагенты),
       ДвиженияДенежныхСредств.ДоговорКонтрагента,
       ДвиженияДенежныхСредств.Сделка,
       NULL,
       NULL,
       ДвиженияДенежныхСредств.ДокументДвижения,
       0,
       0,
       0,
       0,
       ВЫБОР
           КОГДА ДвиженияДенежныхСредств.ПриходРасход = ЗНАЧЕНИЕ(Перечисление.ВидыДвиженийПриходРасход.Приход)
               ТОГДА ДвиженияДенежныхСредств.СуммаУпрОборот
           ИНАЧЕ 0
       КОНЕЦ,
       ВЫБОР
           КОГДА ДвиженияДенежныхСредств.ПриходРасход = ЗНАЧЕНИЕ(Перечисление.ВидыДвиженийПриходРасход.Расход)
               ТОГДА ДвиженияДенежныхСредств.СуммаУпрОборот
           ИНАЧЕ 0
       КОНЕЦ,
       0,
       0,
       0,
       0
   ИЗ
       РегистрНакопления.ДвиженияДенежныхСредств.Обороты(&ДатаНач, &ДатаКон, Регистратор {(&Периодичность)}, {(ДоговорКонтрагента.Организация).* КАК Организация, (ВЫРАЗИТЬ(ДоговорКонтрагента.Владелец КАК Справочник.Контрагенты)).* КАК Контрагент, (ДоговорКонтрагента).* КАК ДоговорКонтрагента, (Сделка).* КАК ДокументСделка}) КАК ДвиженияДенежныхСредств
   {ГДЕ
       ДвиженияДенежныхСредств.Регистратор.* КАК ДокументДвижения}) КАК ЗапросПоВзаиморасчетам
       ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
           ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
           ЦеныНоменклатурыСрезПоследних.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
           ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Цена
       ИЗ
           РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаКон, ТипЦен = &ТипЦен) КАК ЦеныНоменклатурыСрезПоследних) КАК ВложенныйЗапрос
       ПО ЗапросПоВзаиморасчетам.Номенклатура = ВложенныйЗапрос.Номенклатура
           И ЗапросПоВзаиморасчетам.ХарактеристикаНоменклатуры = ВложенныйЗапрос.ХарактеристикаНоменклатуры
{ГДЕ
   ЗапросПоВзаиморасчетам.Организация.* КАК Организация,
   ЗапросПоВзаиморасчетам.Контрагент.* КАК Контрагент,
   ЗапросПоВзаиморасчетам.ДоговорКонтрагента.* КАК ДоговорКонтрагента,
   ЗапросПоВзаиморасчетам.ДокументСделка.* КАК ДокументСделка,
   ЗапросПоВзаиморасчетам.Номенклатура.* КАК Номенклатура,
   ЗапросПоВзаиморасчетам.ХарактеристикаНоменклатуры.* КАК ХарактеристикаНоменклатуры,
   ЗапросПоВзаиморасчетам.ДокументДвижения.* КАК ДокументДвижения,
   ЗапросПоВзаиморасчетам.СуммаНачальныйДолг КАК СуммаНачальныйДолг,
   ЗапросПоВзаиморасчетам.СуммаКонечныйДолг КАК СуммаКонечныйДолг,
   ЗапросПоВзаиморасчетам.СуммаПриход КАК СуммаПриход,
   ЗапросПоВзаиморасчетам.СуммаРасход КАК СуммаРасход,
   ЗапросПоВзаиморасчетам.СуммаОплаченоДеб КАК СуммаОплаченоДеб,
   ЗапросПоВзаиморасчетам.СуммаОплаченоКред КАК СуммаОплаченоКред,
   ЗапросПоВзаиморасчетам.КоличествоПриход КАК КоличествоПриход,
   ЗапросПоВзаиморасчетам.КоличествоРасход КАК КоличествоРасход,
   ЗапросПоВзаиморасчетам.КоличествоЕдиницДляОтчетовПриход КАК КоличествоЕдиницДляОтчетовПриход,
   ЗапросПоВзаиморасчетам.КоличествоЕдиницДляОтчетовРасход КАК КоличествоЕдиницДляОтчетовРасход,
   (ВЫБОР
           КОГДА ЗапросПоВзаиморасчетам.КоличествоПриход = 0
               ТОГДА 0
           ИНАЧЕ ЗапросПоВзаиморасчетам.СуммаПриход / ЗапросПоВзаиморасчетам.КоличествоПриход
       КОНЕЦ) КАК ЦенаПриход,
   (ВЫБОР
           КОГДА ЗапросПоВзаиморасчетам.КоличествоРасход = 0
               ТОГДА 0
           ИНАЧЕ ЗапросПоВзаиморасчетам.СуммаРасход / ЗапросПоВзаиморасчетам.КоличествоРасход
       КОНЕЦ) КАК ЦенаРасход}
{УПОРЯДОЧИТЬ ПО
   Организация.*,
   Контрагент.*,
   ДоговорКонтрагента.*,
   ДокументСделка.*,
   Номенклатура.*,
   ХарактеристикаНоменклатуры.*,
   ДокументДвижения.*,
   СуммаНачальныйДолг,
   СуммаКонечныйДолг,
   СуммаПриход,
   СуммаРасход,
   СуммаОплаченоДеб,
   СуммаОплаченоКред,
   КоличествоПриход,
   КоличествоРасход,
   КоличествоЕдиницДляОтчетовПриход,
   КоличествоЕдиницДляОтчетовРасход,
   ЦенаПриход,
   ЦенаРасход,
   Прибыль,
   Процент}
ИТОГИ
   СУММА(СуммаНачальныйДолг),
   СУММА(СуммаКонечныйДолг),
   СУММА(СуммаПриход),
   СУММА(СуммаРасход),
   СУММА(СуммаОплаченоДеб),
   СУММА(СуммаОплаченоКред),
   СУММА(КоличествоПриход),
   СУММА(КоличествоРасход),
   СУММА(КоличествоЕдиницДляОтчетовПриход),
   СУММА(КоличествоЕдиницДляОтчетовРасход),
   ВЫБОР
       КОГДА Номенклатура ЕСТЬ NULL
           ТОГДА 0
       ИНАЧЕ МАКСИМУМ(ЦенаПриход)
   КОНЕЦ КАК ЦенаПриход,
   ВЫБОР
       КОГДА Номенклатура ЕСТЬ NULL
           ТОГДА 0
       ИНАЧЕ СРЕДНЕЕ(ЦенаРасход)
   КОНЕЦ КАК ЦенаРасход,
   СУММА(Прибыль),
   ВЫБОР
       КОГДА Номенклатура ЕСТЬ NULL
           ТОГДА 0
       ИНАЧЕ МАКСИМУМ(ЦенаОтпускная)
   КОНЕЦ КАК ЦенаОтпускная,
   СРЕДНЕЕ(Процент)
ПО
   ОБЩИЕ,
   Номенклатура
{ИТОГИ ПО
   Контрагент.*,
   ДоговорКонтрагента.*,
   Организация.*,
   ДокументСделка.*,
   Номенклатура.*,
   ХарактеристикаНоменклатуры.*,
   ДокументДвижения.*}
13 mrmurza
 
15.07.11
17:14
(1) Спасибо тебе!!! все получилось