Имя: Пароль:
1C
1С v8
Автоматическая сборка
,
0 Rumpil
 
16.03.12
15:46
Добрый день, господа. Хотел спросить у вас совета - как подступить и какой алгоритм выбрать для реализации след. задачи.

В системе есть два типа товаров - собственно сам товар и его детали (у обоих вид товара = товар если что). Необходимо написать обработку, которая бы считывала остатки деталей на складе, и табличную часть заполняла товарами и количеством, которые можно собрать из данных деталей.

Какие идеи пока - перебирать все товары на предмет сборки их из деталей по-моему будет муторно, учитывая что товаров около 60 тысяч. Может попробовать считывать каждую деталь, остаток который есть на складе, потом смотреть в какой товар эта деталь входит и далее перебирать на предмет остатков остальные детали, входящие в этот товар ? В этом случае я так понимаю придется создать какую динамическую таблицу, которая постоянно будет обновлять остатки деталей с учетом уже собранных товаров исходя из предыдущих данных.

Как пример

Товар1 состоит из Деталь1 в количестве 1 шт., Деталь2 в количестве 2 шт. И Товар1, состоящий из Деталь2 в количестве 1 шт. и Деталь3 в количестве 1 шт.

И скажем остаток деталей у меня - Деталь1 - 3 шт., Деталь2 - 7 шт., Деталь3 - 2 шт.

Необходимо, чтобы программа считала эти остатки, потом взяла скажем Деталь1 - увидела, что она входит в Товар1, а еще в него входит Деталь2 и проверила бы ск. можно собрать Товар1 - получается 3 шт. из наших данных, при этом чтобы когда она перешла к Товар2 она увидела, что потенциально Деталь1 уже использовалась при сборке Товар1 и можно сказать, что остатка ее нет уже чтобы собрать Товар2.

Сорри, за размытость некоторую. Мне просто хочется понять каким алгоритмом это все реализовать максимально правильно будет. Может есть какие идеи у кого ?
1 БалбесВ1с
 
16.03.12
15:56
Метод плавающего пузырька
2 КМ155
 
16.03.12
16:00
(0) ответ зависит от того, может ли один материал входить более чем в одну спецификацию
3 Rumpil
 
16.03.12
16:00
(2) да, конечно может
4 Rumpil
 
16.03.12
16:02
(2) именно с этим у меня и проблемы
5 КМ155
 
16.03.12
16:07
(4) берёшь первую спецификацию, проверяешь наличие материалов по ней для выпуска хотя бы одной шт., если нельзя берешь следующую спецификацию
если можно пробуешь получить 10 шт.  потом 100
когда материалов не хватит крутищь счётчик назад
когда нашёл максимальное количество ГП, списываешь из таблицы материалов и переходишь к следующему материалу
6 Rumpil
 
16.03.12
16:08
(5) просто спецификаций у меня 60 тысяч, там запрос не умрет ?
7 КМ155
 
16.03.12
16:09
(5) ну и очевидно
что если переделов больше 1, то решение задачи не меняется
растёт лишь число итераций
8 КМ155
 
16.03.12
16:10
(6)[просто спецификаций у меня 60 тысяч]
гонишь
9 Rumpil
 
16.03.12
16:13
(8) это реально так, 60 тысяч единиц мебели, каждая из которых собирается из деталей
10 КМ155
 
16.03.12
16:22
(9) блин
ну понятно, что лак или дюбель входят во все спецификации
11 МихаилМ
 
16.03.12
16:24
интересная задача
информационные технологии - точная наука
Опишите все граничные условия задачи.
тогда можно будет говорить о методах решения.
например
все равно какие конечные изделия будут собраны (тогда тупо жадный алгоритм)
или есть приоритетность срочности, востребованности, макс суммовая оценка,
равномерность загрузки производств.

непонятно что Вы хотите узнать.
тк из одних и техже деталей можно сделать разные изделия

например тумбочка и тумбочка с отделкой

материалы теже - количество произведенных изделий тоже одинаковое
(разная только затраченная работа)
и какое из них должно попасть в расчетную таблицу ?  


спецы по таким задачам NS и Михаил Козлов.
12 Rumpil
 
16.03.12
16:25
(10) то есть стоит обойти все единицы мебели по одной и каждый раз считывая детали и ск. единицы данной мебели можно собрать и переходить к след единице, по ходу обновив остатки ?
13 Rumpil
 
16.03.12
16:25
(11) никакой приоритетности
14 КМ155
 
16.03.12
16:31
(12) не совсем так
сначала надо вычеркнуть спецификации, которые нельзя собрать, потому что им не хватает материалов
потом взять первую, проверить на собираемость, уменьшить запасы
опять вычеркнуть спецификации, которые нельзя собрать, потому что им не хватает материалов
взять следующую
...
15 Rumpil
 
16.03.12
16:32
(14) вот насчет уменьшения запасов - нужно вести какую динамическую таблицу, которая будет уменьшать в себе запасы ?
16 crawling83
 
16.03.12
16:34
(14) то есть если поменять порядок спецификаций поменяется результат всего этого изврата?
17 КМ155
 
16.03.12
16:34
(15) а у тебя проблема с таблицами значений ?
18 КМ155
 
16.03.12
16:35
(16) ясен пень,
задача имеет множество решений
и все правильные
19 Rumpil
 
16.03.12
16:35
(17) да нет вроде ))
20 crawling83
 
16.03.12
16:36
(18)а накуя такое долбление? тут без приоритетов никак, в противном случае бесполезный набор символов ))
21 КМ155
 
16.03.12
16:38
(20) а постановщику задачи не важно какая конкретно мебель будет собрана, важно сколько можно примерно заработать при её продаже
22 Rumpil
 
16.03.12
16:39
(20) не, тут как раз без приоритетов. Тупо обходить мебель в алфавитном порядке
23 crawling83
 
16.03.12
16:43
(21)хыыыы, а если первой идет спецификация, стоимость которой 100р, к примеру, а стоимость второй - 1000р, спецификации состоят примерно из одних деталей.я конечно не финансист, но что-то мне подсказывает, что примерная стоимость продажи заметно измениться )
24 crawling83
 
16.03.12
16:43
(22) вот вот, ключевое слово - тупо.
25 Rumpil
 
16.03.12
16:47
(24) согласен, но у клиент действительно нет приоритетов, собирает грубо говоря то что первое попадется под руку и можно будет собрать
26 КМ155
 
16.03.12
16:53
(25) будут приоритеты - отсортируешь спецификации в ином порядке
кроме исключения из спецификаций метизов я проблем не вижу
27 crawling83
 
16.03.12
16:55
мда...какие рыбаки, такая и рыбка
28 Rumpil
 
16.03.12
17:20
Всем спасибо за советы, вроде все получилось
29 КМ155
 
16.03.12
17:22
(28) а что там с единственным переделом может не получиться
30 vde69
 
16.03.12
17:24
я-бы использовал алгоритмы из

wiki:%D2%F0%E8%E0%ED%E3%F3%EB%FF%F6%E8%FF_%C4%E5%EB%EE%ED%E5