Обработка находит все возможные варианты состава слагаемых из списка для получения суммы поиска.
Необходимо заполнить левую табличную часть на форме предполагаемыми слагаемыми (возможна загрузка из Excel — первый лист, первая колонка с первой ячейки) и ввести сумму для поиска. Выбрать ограничение по количеству слагаемых в итоговом выражении.
По окончании выполнения обработки в правом поле на форме будут отображены все варианты состава слагаемых по номеру строки в левой табличной части.
Внимание! Чем больше вариантов слагаемых в левом списке, тем дольше выполняется обработка. НО больше всего время выполнения обработки зависит от выставленного предельного количества слагаемых. К этому параметру следует относится серьезно, ибо автор не отвечает за последствия загрузки процессора и оперативной памяти вашего компьютера.
На самом деле все не так страшно. Многое зависит от целей вашего поиска. Например у вас есть список из 20 значений от 1000 до 1500, а найти вам нужно варианты состава например 6500. Понятно, что вариантов тут будет очень много. А если Вы еще зададите ограничение в 15 слагаемых (что не целесообразно — начинать лучше с 3-4), то ждать придется ооочень долго.
Старался делать так, чтобы память загружалась по-минимуму… но время выполнения от этого увеличено. Метод поиска вариантов — обычный перебор. Поэтому возможных вариантов, хранимых в памяти… многова-то.
В общем… эта обработка писалась на коленке для поиска трех слагаемых… потом была расширена… если найдете способ увеличить производительность, или придумаете (найдете) что-то проще и удобнее… рад буду услышать 🙂 Также рад буду слышать критику в области написания кода касательно производительности обработки. Ну а если найдете ошибку — скрин в студию. Повторюсь — дело было написано на коленке за отсутствием найденных аналогов в сети.
За плюсы и минусы благодарен заранее 🙂
*обновил 09.04.12. Увеличена скорость и уменьшена задействованная память





Еще не пробовал, но очень заинтересовался. Такого типа обработок не видел. Может не все понимают для чего можно использовать. Мне конкретно может пригодится для поиска расхождений в итоговых суммах оборотно сальдовых ведомостей и т.п. где сумма расхождений состоит из нескольких слагаемых.
Вы все правильно поняли. Только о сложностях в виде времени выполнения, которое напрямую зависит от количества вариантов слагаемых и их предельного количества не забывайте.
И еще одно уточнение: код в обработке написан в читабельном виде. Но если его частично отредактировать согласно рекомендациям из этой статьи (ее автору огромное спасибо), то производительность увеличивается довольно прилично.