Передача в параметр уровня иерархии справочника СКД.

1. BuryMeInVegas 25.09.20 17:10 Сейчас в теме
Добрый день! Возникла сложность с запросом. Запрос выбирает данные из двух регистров: регистра накопления "ВыручкаИСебестоимостьПродажОбороты" и самописного регистра сведений "Себестоимость продукции". Ниже приведу текст запроса:

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

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

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

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

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

Показать

В данный момент запрос собирает данные только по номенклатуре, которая лежит в элементе иерархии "Продукция".

Проблема заключается в следующем: не могу понять, как во второй временной таблице в части запроса после "ОБЪЕДИНИТЬ ВСЕ" отобрать номенклатуру только по элементу иерархии "Товары". Подскажите, пожалуйста, как решить эту проблему?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
10. toypaul 63 25.09.20 18:28 Сейчас в теме
(1)
которая лежит в элементе иерархии "Продукция".


в этом случае если этот отбор в запросе производится через Отбор (если я правильно), то он будет применяться только в нужном месте объединения. точнее он будет применяться туда - где указано.
2. FatPanzer 25.09.20 17:16 Сейчас в теме
1. В первой части второго запроса установите условие на номенклатуру через ГДЕ.
2. Во второй части второго запроса перенесите условие по номенклатуре в параметры виртуальной таблицы Обороты.

Кстати, не вижу условия на Продукцию. Вижу только на Товары.
3. BuryMeInVegas 25.09.20 17:24 Сейчас в теме
(2) С частью (1) не согласен. Для чего?
4. BuryMeInVegas 25.09.20 17:29 Сейчас в теме
(2) Условия на Продукцию нет. Дело в том, что в регистре сведений лежит только продукция (оно и логично, в регистр сведений пишутся данные о калькуляции себестоимости продукции, перекупных позиций там нет). Соответственно, в поле "СебестоимостьТрубы" ложится именно себестоимость продукции. В это же поле я хочу залить сумму продаж (выручку) перекупных позиций, для этого и делаю объединение (т.е. логика такова, что при объединении у меня для продукции, которая лежит в РС, будет указываться себестоимость из РС; а для товаров - себестоимость (цена закупки) из регистра "ВыручкаИСебестоимостьПродаж").
5. FatPanzer 25.09.20 17:38 Сейчас в теме
(4) ОК, ну а с Товарами-то в чем проблема? Параметр &Товары нормальный передается? (слово ".Ссылка" в условии убери еще)
6. BuryMeInVegas 25.09.20 17:41 Сейчас в теме
(5) А в том то и дело. Не могу понять, как из справочника достать конкретный элемент иерархии "Товары".

UPD. Без параметра теперь тоже нет данных по закупочной цене товаров... Странно.
7. FatPanzer 25.09.20 17:46 Сейчас в теме
(6) Так в чем проблема-то? В том, что не знаешь как найти товары, или запрос работает некорректно?
Берешь в справочнике группу "Товары" и отправил её ссылку в запрос в качестве параметра "Товары".

PS. Там в третьем запросе, конечно, мрак творится... Общие суммовые обороты перемножаются на количество и все это называется Себестоимостью...
8. BuryMeInVegas 25.09.20 17:49 Сейчас в теме
(7) Насчет PS. Логика такова, что мы берём сумму по себестоимости. Т.е. если одна позиция стоит 200 рублей по себесу, то 3 будут стоить 600.

"Берешь в справочнике группу "Товары" и отправил её ссылку в запрос в качестве параметра "Товары"." - проблема в том, что я не знаю, как выбрать группу "Товары" из справочника в СКД.
9. toypaul 63 25.09.20 18:27 Сейчас в теме
Могу предложить подобный подход

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

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

ВЫБРАТЬ
	РасходнаяНакладнаяСписокНоменклатуры.Номенклатура,
	РасходнаяНакладнаяСписокНоменклатуры.Количество
ИЗ
	Документ.РасходнаяНакладная.СписокНоменклатуры КАК РасходнаяНакладнаяСписокНоменклатуры
ГДЕ
	РасходнаяНакладнаяСписокНоменклатуры.Номенклатура = &Товары
{ГДЕ
	РасходнаяНакладнаяСписокНоменклатуры.Номенклатура.* КАК НоменклатураРН}

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

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


но при это нужно отключить флажок "Автозаполнение"
11. toypaul 63 25.09.20 18:34 Сейчас в теме
Сори. Не правильно понял задачу.

Вопрос в том как передать в параметр значение из справочника?

ну можно, например, в выражении параметра Товары написать что-то типа Справочник.Номенклатура.НайтиПоНаименованию("Товары")

или тоже самое можно сделать в модуле объекта отчета через

КомпоновщинНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Товары", НужноеЗначение)
12. rpashkovsky 23 25.09.20 21:01 Сейчас в теме
Лучше по коду, или, как вариант сделать группу товары предопределенной
Оставьте свое сообщение

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