Всем доброго времени суток!
Подскажите, можно ли в СКД сделать так:
Есть Элемент Иерархии с количеством: 2, соответственно все элементы в его иерархии надо умножить на 2,
Далее у него в Иерархии есть элемент 2 количеством 3 его так же надо умножить на 3 и элемент 3 с количеством 5 надо умножать на 5.
Количество вложений иерархии заранее не определено.
Подскажите, можно ли в СКД сделать так:
Есть Элемент Иерархии с количеством: 2, соответственно все элементы в его иерархии надо умножить на 2,
Далее у него в Иерархии есть элемент 2 количеством 3 его так же надо умножить на 3 и элемент 3 с количеством 5 надо умножать на 5.
Количество вложений иерархии заранее не определено.
Прикрепленные файлы:

По теме из базы знаний
- Хитрости компоновки данных: произвольная иерархия для внешней таблицы данных в отчетах на СКД.
- Итоги по иерархии в СКД
- Получение родителей верхних уровней отчетом на СКД
- Иерархическая нумерация в отчете СКД с помощью макета поля
- СКД - наборы данных и связи между ними, создание собственной иерархии, вложенные отчеты
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2)Суть вот в чем:
СКД умеет делать иерархию:
Но "Количество" он ставит из самой спецификации, а мне надо чтоб учитывал "Количество" из "СпецификацияРодитель", т.е.:
"Количество" всех подчиненных элементов иерархии надо умножать на количество в "СпецификацииРодитель"!
Вот.
Вопрос к Гуру СКД, как это сделать?
Заранее спасибо)
СКД умеет делать иерархию:
ВЫБРАТЬ
Т.Ссылка КАК СпецификацияРодитель,
Т.Спецификация КАК Спецификация,
Т.Номенклатура,
Т.Количество
ИЗ
Справочник.СпецификацииНоменклатуры.ИсходныеКомплектующие КАК Т
ГДЕ
Т.Ссылка В(&СписокСпецификаций)
ПоказатьНо "Количество" он ставит из самой спецификации, а мне надо чтоб учитывал "Количество" из "СпецификацияРодитель", т.е.:
"Количество" всех подчиненных элементов иерархии надо умножать на количество в "СпецификацииРодитель"!
Вот.
Вопрос к Гуру СКД, как это сделать?
Заранее спасибо)
Прикрепленные файлы:

(7)Суть:
Есть Спецификация:
Комплект для кафе:
Обеденная группа - 5;
..... и что-то там еще, тут не важно;
Обеденная группа:
Стол - 1 (спецификация);
Стул - 4 (спецификация);
Стул:
Сиденье - 1;
НожкаСтула - 4 (спецификация);
Стол:
Столешня - 1;
НожкаСтола - 4 (спецификация);
НожкаСтула:
Труба - 1;
Заглушка - 2;
НожкаСтола:
Труба - 1;
Заглушка - 2;
В итоге должно получиться:
Комплект для кафе:
Обеденная группа - 5;
Стол - 1 Х 5 = 5;
Сиденье - 1 Х 5 = 5;
НожкаСтола - 4 Х 5 = 20;
Труба - 1 Х 4 Х 5 = 20;
Заглушка - 2 Х 4 Х 5 = 40;
Стул - 1 Х 5 = 5;
Столешня - 1 Х 5 = 5;
НожкаСтула - 4 Х 5 = 20;
Труба - 1 Х 4 Х 5 = 20;
Заглушка - 2 Х 4 Х 5 = 40;
Это простой пример, в реальности дерево может быть на много больше.
т.е. Количество в каждом уровене Иерархии должно умножаться на Количество Предидущего уровня
Вот!
Есть Спецификация:
Комплект для кафе:
Обеденная группа - 5;
..... и что-то там еще, тут не важно;
Обеденная группа:
Стол - 1 (спецификация);
Стул - 4 (спецификация);
Стул:
Сиденье - 1;
НожкаСтула - 4 (спецификация);
Стол:
Столешня - 1;
НожкаСтола - 4 (спецификация);
НожкаСтула:
Труба - 1;
Заглушка - 2;
НожкаСтола:
Труба - 1;
Заглушка - 2;
В итоге должно получиться:
Комплект для кафе:
Обеденная группа - 5;
Стол - 1 Х 5 = 5;
Сиденье - 1 Х 5 = 5;
НожкаСтола - 4 Х 5 = 20;
Труба - 1 Х 4 Х 5 = 20;
Заглушка - 2 Х 4 Х 5 = 40;
Стул - 1 Х 5 = 5;
Столешня - 1 Х 5 = 5;
НожкаСтула - 4 Х 5 = 20;
Труба - 1 Х 4 Х 5 = 20;
Заглушка - 2 Х 4 Х 5 = 40;
Это простой пример, в реальности дерево может быть на много больше.
т.е. Количество в каждом уровене Иерархии должно умножаться на Количество Предидущего уровня
Вот!
В общем так и не нашларешение(
Временно сделала с Внешним источником данных - ТЗ
Выбрала в ТЗ рекурсией все вложенные спецификации, вот пример, если кому то еще надо будет:
Временно сделала с Внешним источником данных - ТЗ
Выбрала в ТЗ рекурсией все вложенные спецификации, вот пример, если кому то еще надо будет:
Процедура Посчитать(ТаблицаРезультат, ССпецификация, Множитель = 1)
Для Каждого СтрокаСпецификации Из ССпецификация.ИсходныеКомплектующие Цикл
ЕстьСтрока = ТаблицаРезультат.НайтиСтроки(Новый Структура("Спецификация, СпецификацияРодитель, Номенклатура", СтрокаСпецификации.Спецификация, ССпецификация, СтрокаСпецификации.Номенклатура));
Если ЕстьСтрока.Количество() = 0 Тогда
НоваяСтрока = ТаблицаРезультат.Добавить();
Если Множитель = 0 Тогда Множитель = 1 КонецЕсли;
НоваяСтрока.Множитель = Множитель;
НоваяСтрока.СпецификацияРодитель = ССпецификация;
Иначе
НоваяСтрока = ЕстьСтрока[0];
НоваяСтрока.Множитель = НоваяСтрока.Множитель * Множитель;
КонецЕсли;
НоваяСтрока.Спецификация = СтрокаСпецификации.Спецификация;
НоваяСтрока.Номенклатура = СтрокаСпецификации.Номенклатура;
НоваяСтрока.СКоличество = СтрокаСпецификации.Количество;
Если НЕ СтрокаСпецификации.Спецификация = Справочники.СпецификацииНоменклатуры.ПустаяСсылка() Тогда
Посчитать(ТаблицаРезультат, СтрокаСпецификации.Спецификация, СтрокаСпецификации.Количество * Множитель);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот