Распределение суммы по таблице значений
36Универсальные обработки
Описание
Внешний отчет, обработка для 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. В обработке ОбработкаТабличнойЧастиТовары изменил процедуру РаспределитьСуммуПоКолонке. Исправлены ошибки типовой.
Скриншоты
Скачать
| Наименование | Размер | Скачиваний 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)
у меня тоже, правда для семерки, третий вариант.
http://infostart.ru/profile/8196/projects/840/
Добавил еще один вариант. Назвал условно "Статистический". Методика распределения направлена на снижение средней ошибки округления, путем корректировки строк с наибольшей ошибкой (отклонением) при округлении.
Вариант реализации с запросом работает эффективно только при большом количестве строк (более нескольких десятков тысяч).
Добавил пример использования в УТ на базе типовой обработки из версии 10.3.6.8. В обработке ОбработкаТабличнойЧастиТовары изменил процедуру РаспределитьСуммуПоКолонке.
Для использования можно заменить или процедуру РаспределитьСуммуПоКолонке, или целиком обработку ОбработкаТабличнойЧастиТовары.
Добавил пример использования в ТиС на базе типовой обработки из версии 7.70.954. В обработке ГрупповаяОбработкаМнЧДокументов изменил функцию РаспределитьСуммуПоКолонке и обработку константы РозничныйТипЦен в процедуре ПересчитатьСтрокуТаблицы.
Для использования можно заменить или процедуру РаспределитьСуммуПоКолонке, или целиком обработку ГрупповаяОбработкаМнЧДокументов.
Добавил пример использования в УПП на базе типовой обработки из версии 1.2.9.1. В обработке ОбработкаТабличнойЧастиТовары изменил процедуру РаспределитьСуммуПоКолонке.
Для использования можно заменить целиком обработку ОбработкаТабличнойЧастиТовары или только процедуру РаспределитьСуммуПоКолонке.



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