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