Имя: Пароль:
1C
1C 7.7
v7: Алгоритм подбора на сумму???
0 Gavrinev
 
26.07.11
10:43
Просьба подсказать (Нужен алгоритм)...
Есть список сумм накладных, нужно подогнать реестр накладных на определенную сумму, может кто сталкивался - нужен чисто алгоритм, пока в инете прочитал про циклический перебор сумм но может есть какие другие методы, просьба поделится мнением как такое делать (т.к. делать предется 2-3 раза в месяц).
1 povar
 
26.07.11
10:45
читай о рюкзаке
2 Jstunner
 
26.07.11
10:47
3 Gavrinev
 
26.07.11
10:47
Просьба пояснить "рюкзаке"
4 Gavrinev
 
26.07.11
10:49
Большое спасибо буду копать..
5 Mikeware
 
26.07.11
10:51
(1)(2) "не поможет..."©
6 Gavrinev
 
26.07.11
10:52
(5) да спасибо уже вижу
7 Ёпрст
 
26.07.11
10:53
тупо рандомом с граничными условиями.
8 povar
 
26.07.11
10:53
(5) как это не поможет
9 Gavrinev
 
26.07.11
10:56
(7) Да спасибо - уже пробую...
10 Mikeware
 
26.07.11
10:57
(8) топикстартеру не поможет...
у него соотношение радиусов стремится к бесконечности...
11 Jstunner
 
26.07.11
10:59
вместо того, чтобы наладить учет, мастерят алгоритмы с использованием рандома..
12 Mikeware
 
26.07.11
11:01
(11) а прикольно, наверное, платежную ведомость рандомом генерить :-)
13 Gavrinev
 
26.07.11
11:02
(11)- учет налажен - на сайт госзакупок требуется подавать котировки на определенную сумму заказа клиента, не зависимо от того сколько отпустил поставщик( беспредел властей краснодарского края бесграничен)... из этого следует сие выше написанное
14 Gavrinev
 
26.07.11
11:05
(12) никаких платежных ведомостей - есть производство (многоуровневое) :
Док счет в нем несколько требований - в нем несколько изделий - изделие состоит из кучи материалов... Конфа самописная. На бухии...
15 Gavrinev
 
26.07.11
12:03
Вот сделал из найденного может кто что подскажет как доработать, а то сыро работает...
   Dim M() As Double, I As Long, Y As Long, X As Long
   Dim NS As Double, TS As Double, GS As Double
   Dim VV1 As Double
   NS = 2313.89 ' сумму надо получить
   'gs накопительная для сравнения
   Do While GS <> NS
       ReDim M(10) As Double
       GS = 0
       For I = 1 To 6 ' количество сум в выборке
           Y = Int(Rnd * 27) + 1 ' пока из 27 строк с суммами - y номер строки
           M(I) = Cells(Y, 1).Value
           Cells(Y, 4).Value = M(I)
           GS = GS + M(I)
           If GS = NS Then
               ' выводим список
               For X = 1 To 6
                   Cells(X, 2).Value = M(I)
               Next X
               Exit Sub
           End If
           VV1 = NS - 10
           If GS < NS And GS > VV1 Then
               ' выводим список
               For X = 1 To 6
                   Cells(X, 2).Value = M(I)
               Next X
               Exit Sub
           End If
           
           Cells(27, 4).Value = GS
           If GS > NS Then
               For X = 1 To 26
                   Cells(X, 4).Value = ""
               Next X
               Exit For
           End If
       Next I
       
   Loop
16 andrewks
 
26.07.11
14:59
(15) О_о это точно v7? ;-)
17 Gavrinev
 
26.07.11
15:11
(16) нет эт- обычный vba но для 1c7 можно сделать vbs, или тупо процедурой перегружать в ексель и там запускать макрос...
18 Lepochkin
 
26.07.11
15:15
(17)Средствами 1с не кодится??
19 Михаил Козлов
 
26.07.11
15:33
Если неохота морочиться с перебором, то жадным алгоритмом:
1. Упорядочить суммы по убыванию.
2. Если очередная накладная подходит (сумма вместе с ней не превышает требуемую) - ее.
20 mikecool
 
26.07.11
15:40
(13) +1 сам с таким столкнулся, накладные под счет-фактуру подбираешь?
21 cobRA
 
26.07.11
15:40
Без проблем делается по (2). Только тут одна загвоздка - нужно немного подумать. Самую малость, а с этим, как всегда, проблемы :)
22 Gavrinev
 
26.07.11
16:04
Всем спасибо, но сделал через ексель, список сумм нужен только для распечатки...
23 Злопчинский
 
26.07.11
16:25
пишу снова: NS публиковал на мисте практически готовый алгоритм/ я по нему рассчитываю деление большого заказа на паллеты...
24 Ёпрст
 
27.07.11
13:32
(23) это было в 2005 году, кто ж вспомнит то ?
:)
25 Ёпрст
 
27.07.11
13:32
26 Злопчинский
 
27.07.11
14:28
(25) спасибо тебе, добрый человек! ;-)