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