Помогите с запросом

Новая тема
Показывать по 10 20 40 сообщений
Добрый день! Есть отчет "Валовая прибыль" из КА. Мне нужно добавить в него колонку, в которой были бы суммы из док-тов ПоступлениеТоваровУслуг по каждой номенклатуре. Ниже кусок запроса из этого отчета, то что дописал я выделено комментами. В таком виде работает не всегда, помогите исправить.

ВЫБРАТЬ | ПродажиОбороты.Проект КАК Проект, | ПродажиОбороты.Подразделение КАК Подразделение, | ПродажиОбороты.Контрагент КАК Покупатель, | ПродажиОбороты.ДоговорКонтрагента КАК ДоговорПокупателя, | ПродажиОбороты.Номенклатура КАК Номенклатура, | ПродажиОбороты.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, | ПродажиОбороты.ЗаказПокупателя КАК ЗаказПокупателя, | ПродажиОбороты.Организация КАК Организация, | ПродажиОбороты.Регистратор КАК Регистратор, | ПродажиОбороты.Период КАК Период, | ПродажиОбороты.КоличествоОборот КАК Количество, | ПродажиОбороты.КоличествоОборот * ЕСТЬNULL(ПродажиОбороты.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент, 1) / ЕСТЬNULL(ПродажиОбороты.Номенклатура.ЕдиницаДляОтчетов.Коэффициент, 1) КАК КоличествоЕдиницОтчетов, | ПродажиОбороты.КоличествоОборот * ЕСТЬNULL(ПродажиОбороты.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент, 1) КАК КоличествоБазовыхЕдиниц, | ПродажиОбороты.СтоимостьОборот - ПродажиОбороты.НДСОборот КАК СтоимостьБезНДС, | ПродажиОбороты.НДСОборот КАК НДС, | ПродажиОбороты.СтоимостьОборот КАК Стоимость, //---------------------------- | ЕСТЬNULL(ПоступлениеТоваровУслуг.КонтрактнаяСумма, 0) КАК КонтрактнаяСумма, //--------------------------------------- | ЕСТЬNULL(ТаблицаРегистраПродажиСебестоимость.СтоимостьОборот, 0) КАК Себестоимость | ИЗ | РегистрНакопления.Продажи.Обороты(&ДатаНач, &ДатаКон, Регистратор, {Организация.* КАК Организация, Проект.* КАК Проект, Подразделение.* КАК Подразделение, Контрагент.* КАК Покупатель, ДоговорКонтрагента.* КАК ДоговорПокупателя, Номенклатура.* КАК Номенклатура, ХарактеристикаНоменклатуры.* КАК ХарактеристикаНоменклатуры, ЗаказПокупателя.* КАК ЗаказПокупателя}) КАК ПродажиОбороты | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | ПродажиСебестоимость.Номенклатура КАК Номенклатура, | ПродажиСебестоимость.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, | ПродажиСебестоимость.ЗаказПокупателя КАК ЗаказПокупателя, | ВЫБОР | КОГДА ПродажиСебестоимость.ДокументДвижения <> НЕОПРЕДЕЛЕНО | ТОГДА ПродажиСебестоимость.ДокументДвижения | ИНАЧЕ ПродажиСебестоимость.Регистратор | КОНЕЦ КАК Регистратор, | СУММА(ПродажиСебестоимость.Стоимость) КАК СтоимостьОборот | ИЗ | РегистрНакопления.ПродажиСебестоимость КАК ПродажиСебестоимость | ГДЕ | ПродажиСебестоимость.Период МЕЖДУ &ДатаНачала И &ДатаКонца | {ГДЕ | ПродажиСебестоимость.Проект.* КАК Проект, | ПродажиСебестоимость.Подразделение.* КАК Подразделение, | ПродажиСебестоимость.Номенклатура.* КАК Номенклатура, | ПродажиСебестоимость.ХарактеристикаНоменклатуры.* КАК ХарактеристикаНоменклатуры, | ПродажиСебестоимость.ЗаказПокупателя.* КАК ЗаказПокупателя} | | СГРУППИРОВАТЬ ПО | ПродажиСебестоимость.Номенклатура, | ПродажиСебестоимость.ХарактеристикаНоменклатуры, | ПродажиСебестоимость.ЗаказПокупателя, | ВЫБОР | КОГДА ПродажиСебестоимость.ДокументДвижения <> НЕОПРЕДЕЛЕНО | ТОГДА ПродажиСебестоимость.ДокументДвижения | ИНАЧЕ ПродажиСебестоимость.Регистратор | КОНЕЦ) КАК ТаблицаРегистраПродажиСебестоимость | ПО ТаблицаРегистраПродажиСебестоимость.Номенклатура = ПродажиОбороты.Номенклатура | И ТаблицаРегистраПродажиСебестоимость.ХарактеристикаНоменклатуры = ПродажиОбороты.ХарактеристикаНоменклатуры | И ТаблицаРегистраПродажиСебестоимость.ЗаказПокупателя = ПродажиОбороты.ЗаказПокупателя | И ТаблицаРегистраПродажиСебестоимость.Регистратор = ПродажиОбороты.Регистратор //------------------------------------------- | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | ПоступлениеТоваровУслугТовары.Номенклатура КАК Номенклатура, | ПоступлениеТоваровУслугТовары.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, | СУММА(ПоступлениеТоваровУслугТовары.Сумма) КАК КонтрактнаяСумма | ИЗ | Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары | ГДЕ | ПоступлениеТоваровУслугТовары.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаКонца | {ГДЕ | ПоступлениеТоваровУслугТовары.Ссылка.Подразделение.* КАК Подразделение, | ПоступлениеТоваровУслугТовары.Номенклатура.* КАК Номенклатура, | ПоступлениеТоваровУслугТовары.ХарактеристикаНоменклатуры.* КАК ХарактеристикаНоменклатуры} | | СГРУППИРОВАТЬ ПО | ПоступлениеТоваровУслугТовары.Номенклатура, | ПоступлениеТоваровУслугТовары.ХарактеристикаНоменклатуры | ) КАК ПоступлениеТоваровУслуг | ПО ТаблицаРегистраПродажиСебестоимость.Номенклатура = ПоступлениеТоваровУслуг.Номенклатура | И ТаблицаРегистраПродажиСебестоимость.ХарактеристикаНоменклатуры = ПоступлениеТоваровУслуг.ХарактеристикаНоменклатуры |
Ох как же я с разметкой-то обосрался. Исправляюсь.

