Задвоение результата сумма в запроса через СКД

1. user734952 14.09.21 09:21 Сейчас в теме
Создаю через СКД отчет вот фрагмент кода где проблема
;
////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
	ХозрасчетныйОбороты.ПериодМесяц КАК ПериодМесяц,
	ВЫРАЗИТЬ(ХозрасчетныйОбороты.Субконто1 КАК Справочник.СтатьиЗатрат) КАК Субконто1,
	ВЫРАЗИТЬ(ХозрасчетныйОбороты.Субконто2 КАК Справочник.НоменклатурныеГруппы) КАК Субконто2,
	ВЫРАЗИТЬ(ХозрасчетныйОбороты.Субконто3 КАК Справочник.ПодразделенияОрганизаций) КАК Подразделение,
	ХозрасчетныйОбороты.СуммаОборотДт КАК СуммаОборотДт,
	ХозрасчетныйОбороты.Организация КАК Организация,
	ВЫБОР
		КОГДА ХозрасчетныйОбороты.Регистратор = НЕОПРЕДЕЛЕНО
			ТОГДА NULL
		ИНАЧЕ ХозрасчетныйОбороты.Регистратор
	КОНЕЦ КАК Регистратор
	
ПОМЕСТИТЬ ВТ_Себестоимость
ИЗ
	РегистрБухгалтерии.Типовой.Обороты(, , Авто, Счет В ИЕРАРХИИ (&МассивСчетовСебестоимость), , , , ) КАК ХозрасчетныйОбороты
;
////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
	ВТ_Выручка3.Ссылка.Дата КАК ПериодМесяц,
	ВТ_Выручка3.Ссылка.Организация КАК Организация,
	ВТ_Выручка3.Ссылка КАК Регистратор,
	ВТ_Выручка3.Сумма КАК Сумма,
	ВТ_Выручка3.Подразделение КАК Подразделение,
	ВТ_Выручка3.Ссылка.Доход КАК Субконто1,
	ВТ_Выручка3.Ссылка.НоменклатурнаяГруппа КАК Субконто2
ПОМЕСТИТЬ РезультатДоход
ИЗ
	Документ.ВыручкаАГЗС.Выручка КАК ВТ_Выручка3
;
////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
	РезультатДоход.ПериодМесяц,
	РезультатДоход.Организация,
	РезультатДоход.Регистратор,
	РезультатДоход.Подразделение,	
	ВЫБОР
		КОГДА РезультатДоход.Сумма = 0
			ТОГДА NULL
		ИНАЧЕ (РезультатДоход.Сумма-ВТ_Себестоимость.СуммаОборотДт)
	КОНЕЦ КАК Сумма1
ПОМЕСТИТЬ Результат
ИЗ
	 РезультатДоход КАК РезультатДоход
	 	Левое СОЕДИНЕНИЕ ВТ_Себестоимость КАК ВТ_Себестоимость
		ПО (РезультатДоход.Подразделение = ВТ_Себестоимость.Подразделение)
;
////////////////////////////////////////////////////////////­////////////////////
Показать

Из 2 первых запросов беру суммы и произвожу вычисление в третьем из ВТ_Себестоимость сумму берет правильно, а РезультатДоход увеличивает на 33 (на дни похоже, но почему 33). По отдельности беру суммы берет правильно, а как только над суммой из РезультатДоход произвожу действие например прибавляю даже 0 он эту сумму увеличивает, например беру 2 000 000 + 0 он увеличивает до 66 000 000
код вывода результата в отчет
ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	ВТ_ПрибыльУбытки.ПериодМесяц,
	ВТ_ПрибыльУбытки.Организация,
	ВТ_ПрибыльУбытки.Регистратор,
	ВТ_ПрибыльУбытки.Сумма1,
	ВТ_ПрибыльУбытки.Подразделение,
	" Прибыль/Убытки",
	" ",
	" ",
	" "
