Объединить Запросы в один

1. user1008893 06.12.19 14:38 Сейчас в теме
ВЫБРАТЬ
	Вложенный.Номенклатура,
	Вложенный.ВариантИсполнения,
	Вложенный.КолОборотПродажи,
	Вложенный.Кол,
	Вложенный.Цена,
	Вложенный.ДатаИсполнения,
	Вложенный.ЗаказНаПроизводство,
	Вложенный.ПодЗаказСсылка,
	Вложенный.Статус,
	Вложенный.КолВыпуск,
	Вложенный.ОстатокНаСкладе
ИЗ
	(ВЫБРАТЬ
		ЗаказНаПроизводствоТЧПродукция.Номенклатура КАК Номенклатура,
		ЗаказНаПроизводствоТЧПродукция.ВариантИсполнения КАК ВариантИсполнения,
		NULL КАК КолОборотПродажи,
		ЗаказНаПроизводствоТЧПродукция.Кол КАК Кол,
		ЦеныНоменклатурыСрезПоследних.Цена КАК Цена,
		ЗаказНаПроизводствоТЧПродукция.Ссылка.ДатаИсполнения КАК ДатаИсполнения,
		ЗаказНаПроизводствоТЧПродукция.Ссылка КАК ЗаказНаПроизводство,
		ЗаказНаПроизводствоТЧПродукция.Ссылка.ПодЗаказ.Ссылка КАК ПодЗаказСсылка,
		СтатусыВыполненияЗаказов.Статус КАК Статус,
		ВыпускПродукцииТЧПродукция.Кол КАК КолВыпуск,
		NULL КАК ОстатокНаСкладе
	ИЗ
		Документ.ЗаказНаПроизводство.ТЧПродукция КАК ЗаказНаПроизводствоТЧПродукция
			ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
			ПО (ЦеныНоменклатурыСрезПоследних.Номенклатура = ЗаказНаПроизводствоТЧПродукция.Номенклатура)
			ЛЕВОЕ СОЕДИНЕНИЕ Документ.ВыпускПродукции.ТЧПродукция КАК ВыпускПродукцииТЧПродукция
			ПО ЗаказНаПроизводствоТЧПродукция.Ссылка = ВыпускПродукцииТЧПродукция.ДокЗаказНаПроизводство.Ссылка
			ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СтатусыВыполненияЗаказов КАК СтатусыВыполненияЗаказов
			ПО (СтатусыВыполненияЗаказов.Заказ = ЗаказНаПроизводствоТЧПродукция.Ссылка)
	ГДЕ
		ЗаказНаПроизводствоТЧПродукция.Ссылка.ДатаИсполнения МЕЖДУ &ДатаНачала И &ДатаОкончания
	
	ОБЪЕДИНИТЬ ВСЕ
	
	ВЫБРАТЬ
		ОстаткиТМЦОстатки.Номенклатура,
		ОстаткиТМЦОстатки.ВариантИсполнения,
		NULL,
		NULL,
		NULL,
		NULL,
		NULL,
		NULL,
		NULL,
		NULL,
		ЕСТЬNULL(ОстаткиТМЦОстатки.КолОстаток, 0) - ЕСТЬNULL(РезервыОстатки.КолОстаток, 0)
	ИЗ
		РегистрНакопления.ОстаткиТМЦ.Остатки КАК ОстаткиТМЦОстатки
			ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Резервы.Остатки КАК РезервыОстатки
			ПО ОстаткиТМЦОстатки.Номенклатура = РезервыОстатки.Номенклатура
				И ОстаткиТМЦОстатки.ВариантИсполнения = РезервыОстатки.ВариантИсполнения
	
	ОБЪЕДИНИТЬ ВСЕ
	
	ВЫБРАТЬ
		ПродажиОборотыОбороты.Номенклатура,
		ПродажиОборотыОбороты.ВариантИсполнения,
		ПродажиОборотыОбороты.КолОборот,
		NULL,
		NULL,
		NULL,
		NULL,
		NULL,
		NULL,
		NULL,
		NULL
	ИЗ
		РегистрНакопления.ПродажиОбороты.Обороты(&ДатаНачала, &ДатаОкончания, , ) КАК ПродажиОборотыОбороты) КАК Вложенный

СГРУППИРОВАТЬ ПО
	Вложенный.Номенклатура,
	Вложенный.ВариантИсполнения,
	Вложенный.КолОборотПродажи,
	Вложенный.Кол,
	Вложенный.Цена,
	Вложенный.ДатаИсполнения,
	Вложенный.ЗаказНаПроизводство,
	Вложенный.ПодЗаказСсылка,
	Вложенный.Статус,
	Вложенный.КолВыпуск,
	Вложенный.ОстатокНаСкладе
Показать


Есть запрос,нужно объединить все по строке номенклатура,но не получается. Подскажите пожалуйста...
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. nomad_irk 71 06.12.19 14:41 Сейчас в теме
(1) Что значит "объединить все по строке номенклатура, но не получается"? Если после группировки есть множественные строки по номенклатуре, то необходимо разбираться, почему они получаются.

Избавьтесь от вложенного запроса и разобраться станет проще.
3. user1008893 06.12.19 14:45 Сейчас в теме
(2)
ВЫБРАТЬ
	ЗаказНаПроизводствоТЧПродукция.Номенклатура,
	ЗаказНаПроизводствоТЧПродукция.Кол КАК КолЗаказа,
	ЦеныНоменклатурыСрезПоследних.Цена,
	ЗаказНаПроизводство.ДатаИсполнения,
	ЗаказНаПроизводство.Ссылка КАК ЗаказНаПроизводство,
	ЗаказНаПроизводство.ПодЗаказ.Ссылка,
	СтатусыВыполненияЗаказов.Статус,
	ВыпускПродукцииТЧПродукция.Кол КАК КолВыпущено,
	ЗаказНаПроизводствоТЧПродукция.ВариантИсполнения,
	ЗаказНаПроизводствоТЧПродукция.Ссылка.РабочийЦентр КАК РабочийЦентр
