Соединяем план и факт
Теги: 1С,СКД,Отчет,Запрос

# Примечания

- Я полагаю нормативы заданы для всех продуктов,  поэтому нужно левое соединение к таблице регистра сведений, собственно и поля "Учреждение", "КатегорияДовольствующихся" и "ГруппаПродкутовПитания" брать нужно оттуда, а из таблицы регистра накопления брать только фактические показатели по количеству и сумме. Отчет на самом деле очень простой, но по хорошему надо добавить параметры виртуальной таблицы оборотов, &ДатаНачала, &ДатаОкончания и брать срез последних на &ДатаНачала, чтобы вы получали результат за период.

- (1) Zloyka, в процессе работы нормативы могут быть заданы не для всех позиций и пользователь это должен увидеть в отчёте.

- Сейчас попробую набросать.

- (3) Zloyka, я так понимаю, что вы бы при решении сходной задачи пользовались бы именно этим способом? Я также решил эту задачу. Просто меня мучают сомнения: является ли этот способ оптимальным и правильным? Вот в БГУ 1.0 в отчете АнализИсполненияПланаФХД аналогичную задачу решают с помощью объединения Запросов по плану и факту в сводную временную таблицу, а дальше делают запрос к этой временной таблице... Почему разработчики пошли таким путём а не нашим?

- (3) Zloyka, не утруждайтесь:
ВЫБРАТЬ
	ЕСТЬNULL(РасходПродуктовПоКДОбороты.Учреждение, АП_НормативыПитанияНатуральныеСрезПоследних.Учреждение) КАК Учреждение,
	ЕСТЬNULL(РасходПродуктовПоКДОбороты.КатегорияДовольствующихся, АП_НормативыПитанияНатуральныеСрезПоследних.КатегорияДовольствующихся) КАК КатегорияДовольствующихся,
	ЕСТЬNULL(РасходПродуктовПоКДОбороты.Номенклатура.ГруппаПродуктовПитания, АП_НормативыПитанияНатуральныеСрезПоследних.ГруппаПродуктовПитания) КАК ГруппаПродуктовПитания,
	РасходПродуктовПоКДОбороты.КоличествоОборот КАК КоличествоФакт,
	РасходПродуктовПоКДОбороты.СуммаОборот КАК СуммаФакт,
	АП_НормативыПитанияНатуральныеСрезПоследних.Количество КАК КоличествоНорма,
	АП_НормативыПитанияНатуральныеСрезПоследних.Сумма КАК СуммаНорма
ИЗ
	РегистрНакопления.РасходПродуктовПоКД.Обороты КАК РасходПродуктовПоКДОбороты
		ПОЛНОЕ СОЕДИНЕНИЕ РегистрСведений.АП_НормативыПитанияНатуральные.СрезПоследних(&ДатаНорматива, ) КАК АП_НормативыПитанияНатуральныеСрезПоследних
		ПО РасходПродуктовПоКДОбороты.Учреждение = АП_НормативыПитанияНатуральныеСрезПоследних.Учреждение
			И РасходПродуктовПоКДОбороты.КатегорияДовольствующихся = АП_НормативыПитанияНатуральныеСрезПоследних.КатегорияДовольствующихся
			И РасходПродуктовПоКДОбороты.Номенклатура.ГруппаПродуктовПитания = АП_НормативыПитанияНатуральныеСрезПоследних.ГруппаПродуктовПитания

Это имеете в виду?!

- (4) SDV, во-первых уже не правильно, если оставить все как есть то у вас будут пустые поля где, например, не было движений, но были нормы, получится вот так
Поэтому правильно будет сделать для учреждения, группы и категории вот так
ЕСТЬNULL(РасходПродуктовОбороты.Учреждение, НормативыСрезПоследних.Учреждение) КАК Учреждение
Приложил, выгрузку базы с конфигурацией которую набросал, там есть этот отчет в СКД
Да, именно это я и име в виду.
АнализРасходаПродуктов.dt

- У меня:
ЕСТЬNULL(РасходПродуктовПоКДОбороты.Учреждение, АП_НормативыПитанияНатуральныеСрезПоследних.Учреждение) КАК Учреждение,
у вас:
ЕСТЬNULL(РасходПродуктовОбороты.Учреждение, НормативыСрезПоследних.Учреждение) КАК Учреждение
эээ... не вижу разницы
p.s. Спасибо что так основательно взялись за обсуждение =)

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

- Супер исчерпывающий ответ у вас получился =) Спасибо! С вашего позволения я немного повременю с установкой "Решено" - может будут ещё мнения по этому вопросу у сообщества. Интересно же =)

- (9) SDV, вариант с объединением отчет "Анализ объединение"
ВЫБРАТЬ
	НормативыСрезПоследних.Учреждение КАК Учреждение,
	НормативыСрезПоследних.Категория КАК Категория,
	НормативыСрезПоследних.ГруппаПродуктов КАК ГруппаПродуктов,
	НормативыСрезПоследних.Количество КАК КоличествоПлан,
	НормативыСрезПоследних.Сумма КАК СуммаПлан,
	NULL КАК КоличествоФакт,
	NULL КАК СуммаФакт
ПОМЕСТИТЬ ВТ
ИЗ
	РегистрСведений.Нормативы.СрезПоследних КАК НормативыСрезПоследних

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

ВЫБРАТЬ
	РасходПродуктовОбороты.Учреждение,
	РасходПродуктовОбороты.Категория,
	РасходПродуктовОбороты.ГруппаПродуктов,
	NULL,
	NULL,
	РасходПродуктовОбороты.КоличествоОборот,
	РасходПродуктовОбороты.СуммаОборот
ИЗ
	РегистрНакопления.РасходПродуктов.Обороты КАК РасходПродуктовОбороты
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	ВТ.Учреждение КАК Учреждение,
	ВТ.Категория КАК Категория,
	ВТ.ГруппаПродуктов КАК ГруппаПродуктов,
	СУММА(ВТ.КоличествоПлан) КАК КоличествоПлан,
	СУММА(ВТ.СуммаПлан) КАК СуммаПлан,
	СУММА(ВТ.КоличествоФакт) КАК КоличествоФакт,
	СУММА(ВТ.СуммаФакт) КАК СуммаФакт
ИЗ
	ВТ КАК ВТ

СГРУППИРОВАТЬ ПО
	ВТ.Учреждение,
	ВТ.Категория,
	ВТ.ГруппаПродуктов

Обновленная конфигурация прилагается, результат точно такой же, там оба отчета.
1Cv8.dt

- (10) Zloyka, ну может тогда стоит и средствами СКД попробовать реализовать объединение?! Для полного комплекта

- (11) SDV, открою вам страшную тайну ими никто не пользуется, но раз уж вы настаиваете) Кроме того чтобы просуммировать записи объединения, на закладке настройки придется создавать вместо группировки "детальные записи", группировку формирующуюся ключом уникальности из трех полей (учреждение, категория, группа продуктов). Конфигурацию со всеми тремя вариантами прилагаю. Третий отчет "Анализ объединением СКД", результат везде одинаковый.
Финальная.dt