Соединение в запросе

1. 13.09.21 11:04 Сейчас в теме
Еще очень нудна помощь с запросом

ПЖЛ, помогите

//Получаем остатки на начало месяца

ВЫБРАТЬ
	СвободныеОстаткиОстатки.Номенклатура КАК Номенклатура,
	СвободныеОстаткиОстатки.Склад КАК Склад,
	ЕСТЬNULL(СвободныеОстаткиОстатки.ВНаличииОстаток, 0) КАК ОстатокНачалоМесяца
ПОМЕСТИТЬ ВТОстатки
ИЗ
	РегистрНакопления.СвободныеОстатки.Остатки(НАЧАЛОПЕРИОДА(&ДатаНачала, МЕСЯЦ), ) КАК СвободныеОстаткиОстатки
{ГДЕ
	СвободныеОстаткиОстатки.Номенклатура.*}
;


//// Получаем колонку с начальным остатком и все приходы по товарам
ВЫБРАТЬ
ВТОстатки.ОстатокНачалоМесяца КАК ОстатокНачалоМесяца,

	ТоварыНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура,
	ТоварыНаСкладахОстаткиИОбороты.Склад КАК Склад,
	ТоварыНаСкладахОстаткиИОбороты.ВНаличииНачальныйОстаток КАК ВНаличииНачальныйОстаток,
	ТоварыНаСкладахОстаткиИОбороты.ВНаличииКонечныйОстаток КАК ВНаличииКонечныйОстаток,
	ТоварыНаСкладахОстаткиИОбороты.ВНаличииПриход КАК ВНаличииПриход,
	ТоварыНаСкладахОстаткиИОбороты.ВНаличииОборот КАК ВНаличииОборот,
	ТоварыНаСкладахОстаткиИОбороты.ВНаличииРасход КАК ВНаличииРасход,
	ТоварыНаСкладахОстаткиИОбороты.ПериодДень КАК ПериодДень

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


Проблема в том, что остатки выводятся для 5000 строк, а вот когда соединение с приходом (скажем за 2 дня), то остается 60 строк
т.е. если прихода не было, то и не выводятся строки с номенклатурой и остатками.
Правое соединение тоже не работает.
КАК сделать, чтобы получить и остатки по всем номенклатуре, если их нет, тогда нули, и колонки с приходом по дням если были для этой номенклатуры.
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. FatPanzer 14 13.09.21 11:07 Сейчас в теме
(1)
КАК сделать, чтобы получить и остатки по всем номенклатуре, если их нет, тогда нули, и колонки с приходом по дням если были для этой номенклатуры.
Ну так сначала надо получить тот состав номенклатуры, который хочется видеть в итоговом результате, и уже его потом соединять с необходимыми показателями.
3. nomad_irk 57 13.09.21 11:09 Сейчас в теме
(1)нужна таблица вида

Номенклатура|ДеньВнутриПериодаОтчета

за период отчета и эта таблица дожна быть основная в соединениях.

либо используйте ОБЪЕДИНЕНИЕ таблиц вместо соединения
7. aritochka777 13.09.21 11:37 Сейчас в теме
(3) Как соединить 2 строки в одну? Помогитееее

ВЫБРАТЬ
	СвободныеОстаткиОстатки.Номенклатура КАК Номенклатура,
	СвободныеОстаткиОстатки.Склад КАК Склад,
	ЕСТЬNULL(СвободныеОстаткиОстатки.ВНаличииОстаток, 0) КАК ОстатокНачалоМесяца,
	0 КАК ВНаличииНачальныйОстаток,
		0 КАК ВНаличииПриход,
			0 КАК ВНаличииРасход,
				0 КАК ВНаличииКонечныйОстаток,
						0 КАК ПериодДень


ИЗ
	РегистрНакопления.СвободныеОстатки.Остатки(НАЧАЛОПЕРИОДА(&ДатаНачала, МЕСЯЦ), ) КАК СвободныеОстаткиОстатки
	{ГДЕ
	СвободныеОстаткиОстатки.Номенклатура.*}

  ОБЪЕДИНИТЬ

ВЫБРАТЬ
  	ТоварыНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура,
	ТоварыНаСкладахОстаткиИОбороты.Склад КАК Склад,
	0 КАК ОстатокНачалоМесяца,
	ТоварыНаСкладахОстаткиИОбороты.ВНаличииНачальныйОстаток КАК ВНаличииНачальныйОстаток,
	ТоварыНаСкладахОстаткиИОбороты.ВНаличииПриход КАК ВНаличииПриход,
	ТоварыНаСкладахОстаткиИОбороты.ВНаличииРасход КАК ВНаличииРасход,

	ТоварыНаСкладахОстаткиИОбороты.ВНаличииКонечныйОстаток КАК ВНаличииКонечныйОстаток,
		ТоварыНаСкладахОстаткиИОбороты.ПериодДень КАК ПериодДень
ИЗ   РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&ДатаНачала, &ДатаОкончания, Авто, , ) КАК ТоварыНаСкладахОстаткиИОбороты
			ГДЕ
	ТоварыНаСкладахОстаткиИОбороты.Регистратор ССЫЛКА Документ.ПриобретениеТоваровУслуг
Показать
Прикрепленные файлы:
8. ZergKRSK 128 13.09.21 11:41 Сейчас в теме
(7)
Как соединить 2 строки в одну?

сгруппировать
9. aritochka777 13.09.21 11:52 Сейчас в теме
12. nomad_irk 57 13.09.21 13:00 Сейчас в теме
(9)Сделайте еще один пакет запроса, в нем группируйте по номенклатуре результат первого пакета.
5. user705522_constantin_h 35 13.09.21 11:29 Сейчас в теме
(1)Вы же выбираете ЛЕВОЕ СОЕДИНЕНИЕ, соответственно остатки добавляются только к приходам. Если вам нужны все остатки сделайте ПОЛНОЕ СОЕДИНЕНИЕ.
И ещё должно быть так:
//// Получаем колонку с начальным остатком и все приходы по товарам
ВЫБРАТЬ
ЕСТЬNULL(ВТОстатки.ОстатокНачалоМесяца, 0) КАК ОстатокНачалоМесяца,

И соединение должно быть не только по номенклатуре, но и по складу.
4. VZyryanov 13.09.21 11:24 Сейчас в теме
Правое соединение заработает, если убрать
ГДЕ
ТоварыНаСкладахОстаткиИОбороты.Регистратор ССЫЛКА Документ.ПриобретениеТоваровУслуг
6. aritochka777 13.09.21 11:35 Сейчас в теме
(4) Тогда в приходы попадут и выпуски продукции, а мне нужны тольок приобретения
11. VZyryanov 13.09.21 12:09 Сейчас в теме
(6) Если условие из ГДЕ перенести в ПО, то будут все остатки и не будет выпуска продукции.
Правое соединение это экзотика. Лучше переставить местами таблицы и использовать левое соединение.
Как-то так:
ИЗ
ВТОстатки КАК ВТОстатки
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&ДатаНачала, &ДатаОкончания, Авто, , ) КАК ТоварыНаСкладахОстаткиИОбороты
ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура = ВТОстатки.Номенклатура
И ТоварыНаСкладахОстаткиИОбороты.Регистратор ССЫЛКА Документ.ПриобретениеТоваровУслуг
10. d.batovskiy 13.09.21 11:54 Сейчас в теме
ВЫБРАТЬ
СвободныеОстаткиОстатки.Номенклатура КАК Номенклатура,
СвободныеОстаткиОстатки.Склад КАК Склад,
ЕСТЬNULL(СвободныеОстаткиОстатки.ВНаличииОстаток, 0) КАК ОстатокНачалоМесяца
ПОМЕСТИТЬ ВТОстатки
ИЗ
РегистрНакопления.СвободныеОстатки.Остатки(НАЧАЛОПЕРИОДА(&ДатаНачала, МЕСЯЦ), ) КАК СвободныеОстаткиОстатки
{ГДЕ
СвободныеОстаткиОстатки.Номенклатура.*}
;


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

ГДЕ
ТоварыНаСкладахОстаткиИОбороты.Регистратор ССЫЛКА Документ.ПриобретениеТоваровУслуг
;

ВЫБРАТЬ
ЕстьNULL(ВТОстатки.ОстатокНачалоМесяца,0) КАК ОстатокНачалоМесяца,
ВТПриходы.Номенклатура КАК Номенклатура,
ВТПриходы.Склад КАК Склад,
ЕстьNULL(ВТПриходы.ВНаличииНачальныйОстаток,0) КАК ВНаличииНачальныйОстаток,
ЕстьNULL(ВТПриходы.ВНаличииКонечныйОстаток,0) КАК ВНаличииКонечныйОстаток,
ЕстьNULL(ВТПриходы.ВНаличииПриход,0) КАК ВНаличииПриход,
ЕстьNULL(ВТПриходы.ВНаличииОборот,0) КАК ВНаличииОборот,
ЕстьNULL(ВТПриходы.ВНаличииРасход,0) КАК ВНаличииРасход,
ВТПриходы.ПериодДень КАК ПериодДень

ИЗ
ВТПриходы КАК ВТПриходы
ПОЛНОЕ СОЕДИНЕНИЕ ВТОстатки КАК ВТОстатки
ПО ВТПриходы.Номенклатура = ВТОстатки.Номенклатура
И ВТПриходы.Склад= ВТОстатки.Склад
Показать
Оставьте свое сообщение
Вопросы с вознаграждением
Вакансии
Программист 1С
Новосибирск
зарплата от 90 000 руб.
Полный день

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

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

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

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