ПОМЕСТИТЬ Основа
ИЗ
	Документ.ЗаказНаПроизводство.ТЧПродукция КАК ЗаказНаПроизводствоТЧПродукция
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних({(&НачалоПериода)}, ) КАК ЦеныНоменклатурыСрезПоследних
		ПО ЗаказНаПроизводствоТЧПродукция.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказНаПроизводство КАК ЗаказНаПроизводство
			ЛЕВОЕ СОЕДИНЕНИЕ Справочник.РабочиеЦентры КАК РабочиеЦентры
			ПО ЗаказНаПроизводство.РабочийЦентр = РабочиеЦентры.Ссылка
			ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СтатусыВыполненияЗаказов КАК СтатусыВыполненияЗаказов
			ПО ЗаказНаПроизводство.Ссылка = СтатусыВыполненияЗаказов.Заказ
		ПО ЗаказНаПроизводствоТЧПродукция.Ссылка = ЗаказНаПроизводство.Ссылка
		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ВыпускПродукции.ТЧПродукция КАК ВыпускПродукцииТЧПродукция
		ПО ЗаказНаПроизводствоТЧПродукция.Ссылка = ВыпускПродукцииТЧПродукция.ДокЗаказНаПроизводство
ГДЕ
	НЕ ЗаказНаПроизводство.ПометкаУдаления
	И ЗаказНаПроизводство.Проведен = ИСТИНА
	И НЕ ВыпускПродукцииТЧПродукция.Ссылка.ПометкаУдаления
	И ВыпускПродукцииТЧПродукция.Ссылка.Проведен = ИСТИНА
;

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

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	Остатки.ОстаткиНаСкладе КАК ОстаткиНаСкладе,
	Основа.КолВыпущено,
	Основа.Статус,
	Основа.ПодЗаказСсылка,
	Основа.ЗаказНаПроизводство,
	Основа.ДатаИсполнения,
	Основа.РабочийЦентр,
	Основа.Цена,
	Основа.КолЗаказа,
	Основа.Номенклатура КАК Номенклатура,
	Основа.ВариантИсполнения КАК ВариантИсполнения,
	ПродажиОборотыОбороты.КолОборот КАК КолОборотПродажи
ИЗ
	РегистрНакопления.ПродажиОбороты.Обороты КАК ПродажиОборотыОбороты
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Основа КАК Основа
			ЛЕВОЕ СОЕДИНЕНИЕ Остатки КАК Остатки
			ПО Основа.Номенклатура = Остатки.Номенклатура
				И Основа.ВариантИсполнения = Остатки.ВариантИсполнения
		ПО ПродажиОборотыОбороты.Номенклатура = Основа.Номенклатура
			И ПродажиОборотыОбороты.ВариантИсполнения = Основа.ВариантИсполнения
ГДЕ
	Основа.ЗаказНаПроизводство.ДатаИсполнения МЕЖДУ &ДатаНачала И &ДатаОкончания

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

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

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

ВЫБРАТЬ
	Остатки.ОстаткиНаСкладе,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	Остатки.Номенклатура,
	Остатки.ВариантИсполнения,
	NULL
ИЗ
	Остатки КАК Остатки

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

ВЫБРАТЬ
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	ПродажиОборотыОбороты.Номенклатура,
	ПродажиОборотыОбороты.ВариантИсполнения,
	ПродажиОборотыОбороты.КолОборот
ИЗ
	РегистрНакопления.ПродажиОбороты.Обороты КАК ПродажиОборотыОбороты
Показать


Так,выводит сначала первый запрос,потом 2 и тд.Друг за другом. То есть задваивает значения
5. nomad_irk 71 06.12.19 14:50 Сейчас в теме
(3)Логично, т.к. вы два раза продажи зачем-то выводите, сначала ограниченные по периоду, а второй раз - вообще все.
user1008893; +1 Ответить
6. user1008893 06.12.19 14:57 Сейчас в теме
(5)
ВЫБРАТЬ
	ЗаказНаПроизводствоТЧПродукция.Номенклатура,
	ЗаказНаПроизводствоТЧПродукция.Кол КАК КолЗаказа,
	ЦеныНоменклатурыСрезПоследних.Цена,
	ЗаказНаПроизводство.ДатаИсполнения,
	ЗаказНаПроизводство.Ссылка КАК ЗаказНаПроизводство,
	ЗаказНаПроизводство.ПодЗаказ.Ссылка,
	СтатусыВыполненияЗаказов.Статус,
	ВыпускПродукцииТЧПродукция.Кол КАК КолВыпущено,
	ЗаказНаПроизводствоТЧПродукция.ВариантИсполнения,
	ЗаказНаПроизводствоТЧПродукция.Ссылка.РабочийЦентр КАК РабочийЦентр
ПОМЕСТИТЬ Основа
ИЗ
	Документ.ЗаказНаПроизводство.ТЧПродукция КАК ЗаказНаПроизводствоТЧПродукция
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних({(&НачалоПериода)}, ) КАК ЦеныНоменклатурыСрезПоследних
		ПО ЗаказНаПроизводствоТЧПродукция.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказНаПроизводство КАК ЗаказНаПроизводство
			ЛЕВОЕ СОЕДИНЕНИЕ Справочник.РабочиеЦентры КАК РабочиеЦентры
			ПО ЗаказНаПроизводство.РабочийЦентр = РабочиеЦентры.Ссылка
			ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СтатусыВыполненияЗаказов КАК СтатусыВыполненияЗаказов
			ПО ЗаказНаПроизводство.Ссылка = СтатусыВыполненияЗаказов.Заказ
		ПО ЗаказНаПроизводствоТЧПродукция.Ссылка = ЗаказНаПроизводство.Ссылка
		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ВыпускПродукции.ТЧПродукция КАК ВыпускПродукцииТЧПродукция
		ПО ЗаказНаПроизводствоТЧПродукция.Ссылка = ВыпускПродукцииТЧПродукция.ДокЗаказНаПроизводство
ГДЕ
	НЕ ЗаказНаПроизводство.ПометкаУдаления
	И ЗаказНаПроизводство.Проведен = ИСТИНА
	И НЕ ВыпускПродукцииТЧПродукция.Ссылка.ПометкаУдаления
	И ВыпускПродукцииТЧПродукция.Ссылка.Проведен = ИСТИНА
;

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

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	Остатки.ОстаткиНаСкладе КАК ОстаткиНаСкладе,
	Основа.КолВыпущено,
	Основа.Статус,
	Основа.ПодЗаказСсылка,
	Основа.ЗаказНаПроизводство,
	Основа.ДатаИсполнения,
	Основа.РабочийЦентр,
	Основа.Цена,
	Основа.КолЗаказа,
	Основа.Номенклатура КАК Номенклатура,
	Основа.ВариантИсполнения КАК ВариантИсполнения,
	ПродажиОборотыОбороты.КолОборот КАК КолОборотПродажи
ИЗ
	РегистрНакопления.ПродажиОбороты.Обороты КАК ПродажиОборотыОбороты
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Основа КАК Основа
			ЛЕВОЕ СОЕДИНЕНИЕ Остатки КАК Остатки
			ПО Основа.Номенклатура = Остатки.Номенклатура
				И Основа.ВариантИсполнения = Остатки.ВариантИсполнения
		ПО ПродажиОборотыОбороты.Номенклатура = Основа.Номенклатура
			И ПродажиОборотыОбороты.ВариантИсполнения = Основа.ВариантИсполнения
ГДЕ
	Основа.ЗаказНаПроизводство.ДатаИсполнения МЕЖДУ &ДатаНачала И &ДатаОкончания
Показать


Вот так вот,вобще хорошо,но мне нужно чтобы выводилась вся номенклаутра,а не только та которая есть в заказах
8. nomad_irk 71 06.12.19 15:02 Сейчас в теме
(6)Сделайте еще один запрос, в котором основной таблицей будет справочник.Номенклатура и к нему левым соединением присоедините 3 таблицу по номенклатуре.
user1008893; +1 Ответить
11. user1008893 06.12.19 15:18 Сейчас в теме
(8)
ВЫБРАТЬ
	ЗаказНаПроизводствоТЧПродукция.Номенклатура,
	ЗаказНаПроизводствоТЧПродукция.Кол КАК КолЗаказа,
	ЦеныНоменклатурыСрезПоследних.Цена,
	ЗаказНаПроизводство.ДатаИсполнения,
	ЗаказНаПроизводство.Ссылка КАК ЗаказНаПроизводство,
	ЗаказНаПроизводство.ПодЗаказ.Ссылка,
	СтатусыВыполненияЗаказов.Статус,
	ВыпускПродукцииТЧПродукция.Кол КАК КолВыпущено,
	ЗаказНаПроизводствоТЧПродукция.ВариантИсполнения,
	ЗаказНаПроизводствоТЧПродукция.Ссылка.РабочийЦентр КАК РабочийЦентр
ПОМЕСТИТЬ Основа
ИЗ
	Документ.ЗаказНаПроизводство.ТЧПродукция КАК ЗаказНаПроизводствоТЧПродукция
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних({(&НачалоПериода)}, ) КАК ЦеныНоменклатурыСрезПоследних
		ПО ЗаказНаПроизводствоТЧПродукция.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказНаПроизводство КАК ЗаказНаПроизводство
			ЛЕВОЕ СОЕДИНЕНИЕ Справочник.РабочиеЦентры КАК РабочиеЦентры
			ПО ЗаказНаПроизводство.РабочийЦентр = РабочиеЦентры.Ссылка
			ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СтатусыВыполненияЗаказов КАК СтатусыВыполненияЗаказов
			ПО ЗаказНаПроизводство.Ссылка = СтатусыВыполненияЗаказов.Заказ
		ПО ЗаказНаПроизводствоТЧПродукция.Ссылка = ЗаказНаПроизводство.Ссылка
		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ВыпускПродукции.ТЧПродукция КАК ВыпускПродукцииТЧПродукция
		ПО ЗаказНаПроизводствоТЧПродукция.Ссылка = ВыпускПродукцииТЧПродукция.ДокЗаказНаПроизводство
ГДЕ
	НЕ ЗаказНаПроизводство.ПометкаУдаления
	И ЗаказНаПроизводство.Проведен = ИСТИНА
	И НЕ ВыпускПродукцииТЧПродукция.Ссылка.ПометкаУдаления
	И ВыпускПродукцииТЧПродукция.Ссылка.Проведен = ИСТИНА
;

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

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	Остатки.ОстаткиНаСкладе КАК ОстаткиНаСкладе,
	Основа.КолВыпущено,
	Основа.Статус,
	Основа.ПодЗаказСсылка,
	Основа.ЗаказНаПроизводство,
	Основа.ДатаИсполнения,
	Основа.РабочийЦентр,
	Основа.Цена,
	Основа.КолЗаказа,
	Основа.Номенклатура КАК Номенклатура,
	Основа.ВариантИсполнения КАК ВариантИсполнения,
	ПродажиОборотыОбороты.КолОборот КАК КолОборотПродажи
ПОМЕСТИТЬ ВСЕВМЕСТЕ
ИЗ
	РегистрНакопления.ПродажиОбороты.Обороты КАК ПродажиОборотыОбороты
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Основа КАК Основа
			ЛЕВОЕ СОЕДИНЕНИЕ Остатки КАК Остатки
			ПО Основа.Номенклатура = Остатки.Номенклатура
				И Основа.ВариантИсполнения = Остатки.ВариантИсполнения
		ПО ПродажиОборотыОбороты.Номенклатура = Основа.Номенклатура
			И ПродажиОборотыОбороты.ВариантИсполнения = Основа.ВариантИсполнения
ГДЕ
	Основа.ЗаказНаПроизводство.ДатаИсполнения МЕЖДУ &ДатаНачала И &ДатаОкончания
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВСЕВМЕСТЕ.ОстаткиНаСкладе,
	ВСЕВМЕСТЕ.КолВыпущено,
	ВСЕВМЕСТЕ.Статус,
	ВСЕВМЕСТЕ.ПодЗаказСсылка,
	ВСЕВМЕСТЕ.ЗаказНаПроизводство,
	ВСЕВМЕСТЕ.ДатаИсполнения,
	ВСЕВМЕСТЕ.РабочийЦентр,
	ВСЕВМЕСТЕ.Цена,
	ВСЕВМЕСТЕ.КолЗаказа,
	ВСЕВМЕСТЕ.Номенклатура,
	ВСЕВМЕСТЕ.ВариантИсполнения,
	ВСЕВМЕСТЕ.КолОборотПродажи
