Как получить остатки по цветам номенклатуры

1. VID1234 146 16.09.23 15:09 Сейчас в теме
Здравствуйте. Нужен отчет скд, в отчет вывести номенклатуру и цвет (значение характеристик), а именно если за период, были продажи определённой номенклатуры с определенным цветом, то проверяем их остатки и если на конец периода остаток 0 или меньше, тогда выводим в отчет. Сделал такой запрос в скд, но не могу допилить и довести до ума.
ВЫБРАТЬ
	СУММА(ТоварыНаСкладахОбороты.ВНаличииРасход) КАК ВНаличииРасход,
	ТоварыНаСкладахОбороты.Номенклатура КАК Номенклатура,
	ХарактеристикиНоменклатурыДополнительныеРеквизиты.Значение КАК Цвет
ПОМЕСТИТЬ ВТ_Обороты
ИЗ
	РегистрНакопления.ТоварыНаСкладах.Обороты(&НачалоПериода, &КонецПериода, , ) КАК ТоварыНаСкладахОбороты
		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры.ДополнительныеРеквизиты КАК ХарактеристикиНоменклатурыДополнительныеРеквизиты
		ПО (ХарактеристикиНоменклатурыДополнительныеРеквизиты.Ссылка.Владелец = ТоварыНаСкладахОбороты.Номенклатура)
			И ТоварыНаСкладахОбороты.Характеристика = ХарактеристикиНоменклатурыДополнительныеРеквизиты.Ссылка
ГДЕ
	ТоварыНаСкладахОбороты.ВНаличииРасход > 0
	И ХарактеристикиНоменклатурыДополнительныеРеквизиты.Свойство = &Свойство

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

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

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТ_Обороты.Номенклатура КАК Номенклатура,
	ВТ_Обороты.Цвет КАК Цвет
ИЗ
	ВТ_Обороты КАК ВТ_Обороты
		ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Остатки КАК ВТ_Остатки
		ПО ВТ_Обороты.Номенклатура = ВТ_Остатки.Номенклатура
			И ВТ_Обороты.Цвет = ВТ_Остатки.Цвет
ГДЕ
	ВТ_Остатки.ВНаличииОстаток <= 0

СГРУППИРОВАТЬ ПО
	ВТ_Обороты.Номенклатура,
	ВТ_Обороты.Цвет
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Dr.HiHi 2 16.09.23 21:01 Сейчас в теме
у Вас товары на складах без учета характеристик??
зачем соединять характеристику.владелец и номенклатуру %))

в последнем подзапросе чему будет равняться ВТ_Остатки.ВНаличииОстаток, если ее не будет в ВТ_Остатки ??
зачем в последнем подзапросе группировать, если даже теоретические не может получиться более 1-й записи, так как виртуальные таблицы могут иметь только 1 запись номенклатура + цвет

если не используете характеристику в своем запросе, то хоть немного для второй вт сделайте оптимизацию (засунув отбор по номенклатуре в виртуальную таблицу остатков)

возможно для продаж не тот регистр берете... возможно есть регистр продажи, но если уверены, что ВНаличииРасход делает только продажа, а не какое-то списание, то можете использовать и этот регистр ;))
3. VID1234 146 17.09.23 01:04 Сейчас в теме
(2) Здравствуйте. С учетом характеристик, но цвет лежит именно в характеристике, также там есть размер, мне нужно получить данные только по цвету, т.е. если не одной позиции по цветам нет, то тогда выводим
4. Dr.HiHi 2 17.09.23 10:16 Сейчас в теме
(3) писал наглядно)) заменил некоторые нюансы, которые считаю некорректными
ВЫБРАТЬ
    СУММА(ТоварыНаСкладахОбороты.ВНаличииРасход) КАК ВНаличииРасход,
    ТоварыНаСкладахОбороты.Номенклатура КАК Номенклатура,
    ХарактеристикиНоменклатурыДополнительныеРеквизиты.Значение КАК Цвет
ПОМЕСТИТЬ ВТ_Обороты
ИЗ
    РегистрНакопления.ТоварыНаСкладах.Обороты(&НачалоПериода, &КонецПериода, , ) КАК ТоварыНаСкладахОбороты
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры.ДополнительныеРеквизиты КАК ХарактеристикиНоменклатурыДополнительныеРеквизиты
        ПО (ХарактеристикиНоменклатурыДополнительныеРеквизиты.Ссылка = ТоварыНаСкладахОбороты.Характеристика)
            И ТоварыНаСкладахОбороты.Характеристика = ХарактеристикиНоменклатурыДополнительныеРеквизиты.Ссылка
            И ХарактеристикиНоменклатурыДополнительныеРеквизиты.Свойство = &Свойство
ГДЕ
    ТоварыНаСкладахОбороты.ВНаличииРасход > 0

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

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

////////////////////////////////////////////////////////////­­////////////////////
ВЫБРАТЬ
    ВТ_Обороты.Номенклатура КАК Номенклатура,
    ВТ_Обороты.Цвет КАК Цвет
ИЗ
    ВТ_Обороты КАК ВТ_Обороты
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Остатки КАК ВТ_Остатки
        ПО ВТ_Обороты.Номенклатура = ВТ_Остатки.Номенклатура
            И ВТ_Обороты.Цвет = ВТ_Остатки.Цвет
ГДЕ
    ЕСТЬNULL(ВТ_Остатки.ВНаличииОстаток, 0) <= 0

СГРУППИРОВАТЬ ПО
    ВТ_Обороты.Номенклатура,
    ВТ_Обороты.Цвет
Показать
5. VID1234 146 17.09.23 12:11 Сейчас в теме
(4) Здравствуйте. Хорошо, спасибо попробую.
Оставьте свое сообщение

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