Идет бета-тестирование портала. Об ошибках пишите нам или на форуме.

Распределение суммы по таблице значений

36

Универсальные обработки

29.10.2008 [06.01.2009]

Описание

Внешний отчет, обработка для 1С: Торговля и склад 7.7, 1С: Предприятие 8.1

Варианты "честного" распределения суммы по таблице значений (табличной части)
[03.11.2008] Добавлен вариант 4 (самый "честный")
[09.11.2008] Пример для УТ 8.1
[10.11.2008] Пример для ТиС 7.7
[06.01.2009] Пример для УПП 8.1

Вы, наверное замечали, что при большом количестве строк распределяемая сумма распределяется не "по честному".
В данной обработке приведены несколько методов распределения суммы по таблице значений. При изменении суммы распределения и порядка строк базы можно получать совершенно разные результаты.
Вариант 1. "Стандартный" с отнесенением не распределенных сумм на последнюю строку. Чаще всего встречается в программах 1С.
Вариант 2. "По эффективному остатку". Остаток округления распределяется повторно по новому коэффициенту на столько строк сколько осталось копеек. Пока все остатки не распределятся. При этом выбираются строки с наибольшей базой.
Вариант 3. "С пересчетом базы распределения". Строки сортируются по базе распределения. После распределения по строке уточняется база распределения для последующих строк. Работает сравнительно быстро с учетом объема математики.

[03.11.2008]
Вариант 4. "Статистический". Как мне кажется наиболее точный. Остаток округления распределяется на столько строк сколько осталось копеек. При этом выбираются строки с наибольшей погрешностью в округлении.

Процедурки можно легко прикрутить к любой таблице значений или табличной части. Примеры вызовов внутри.
Для четвертого варианта есть три реализации. По таблице значений, по табличной части, по таблице значений через запросы.

[09.11.2008]
Для 1С:Предприятия 8.1 добавил пример использования в УТ на базе типовой обработки из версии 10.3.6.8. В обработке ОбработкаТабличнойЧастиТовары изменил процедуру РаспределитьСуммуПоКолонке. Исправлены ошибки типовой.

[10.11.2008]
Для 1С:Предприятия 7.7 добавил пример использования в ТиС на базе типовой обработки из версии 7.70.954. В обработке ГрупповаяОбработкаМнЧДокументов изменил функцию РаспределитьСуммуПоКолонке и обработку константы РозничныйТипЦен в процедуре ПересчитатьСтрокуТаблицы. Работает "правильнее" (исправлены ошибки) и быстрее типовой.

[06.01.2009]
Для 1С:Предприятия 8.1 добавил пример использования в УПП на базе типовой обработки из версии 1.2.9.1. В обработке ОбработкаТабличнойЧастиТовары изменил процедуру РаспределитьСуммуПоКолонке. Исправлены ошибки типовой.


Скриншоты


Рис. 2208 .

Скачать

Наименование Размер Скачиваний
517
Доступ
РаспределениеСуммПоТаблицеЗначений.epf 15 kb 325 Зарегистрированные
ОбработкаТабличнойЧастиТовары для УТ 10.3.epf 51 kb 104 Зарегистрированные
ГрупповаяОбработкаМнЧДокументов для ТиС 9.2.zip 24 kb 87 Зарегистрированные
ОбработкаТабличнойЧастиТовары для УПП 1.2.epf 55 kb 1 Зарегистрированные

Оценка сообщества

Плюсы (+36):

, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,


Добавить плюс Добавить минус

Комментарии (7)

1.
+ -
31.10.2008 16:10:04

у меня есть что-то подобное ( при расчете сумм выслуги дается определенная сумма на организацию и надо ее всем распределить, ключая проценты снижения, и разные коэффициенты в зависимости от стажа работы). если интересно могу поделиться

2.
+ -
01.11.2008 16:11:14

у меня тоже, правда для семерки, третий вариант.
http://infostart.ru/profile/8196/projects/840/

3.
+ -
03.11.2008 16:11:54

Добавил еще один вариант. Назвал условно "Статистический". Методика распределения направлена на снижение средней ошибки округления, путем корректировки строк с наибольшей ошибкой (отклонением) при округлении.
Вариант реализации с запросом работает эффективно только при большом количестве строк (более нескольких десятков тысяч).

4.
+ -
04.11.2008 22:11:20

Прикольно. Плюс за постановку вопроса.

5.
+ -
09.11.2008 01:11:19

Добавил пример использования в УТ на базе типовой обработки из версии 10.3.6.8. В обработке ОбработкаТабличнойЧастиТовары изменил процедуру РаспределитьСуммуПоКолонке.
Для использования можно заменить или процедуру РаспределитьСуммуПоКолонке, или целиком обработку ОбработкаТабличнойЧастиТовары.

6.
+ -
10.11.2008 18:11:33

Добавил пример использования в ТиС на базе типовой обработки из версии 7.70.954. В обработке ГрупповаяОбработкаМнЧДокументов изменил функцию РаспределитьСуммуПоКолонке и обработку константы РозничныйТипЦен в процедуре ПересчитатьСтрокуТаблицы.
Для использования можно заменить или процедуру РаспределитьСуммуПоКолонке, или целиком обработку ГрупповаяОбработкаМнЧДокументов.

7.
+ -
06.01.2009 14:01:40

Добавил пример использования в УПП на базе типовой обработки из версии 1.2.9.1. В обработке ОбработкаТабличнойЧастиТовары изменил процедуру РаспределитьСуммуПоКолонке.
Для использования можно заменить целиком обработку ОбработкаТабличнойЧастиТовары или только процедуру РаспределитьСуммуПоКолонке.

Для добавления комментария необходимо зарегистрироваться.
Есть вопросы?
тел. (812) 309-06-46
support@infostart.ru
Обратная связь
Логин :
Пароль :
Забыли пароль?

Статистика

Пользователей: 43867

См. также