Нахождение слагаемых из списка по их сумме
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
Обработка находит все возможные варианты состава слагаемых из списка для получения суммы поиска.
Необходимо заполнить левую табличную часть на форме предполагаемыми слагаемыми (возможна загрузка из Excel - первый лист, первая колонка с первой ячейки) и ввести сумму для поиска. Выбрать ограничение по количеству слагаемых в итоговом выражении.
По окончании выполнения обработки в правом поле на форме будут отображены все варианты состава слагаемых по номеру строки в левой табличной части.
Внимание! Чем больше вариантов слагаемых в левом списке, тем дольше выполняется обработка. НО больше всего время выполнения обработки зависит от выставленного предельного количества слагаемых. К этому параметру следует относится серьезно, ибо автор не отвечает за последствия загрузки процессора и оперативной памяти вашего компьютера.
На самом деле все не так страшно. Многое зависит от целей вашего поиска. Например у вас есть список из 20 значений от 1000 до 1500, а найти вам нужно варианты состава например 6500. Понятно, что вариантов тут будет очень много. А если Вы еще зададите ограничение в 15 слагаемых (что не целесообразно - начинать лучше с 3-4), то ждать придется ооочень долго.
Старался делать так, чтобы память загружалась по-минимуму... но время выполнения от этого увеличено. Метод поиска вариантов - обычный перебор. Поэтому возможных вариантов, хранимых в памяти... многова-то.
В общем... эта обработка писалась на коленке для поиска трех слагаемых... потом была расширена... если найдете способ увеличить производительность, или придумаете (найдете) что-то проще и удобнее... рад буду услышать :) Также рад буду слышать критику в области написания кода касательно производительности обработки. Ну а если найдете ошибку - скрин в студию. Повторюсь - дело было написано на коленке за отсутствием найденных аналогов в сети.
За плюсы и минусы благодарен заранее :)
*обновил 09.04.12. Увеличена скорость и уменьшена задействованная память
Вступайте в нашу телеграмм-группу Инфостарт