СКД и Вычислить() #645412


#0 by fisher
Никогда раньше Вычислить и иже с ними не юзал, а сейчас чую - не обойтись. Только не могу сообразить - как... Нужно следующее. Исходная: допустим, есть оборотный регистр продаж с измерениями подразделение, контрагент, номенклатура и еще десятком других. Нужно посчитать показатель - размер среднего ассортимента, продаваемого контрагентам. Т.е. при любых отборах и группировках посчитать количество проданных номенклатурных позиций (видов номенклатуры!) каждому контрагенту и поделить их суммарное количество на количество контрагентов, которым выполнялась продажа (в диапазоне отчета). Т.е. сколько в среднем видов номенклатуры продали некоему среднему контрагенту. Вот как это посчитать?
#1 by zak555
что за конфа ?
#2 by fisher
Посчитать отдельно количество контрагентов и отдельно количество видов номенклатуры вообще - проблем не вижу. А вот как рассчитать и просуммировать количество видов номенклатуры по контрагентам... Допустим, УТ для Украины.
#3 by Reset
Так это просто одно "среднее" число получается? Вроде так можно (вечер, могу тупить): Выбрать Контрагент, Количество(Продажи.Номенклатура) Как Колич Поместить ПоКонтрагентам Из РН.Обороты(&БлаБлаОтборы) как Продажи Группировать по Контрагент ;
#4 by Noroving
В СКД выводиш отдельно итоги для контрагентов и общие, не вижу проблемы..
#5 by Noroving
хотя тут достаточно даже одного ресурсового поля для всех групировок и общего итога
#6 by Noroving
Количество(Номенклатура)/Количество(Контрагент)
#7 by fisher
Это всего лишь один из показателей большого отчета. Т.е. задачу нужно решить минимальным вмешательством в базовый запрос. В идеале - на уровне вычисляемых полей и ресурсов СКД. Еще раз. Этот показатель должен рассчитываться вне зависимости от настроек группировок отчета. Т.е, допустим, пользователь выбрал группировку по подразделениям. А показатель должен отобразить ассортимент средней покупательской корзины по продажам этого подразделения. Этот показатель не имеет смысла. Что показывает отношение общего количества видов номенклатуры к общему количеству контрагентов? Мне нужно другое. Что именно - вроде как достаточно подробно описал.
#8 by Noroving
Вычисляемое поле (СреднееКолВоПоКонтрагенту) и уже его используеш в итогах
#9 by Noroving
сори..без полной видимой картины сложносудить... со скрином было бы легче
#10 by fisher
Сочувствую :) Мои "объяснятельские" способности исчерпаны. В сабже исчерпывающая формулировка, ИМХО.
#11 by dk
недавно считал среднее кол-во товаров в чеке в принципе в все верно можно Количество(Различные Товар) ----- ты приведи пример на 5-10 строк исходных и что получить хочешь
#12 by Reset
как я понял из , - неверно. Если имеем 2 номенклатуры и 5 клиентов, при этом 4е клиент покупают всегда только 1у, а пятый только другую, результат должен быть 1, а не 2/5
#13 by dk
т.е. нужен не общий ассортимент а "средний" ассортимент по каждому клиент? Тоже не проблема - точно также считаем ассортимент по каждому клиенту отдельно
#14 by fisher
Именно. Нужно как бы получить сумму Количество(Различные Товар) по группировке "Контрагент" и поделить на количество контрагентов. Проблема в том, что считать это надо при любых настройках отчета (группировки выбирает пользователь).
#15 by dk
типа
#16 by dk
тока подумать чтобы сюда не накладывались фильтры по товару и контрагентам и другие
#17 by dk
ну и группировку по клиенту забыл во Влож2
#18 by Reset
Отдельно не проблема посчитать (см ) ТСу нужно это как то встроить в существующий запрос, чтобы работало "при любых настройках отчета". Я к сожалению в СКД профан
#19 by fisher
Есть у меня одна безумно извратная идея на самый крайний случай... Но мне кажется, что можно как-то через Вычислить сделать. Вроде ж для подобных вещей сделано, как мне казалось. Только я с ним никак не подружусь. На все мои потуги СКД ошибки сыпет... "Не могу мол такое посчитать и всё тут"
#20 by Noroving
Вычислить не для этого предназначено) Вот этот вариант из Вычисляемым полем тебе поможет. В запросы ничего пихать не нужно.. это ж СКД
#21 by fisher
Не помог. Мы друг-друга не понимаем.
#22 by Prince
ЕстьNull(Номенклатура)/ЕстьNull(Количество(Различные Контрагент)) - в вычисляемых полях
#23 by Prince
Если работаешь с итогами, тогда Вычислить("Сумма(реквизит)", "ОбщийИтог")
#24 by Noroving
А теперь забудь все что я писал))
#25 by y22-k
Исходя из того что ты написал в он тебе все правильно написал ты походу тупишь
#26 by Noroving
Для общего итога - Ресурс - Вычислить(Количество(Номенклатура),"Контрагент")/Количество(Контрагент) - чтото вроди того)) нет я писал не правельно...
#27 by Noroving
или даже так Создаеш вычисляемое поле КолПоКонтрагенту(Количество(Различные Номенклатура)) а потом в Общем итоге Вычислить(Сумма(КолПоКонтрагенту), "Контрагент")/Количество("Контрагент").
#28 by Prince
В СКД это не прокатит- Вычислить(Сумма(КолПоКонтрагенту), это не ресурс а агрегатный объект
#29 by Noroving
должно получится, когдато я с этим игрался .... Выведи "КолПоКонтрагенту" в ресурсы по группировке "Контрагент"
#30 by y22-k
Если Он хочет посмотреть сколько номенклатуры продавалось контрагенту - Количество(различные номенклатура) а если он хочет посчитать какая доля то Количество(различные номенклатура)/Вычислить(Количество (различные контрагент), "Общий итог ")  - как-то так
#31 by fisher
Вооот! Что-то в этом духе я и пробую. Но когда я пытаюсь что угодно Вычислить по "Контрагент" в ресурсе - ошибку валит. Щаз еще на свежую голову буду экспериментировать.
#32 by Prince
ЕстьNull(Количество(различные номенклатура))/ЕстьNull(Вычислить(Количество (различные контрагент), "Общий итог ")) - в вычисляемых полях . Ошибок не будет.
#33 by Prince
Ошибки валят потому что, Контрагент и Номенклатура являются агрегатными объектами а не ресурсами.
#34 by Axel2009
а что, ваще не работает в ресурсе задать что надо? ВЫБРАТЬ Номенклатура, Контрагент ИЗ РегистрНакопления.Продажи выч.поле СредОб, в значение пусто в ресурсах пишешь КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Номенклатура) / КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Контрагеент)
#35 by Axel2009
вот так вот надо делать <?xml version="1.0" encoding="UTF-8"?>        <query>ВЫБРАТЬ ПЕРВЫЕ 100
#36 by fisher
Кто объяснит разницу между ВЫЧИСЛИТЬ и ВЫЧИСЛИТЬВЫРАЖЕНИЕ? По справке одно и то же, даже примеры одинаковые. ВЫЧИСЛИТЬВЫРАЖЕНИЕ типа более навороченное (тогда непонятно, нафиг ВЫЧИСЛИТЬ нужно?). Короче ВЫЧИСЛИТЬ при любых попытках что-то рассчитать по группировке ошибку валило. Попробовал ВЫЧИСЛИТЬВЫРАЖЕНИЕ - ошибку не валит. Щаз через него попробую сделать. Не. Лень по пятому кругу объяснять.
#37 by Axel2009
тады вот. через ВЫЧИСЛИТЬ <?xml version="1.0" encoding="UTF-8"?>        <query>ВЫБРАТЬ ПЕРВЫЕ 100
#38 by Axel2009
а разница как бы огромна =) Вычислить(<Выражение>, <Группировка>, <ТипРасчета>)
#39 by Axel2009
давай на примерах К1 и К2 В1 В2 В3 связка К1 В1 К2 В3 что должено вывестись на экран при наличии группировок по К В и общий итог? =)
#40 by fisher
Всё, разобрался. Прочитал всё, что удалось раскопать по этим функциям, чуток прояснилось. Короче, в моем случае рулит ВычислитьВыражениеСГруппировкойМассив
#41 by Axel2009
поведай =)
#42 by fisher
Во встроенной справке отсутствует важнейший ньюанс - ВычислитьВыражение юзается для получения данных из вышестоящих группировок. А для моей задачи надо - из нижестоящих.
#43 by fisher
В итоге сабж решается так:
#44 by Noroving
надо запомнить)
#45 by Odavid
>>Во встроенной справке а где вообще такая справка?
#46 by fisher
Конфигуратор - Справка - Содержание справки - Система компоновки данных - Язык выражений системы компоновки данных - Функции языка выражений системы компоновки данных
#47 by Odavid
спасибо. эк они запихали куда столь важную информацию :)
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С