Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

СКД корректный расчет суммы по общему полю

СКД корректный расчет суммы по общему полю
Я
   grasshoper
 
12.05.21 - 14:58
Добрый день. Столкнулся с проблемой суммирования в СКД. К примеру: есть номенклатура заказа, её количество кг. Каждую такую номенклатуру из заказа разбиваю по рецептуре на комплектующие и их содержание в кг.
Пример:

Заказ:
|----------------------------|
|Номенклатура |Количество кг |
|-------------|--------------|
|Сборка 1     |3             |
|----------------------------|

Рецептура (на 1000 кг номенклатуры):
|----------------------------------------------------------|
|Номенклатура |Комплектующее |Количество комплектующего кг |
|-------------|--------------|-----------------------------|
|Сборка 1     |Узел 1        |300                          |
|             |Узел 2        |700                          |
|----------------------------------------------------------|

Отчет:
|-------------------------------------------------------------------------|
|Номенклатура |Количество кг |Комплектующее |Количество комплектующего кг |
|-------------|--------------|--------------|-----------------------------|
|Сборка 1     |3             |Узел 1        |0,900                        |
|Сборка 1     |3             |Узел 2        |2,100                        |
|-------------|--------------|--------------|-----------------------------|
|Итоги:       |6             |              |3,000                        |
|-------------------------------------------------------------------------|
               Должно быть 3

Сам запрос:
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Документы.Номенклатура КАК Номенклатура,
    Документы.КоличествоКг КАК КоличествоКг,
    Рецептуры.КомплектующееНоменклатура КАК КомплектующееНоменклатура,
    Документы.КоличествоКг * Рецептуры.КомплектующееКоличествоКг / 1000 КАК СодержаниеКомплектующегоКг
ИЗ
    Документы КАК Документы
        ЛЕВОЕ СОЕДИНЕНИЕ Рецептуры КАК Рецептуры
        ПО (Рецептуры.Номенклатура = Документы.Номенклатура)
            И (Рецептуры.ДатаУтверждения В
                (ВЫБРАТЬ
                    МАКСИМУМ(Рецептуры.ДатаУтверждения)
                ИЗ
                    Рецептуры КАК Рецептуры
                ГДЕ
                    Рецептуры.Номенклатура = Документы.Номенклатура
                    И Рецептуры.ДатаУтверждения <= Документы.Период))

Задача: Как заставить СКД правильно суммировать "Количество кг"?
 
 Партнерская программа EFSOL Oblako
   Ivan_495
 
1 - 12.05.21 - 15:06
Правое напиши вместо Левое
   toypaul
 
2 - 12.05.21 - 15:35
Один из вариантов сделать 2 набора данных - в первом данные по номенклатуре, во 2м данные по компонентам. Связать между собой. Суммирование будет работать правильно

Этот вариант и второй вариант решения рассматривали в курсе https://learn.programstore.ru/skd2-intensiv
   grasshoper
 
3 - 12.05.21 - 15:38
(2) пока решил добавлением выражения (Сумма(КоличествоКг) / Количество(КомплектующееНоменклатура)) для ресурса "Количество кг".
   grasshoper
 
4 - 12.05.21 - 15:57
(2) ссылка не работает
   grasshoper
 
5 - 12.05.21 - 16:04
(3) при многоуровневых группировках выражение Сумма(КоличествоКг) / Количество(КомплектующееНоменклатура) считает уже неправильно
   toypaul
 
6 - 12.05.21 - 16:30
(4) у меня все работает

Список тем форума
 
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа.
Фредерик Брукс-младший
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.