Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

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

Как распределить сумму по нескольким строкам
Я
   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) А в этом вашем порядке какой алгоритм распределения заложен?
   1dvd
 
2 - 30.10.17 - 14:12
(0) непонятна логика. Почему 300-0?
   Mort
 
3 - 30.10.17 - 14:12
Сформулируй как должно распределяться словами, а там дело за малым.
   1dvd
 
4 - 30.10.17 - 14:13
Рюкзачок, похоже
   Melcor
 
5 - 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) Бред какой-то.
   1dvd
 
9 - 30.10.17 - 14:15
(5) гугли задачу о рюкзаке
   Mort
 
10 - 30.10.17 - 14:15
Если платежек > 100 можно сразу забить.
 
 Рекламное место пустует
   Melcor
 
11 - 30.10.17 - 14:16
по строчно не факт что распределит, просто есть вероятность, что изначально мы распределили сумму на одну платежку, а по остальным ровно не выходит распределить
   Numerus Mikhail
 
12 - 30.10.17 - 14:17
(11) 2 платежки по 500р, а пришла только одна. куда вешать?
   Dotoshin
 
13 - 30.10.17 - 14:19
(0) Тебе сумму платежек под общую сумму надо что-ли подобрать?
   Melcor
 
14 - 30.10.17 - 14:20
(12) На первую, они все от одного контрагента
   Melcor
 
15 - 30.10.17 - 14:20
(13) ага
   Numerus Mikhail
 
16 - 30.10.17 - 14:20
(14) а вдруг договоры разные?
   Melcor
 
17 - 30.10.17 - 14:21
(14) Один
   1Снеговик
 
18 - 30.10.17 - 14:22
(3) я так понял, если не хватает на строку, то пропускать
   CepeLLlka
 
19 - 30.10.17 - 14:22
(15)Ну так и иди от самого большого платежа или задай приоритеты контрагентам или самим платёжкам.

И потом уже бери общую сумму, и циклом пробегай по всем платежам, в зависимости от приоритета и суммы, ставь им признак оплаты и уменьшай общую сумму..
   CepeLLlka
 
20 - 30.10.17 - 14:22
(18)Тогда можно просто отсортировать строки и всё
   Melcor
 
21 - 30.10.17 - 14:23
(19) Тут есть вероятность, что мы добавили сумму в ту платежку из-за которой потом не будет биться общая сумма по остальным
   Numerus Mikhail
 
22 - 30.10.17 - 14:24
Ну тогда вешай на все строки по порядку пока хватает.
В любом случае этот контрагент вам должен, так какая разница по какой платежке?
   1Снеговик
 
23 - 30.10.17 - 14:25
(20) скорее просто циклом по порядку строк.
Но может остаться маленький остаток.
   Dotoshin
 
24 - 30.10.17 - 14:25
(19) Не прокатит. Может оказаться так что остальные суммы будут либо слишком большие, либо слишком маленькие и будет либо остаток получаться либо излишек. Если я правильно понял ему точную сумму надо подобрать из нескольких сумм.
   Брудвар
 
25 - 30.10.17 - 14:25
(0)  Перебором всех возможных вариантов. Сделай такой цикл. Как только вариант сошелся, выбираешь его, и ОК
   Melcor
 
26 - 30.10.17 - 14:26
(23) Так и думал, чтобы не заморачиваться, но шанс косяка присутствует, думал, может у кого есть подобный алгоритм
   Брудвар
 
27 - 30.10.17 - 14:27
Но возможны сбои. Например есть платеж на 300 и суммы:

100
200
300

Распределяется так:
100 - 100
200 - 200
300 - 0

На следующий день приходит платеж на 200, и никак его не распределишь, потому что 200 уже занято.
   Dotoshin
 
28 - 30.10.17 - 14:29
(27) Можно перераспределить, за два дня.
   Брудвар
 
29 - 30.10.17 - 14:30
(28) Тогда нет проблем, задача решена!
   Dotoshin
 
30 - 30.10.17 - 14:32
   Dotoshin
 
31 - 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^число строк: строка либо входит в решение, либо нет.
   breezee
 
35 - 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 часа...
.
А ули, маловероятно же
   Klesk
 
39 - 31.10.17 - 01:30
да обычная пропорция, просплюсь - накидаю алгоритмик
   Брудвар
 
40 - 31.10.17 - 07:33
(38) Это вообще не в тему. От этого ничего не закроется и ничего не поделится на ноль. Все нормально

(39) Не, пропорция - это другая задача.
   VladZ
 
41 - 31.10.17 - 07:41
(0) Задача мутная какая-то.

"у меня есть строки с платежками". Платежка проходит по определенному контрагенту. При чем здесь "как распределить суммы"?  Нужно распределить в пределах контрагента? Сортируй по дате и закрывай по порядку. Закрылось частично - фиг с ним, закроется полностью при следующей оплате.
   catena
 
42 - 31.10.17 - 08:37
(37)Такая ситуация вполне вероятно, потому что даже при целом распределении есть вероятность "не того" распределения и из оставшихся сумм на следующий день не сложится слово "ж...", ой, "счастье".
   Брудвар
 
43 - 31.10.17 - 13:40
(42) Это уже обсуждалось. На второй день можно перераспределить за два дня.
   catena
 
44 - 31.10.17 - 13:41
(43)Придется перераспределять с самого начала распределения. Не факт, что невозможность распределения вылезет именно на следующий день.
   d4rkmesa
 
45 - 31.10.17 - 14:13
(5) Будь мужиком, закрывай оплаты по FIFO. По контрагенту целиком или договору, фильтр настроить не проблема. А то твой чудесный алгоритм нараспределяет, а потом комдир прибежит, какого х** отгрузки, к которым не подобралась оплата, в просрочке?
   h-sp
 
46 - 31.10.17 - 14:17
(0) смысл в этом распределении? Покупатель в платежке всегда пишет назначение платежа по счету номер такой-то. Поэтому нужно привязывать к тем счетам, которые перечислены.


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует