|
Сформировать правильный алгоритм расчета | ☑ | ||
---|---|---|---|---|
0
IT_PROGRAMMIST
08.02.12
✎
11:23
|
Добрый день. УПП 1.3.14.3, пл.8.2.14.540.
Помогите решить такую задачу: есть регистр Выпуск продукции(бух учет.), мне нужно провести анализ номенклатуры в этом регистре по следующему алгоритму: 1)Пришла номенклатура1 , ищем для неё спецификацию в регистре выпуск продукции. 2) Нашли спецификацию взяли из неё (исходные комплектующие) номенклатуру с определенным заполненным реквизитом(их может быть 5...). 3)После этого каждую номенклатуру из 2 делаем как в 1, а потом 2. Цикл продолжается до тех пор, пока найдём ,что нет номенклатуры в пункте 2, с нашим условием Т.е получается такое дерово для расчета: Номенклатура1 Номенклатура2(из спецификации Номенклатуры1) Номенклатура2_1(из спецификации Номенклатуры2) Номенклатура2_2(из спецификации Номенклатуры2) Номенклатура3(из спецификации) Номенклатура3_1(из спецификации Номенклатуры3) Номенклатура3_2(из спецификации Номенклатуры3) НоменклатураN(из спецификации) НоменклатураN(из спецификации НоменклатураN) НоменклатураN(из спецификации НоменклатураN) .......... Количество вложений неизвестно После это нужно рассчитать (ИтогиПоНоменклатура2/1000+Номенклатура3/1000+НоменклатураN/1000)/1000 Помогите с решением данной задачи. Пробовал рекурсией не получается. |
|||
1
shuhard
08.02.12
✎
11:24
|
(0)[Помогите с решением данной задачи]
бюджет ? |
|||
2
IT_PROGRAMMIST
08.02.12
✎
11:26
|
(1) ?????
|
|||
3
IT_PROGRAMMIST
08.02.12
✎
11:32
|
С такой задачей сталкнулся впервые. Рекурсией не получается. Может у кого-нибудь есть какой-нибудь пример, чтобы иметь представление как правильно её решать.
|
|||
4
Healer
08.02.12
✎
11:32
|
"...Деньги? Какие деньги!?..." Бендер О.
|
|||
5
IT_PROGRAMMIST
08.02.12
✎
11:43
|
Пример кода:
Функция РасчитатьКоличествоСвинца(Номенклатура) //нашли спецификацию в выпуске СпецификацияНоменклатуры = НайтиНоменклатуруВВыпуске(Номенклатура); //нашои комплектующие это спецификации Выборка = ПолучитьДанныеПоКомплектующим(СпецификацияНоменклатуры); Узел = Узел+1; Пока Выборка.Следующий() цикл //проверим, если дальнейших цепочек нет КоличествоВозможныхЗвеньев = ПроверитьНаНулевоеЗначение(Выборка.Номенклатура); Если КоличествоВозможныхЗвеньев = 0 тогда НоваяСтрока = ТаблицаСЗаконченнымиДвижениями.Добавить(); НоваяСтрока.Номенклатура = Выборка.Номенклатура; НоваяСтрока.НомерУзла = Узел; НоваяСтрока.Родитель = Номенклатура; Иначе НоваяСтрока = ТаблицаЭлементыВДвижении.Добавить(); НоваяСтрока.Номенклатура = Выборка.Номенклатура; НоваяСтрока.НомерУзла = Узел; НоваяСтрока.Родитель = Номенклатура; КонецЕсли; КонецЦикла; Для каждого Элемент из ТаблицаЭлементыВДвижении цикл //тут думал рекурсией, но тогда Элементы в этой таблице перекроются другими //РасчитатьКоличествоСвинца(Элемент.Номенклатура); КонецЦикла; КонецФункции |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |