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

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 Сейчас в теме
Лучше по коду, или, как вариант сделать группу товары предопределенной
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

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

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

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

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