ИЗ
	Справочник.Номенклатура КАК НоменклатураСправ
		ЛЕВОЕ СОЕДИНЕНИЕ ВСЕВМЕСТЕ КАК ВСЕВМЕСТЕ
		ПО ВСЕВМЕСТЕ.Номенклатура = НоменклатураСправ.Ссылка
Показать


Вот так попробовала,тут пустые строки выходят
13. nomad_irk 71 06.12.19 15:21 Сейчас в теме
(11)Логично, вы ж всю номенклатуру выводите, а было ли с ней чего в присоединяемой таблице или нет - не известно. Если было - выведет заполненые поля, если не было, то только номенклатура будет заполнена.

Вместо

ВСЕВМЕСТЕ.Номенклатура

нужно сделать

НоменклатураСправ.Ссылка КАК Номенклатура

в последнем запросе из пакета
user1008893; +1 Ответить
14. user1008893 06.12.19 15:24 Сейчас в теме
(13)
ВЫБРАТЬ
	ВСЕВМЕСТЕ.ОстаткиНаСкладе,
	ВСЕВМЕСТЕ.КолВыпущено,
	ВСЕВМЕСТЕ.Статус,
	ВСЕВМЕСТЕ.ПодЗаказСсылка,
	ВСЕВМЕСТЕ.ЗаказНаПроизводство,
	ВСЕВМЕСТЕ.ДатаИсполнения,
	ВСЕВМЕСТЕ.РабочийЦентр,
	ВСЕВМЕСТЕ.Цена,
	ВСЕВМЕСТЕ.КолЗаказа,
	ВСЕВМЕСТЕ.Номенклатура,
	ВСЕВМЕСТЕ.ВариантИсполнения,
	ВСЕВМЕСТЕ.КолОборотПродажи
ИЗ
	Справочник.Номенклатура КАК НоменклатураСправ
		ЛЕВОЕ СОЕДИНЕНИЕ ВСЕВМЕСТЕ КАК ВСЕВМЕСТЕ
		ПО (НоменклатураСправ.Ссылка = ВСЕВМЕСТЕ.Номенклатура)
Показать


вот так? нет. Все так же
16. nomad_irk 71 06.12.19 15:28 Сейчас в теме
(14)
ВЫБРАТЬ
    ВСЕВМЕСТЕ.ОстаткиНаСкладе,
    ВСЕВМЕСТЕ.КолВыпущено,
    ВСЕВМЕСТЕ.Статус,
    ВСЕВМЕСТЕ.ПодЗаказСсылка,
    ВСЕВМЕСТЕ.ЗаказНаПроизводство,
    ВСЕВМЕСТЕ.ДатаИсполнения,
    ВСЕВМЕСТЕ.РабочийЦентр,
    ВСЕВМЕСТЕ.Цена,
    ВСЕВМЕСТЕ.КолЗаказа,
    НоменклатураСправ.Ссылка КАК Номенклатура,
    ВСЕВМЕСТЕ.ВариантИсполнения,
    ВСЕВМЕСТЕ.КолОборотПродажи
ИЗ
    Справочник.Номенклатура КАК НоменклатураСправ
        ЛЕВОЕ СОЕДИНЕНИЕ ВСЕВМЕСТЕ КАК ВСЕВМЕСТЕ
        ПО (НоменклатураСправ.Ссылка = ВСЕВМЕСТЕ.Номенклатура)
Показать


Найдите 1 различие :)
user1008893; +1 Ответить
17. user1008893 06.12.19 15:30 Сейчас в теме
(16)все,норм,но поля Остатки на складе и КолОборотпродажи не считает,по этим номенклатурам,которых нет в заказх
18. nomad_irk 71 06.12.19 15:31 Сейчас в теме
(17)В консоль запросов вставьте предложенный мной текст запроса и выполните - номенклатура должна быть всегда заполнена.
19. user1008893 06.12.19 15:35 Сейчас в теме
(18)все,норм,но поля Остатки на складе и КолОборотПродажи не считает,по этим номенклатурам,которых нет в заказах
4. user1008893 06.12.19 14:47 Сейчас в теме
(2)поля КолОборот и ОстаткиНаСкладе выводит по новой
26. Xershi 1474 06.12.19 17:34 Сейчас в теме
(1) не ужели так сложно вложенный запрос переписать на ВТ и посмотреть потом строки которые не группируются. А затем переписать запрос так, чтобы они сгруппировались?
Как минимум NULL замените на 0.
aka Любитель XML; +1 Ответить
28. user1008893 07.12.19 08:08 Сейчас в теме
(26)а сейчас не так чтоль?
7. nomad_irk 71 06.12.19 15:00 Сейчас в теме
ВЫБРАТЬ
        ЗаказНаПроизводствоТЧПродукция.Номенклатура КАК Номенклатура,
        ЗаказНаПроизводствоТЧПродукция.ВариантИсполнения КАК ВариантИсполнения,
        0 КАК КолОборотПродажи,
        ЗаказНаПроизводствоТЧПродукция.Кол КАК Кол,
        ЦеныНоменклатурыСрезПоследних.Цена КАК Цена,
        ЗаказНаПроизводствоТЧПродукция.Ссылка.ДатаИсполнения КАК ДатаИсполнения,
        ЗаказНаПроизводствоТЧПродукция.Ссылка КАК ЗаказНаПроизводство,
        ЗаказНаПроизводствоТЧПродукция.Ссылка.ПодЗаказ.Ссылка КАК ПодЗаказСсылка,
        СтатусыВыполненияЗаказов.Статус КАК Статус,
        ВыпускПродукцииТЧПродукция.Кол КАК КолВыпуск,
        0 КАК ОстатокНаСкладе
Поместить ВременнаяТаблица
    ИЗ
        Документ.ЗаказНаПроизводство.ТЧПродукция КАК ЗаказНаПроизводствоТЧПродукция
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
            ПО (ЦеныНоменклатурыСрезПоследних.Номенклатура = ЗаказНаПроизводствоТЧПродукция.Номенклатура)
            ЛЕВОЕ СОЕДИНЕНИЕ Документ.ВыпускПродукции.ТЧПродукция КАК ВыпускПродукцииТЧПродукция
            ПО ЗаказНаПроизводствоТЧПродукция.Ссылка = ВыпускПродукцииТЧПродукция.ДокЗаказНаПроизводство.Ссылка
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СтатусыВыполненияЗаказов КАК СтатусыВыполненияЗаказов
            ПО (СтатусыВыполненияЗаказов.Заказ = ЗаказНаПроизводствоТЧПродукция.Ссылка)
    ГДЕ
        ЗаказНаПроизводствоТЧПродукция.Ссылка.ДатаИсполнения МЕЖДУ &ДатаНачала И &ДатаОкончания
    
    ОБЪЕДИНИТЬ ВСЕ
    
    ВЫБРАТЬ
        ОстаткиТМЦОстатки.Номенклатура,
        ОстаткиТМЦОстатки.ВариантИсполнения,
        0,
        0,
        0,
        NULL,
        NULL,
        NULL,
        NULL,
        NULL,
        ЕСТЬNULL(ОстаткиТМЦОстатки.КолОстаток, 0) - ЕСТЬNULL(РезервыОстатки.КолОстаток, 0)
    ИЗ
        РегистрНакопления.ОстаткиТМЦ.Остатки КАК ОстаткиТМЦОстатки
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Резервы.Остатки КАК РезервыОстатки
            ПО ОстаткиТМЦОстатки.Номенклатура = РезервыОстатки.Номенклатура
                И ОстаткиТМЦОстатки.ВариантИсполнения = РезервыОстатки.ВариантИсполнения
    
    ОБЪЕДИНИТЬ ВСЕ
    
    ВЫБРАТЬ
        ПродажиОборотыОбороты.Номенклатура,
        ПродажиОборотыОбороты.ВариантИсполнения,
        ПродажиОборотыОбороты.КолОборот,
        0,
        0,
        NULL,
        NULL,
        NULL,
        NULL,
        NULL,
        0
    ИЗ
        РегистрНакопления.ПродажиОбороты.Обороты(&ДатаНачала, &ДатаОкончания, , ) КАК ПродажиОборотыОбороты
:
ВЫБРАТЬ * ИЗ ВременнаяТаблица
Показать


Но вы учтите, что ссылочные данные с NULL никогда не сгрупируются, т.к. это два разных значения.
Поэтому вам необходимо переделать запрос, чтобы из ссылочных данных он выводил только номенклатуру и вариант исполнения.
9. Leoon 3 06.12.19 15:11 Сейчас в теме
(7) Можно убрать такие поля из группировки и добавить агрегатную функцию максимум. Ну и вместо null вставлять значение по умолчанию типа Значение(Документы.КакойТоТам.ПустаяСсылка).
10. Leoon 3 06.12.19 15:13 Сейчас в теме
(9) Но я бы в следующем пакете группировал.
12. nomad_irk 71 06.12.19 15:18 Сейчас в теме
(9)Пустая ссылка с непустой ссылкой так же не сгруппируются, т.к. это два разных значения.
15. Leoon 3 06.12.19 15:28 Сейчас в теме
(12) Это то понятно и поэтому я написал что это в дополнение к агрегатной функции. Без этого никак, хотя еще есть вариант с пакетами и внутренними соединениями с isnull(Т1.Номенклатура, Т2.Номенклатура). Т.е. навертеть можно дофига)
20. JasonT 06.12.19 15:53 Сейчас в теме
Если используется инструкция "СГРУППИРОВАТЬ", то в нее нужно определять только основные поля(измерения). К остальным должны применяться агрегатные функции, например, "СУММА", "МАКСИМУМ".

ВЫБРАТЬ
    Вложенный.Номенклатура,
    Вложенный.ВариантИсполнения,
    СУММА(Вложенный.КолОборотПродажи),
    СУММА(Вложенный.Кол),
    Вложенный.Цена,
    Вложенный.ДатаИсполнения,
    Вложенный.ЗаказНаПроизводство,
    Вложенный.ПодЗаказСсылка,
    Вложенный.Статус,
    СУММА(Вложенный.КолВыпуск),
    СУММА((Вложенный.ОстатокНаСкладе)
Показать


...

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


Данные изменения позволят сгруппировать по номенклатуре и доп. признакам. Если, допустим, нужен один любой заказ на производство, то можно к нему применить "МАКСИСМУМ" и убрать из группируемых полей.
user1008893; +1 Ответить
21. user1008893 06.12.19 16:01 Сейчас в теме
(20)не подскажите как (19) поправить?
22. JasonT 06.12.19 16:41 Сейчас в теме
(21) У Вас основная таблица "ЗаказНаПроизводство". Поэтому остатки не считает

ВЫБРАТЬ
    Остатки.ОстаткиНаСкладе КАК ОстаткиНаСкладе,
    Основа.КолВыпущено,
    Основа.Статус,
    Основа.ПодЗаказСсылка,
    Основа.ЗаказНаПроизводство,
    Основа.ДатаИсполнения,
    Основа.РабочийЦентр,
    Основа.Цена,
    Основа.КолЗаказа,
    Основа.Номенклатура КАК Номенклатура,
    Основа.ВариантИсполнения КАК ВариантИсполнения,
    ПродажиОборотыОбороты.КолОборот КАК КолОборотПродажи
ПОМЕСТИТЬ ВСЕВМЕСТЕ
ИЗ
    РегистрНакопления.ПродажиОбороты.Обороты КАК ПродажиОборотыОбороты
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Основа КАК Основа
            ЛЕВОЕ СОЕДИНЕНИЕ Остатки КАК Остатки
            ПО Основа.Номенклатура = Остатки.Номенклатура
                И Основа.ВариантИсполнения = Остатки.ВариантИсполнения
        ПО ПродажиОборотыОбороты.Номенклатура = Основа.Номенклатура
            И ПродажиОборотыОбороты.ВариантИсполнения = Основа.ВариантИсполнения
ГДЕ
    Основа.ЗаказНаПроизводство.ДатаИсполнения МЕЖДУ &ДатаНачала И &ДатаОкончания
;
Показать


Чтобы видеть остатки следует использовать ПОЛНОЕ СОЕДИНЕНИЕ и функцию ЕСТЬNULL

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


А если нужно видеть продажи, где нет заказов, вместо ВНУТРЕННЕГО соединения, нужно использовать ЛЕВОЕ.

А если и то и другое, то нужно поменять порядок или вид соединения.
Таким образом если нужны все остатки и все продажи, то нужно два полных соединения с двойной функцией ЕСТЬNULL (ЕСТЬNULL(ПродажиОборотыОбороты.Номенклатура,ЕСТЬNULL(Основа.Номенклатура, Остатки.Номенклатура)). Если нужны остатки, то к таблице остатков следует лепить все левым соединением.
user1008893; +1 Ответить
23. user1008893 06.12.19 16:53 Сейчас в теме
(22)
ВЫБРАТЬ
	ЗаказНаПроизводствоТЧПродукция.Номенклатура,
	ЗаказНаПроизводствоТЧПродукция.Кол КАК КолЗаказа,
	ЦеныНоменклатурыСрезПоследних.Цена,
	ЗаказНаПроизводство.ДатаИсполнения,
	ЗаказНаПроизводство.Ссылка КАК ЗаказНаПроизводство,
	ЗаказНаПроизводство.ПодЗаказ.Ссылка,
	СтатусыВыполненияЗаказов.Статус,
	ВыпускПродукцииТЧПродукция.Кол КАК КолВыпущено,
	ЗаказНаПроизводствоТЧПродукция.ВариантИсполнения,
	ЗаказНаПроизводствоТЧПродукция.Ссылка.РабочийЦентр КАК РабочийЦентр
ПОМЕСТИТЬ Основа
ИЗ
	Документ.ЗаказНаПроизводство.ТЧПродукция КАК ЗаказНаПроизводствоТЧПродукция
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних({(&НачалоПериода)}, ) КАК ЦеныНоменклатурыСрезПоследних
		ПО ЗаказНаПроизводствоТЧПродукция.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказНаПроизводство КАК ЗаказНаПроизводство
			ЛЕВОЕ СОЕДИНЕНИЕ Справочник.РабочиеЦентры КАК РабочиеЦентры
			ПО ЗаказНаПроизводство.РабочийЦентр = РабочиеЦентры.Ссылка
			ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СтатусыВыполненияЗаказов КАК СтатусыВыполненияЗаказов
			ПО ЗаказНаПроизводство.Ссылка = СтатусыВыполненияЗаказов.Заказ
		ПО ЗаказНаПроизводствоТЧПродукция.Ссылка = ЗаказНаПроизводство.Ссылка
		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ВыпускПродукции.ТЧПродукция КАК ВыпускПродукцииТЧПродукция
		ПО ЗаказНаПроизводствоТЧПродукция.Ссылка = ВыпускПродукцииТЧПродукция.ДокЗаказНаПроизводство
ГДЕ
	НЕ ЗаказНаПроизводство.ПометкаУдаления
	И ЗаказНаПроизводство.Проведен = ИСТИНА
	И НЕ ВыпускПродукцииТЧПродукция.Ссылка.ПометкаУдаления
	И ВыпускПродукцииТЧПродукция.Ссылка.Проведен = ИСТИНА
;

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

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	Остатки.ОстаткиНаСкладе КАК ОстаткиНаСкладе,
	Основа.КолВыпущено,
	Основа.Статус,
	Основа.ПодЗаказСсылка,
	Основа.ЗаказНаПроизводство,
	Основа.ДатаИсполнения,
	Основа.РабочийЦентр,
	Основа.Цена,
	Основа.КолЗаказа,
	Основа.Номенклатура КАК Номенклатура,
	Основа.ВариантИсполнения КАК ВариантИсполнения,
	ЕСТЬNULL(ПродажиОборотыОбороты.Номенклатура, ЕСТЬNULL(Основа.Номенклатура, Остатки.Номенклатура)) КАК КолОборотПродажи
ПОМЕСТИТЬ ВСЕВМЕСТЕ
ИЗ
	РегистрНакопления.ПродажиОбороты.Обороты(&ДатаНачала, &ДатаОкончания, , ) КАК ПродажиОборотыОбороты
		ЛЕВОЕ СОЕДИНЕНИЕ Основа КАК Основа
			ЛЕВОЕ СОЕДИНЕНИЕ Остатки КАК Остатки
			ПО Основа.Номенклатура = Остатки.Номенклатура
				И Основа.ВариантИсполнения = Остатки.ВариантИсполнения
		ПО ПродажиОборотыОбороты.Номенклатура = Основа.Номенклатура
			И ПродажиОборотыОбороты.ВариантИсполнения = Основа.ВариантИсполнения
ГДЕ
	Основа.ЗаказНаПроизводство.ДатаИсполнения МЕЖДУ &ДатаНачала И &ДатаОкончания
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	МАКСИМУМ(ВСЕВМЕСТЕ.ОстаткиНаСкладе) КАК ОстаткиНаСкладе,
	МАКСИМУМ(ВСЕВМЕСТЕ.КолВыпущено) КАК КолВыпущено,
	ВСЕВМЕСТЕ.Статус,
	ВСЕВМЕСТЕ.ПодЗаказСсылка,
	ВСЕВМЕСТЕ.ЗаказНаПроизводство,
	ВСЕВМЕСТЕ.ДатаИсполнения,
	ВСЕВМЕСТЕ.РабочийЦентр,
	ВСЕВМЕСТЕ.Цена,
	МАКСИМУМ(ВСЕВМЕСТЕ.КолЗаказа) КАК КолЗаказа,
	ВСЕВМЕСТЕ.ВариантИсполнения,
	МАКСИМУМ(ВСЕВМЕСТЕ.КолОборотПродажи) КАК КолОборотПродажи,
	НоменклатураСправ.Ссылка КАК Номенклатура
ИЗ
	Справочник.Номенклатура КАК НоменклатураСправ
		ЛЕВОЕ СОЕДИНЕНИЕ ВСЕВМЕСТЕ КАК ВСЕВМЕСТЕ
		ПО (ВСЕВМЕСТЕ.Номенклатура = НоменклатураСправ.Ссылка)
ГДЕ
	НЕ НоменклатураСправ.ПометкаУдаления
	И НЕ НоменклатураСправ.ЭтоГруппа
	И НоменклатураСправ.Активность

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


Вот так вот,ничего не поменялось...
24. JasonT 06.12.19 17:08 Сейчас в теме
(23) Что-нибудь должно было поменяться.

1. Все-таки лучше использовать СУММА для количества, а не МАКСИМУМ, только если нет цели найти максимум (по заказу в данном случае).
2. В последнем запросе советую добавить команду "УПОРЯДОЧИТЬ ПО Номенклатура", чтобы нагляднее видеть результат.
3. Результатом запроса будут все продажи, заказы попадут только те, что есть в продажах, остатки попадут толь те что есть и в заказах и продажах. И номенклатура без продаж. Чтобы видеть все остатки и продажи, и заказы, нужно ПОЛНОЕ СОЕДИНЕНИЕ.
user1008893; +1 Ответить
25. JasonT 06.12.19 17:17 Сейчас в теме
(23) Таким образом запрос по идее должен выглядеть так:
ВЫБРАТЬ
    ЗаказНаПроизводствоТЧПродукция.Номенклатура,
    ЗаказНаПроизводствоТЧПродукция.Кол КАК КолЗаказа,
    ЦеныНоменклатурыСрезПоследних.Цена,
    ЗаказНаПроизводство.ДатаИсполнения,
    ЗаказНаПроизводство.Ссылка КАК ЗаказНаПроизводство,
    ЗаказНаПроизводство.ПодЗаказ.Ссылка,
    СтатусыВыполненияЗаказов.Статус,
    ВыпускПродукцииТЧПродукция.Кол КАК КолВыпущено,
    ЗаказНаПроизводствоТЧПродукция.ВариантИсполнения,
    ЗаказНаПроизводствоТЧПродукция.Ссылка.РабочийЦентр КАК РабочийЦентр
ПОМЕСТИТЬ Основа
ИЗ
    Документ.ЗаказНаПроизводство.ТЧПродукция КАК ЗаказНаПроизводствоТЧПродукция
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних({(&НачалоПериода)}, ) КАК ЦеныНоменклатурыСрезПоследних
        ПО ЗаказНаПроизводствоТЧПродукция.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказНаПроизводство КАК ЗаказНаПроизводство
            ЛЕВОЕ СОЕДИНЕНИЕ Справочник.РабочиеЦентры КАК РабочиеЦентры
            ПО ЗаказНаПроизводство.РабочийЦентр = РабочиеЦентры.Ссылка
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СтатусыВыполненияЗаказов КАК СтатусыВыполненияЗаказов
            ПО ЗаказНаПроизводство.Ссылка = СтатусыВыполненияЗаказов.Заказ
        ПО ЗаказНаПроизводствоТЧПродукция.Ссылка = ЗаказНаПроизводство.Ссылка
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ВыпускПродукции.ТЧПродукция КАК ВыпускПродукцииТЧПродукция
        ПО ЗаказНаПроизводствоТЧПродукция.Ссылка = ВыпускПродукцииТЧПродукция.ДокЗаказНаПроизводство
ГДЕ
    НЕ ЗаказНаПроизводство.ПометкаУдаления
    И ЗаказНаПроизводство.Проведен = ИСТИНА
    И НЕ ВыпускПродукцииТЧПродукция.Ссылка.ПометкаУдаления
    И ВыпускПродукцииТЧПродукция.Ссылка.Проведен = ИСТИНА
;

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

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

////////////////////////////////////////////////////////////­­////////////////////
ВЫБРАТЬ
    СУММА(ВСЕВМЕСТЕ.ОстаткиНаСкладе) КАК ОстаткиНаСкладе,
    СУММА(ВСЕВМЕСТЕ.КолВыпущено) КАК КолВыпущено,
    ВСЕВМЕСТЕ.Статус,
    ВСЕВМЕСТЕ.ПодЗаказСсылка,
    ВСЕВМЕСТЕ.ЗаказНаПроизводство,
    ВСЕВМЕСТЕ.ДатаИсполнения,
    ВСЕВМЕСТЕ.РабочийЦентр,
    ВСЕВМЕСТЕ.Цена,
    СУММА(ВСЕВМЕСТЕ.КолЗаказа) КАК КолЗаказа,
    ВСЕВМЕСТЕ.ВариантИсполнения,
    СУММА(ВСЕВМЕСТЕ.КолОборотПродажи) КАК КолОборотПродажи,
    НоменклатураСправ.Ссылка КАК Номенклатура
ИЗ
    Справочник.Номенклатура КАК НоменклатураСправ
        ЛЕВОЕ СОЕДИНЕНИЕ ВСЕВМЕСТЕ КАК ВСЕВМЕСТЕ
        ПО (ВСЕВМЕСТЕ.Номенклатура = НоменклатураСправ.Ссылка)
ГДЕ
    НЕ НоменклатураСправ.ПометкаУдаления
    И НЕ НоменклатураСправ.ЭтоГруппа
    И НоменклатураСправ.Активность

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

УПОРЯДОЧИТЬ ПО Номенклатура
Показать
user1008893; +1 Ответить
27. user1008893 07.12.19 08:03 Сейчас в теме
(25) Перенесла ваш запрос,но все равно нет продаж и остатков по номенклатуре,которой нет в заказе
29. JasonT 07.12.19 08:29 Сейчас в теме
(27) Еще попробуйте заменить в предпоследнем запросе.
ГДЕ
    Основа.ЗаказНаПроизводство.ДатаИсполнения МЕЖДУ &ДатаНачала И &ДатаОкончания


на

ГДЕ
    Основа.ЗаказНаПроизводство.ДатаИсполнения МЕЖДУ &ДатаНачала И &ДатаОкончания ИЛИ Основа.ЗаказНаПроизводство ЕСТЬ NULL
user1008893; +1 Ответить
30. user1008893 07.12.19 08:31 Сейчас в теме
(29) так,появились остатки,но продаж нет,и цена наверное тоже должна быть
31. JasonT 07.12.19 08:44 Сейчас в теме
(30)
(29) так,появились остатки,но продаж нет,и цена наверное тоже должна быть

Раз появились остатки, должны были появиться и продажи. Может быть продаж нет в регистре за указанный период?
Цена не должна появляться, т.к. цены подтягиваются левым соединением к заказу. Хотите, чтобы были везде, нужно подтягивать левым соединением к последнему запросу.
user1008893; +1 Ответить
32. user1008893 07.12.19 08:52 Сейчас в теме
(31)Так,сейчас попробую,спасибо)
33. user1008893 07.12.19 09:04 Сейчас в теме
(31)Все хорошо,только Если разные заказы,но одинаковая номенклатура и вариант исполнения,то Продажи и остатки и цены выводит 2 раза,а то и больше,можно это поправить?
34. JasonT 07.12.19 09:14 Сейчас в теме
Что значит цены, продажи и остатки выводит два раза? Если появляются цена, продажи и остаток в каждой строке, то это нормально. Иначе нужно менять логику построения запроса.
user1008893; +1 Ответить
35. user1008893 07.12.19 09:19 Сейчас в теме
(34)например?Нужно как бы итог по каждой номенклатуре,а не в каждой строке
36. JasonT 07.12.19 10:07 Сейчас в теме
Я вижу 3 варианта. Нужно задуматься над вопросом: нужны ли в окончательном результате Статус, ПодЗаказСсылка, ЗаказНаПроизводство, ДатаИсполнения, РабочийЦентр?

1. Если они не нужны, то все просто, они удаляются из выборки в последнем запросе.
2. Если нужен только один вариант, и не важно какой, тогда указанные поля убираются из инструкции "СГРУППИРОВАТЬ ПО", а в выборке к ним добавляется агрегатная функция, например "МАКСИМУМ".
3. Если нужны все то можно обойти это препятствие с помощью интрукции "ИТОГИ". Т.е. к запросу добавить перед "УПОРЯДОЧИТЬ ПО"
ИТОГИ
    СУММА(ОстаткиНаСкладе),
    СУММА(КолВыпущено),
    МАКСИМУМ(ВСЕВМЕСТЕ.Статус),
    МАКСИМУМ(ПодЗаказСсылка),
    МАКСИМУМ(ЗаказНаПроизводство),
    МАКСИМУМ(ДатаИсполнения),
    МАКСИМУМ(РабочийЦентр),
    МАКСИМУМ(Цена),
    СУММА(КолЗаказа),    
    СУММА(КолОборотПродажи)
ПО
    Номенклатура,
    ВариантИсполнения
Показать

В этом случае будут итоги по номенклатуре и можно будет увидеть заказы.

Но если не подходит ничего из перечисленного, стоит задуматься над тем, как вы хотите видеть количество остатков и продаж.
user1008893; +1 Ответить
37. user1008893 07.12.19 10:20 Сейчас в теме
(36)Вот так?
ВЫБРАТЬ
	ЗаказНаПроизводствоТЧПродукция.Номенклатура,
	ЗаказНаПроизводствоТЧПродукция.Кол КАК КолЗаказа,
	ЗаказНаПроизводство.ДатаИсполнения,
	ЗаказНаПроизводство.Ссылка КАК ЗаказНаПроизводство,
	ЗаказНаПроизводство.ПодЗаказ.Ссылка,
	СтатусыВыполненияЗаказов.Статус,
	ВыпускПродукцииТЧПродукция.Кол КАК КолВыпущено,
	ЗаказНаПроизводствоТЧПродукция.ВариантИсполнения,
	ЗаказНаПроизводствоТЧПродукция.Ссылка.РабочийЦентр КАК РабочийЦентр
ПОМЕСТИТЬ Основа
ИЗ
	Документ.ЗаказНаПроизводство.ТЧПродукция КАК ЗаказНаПроизводствоТЧПродукция
		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказНаПроизводство КАК ЗаказНаПроизводство
			ЛЕВОЕ СОЕДИНЕНИЕ Справочник.РабочиеЦентры КАК РабочиеЦентры
			ПО ЗаказНаПроизводство.РабочийЦентр = РабочиеЦентры.Ссылка
			ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СтатусыВыполненияЗаказов КАК СтатусыВыполненияЗаказов
			ПО ЗаказНаПроизводство.Ссылка = СтатусыВыполненияЗаказов.Заказ
		ПО ЗаказНаПроизводствоТЧПродукция.Ссылка = ЗаказНаПроизводство.Ссылка
		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ВыпускПродукции.ТЧПродукция КАК ВыпускПродукцииТЧПродукция
		ПО ЗаказНаПроизводствоТЧПродукция.Ссылка = ВыпускПродукцииТЧПродукция.ДокЗаказНаПроизводство
ГДЕ
	НЕ ЗаказНаПроизводство.ПометкаУдаления
	И ЗаказНаПроизводство.Проведен = ИСТИНА
	И НЕ ВыпускПродукцииТЧПродукция.Ссылка.ПометкаУдаления
	И ВыпускПродукцииТЧПродукция.Ссылка.Проведен = ИСТИНА
;

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

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

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

УПОРЯДОЧИТЬ ПО
	Номенклатура
ИТОГИ
	СУММА(ОстаткиНаСкладе),
	СУММА(КолВыпущено),
	МАКСИМУМ(Статус),
	МАКСИМУМ(ПодЗаказСсылка),
	МАКСИМУМ(ЗаказНаПроизводство),
	МАКСИМУМ(ДатаИсполнения),
	МАКСИМУМ(РабочийЦентр),
	СУММА(КолЗаказа),
	СУММА(КолОборотПродажи),
	МАКСИМУМ(Цена)
ПО
	Номенклатура,
	ВариантИсполнения
Показать


Так номенклатур без заказа по 3 шт выводит...
38. user1008893 07.12.19 10:30 Сейчас в теме
(36)если сделать МАКСИМУМ по Статусам, то будет не правильно,это поле должно выводится. Так же каки и рабочий центр. Так как по ним будет отбор.
39. JasonT 07.12.19 14:12 Сейчас в теме +1 $m
(38) Тогда определитесь с тем, что вам нужно. Если запрос будет выводится в отчете, например на СКД, то запрос без итогов - это то что вам нужно. Благодаря правильной настройке ресурсов можно получить удовлетворительный результат.
То что остатки выводится одинаковые для каждой строчки - это нормально.
И еще один момент: при запросе формируется таблица значений, где каждая строчка ничего не знает о других. Поэтому просто нельзя сказать, что если остаток выводился в строке 1, то его не должно быть в строке 2.
Надеюсь ответил.
40. user1008893 07.12.19 16:43 Сейчас в теме
(39)спасибо,уже сделала,все через ресурсы.
Оставьте свое сообщение
Вакансии
Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)

Программист 1С
Москва
зарплата от 250 000 руб.
Полный день