Остатки за каждый месяц

1. fugu 23 30.10.24 18:53 Сейчас в теме
Добрый день.

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

Выбирает, но если нет оборотов, то нет и остатков. А они ведь есть...
Как получить остаток за месяц, в котором нет оборотов?

Прошу помочь.
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
6. fugu 23 30.10.24 22:38 Сейчас в теме +1.5 $m
Нашел решение.
ТЗ - это таблица значений с датами.

ВЫБРАТЬ
	ТЗ.ДатаПериода
ПОМЕСТИТЬ ВТ
ИЗ
	&ТЗ КАК ТЗ
;

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

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

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТ1.ДатаПериода,
	ЕСТЬNULL(ВТ1.Номенклатура, ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура) КАК Номенклатура,
	ЕСТЬNULL(ВТ1.Остаток, ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток) КАК Остаток
ИЗ
	ВТ1 КАК ВТ1
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладах.ОстаткиИОбороты(&ДатаНачала, &ДатаОкончания, Месяц, , Номенклатура = &Номенклатура) КАК ПартииТоваровНаСкладахОстаткиИОбороты
		ПО ВТ1.НоменклатураПусто = ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура
			И ВТ1.ПериодПусто = ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Bukaska 140 30.10.24 19:15 Сейчас в теме
(1) Пока не совсем понимаю, что вы хотите. Если вам нужны чисто остатки, то что мешает воспользоваться виртуальной таблицей остатки?
3. fugu 23 30.10.24 19:31 Сейчас в теме
(2) мне нужно выбрать остатки за 12 месяцев, по каждому месяцу.
январь - 100
февраль - 200
и т.д.
мне делать 12 запросов?
4. Bukaska 140 30.10.24 20:35 Сейчас в теме
(3) Функция год не раскладывается на месяца? Вы в скд делаете или запрос для чего то чисто?
5. fugu 23 30.10.24 22:20 Сейчас в теме
7. Bukaska 140 31.10.24 10:17 Сейчас в теме
(5) Я бы посоветовала отчет в скд
6. fugu 23 30.10.24 22:38 Сейчас в теме +1.5 $m
Нашел решение.
ТЗ - это таблица значений с датами.

ВЫБРАТЬ
	ТЗ.ДатаПериода
ПОМЕСТИТЬ ВТ
ИЗ
	&ТЗ КАК ТЗ
;

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

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

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

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