Внешний отчет СКД

1. user_NP 21.03.24 08:21 Сейчас в теме
Помогите, сейчас умру...😫.
Внешний отчет на КА 2.5...

Был работающий отчет (с наборами данных) ... попросили вывести общие итоги... Общие итоги выводились не корректно... Приняла решение соединить наборы данных в 1 запрос... теперь выводится какая-то билиберда (все по 2)... Не вижу уже, взе замылилось... целую неделю сижу с этим((((

(1 - как было)
(2 - как стало)

ВЫБРАТЬ
	ПроизводствоБезЗаказа.Ссылка КАК Ссылка,
	ПроизводствоБезЗаказа.Дата КАК Дата,
	ПроизводствоБезЗаказаВыходныеИзделия.Ссылка КАК СсылкаМар,
	ПроизводствоБезЗаказаВыходныеИзделия.Номенклатура КАК Марка,
	ПроизводствоБезЗаказаВыходныеИзделия.Спецификация КАК Спецификация,
	СУММА(ВЫБОР
			КОГДА ПроизводствоБезЗаказаВыходныеИзделия.Упаковка.Наименование = "т"
				ТОГДА ПроизводствоБезЗаказаВыходныеИзделия.КоличествоУпаковок
			ИНАЧЕ ВЫБОР
					КОГДА ПроизводствоБезЗаказаВыходныеИзделия.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
							ИЛИ ПроизводствоБезЗаказаВыходныеИзделия.Упаковка.Наименование = "кг"
						ТОГДА ПроизводствоБезЗаказаВыходныеИзделия.КоличествоУпаковок / 1000
					ИНАЧЕ 0
				КОНЕЦ
		КОНЕЦ) КАК КоличествоУпаковок,
	ПроизводствоБезЗаказаВыходныеИзделия.НомерГруппыЗатрат КАК НомерГруппыЗатрат
ПОМЕСТИТЬ втМарка
ИЗ
	Документ.ПроизводствоБезЗаказа КАК ПроизводствоБезЗаказа
		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПроизводствоБезЗаказа.ВыходныеИзделия КАК ПроизводствоБезЗаказаВыходныеИзделия
		ПО ПроизводствоБезЗаказаВыходныеИзделия.Ссылка = ПроизводствоБезЗаказа.Ссылка
ГДЕ
	ПроизводствоБезЗаказа.Проведен
{ГДЕ
	(ПроизводствоБезЗаказа.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания) КАК Дата}

СГРУППИРОВАТЬ ПО
	ПроизводствоБезЗаказаВыходныеИзделия.Номенклатура,
	ПроизводствоБезЗаказа.Ссылка,
	ПроизводствоБезЗаказа.Дата,
	ПроизводствоБезЗаказаВыходныеИзделия.Ссылка,
	ПроизводствоБезЗаказаВыходныеИзделия.Спецификация,
	ПроизводствоБезЗаказаВыходныеИзделия.НомерГруппыЗатрат
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
	ПроизводствоБезЗаказаМатериалыИРаботы.Номенклатура КАК Номенклатура,
	ПроизводствоБезЗаказаМатериалыИРаботы.Номенклатура.ЕдиницаИзмерения КАК НоменклатураЕдиницаИзмерения,
	СУММА(ЕСТЬNULL(ПроизводствоБезЗаказаМатериалыИРаботы.КоличествоУпаковок, 0)) КАК КоличествоФ,
	ПроизводствоБезЗаказаМатериалыИРаботы.Ссылка КАК Ссылка,
	ПроизводствоБезЗаказаМатериалыИРаботы.НомерГруппыЗатрат КАК НомерГруппыЗатрат,
	ПроизводствоБезЗаказаМатериалыИРаботы.АналитикаУчетаНоменклатуры.Номенклатура КАК АналитикаУчетаНоменклатурыНоменклатура
ПОМЕСТИТЬ втМатериалыФ
ИЗ
	Документ.ПроизводствоБезЗаказа.МатериалыИРаботы КАК ПроизводствоБезЗаказаМатериалыИРаботы

СГРУППИРОВАТЬ ПО
	ПроизводствоБезЗаказаМатериалыИРаботы.Номенклатура,
	ПроизводствоБезЗаказаМатериалыИРаботы.Номенклатура.ЕдиницаИзмерения,
	ПроизводствоБезЗаказаМатериалыИРаботы.Ссылка,
	ПроизводствоБезЗаказаМатериалыИРаботы.НомерГруппыЗатрат,
	ПроизводствоБезЗаказаМатериалыИРаботы.АналитикаУчетаНоменклатуры.Номенклатура
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	РесурсныеСпецификацииМатериалыИУслуги.Номенклатура КАК Номенклатура,
	ЕСТЬNULL(РесурсныеСпецификацииМатериалыИУслуги.КоличествоУпаковок, 0) КАК КоличествоП,
	РесурсныеСпецификацииМатериалыИУслуги.Ссылка КАК Спецификация,
	втМарка.Спецификация КАК Спецификация1
ПОМЕСТИТЬ втМатериалыП
ИЗ
	втМарка КАК втМарка
		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.РесурсныеСпецификации.МатериалыИУслуги КАК РесурсныеСпецификацииМатериалыИУслуги
		ПО втМарка.Спецификация = РесурсныеСпецификацииМатериалыИУслуги.Ссылка
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	СУММА(ЕСТЬNULL(СебестоимостьТоваров.СтоимостьРегл, 0)) КАК Стоимость,
	СУММА(ЕСТЬNULL(СебестоимостьТоваров.Количество, 0)) КАК Количество,
	втМатериалыФ.Номенклатура КАК Номенклатура
ПОМЕСТИТЬ Себестоимость
ИЗ
	втМатериалыФ КАК втМатериалыФ
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СебестоимостьТоваров КАК СебестоимостьТоваров
		ПО втМатериалыФ.Номенклатура = СебестоимостьТоваров.АналитикаУчетаНоменклатуры.Номенклатура
			И втМатериалыФ.Ссылка = СебестоимостьТоваров.Регистратор

СГРУППИРОВАТЬ ПО
	втМатериалыФ.Номенклатура
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
	СУММА(ЕСТЬNULL(СебестоимостьТоваровОбороты.СтоимостьРасход, 0)) КАК ОСтоимость,
	СУММА(ЕСТЬNULL(СебестоимостьТоваровОбороты.КоличествоРасход, 0)) КАК ОКоличество,
	втМатериалыП.Номенклатура КАК Номенклатура
ПОМЕСТИТЬ СебестоимостьО
ИЗ
	втМатериалыП КАК втМатериалыП
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СебестоимостьТоваров.Обороты КАК СебестоимостьТоваровОбороты
		ПО втМатериалыП.Номенклатура = СебестоимостьТоваровОбороты.АналитикаУчетаНоменклатуры.Номенклатура

СГРУППИРОВАТЬ ПО
	втМатериалыП.Номенклатура
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
	втМарка.Ссылка КАК Ссылка,
	втМарка.Дата КАК Дата,
	втМарка.Марка КАК Марка,
	втМарка.Спецификация КАК Спецификация,
	СУММА(ЕСТЬNULL(втМарка.КоличествоУпаковок, 0)) КАК КоличествоУпаковок,
	втМатериалыП.Номенклатура КАК Номенклатура,
	СУММА(ЕСТЬNULL(втМатериалыП.КоличествоП, 0)) КАК КоличествоП,
	СУММА(0) КАК КоличествоФ
ПОМЕСТИТЬ втИтог
ИЗ
	втМарка КАК втМарка
		ПОЛНОЕ СОЕДИНЕНИЕ втМатериалыП КАК втМатериалыП
		ПО втМарка.Спецификация = втМатериалыП.Спецификация

СГРУППИРОВАТЬ ПО
	втМарка.Ссылка,
	втМарка.Дата,
	втМарка.Марка,
	втМарка.Спецификация,
	втМатериалыП.Номенклатура

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ РАЗЛИЧНЫЕ
	втМарка.Ссылка,
	втМарка.Дата,
	втМарка.Марка,
	втМарка.Спецификация,
	СУММА(ЕСТЬNULL(втМарка.КоличествоУпаковок, 0)),
	втМатериалыФ.Номенклатура,
	СУММА(0),
	СУММА(ЕСТЬNULL(втМатериалыФ.КоличествоФ, 0))
ИЗ
	втМарка КАК втМарка
		ЛЕВОЕ СОЕДИНЕНИЕ втМатериалыФ КАК втМатериалыФ
		ПО втМарка.НомерГруппыЗатрат = втМатериалыФ.НомерГруппыЗатрат
			И втМарка.Ссылка = втМатериалыФ.Ссылка

СГРУППИРОВАТЬ ПО
	втМатериалыФ.Номенклатура,
	втМарка.Ссылка,
	втМарка.Дата,
	втМарка.Марка,
	втМарка.Спецификация
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	втИтог.Ссылка КАК Ссылка,
	втИтог.Дата КАК Дата,
	втИтог.Марка КАК Марка,
	втИтог.Спецификация КАК Спецификация,
	СУММА(втИтог.КоличествоУпаковок) КАК КоличествоУпаковок,
	втИтог.Номенклатура КАК Номенклатура,
	СУММА(втИтог.КоличествоП) КАК КоличествоП,
	СУММА(втИтог.КоличествоФ) КАК КоличествоФ
ПОМЕСТИТЬ втГрупп
ИЗ
	втИтог КАК втИтог

СГРУППИРОВАТЬ ПО
	втИтог.Ссылка,
	втИтог.Дата,
	втИтог.Марка,
	втИтог.Спецификация,
	втИтог.Номенклатура
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	втГрупп.Ссылка КАК Ссылка,
	втГрупп.Дата КАК Дата,
	втГрупп.Марка КАК Марка,
	втГрупп.Спецификация КАК Спецификация,
	втГрупп.КоличествоУпаковок КАК КоличествоУпаковок,
	втГрупп.Номенклатура КАК Номенклатура,
	втГрупп.КоличествоП КАК КоличествоП,
	втГрупп.КоличествоФ КАК КоличествоФ,
	ВЫБОР
		КОГДА НЕ Себестоимость.Стоимость ЕСТЬ NULL
			ТОГДА Себестоимость.Стоимость / ВЫБОР
					КОГДА Себестоимость.Количество = 0
						ТОГДА 1
					ИНАЧЕ Себестоимость.Количество
				КОНЕЦ
		ИНАЧЕ СебестоимостьО.ОСтоимость / ВЫБОР
				КОГДА СебестоимостьО.ОКоличество = 0
					ТОГДА 1
				ИНАЧЕ СебестоимостьО.ОКоличество
			КОНЕЦ
	КОНЕЦ КАК Себестоимость
ИЗ
	втГрупп КАК втГрупп
		ЛЕВОЕ СОЕДИНЕНИЕ Себестоимость КАК Себестоимость
		ПО втГрупп.Номенклатура = Себестоимость.Номенклатура
			И (втГрупп.КоличествоФ > 0)
		ЛЕВОЕ СОЕДИНЕНИЕ СебестоимостьО КАК СебестоимостьО
		ПО втГрупп.Номенклатура = СебестоимостьО.Номенклатура
			И (втГрупп.КоличествоФ = 0)
Показать
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. 1segen1 33 21.03.24 09:17 Сейчас в теме
При использовании наборов данных СКД верно считает итоги при наличии дублей в подчиненном наборе. Если изменили на получение данные в 1 наборе - избавление от дублей ваша проблема.
Если изначально проблема была в итогах, то попробуйте использовать свои выражения для вычисления.
4. user_NP 21.03.24 09:36 Сейчас в теме
(2)Да, были дубли из-за того, что использовалось полное соединение (так надо)... и из-за этого бралось среднее значение из 2 наборов... не смогла победить, чтобы он просто суммировал то что есть в таблице(((
3. user_NP 21.03.24 09:24 Сейчас в теме
(2)Делала пользовательские поля тоже... СебестоимостьИтог - пользовательское, Себестоимость откллонениея на выпуск - через ресурсы... И ни то, ни другое не правильное(((
Прикрепленные файлы:
5. 1segen1 33 21.03.24 09:37 Сейчас в теме
Когда не понятен результат, отчет вывожу на уровне детальных записей. И смотрю расчет показателей. В сгруппированном отчете трудно разбираться.
6. user_NP 21.03.24 09:44 Сейчас в теме
(5) Да понятно почему он так считает... Не понятно, что с этим делать...
Прикрепленные файлы:
7. user_NP 21.03.24 10:05 Сейчас в теме
Хотя может тогда кто подскажет, как от этого дела избавиться, и тогда должно встать все на свои места... Не группировкой (так плохо считает), а на уровне запроса...

                     ВЫБРАТЬ
	ПроизводствоБезЗаказа.Ссылка КАК Ссылка,
	ПроизводствоБезЗаказа.Дата КАК Дата,
	ПроизводствоБезЗаказаВыходныеИзделия.Ссылка КАК СсылкаМар,
	ПроизводствоБезЗаказаВыходныеИзделия.Номенклатура КАК Марка,
	ПроизводствоБезЗаказаВыходныеИзделия.Спецификация КАК Спецификация,
	СУММА(ВЫБОР
			КОГДА ПроизводствоБезЗаказаВыходныеИзделия.Упаковка.Наименование = "т"
				ТОГДА ПроизводствоБезЗаказаВыходныеИзделия.КоличествоУпаковок
			ИНАЧЕ ВЫБОР
					КОГДА ПроизводствоБезЗаказаВыходныеИзделия.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
							ИЛИ ПроизводствоБезЗаказаВыходныеИзделия.Упаковка.Наименование = "кг"
						ТОГДА ПроизводствоБезЗаказаВыходныеИзделия.КоличествоУпаковок / 1000
					ИНАЧЕ 0
				КОНЕЦ
		КОНЕЦ) КАК КоличествоУпаковок,
	ПроизводствоБезЗаказаВыходныеИзделия.НомерГруппыЗатрат КАК НомерГруппыЗатрат
ПОМЕСТИТЬ втМарка
ИЗ
	Документ.ПроизводствоБезЗаказа.ВыходныеИзделия КАК ПроизводствоБезЗаказаВыходныеИзделия
		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПроизводствоБезЗаказа КАК ПроизводствоБезЗаказа
		ПО ПроизводствоБезЗаказаВыходныеИзделия.Ссылка = ПроизводствоБезЗаказа.Ссылка
ГДЕ
	ПроизводствоБезЗаказа.Проведен
{ГДЕ
	(ПроизводствоБезЗаказа.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания)}

СГРУППИРОВАТЬ ПО
	ПроизводствоБезЗаказаВыходныеИзделия.Номенклатура,
	ПроизводствоБезЗаказа.Ссылка,
	ПроизводствоБезЗаказа.Дата,
	ПроизводствоБезЗаказаВыходныеИзделия.Ссылка,
	ПроизводствоБезЗаказаВыходныеИзделия.Спецификация,
	ПроизводствоБезЗаказаВыходныеИзделия.НомерГруппыЗатрат
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
	ПроизводствоБезЗаказаМатериалыИРаботы.Номенклатура КАК Номенклатура,
	ПроизводствоБезЗаказаМатериалыИРаботы.Номенклатура.ЕдиницаИзмерения КАК НоменклатураЕдиницаИзмерения,
	СУММА(ЕСТЬNULL(ПроизводствоБезЗаказаМатериалыИРаботы.КоличествоУпаковок, 0)) КАК КоличествоФ,
	ПроизводствоБезЗаказаМатериалыИРаботы.Ссылка КАК Ссылка,
	ПроизводствоБезЗаказаМатериалыИРаботы.НомерГруппыЗатрат КАК НомерГруппыЗатрат,
	ПроизводствоБезЗаказаМатериалыИРаботы.АналитикаУчетаНоменклатуры.Номенклатура КАК АналитикаУчетаНоменклатурыНоменклатура
ПОМЕСТИТЬ втМатериалыФ
ИЗ
	Документ.ПроизводствоБезЗаказа.МатериалыИРаботы КАК ПроизводствоБезЗаказаМатериалыИРаботы

СГРУППИРОВАТЬ ПО
	ПроизводствоБезЗаказаМатериалыИРаботы.Номенклатура,
	ПроизводствоБезЗаказаМатериалыИРаботы.Номенклатура.ЕдиницаИзмерения,
	ПроизводствоБезЗаказаМатериалыИРаботы.Ссылка,
	ПроизводствоБезЗаказаМатериалыИРаботы.НомерГруппыЗатрат,
	ПроизводствоБезЗаказаМатериалыИРаботы.АналитикаУчетаНоменклатуры.Номенклатура
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	РесурсныеСпецификацииМатериалыИУслуги.Номенклатура КАК Номенклатура,
	ЕСТЬNULL(РесурсныеСпецификацииМатериалыИУслуги.КоличествоУпаковок, 0) КАК КоличествоП,
	РесурсныеСпецификацииМатериалыИУслуги.Ссылка КАК Спецификация
ПОМЕСТИТЬ втМатериалыП
ИЗ
	Справочник.РесурсныеСпецификации.МатериалыИУслуги КАК РесурсныеСпецификацииМатериалыИУслуги
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
	втМарка.Ссылка КАК Ссылка,
	втМарка.Дата КАК Дата,
	втМарка.Марка КАК Марка,
	втМарка.Спецификация КАК Спецификация,
	ЕСТЬNULL(втМарка.КоличествоУпаковок, 0) КАК КоличествоУпаковок,
	втМатериалыП.Номенклатура КАК Номенклатура,
	ЕСТЬNULL(втМатериалыП.КоличествоП, 0) КАК КоличествоП,
	0 КАК КоличествоФ
ИЗ
	втМарка КАК втМарка
		ПОЛНОЕ СОЕДИНЕНИЕ втМатериалыП КАК втМатериалыП
		ПО втМарка.Спецификация = втМатериалыП.Спецификация

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ РАЗЛИЧНЫЕ
	втМарка.Ссылка,
	втМарка.Дата,
	втМарка.Марка,
	втМарка.Спецификация,
	ЕСТЬNULL(втМарка.КоличествоУпаковок, 0),
	втМатериалыФ.Номенклатура,
	0,
	ЕСТЬNULL(втМатериалыФ.КоличествоФ, 0)
ИЗ
	втМарка КАК втМарка
		ЛЕВОЕ СОЕДИНЕНИЕ втМатериалыФ КАК втМатериалыФ
		ПО втМарка.НомерГруппыЗатрат = втМатериалыФ.НомерГруппыЗатрат
			И втМарка.Ссылка = втМатериалыФ.Ссылка

СГРУППИРОВАТЬ ПО
	втМатериалыФ.Номенклатура,
	втМарка.Ссылка,
	втМарка.Дата,
	втМарка.Марка,
	втМарка.Спецификация,
	ЕСТЬNULL(втМарка.КоличествоУпаковок, 0),
	ЕСТЬNULL(втМатериалыФ.КоличествоФ, 0)
Показать



(Не нашла как код подцепить 🙄)
Прикрепленные файлы:
8. user_NP 22.03.24 13:00 Сейчас в теме
Вопрос закрыт. Победила... Решением было всего - то весь отбор (запрос) - закинуть во временную таблицу. А уже из итоговой временной таблицы все поля подтягивать. Все посчитала через обычные вычисляемые поля (не пользовательские) и итоги сошлись! УРА)))
Оставьте свое сообщение

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