ИЗ
	Результат КАК ВТ_ПрибыльУбытки 
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. ZergKRSK 129 14.09.21 09:38 Сейчас в теме
(1) будет увеличивать во столько раз, сколько соединится левым соединением с ВТ_Себестоимость
3. user734952 14.09.21 09:39 Сейчас в теме
(2) ВНУТРЕНИМ тоже увеличивает
4. ZergKRSK 129 14.09.21 09:40 Сейчас в теме
7. dhurricane 14.09.21 10:31 Сейчас в теме
(1) Самое простое решение: разбить запрос на два набора данных.
8. user734952 14.09.21 10:37 Сейчас в теме
9. dhurricane 14.09.21 10:46 Сейчас в теме
(8) Так буквально.
1. На закладке "Наборы данных" добавляете новый набор типа "Запрос", повторяете запрос к регистру выручки (без помещения во временную таблицу).
2. На той же закладке добавляете второй набор типа "Запрос", в нем текст запроса к регистру бухгалтерии (также без помещения во временную таблицу).
3. На закладке "Связи наборов данных" связываете оба набора по нужным Вам полям. Источник связи - первый набор, приемник - второй.
4. На закладке "Вычисляемые поля" добавляете поле "Сумма1" с выражением "Сумма - ЕстьNull(СуммаОборотДт, 0)"
5. На закладке "Ресурсы" добавляете все числовые поля:
5.1. Для "Сумма" выражение "Сумма(Сумма)" (лучше конечно переименовать поле)
5.2. Для "СуммаОборотДт" выражение "Сумма(СуммаОборотДт)"
5.3. Для "Сумма1" выражение "Сумма(Сумма) - ЕстьNull(Сумма(СуммаОборотДт), 0)"

Я написал, используя Ваши же имена полей. Но лучше дать им более осмысленные имена.
5. user734952 14.09.21 10:18 Сейчас в теме
а как выкрутиться предложите пожалуйста
6. ZergKRSK 129 14.09.21 10:24 Сейчас в теме
(5) СГРУППИРОВАТЬ должно помочь
10. ДмитрийС 14.09.21 10:46 Сейчас в теме
ВЫБРАТЬ РАЗРЕШЕННЫЕ
    РезультатДоход.ПериодМесяц,
    РезультатДоход.Организация,
    РезультатДоход.Регистратор,
    РезультатДоход.Подразделение, 
    РезультатДоход.Сумма,
    Сумма(ЕстьNull(ВТ_Себестоимость.СуммаОборотДт,0)) КАК СуммаОборотДт 
ПОМЕСТИТЬ Результат
ИЗ
     РезультатДоход КАК РезультатДоход
         Левое СОЕДИНЕНИЕ ВТ_Себестоимость КАК ВТ_Себестоимость
        ПО (РезультатДоход.Подразделение = ВТ_Себестоимость.Подразделение)

Сгруппировать ПО
    РезультатДоход.ПериодМесяц,
    РезультатДоход.Организация,
    РезультатДоход.Регистратор,
    РезультатДоход.Подразделение, 
    РезультатДоход.Сумма

;
/////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
    Результат.ПериодМесяц,
    Результат.Организация,
    Результат.Регистратор,
    Результат.Подразделение,    
    ВЫБОР
        КОГДА Результат.Сумма = 0
            ТОГДА NULL
        ИНАЧЕ (Результат.Сумма-Результат.СуммаОборотДт)
    КОНЕЦ КАК Сумма1 КАК

ИЗ
     Результат КАК Результат

Показать


Может так?
12. dhurricane 14.09.21 11:01 Сейчас в теме
(10) Не поможет, т.к. у таблицы с выручкой большая детализация аналитики, нежели у таблицы с себестоимостью: в таблице выручки есть регистратор.
13. user734952 14.09.21 11:08 Сейчас в теме
(12)Помогло Сгруппировать ПО, Регистратор можно и не использовать я его убрала. Спасибо
15. ДмитрийС 14.09.21 11:51 Сейчас в теме
(12) тогда надо добавить поля соединения) Или убрать поля выборки - группировки. Что собственно и сделала user734952 .
14. user734952 14.09.21 11:09 Сейчас в теме
(10) СПАСИБО!!! Помогло Сгруппировать ПО
11. user734952 14.09.21 10:49 Сейчас в теме
спасибо, буду пробовать, потом отпишусь
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот