Имя: Пароль:
1C
1С v8
Расчет среднего в СКД
,
0 Nuuq
 
18.06.13
11:55
Здравствуйте!
Вопрос про СКД
Есть отчет, который выводит цену за номенклатуру из поступления и реализации. Как в итоге по номенклатуре получить среднюю цену? Агрегатная функция Среднее() суммирует и делит на количество в т.ч. пустых полей
[URL=http://radikal.ru/F/s49.radikal.ru/i125/1306/7d/a759b135dfa9.jpg.html][IMG]http://s49.radikal.ru/i125/1306/7d/a759b135dfa9t.jpg[/IMG][/URL]
1 Nuuq
 
18.06.13
11:56
2 GANR
 
18.06.13
12:03
(0)(1) Ничего не видно на скринах.
3 GANR
 
18.06.13
12:03
4 GANR
 
18.06.13
12:06
Может быть, пользовательские поля могут помочь в настройках компоновки?
5 GANR
 
18.06.13
12:09
6 mistеr
 
18.06.13
12:09
(0) Кто мешает отфильтровать пустые?
7 vicof
 
18.06.13
12:10
ВычислитьВыражениеСГруппировкойМассив(), там условие на пустые детальные записи
8 Nuuq
 
18.06.13
12:18
9 GANR
 
18.06.13
12:24
(9) А покажи схематично на одном скрине, как
1. это есть сейчас
2. как должно быть
Пометки и тексты сделай приблизительно вот так http://ximage.ru/data/imgs/1365604665.jpg.
10 Nuuq
 
18.06.13
12:42
(9) Хочется в итоге поля группировки - Номенклатура получить среднюю цену отдельно по колонке поступления и реализации, т.е. не 15,43... а 28,3. У меня средняя вычисляется вместе с нулевыми полями...
(6) (7) добавил в конструкторе в Вычисляемых полях новое. Как функцией ВычислитьВыражениеСГруппировкойМассив() отсечь нулевые строки?
11 Nuuq
 
18.06.13
13:31
Получилась функция в Вычисляемых полях
ВычислитьВыражениеСГруппировкойТаблицаЗначений (ЦенаПоступления,"Номенклатура",ЕстьNull(ЦенаПоступления,0)>0)
но вычисляет только для итогового поля группировки, далее ошибка "Поле не найдено"...
12 c00Lo
 
18.06.13
13:37
В ресурсах отсекай выражением, думаю так.
13 ИС-2
 
naïve
18.06.13
13:45
В вычисляемых полях и ресурсах должно быть выражение:
сумма(стоимость) / сумма(количество)

Естественно, с защитой от деления на 0.
14 ИС-2
 
naïve
18.06.13
13:46
но 7 мне нравиться больше
15 Nuuq
 
19.06.13
11:23
РЕШЕНО.
в СКД на закладке Ресурсы указываются агрегатные функции обработки данных в "итоги" группировок. Если стандартные функции работают не правильно - можно их удалить (эт я не знал) и написать свой алгоритм... потом его результат попадет в итог группировки
Т.о. чтобы получить среднюю цену в колонке, где есть пустые или нулевые строки на закладке ресурсы удалить стандартную
СРЕДНЕЕ(ЦенаПоступления) и использовать функцию
ВычислитьВыражениеСГруппировкойМассив("Среднее(ЦенаПоступления)","Номенклатура","IsNull(ЦенаПоступления,0)>0")
1 - Выражение
2 - Группировка
3 - Отбор выражений - проверка на нулл и где больше 0
4 - Отбор группировок тут пустая
16 Nuuq
 
19.06.13
23:33
...в дополнение:

функция ВычислитьВыражениеСГруппировкойМассив() возвращает строку - если вычисляется среднее, то результат может получиться дробным в виде 12,4646464646446
Для получения числового выражения нужно так:
Среднее(ВычислитьВыражениеСГруппировкойМассив("Среднее(ЦенаПоступления)","Номенклатура","IsNull(ЦенаПоступления,0)>0"))
Потом выполнить формат ЧД=2
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший