Имя: Пароль:
1C
1С v8
Преобразовать дерево значений к иному виду
0 Vasilisk
 
26.05.15
15:33
1. Я тебе хлеба сладкого принес 33% (1)
2. Уберите годовалого ребенка с кухни 33% (1)
3. Срочно иду патентовать данный рецепт 33% (1)
4. Это рецепт колобка 0% (0)
5. Такой хлеб при запекании расплавится 0% (0)
Всего мнений: 3

Добрый день господа и дамы есть непростая, но интересная задачка, не прошу что бы ее решили за меня, но было бы интересно почитать мысли по вариантам реализации.
Условия задачи:
Есть дерево с колонками (Номенклатура, Количество, Операция) суть дерева в отражении состава конкретной номенклатуры а также операции над ней для ее получения. Пример:
Хлеб-1 шт                Опер. Запекать
     -тесто- 1 шт        Опер. Месить
           -мука 1 кг    Опер. Взять из заначки
           -соль 100 мг  Опер. Взять из заначки
           -сахар 3 кг   Опер. Взять из заначки
     -соль 30 мг         Опер. Взять из заначки
Сама задача: Необходимо преобразовать данные дерева к другому виду вот к такому:
Опер. Взять из заначки-
                      -мука 1 кг
                      -соль 130 мг
                      -сахар 3 кг
Опер. Месить-
            -тесто- 1 шт
                  -мука 1 кг    
                  -соль 100 мг
                  -сахар 3 кг
Опер. Запекать-
              Хлеб-1 шт
                   -тесто- 1 шт
                   -Соль- 30 гр

То есть суть в том что бы получить пошаговые пары изделие-материал в разрезе операций, наверное как то так, при том что структура дерева идет по составу а не по порядку операций.

Непосредственная трудность с которой я столкнулся это свертка по количеству в дереве(Обратите внимание на соль), так как дерево в работе будет значительно глубже, то применим только рекурсивный подход.
1 Asmody
 
26.05.15
15:40
хорошая задача
2 Asmody
 
26.05.15
15:44
только я не понимаю, зачем у тебя в ветке Месить появились мука, соль и сахар
3 Vasilisk
 
26.05.15
15:45
Я в курсе вот ломаю свои извилины над ней пока в голову приходит преобразование в табзнач по полям Номенклатура, НоменклатураРодитель, Количество, Операция дальше много раз и по разному сворачивать. Но пока не понимаю ка я это сделаю.

Я тебе хлеба сладкого принес
4 ЧеловекДуши
 
26.05.15
15:45
Изврат

Уберите годовалого ребенка с кухни
5 Asmody
 
26.05.15
15:45
я бы начал с разнесения понятий:

Операция —> Объект

Объект —> Состав
6 Vasilisk
 
26.05.15
15:46
Мука появилась так как для рабочих необходима пара Промеж изделие и материал, что бы тот понимал что ему с тем что он взял делать. У муки и соли материала нет поэтому там пусто и операция просто достать это.
7 Vasilisk
 
26.05.15
15:48
(5) Что ты понимаешь под разнесением понятий? Понятия и так достаточно просты Номенклатура Сколько ее и что с ней делать
8 Бледно Золотистый
 
26.05.15
15:55
Для каждой операции будет 2 уровня, текущий и предыдущий, кроме самого первого - взять из заначки?
9 Asmody
 
26.05.15
15:56
(7) Я же нарисовал! Собрать где-то отдельно отношение "Операция->Объект" и отдельно "Объект->Состав"
10 Ващета
 
26.05.15
15:59
В Дерево в ТЗ, ТЗ - в запрос, запросом получать с группировкой  Операция
11 Vasilisk
 
26.05.15
15:59
(8) Уровни не уровни это может быть просто таблица с группировкой:
ГРуппировка(Операция)
Изделие(Эта штука должна сворачиваться в рамках операции)
Материал (Эта штука должна сворачиваться в рамках изделия и операции)
Материал (Эта штука должна сворачиваться в рамках изделия и операции)
12 Vasilisk
 
26.05.15
16:00
(10) Как раз сейчас этот вариант рассматриваю. Если получиться исходный код выложу.
13 Asmody
 
26.05.15
16:01
(10) Потеряется состав объектов
14 Vasilisk
 
27.05.15
10:21
Пока логическое решение:
1. Переводим дерево значений в таб. значений. вида(Изделие кол изделия, кол элементов состав, материал кол материала)
2. Выделяем операции.
3. Отбираем строки таб. значений по операциям.
4. Скопируем строки таб. знач в новую таб. знач. Производим свертку по изделию и кол элементов состав с суммой по количеству. затем количество изделия делим на кол состав.
5. Из первой таб. знач отбираем строки с изделием и операцией. Сворачиваем полученное в новой таб знач  с суммой по количеству материала.

Кто найдет проблему, пишите.

Срочно иду патентовать данный рецепт