Распределение сумм в запросе пропорционально результатам выборки #616801


#0 by Nikitos
День добрый! Сдается мне что видел такое, но не нашел. Собственно говоря, необходимо распределить некую сумму пропорционально некому набору сумм запросом. Как-то вот такю
#1 by mikecool
в СКД можно вроде
#2 by Nikitos
а вот как?
#3 by andrewks
можно и без СКД. что мешает найти сумму, выбрать и умножить?
#4 by shuhard
неудачники откройте в типовой Валовую прибыль
#5 by Nikitos
Относительно многое. Одно из основных - как и куда деть остаток?
#6 by andrewks
какой остаток?
#7 by Nikitos
например нужно поровну разделить 10 рублей на 3 части...
#8 by shuhard
исключи из распределения первую запись и повесь на неё остаток ладно бы сейчас был 2005 год и нужны бы были подзаппросы, но не сделать этого через ВТ ?
#9 by Maxus43
ЦенаОбщая*КоличествоОбщее/КоличествоЧастное так в запросах постоянно делают в типовых даже
#10 by Jaap Vduul
А если бы не запросом, то куда девал?
#11 by Nikitos
:) итого цена конкретной 1 штуки - 30 руб.
#12 by Nikitos
куда-нибудь кидал
#13 by Maxus43
ну ты понял смысл) в пятницу мозг плывёт уж
#14 by Nikitos
все равно надо как-то последнюю копейку пристраивать
#15 by Nikitos
ну поделись маленько опытом... Дай, так сказать, мастер класс
#16 by Jaap Vduul
Если в запросе строки можно однозначно идентифицировать, то кидай так же.
#17 by Nikitos
не всегда возможно. В том и проблема.
#18 by spu79
а функции Минимум и Максимум в запросах отменили?
#19 by shuhard
[не всегда возможно. В том и проблема.] сказки пример в студию
#20 by andrewks
почему это не всегда? что мешает добавить нужные поля?
#21 by Jaap Vduul
#22 by Nikitos
ВЫБРАТЬ                      ЗаказПоставщику.р_КомплектацияМашины.СтоимостьДоставки                   ИЗ                      И ЗаказПоставщику.НомерВходящегоДокумента В(&НомерВходящегоДокумента) Стоимость доставки нужно распределить пропорционально сумме
#23 by andrewks
каков бюджет?
#24 by Ненавижу 1С
ну если нет уникальности, то не всегда
#25 by Jaap Vduul
Наверняка у р_КомплектацияМашины есть НомерСтроки
#26 by Nikitos
нет. Это всего лишь поле с некой цифрой совершенно в другом документе и не более того
#27 by andrewks
с тебя пример
#28 by ssh2006
в ТЧ товары есть НомерСтроки. Корректируй первую или последнюю строку
#29 by Nikitos
опять же нет. В этой ТЧ присутствует обычно несколько р_КомплектацияМашины
#30 by shuhard
да пофигу номер строки, набор полей выборки образует первичный ключ
#31 by Ненавижу 1С
пронумеруй в запросе таблицу: Поле1 "Вася" "Вася" "Вася"
#32 by Nikitos
и?
#33 by ssh2006
в ТЧ всегда есть НомерСтроки. р_КомплектацияМашины - это у тебя реквизит документа
#34 by Ненавижу 1С
если есть уникальность можно пронумеровать
#35 by Nikitos
не понимаю я что-то по вашему...
#36 by m-serg74
что то не пойму чего с распределения съехали на нумерацию?)))
#37 by ssh2006
в ТЧ всегда есть НомерСтроки.
#38 by Nikitos
при чем здесь вообще НомерСтроки??
#39 by Ненавижу 1С
нумерация позволяет делать красивое распределение
#40 by ssh2006
ВЫБРАТЬ    2 ВЫБРАТЬ    3 ;
#41 by Nikitos
ну не понимаю я как. Ступор какой-то
#42 by m-serg74
ты Гений)))
#43 by m-serg74
мне тоже интересно может пригодится...
#44 by andrewks
если у идентичных строк будет одинаковый номер - это не скажется на распределении
#45 by andrewks
бугага
#46 by Ненавижу 1С
отмазался ))
#47 by Ненавижу 1С
бред какой-то
#48 by ssh2006
Вася пронумерован))
#49 by andrewks
ага ) почему?  решение частного случая. результат-то налицо :)
#50 by Nikitos
круче всех выступил , но никто так ничего и не смог сказать внятного
#51 by shuhard
#55 by andrewks
неужели ты так и ничего не понял?
#56 by Nikitos
да. Это так
#57 by ptiz
ВЫБРАТЬ    "Б",    1 ОБЪЕДИНИТЬ ВЫБРАТЬ    "В",    1 ; ВЫБРАТЬ
#58 by Ненавижу 1С
"Б",    2    "В",    3 ;    Данные1.Объект,
#59 by andrewks
накопительную ошибку округления не учитываешь
#60 by andrewks
на скорую руку так получается (типовые не смотрел)
#61 by Ненавижу 1С
пример данных, где не верно
#62 by andrewks
сумма = 150,250
#63 by shuhard
ВТ убивают искусство подзапросов =)
#64 by Ненавижу 1С
ВЫРАЗИТЬ((&Сумма - (ВЫРАЗИТЬ(ДанныеСНакоплением.БазаНакопления * Итог.Коэффициент КАК ЧИСЛО(15, 3)))) * ДанныеСНакоплением.База / (Итог.СуммаБазы - ДанныеСНакоплением.БазаНакопления) КАК ЧИСЛО(15, 2)) КАК Результат
#65 by Ненавижу 1С
да уж искусство ))
#66 by andrewks
это называется "подгон"
#67 by Ненавижу 1С
да, оно тоже не верно
#68 by Ненавижу 1С
но, имхо, в тоже наверное нарваться на неприятности можно если предельно считать что база у первого 0, то толку от его исключения в отдельную таблицу?
#69 by Ненавижу 1С
+ и что-то мне говорит, что задача запросом 1С 8 не решается в общем случае
#70 by Coldboy
а нельзя, обработать табличную часть, типа 10 руб, есть процоциональн овсем, 10 количество строк, и в каждую строку записать в нужную колонку эту строчку и все?
#71 by andrewks
select top 1 ... where Base>0
#72 by Coldboy
а если в запросе, то использовать, вложенные запросы?
#73 by Coldboy
я эт тебе
#74 by Ненавижу 1С
ну может и так, а может и нет
#75 by shuhard
ни кто же не мешает распределить, найти максимум и выделить его и на выделенную запись зафигачить расхождение, которое может быть и отрицательным
#76 by Ненавижу 1С
фишка в том, чтобы ошибка округления была размазана более менее равномерно по всем, а у тебя на максимальный все вешается
#77 by andrewks
ошибка округления не может быть размазана более менее равномерно по всем, на то она и ошибка округления
#78 by Ненавижу 1С
имел ввиду, чтобы сделать как можно меньше величину (РасчетныйРезультат[1]-ТочныйРезультат[1])^2+...+(РасчетныйРезультат[N]-ТочныйРезультат[N])^2
#79 by Coldboy
а вы щас о чем говорите?
#80 by andrewks
оптимизацией решил заняться? это уже явно не на языке запросов 1с
#81 by shuhard
в типовых вешается на максимальный и я не вижу в этом минусов ты корень извлечь забыл =)
#82 by andrewks
о дисперсии
#83 by anddro
Вот пример функции для распределения без остатка и равномерным распределением погрешности. И как это сделать запросом в 1С? Функция РаспределитьЗначениеПоТаблице(Таблица, ИмяКолонкиБазы, ИмяКолонкиРезультат, Знач РаспределяемаяВеличина, Точность)
#84 by shuhard
что - то в не понятно ?
#85 by andrewks
" и равномерным распределением погрешности"  шо це таке?
#86 by anddro
да, вся погрешность падает на первый по сортировке показатель, даже если в той строке сумма нулевая или минимальная. ты где-то там видишь вычисление погрешности? нет, но и в итоге ее не будет.
#87 by shuhard
нам это известно, вопрос о чём ?
#88 by andrewks
2. распределение погрешности не равномерное, просто дисперсия будет меньше. чтобы минимизировать, нужно отсортировать по базе в начале. и здесь чисто итеративный алгоритм
#89 by anddro
о том, что так ли надо извращаться в данном случае с запросами, если у задачи есть простое решение. Или это просто пятница? да понятно, что не декларативный. Но в языке запросов это сделать гораздо сложнее и те варианты, что приведены - они более ресурсоемкие.
#90 by shuhard
это типовая задача, решаемая во множестве отчётов и выносить её в программный цикл бессмысленно
#91 by Speshuric
Всё можно:    "Б",    1    "В",    1    "Г",    1    "Д",    1    "Е",    1 ;
#92 by anddro
а вот это уже значительно красивее, чем
#93 by andrewks
браво!
#94 by Ненавижу 1С
точно, точно, а я все вспоминал как-же получалось то...
#95 by artbear
закладка1
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

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