Имя: Пароль:
1C
1С v8
v8: Распределение суммы пропорционально другим суммам в запросе.
0 FoXSkr
 
05.02.12
13:08
Доброго времени суток.
Существует такая задача. Нужно разбить суммы начислений, ИНП, ОПВ, СН и СО по подразделениям (при у словии что сотрудник раза 3 в месяц перемещается из одного в другое подразделение).
Начисления я могу разбить по подразделениям, а вот остальное никак, т.е. остальные данные хранятся в регистре накопления без возможности определить к какому подразделению их отнести.
У меня существует только вариант определить базу для расчета (например ОПВ) и пропорцонально распределить суммы ОПВ.
Вот примерно формула: СуммаОПВ = СуммаОПВОбщая / БазаОПВВсехПодразделений * БазаОПВЭтогоПодразделения
Так вот в чем заключается собственно вопрос: Разумеется при такой форме возникнет проблема при округлении и соответственно общая сумма не пойдет с суммой начисленной на копейки. Как нибедь можно этот момент решить внутри запроса? Я предполагал делать выгрузку в ТЗ и там уже редактировать.
1 Reaper_1c
 
05.02.12
13:19
Можно конечно. Но выгрузить в ТЗ и воспользоваться функцией общего модуля - несказанно проще и понятнее.
2 FoXSkr
 
05.02.12
15:30
(1) И все таки? Может примерно скажите куда копать?
3 Reaper_1c
 
05.02.12
15:33
(2) Пакетный запрос. В нем делаем распределение, отдельно считаем распределенную сумму, потом считаем разницу  между распределением и первоначальной суммой, разницу вешаем на позицию с наибольшей суммой, включаем разницу в результат. На каждый описанный шаг минимум 1 запрос пакета.
4 FoXSkr
 
05.02.12
15:37
(3) Ок, Спс
5 Один С
 
05.02.12
15:42
кстате формула
СуммаОПВ = СуммаОПВОбщая / БазаОПВВсехПодразделений * БазаОПВЭтогоПодразделения
при
СуммаОПВОбщая = 10
БазаОПВВсехПодразделений = 3
БазаОПВЭтогоПодразделения = 3
даст в результате 9,9999
хотя правильный ответ - 10.ну это так, к слову..
6 Reaper_1c
 
05.02.12
15:47
(5) Да он просто на курсах в 1С не был...
7 Поpyчик-4
 
05.02.12
16:55
(0) На ИС есть статья "Честное распределение суммы по таблице значений", может сгодится? В том числе есть вариант с пакетным запросом.
8 Reaper_1c
 
05.02.12
17:17
(7) Вот же любит народ по помойкам шариться. Лучше б на досуге общий модуль "ОбщегоНазначения" перечитали.
9 FoXSkr
 
05.02.12
17:34
(5), (6) Это то понятно что правильнее было бы написать:
СуммаОПВ = БазаОПВЭтогоПодразделения
* СуммаОПВОбщая / БазаОПВВсехПодразделений
Просто я так написал что бы понятно было аудитории.
10 Один С
 
05.02.12
17:54
(9) ну тогда ладно. прощен..
11 Поpyчик-4
 
05.02.12
19:01
(8) Если помойка, тогда какого ... многие некоторые клянчат оттуда обработки? Это же помойка.
12 Один С
 
05.02.12
19:05
(11) я думаю, ключевое слово не "помойка", а "ОбщийМодуль"..
13 Поpyчик-4
 
05.02.12
19:09
(12) Эта процедура общего модуля не совсем корректно работает. На ИС предлагаются несколько фиксенных вариантов.
14 Reaper_1c
 
05.02.12
19:23
(13) Эта функция есть в 2-х вариантах. В УТ 10.3 неправильная. В ЗУПе и БП правильная. В КА и УПП правильный вариант лежит в общем модуле "ОбщегоНазначенияЗК". А всякие еще более правильные варианты (а есть ли они?) потеря времени, от того что оклад платят.
15 DrShad
 
05.02.12
19:30
(14) +100500
поэтому и требует знание типовых а не аккаунт на ИС