ВЫБРАТЬ
| ПродажиОбороты.Проект КАК Проект,
| ПродажиОбороты.Подразделение КАК Подразделение,
| ПродажиОбороты.Контрагент КАК Покупатель,
| ПродажиОбороты.ДоговорКонтрагента КАК ДоговорПокупателя,
| ПродажиОбороты.Номенклатура КАК Номенклатура,
| ПродажиОбороты.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
| ПродажиОбороты.ЗаказПокупателя КАК ЗаказПокупателя,
| ПродажиОбороты.Организация КАК Организация,
| ПродажиОбороты.Регистратор КАК Регистратор,
| ПродажиОбороты.Период КАК Период,
| ПродажиОбороты.КоличествоОборот КАК Количество,
| ПродажиОбороты.КоличествоОборот * ЕСТЬNULL(ПродажиОбороты.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент, 1) / ЕСТЬNULL(ПродажиОбороты.Номенклатура.ЕдиницаДляОтчетов.Коэффициент, 1) КАК КоличествоЕдиницОтчетов,
| ПродажиОбороты.КоличествоОборот * ЕСТЬNULL(ПродажиОбороты.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент, 1) КАК КоличествоБазовыхЕдиниц,
| ПродажиОбороты.СтоимостьОборот - ПродажиОбороты.НДСОборот КАК СтоимостьБезНДС,
| ПродажиОбороты.НДСОборот КАК НДС,
| ПродажиОбороты.СтоимостьОборот КАК Стоимость,
//--------------------------------
| ЕСТЬNULL(ПоступлениеТоваровУслуг.КонтрактнаяСумма, 0) КАК КонтрактнаяСумма,
//------------------------------
| ЕСТЬNULL(ТаблицаРегистраПродажиСебестоимость.СтоимостьОборот, 0) КАК Себестоимость
| ИЗ
| РегистрНакопления.Продажи.Обороты(&ДатаНач, &ДатаКон, Регистратор, {Организация.* КАК Организация, Проект.* КАК Проект, Подразделение.* КАК Подразделение, Контрагент.* КАК Покупатель, ДоговорКонтрагента.* КАК ДоговорПокупателя, Номенклатура.* КАК Номенклатура, ХарактеристикаНоменклатуры.* КАК ХарактеристикаНоменклатуры, ЗаказПокупателя.* КАК ЗаказПокупателя}) КАК ПродажиОбороты
| ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
| ПродажиСебестоимость.Номенклатура КАК Номенклатура,
| ПродажиСебестоимость.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
| ПродажиСебестоимость.ЗаказПокупателя КАК ЗаказПокупателя,
| ВЫБОР
| КОГДА ПродажиСебестоимость.ДокументДвижения <> НЕОПРЕДЕЛЕНО
| ТОГДА ПродажиСебестоимость.ДокументДвижения
| ИНАЧЕ ПродажиСебестоимость.Регистратор
| КОНЕЦ КАК Регистратор,
| СУММА(ПродажиСебестоимость.Стоимость) КАК СтоимостьОборот
| ИЗ
| РегистрНакопления.ПродажиСебестоимость КАК ПродажиСебестоимость
| ГДЕ
| ПродажиСебестоимость.Период МЕЖДУ &ДатаНачала И &ДатаКонца
| {ГДЕ
| ПродажиСебестоимость.Проект.* КАК Проект,
| ПродажиСебестоимость.Подразделение.* КАК Подразделение,
| ПродажиСебестоимость.Номенклатура.* КАК Номенклатура,
| ПродажиСебестоимость.ХарактеристикаНоменклатуры.* КАК ХарактеристикаНоменклатуры,
| ПродажиСебестоимость.ЗаказПокупателя.* КАК ЗаказПокупателя}
|
| СГРУППИРОВАТЬ ПО
| ПродажиСебестоимость.Номенклатура,
| ПродажиСебестоимость.ХарактеристикаНоменклатуры,
| ПродажиСебестоимость.ЗаказПокупателя,
| ВЫБОР
| КОГДА ПродажиСебестоимость.ДокументДвижения <> НЕОПРЕДЕЛЕНО
| ТОГДА ПродажиСебестоимость.ДокументДвижения
| ИНАЧЕ ПродажиСебестоимость.Регистратор
| КОНЕЦ) КАК ТаблицаРегистраПродажиСебестоимость
| ПО ТаблицаРегистраПродажиСебестоимость.Номенклатура = ПродажиОбороты.Номенклатура
| И ТаблицаРегистраПродажиСебестоимость.ХарактеристикаНоменклатуры = ПродажиОбороты.ХарактеристикаНоменклатуры
| И ТаблицаРегистраПродажиСебестоимость.ЗаказПокупателя = ПродажиОбороты.ЗаказПокупателя
| И ТаблицаРегистраПродажиСебестоимость.Регистратор = ПродажиОбороты.Регистратор
//----------------------------------------
| ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
| ПоступлениеТоваровУслугТовары.Номенклатура КАК Номенклатура,
| ПоступлениеТоваровУслугТовары.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
| СУММА(ПоступлениеТоваровУслугТовары.Сумма) КАК КонтрактнаяСумма
|    ИЗ
| Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
| ГДЕ
| ПоступлениеТоваровУслугТовары.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаКонца
| {ГДЕ
| ПоступлениеТоваровУслугТовары.Ссылка.Подразделение.* КАК Подразделение,
| ПоступлениеТоваровУслугТовары.Номенклатура.* КАК Номенклатура,
| ПоступлениеТоваровУслугТовары.ХарактеристикаНоменклатуры.* КАК ХарактеристикаНоменклатуры}
|
| СГРУППИРОВАТЬ ПО
| ПоступлениеТоваровУслугТовары.Номенклатура,
| ПоступлениеТоваровУслугТовары.ХарактеристикаНоменклатуры
| ) КАК ПоступлениеТоваровУслуг
| ПО ТаблицаРегистраПродажиСебестоимость.Номенклатура = ПоступлениеТоваровУслуг.Номенклатура
| И ТаблицаРегистраПродажиСебестоимость.ХарактеристикаНоменклатуры = ПоступлениеТоваровУслуг.ХарактеристикаНоменклатуры
Этот запрос конструктором сделан?
Большая часть - из отчета Валовая Прибыль, то что между пустыми строками - сам дописал
Во-первых, что значит работает не всегда?
Во-вторых суммы закупок берутся из того же периода, что и продажи и это не равно себестоимости. Вам вообще что нужно анализировать?
А вообще лучше используйте регистр "Закупки" или "ПродажиСебестоимость", правда в зависимости от того что вам вообще необходимо получить в итоге.
Не всегда - это значит, что сумма иногда все-же появляется. (Если сформировать отчет, суммы проставляются, но не везде). Когда начал проверять - оказалось, что, например, в январе был продан продукт А, при этом в январе он же и закупался, но в отчете в моей колонке там 0. Проверил свой кусок запроса отдельно - он получает сумму, а вот после левого соединения она куда-то девается, и я не пойму в чем дело.

