Как распределить сумму по нескольким строкам #807621


#0 by Melcor
Доброго дня. Подскажите алгоритм распределения суммы оплат. Скажем есть 4 строки с суммами: 150 100 300 250 Нужно чтобы когда вбиваешь сумму 500 1с сама раскидала в таком порядке: 150 - 150 100 - 100
#1 by Гипервизор
А в этом вашем порядке какой алгоритм распределения заложен?
#2 by 1dvd
непонятна логика. Почему 300-0?
#3 by Mort
Сформулируй как должно распределяться словами, а там дело за малым.
#4 by 1dvd
Рюкзачок, похоже
#5 by Melcor
ну у меня есть строки с платежками, и мы знаем общую сумму выписки из банка, и хотелось бы, чтобы оператор забил общую сумму, а она автоматом раскидалась по строкам соответственно, т.е. строк много и сумма не по всем платежкам
#6 by Джинн
Нормальна логика :) Если Какая-то-Хрень = 300 Тогда 0 КонецЕсли;
#7 by Гипервизор
На 300 рифма нехорошая видимо.
#8 by Джинн
Бред какой-то.
#9 by 1dvd
гугли задачу о рюкзаке
#10 by Mort
Если платежек > 100 можно сразу забить.
#11 by Melcor
по строчно не факт что распределит, просто есть вероятность, что изначально мы распределили сумму на одну платежку, а по остальным ровно не выходит распределить
#12 by Numerus Mikhail
2 платежки по 500р, а пришла только одна. куда вешать?
#13 by Dotoshin
Тебе сумму платежек под общую сумму надо что-ли подобрать?
#14 by Melcor
На первую, они все от одного контрагента
#15 by Melcor
ага
#16 by Numerus Mikhail
а вдруг договоры разные?
#17 by Melcor
Один
#18 by 1Снеговик
я так понял, если не хватает на строку, то пропускать
#19 by CepeLLlka
Ну так и иди от самого большого платежа или задай приоритеты контрагентам или самим платёжкам. И потом уже бери общую сумму, и циклом пробегай по всем платежам, в зависимости от приоритета и суммы, ставь им признак оплаты и уменьшай общую сумму..
#20 by CepeLLlka
Тогда можно просто отсортировать строки и всё
#21 by Melcor
Тут есть вероятность, что мы добавили сумму в ту платежку из-за которой потом не будет биться общая сумма по остальным
#22 by Numerus Mikhail
Ну тогда вешай на все строки по порядку пока хватает. В любом случае этот контрагент вам должен, так какая разница по какой платежке?
#23 by 1Снеговик
скорее просто циклом по порядку строк. Но может остаться маленький остаток.
#24 by Dotoshin
Не прокатит. Может оказаться так что остальные суммы будут либо слишком большие, либо слишком маленькие и будет либо остаток получаться либо излишек. Если я правильно понял ему точную сумму надо подобрать из нескольких сумм.
#25 by Брудвар
Перебором всех возможных вариантов. Сделай такой цикл. Как только вариант сошелся, выбираешь его, и ОК
#26 by Melcor
Так и думал, чтобы не заморачиваться, но шанс косяка присутствует, думал, может у кого есть подобный алгоритм
#27 by Брудвар
Но возможны сбои. Например есть платеж на 300 и суммы: 100 200 300 Распределяется так: На следующий день приходит платеж на 200, и никак его не распределишь, потому что 200 уже занято.
#28 by Dotoshin
Можно перераспределить, за два дня.
#29 by Брудвар
Тогда нет проблем, задача решена!
#30 by Dotoshin
Вот тут посмотри, может подойдет
#31 by Dotoshin
Вот еще
#32 by Михаил Козлов
Это ранец на равенство: Ai - сумма i-той строки; B - сумма платежа; Xi = 0 или 1 - искомые переменные. Нужно найти решение уравнения: СУММА(по i) Ai*Xi = B. Если не повезет - может получиться полный перебор, но здесь он не слишком большой (2^число строк). Попробуйте в лоб полным перебором или какие-то алгоритмы для ранца. Правда, не понятно. зачем это нужно: есть штатный подбор. Ну оформит он частичную оплату - не велика беда.
#33 by Брудвар
может число строк ^ 2?
#34 by Михаил Козлов
Нет, 2^число строк: строка либо входит в решение, либо нет.
#35 by breezee
Ваш алгоритм может отработать некорректно если нужно будет распределить 500 на строки: 300 300 300 300 :D
#36 by Брудвар
А, ты каждую строку считал отдельно. Тогда все верно, с некоторыми исключениями, что не нужно проверять дальше если в какой-то момент и так понятно что уже перебор.
#37 by Брудвар
Судя по всему такая ситуация маловероятна
#38 by Злопчинский
да пофиг что маловероятно.А то прибегают потомОй программа закрылась самаОй тут какое-то сообщение про деление на нольОй он считает уже 3 часа....А ули, маловероятно же
#39 by Klesk
да обычная пропорция, просплюсь - накидаю алгоритмик
#40 by Брудвар
Это вообще не в тему. От этого ничего не закроется и ничего не поделится на ноль. Все нормально Не, пропорция - это другая задача.
#41 by VladZ
Задача мутная какая-то. "у меня есть строки с платежками". Платежка проходит по определенному контрагенту. При чем здесь "как распределить суммы"?  Нужно распределить в пределах контрагента? Сортируй по дате и закрывай по порядку. Закрылось частично - фиг с ним, закроется полностью при следующей оплате.
#42 by catena
Такая ситуация вполне вероятно, потому что даже при целом распределении есть вероятность "не того" распределения и из оставшихся сумм на следующий день не сложится слово "ж...", ой, "счастье".
#43 by Брудвар
Это уже обсуждалось. На второй день можно перераспределить за два дня.
#44 by catena
Придется перераспределять с самого начала распределения. Не факт, что невозможность распределения вылезет именно на следующий день.
#45 by d4rkmesa
Будь мужиком, закрывай оплаты по FIFO. По контрагенту целиком или договору, фильтр настроить не проблема. А то твой чудесный алгоритм нараспределяет, а потом комдир прибежит, какого х** отгрузки, к которым не подобралась оплата, в просрочке?
#46 by h-sp
смысл в этом распределении? Покупатель в платежке всегда пишет назначение платежа по счету номер такой-то. Поэтому нужно привязывать к тем счетам, которые перечислены.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С