Имя: Пароль:
1C
1С v8
СКД корректный расчет суммы по общему полю
0 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 КАК СодержаниеКомплектующегоКг
ИЗ
    Документы КАК Документы
        ЛЕВОЕ СОЕДИНЕНИЕ Рецептуры КАК Рецептуры
        ПО (Рецептуры.Номенклатура = Документы.Номенклатура)
            И (Рецептуры.ДатаУтверждения В
                (ВЫБРАТЬ
                    МАКСИМУМ(Рецептуры.ДатаУтверждения)
                ИЗ
                    Рецептуры КАК Рецептуры
                ГДЕ
                    Рецептуры.Номенклатура = Документы.Номенклатура
                    И Рецептуры.ДатаУтверждения <= Документы.Период))

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

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