В итоге нужно получить колонки "контрактная цена" - то, о чем сейчас идет речь, таможенные расходы, доп.услуги, произво. себестоимость (тоже из документов), и из этого получить в сумме складскую себестоимость. То, что некорректно брать за ту же дату, что и закупки, я понимаю, но пока не придумал, как увязать закупку и заказ, потому что многие позиции закупаются просто на склад. Хочу сделать пока хотя бы в таком виде, потому что потом останется просто слегка модифицировать уже готовое решение.
> В итоге нужно получить колонки "контрактная цена" - то, о чем сейчас идет речь, таможенные расходы, доп.услуги, произво. себестоимость (тоже из документов), и из этого получить в сумме складскую себестоимость.

А при чем здесь вообще тогда отчет "Валовая прибыль"?
потому что впоследствии надо будет посчитать и ее тоже, в т.ч. на основании складской себестомости. По запросу-то какие-то комментарии есть?)
> По запросу-то какие-то комментарии есть?

Да, в Вашем случае запрос надо делать конструктором.
У вас соединение выполнено через "ТаблицаРегистраПродажиСебестоимость.Номенклатура = ПоступлениеТоваровУслуг.Номенклатура".
Что будет в слечае "ПродажиОбороты.Номенклатура = ПоступлениеТоваровУслуг.Номенклатура"?
Читают тему
(гостей: 1)

Быстрый переход