Добрый день!
Затык с запросом. Подскажите, как сделать такое?
Есть две Таблицы:
РН.ПродажиОбороты...
вторая ВТ с ценой себестоимости:
Период
Номенклатура
Цена
(цена может отсутствовать на день продажи, тогда 0)
Цена устанавливается на все будущие продажи, но до следующей цены.
01.03.2017 Номенклатура1 13
03.03.2017 Номенклатура2 30
14.03.2017 Номенклатура2 35
Нужно получить в результате:
Номенклатура1 28.02.2017 0
Номенклатура1 01.03.2017 13
Номенклатура1 25.03.2017 13
Номенклатура2 01.03.2017 0
Номенклатура2 03.03.2017 30
Номенклатура2 10.03.2017 30
Номенклатура2 15.03.2017 35
Затык с запросом. Подскажите, как сделать такое?
Есть две Таблицы:
РН.ПродажиОбороты...
вторая ВТ с ценой себестоимости:
Период
Номенклатура
Цена
(цена может отсутствовать на день продажи, тогда 0)
Цена устанавливается на все будущие продажи, но до следующей цены.
01.03.2017 Номенклатура1 13
03.03.2017 Номенклатура2 30
14.03.2017 Номенклатура2 35
Нужно получить в результате:
Номенклатура1 28.02.2017 0
Номенклатура1 01.03.2017 13
Номенклатура1 25.03.2017 13
Номенклатура2 01.03.2017 0
Номенклатура2 03.03.2017 30
Номенклатура2 10.03.2017 30
Номенклатура2 15.03.2017 35
По теме из базы знаний
- Связи Метаданных. Простой построитель запросов.
- История оптимизации одного большого запроса средствами MSSQL Profiler и 1С
- Зачем запросу план и кто его выполняет?
- Как читать чужой код? Часть 3. Разбор и доработка запросов
- Быстрый фронт в базе размером 6.8 терабайт – наши стандарты при разработке и рефакторинге запросов
Найденные решения
Вот что получил. Работает, как мне надо.
ВЫБРАТЬ
Продажи.Период КАК Период,
Продажи.Контрагент,
Продажи.Номенклатура КАК Номенклатура,
Продажи.КоличествоОборот КАК Количество,
Продажи.СтоимостьОборот КАК Стоимость,
ЕСТЬNULL(ЦеныНоменклатуры.Цена, 0) КАК Поле1
ИЗ
РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, День, Номенклатура В (&Номенклатура)) КАК Продажи
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
ПО Продажи.Номенклатура = ЦеныНоменклатуры.Номенклатура
И (ЦеныНоменклатуры.ТипЦен = &ТипЦен)
И (ЦеныНоменклатуры.Период В
(ВЫБРАТЬ ПЕРВЫЕ 1
Цены.Период
ИЗ
РегистрСведений.ЦеныНоменклатуры КАК Цены
ГДЕ
Цены.Период <= Продажи.Период
И Цены.Номенклатура = Продажи.Номенклатура
И МЕСЯЦ(Цены.Период) = МЕСЯЦ(Продажи.Период)
И Цены.ТипЦен = &ТипЦен
УПОРЯДОЧИТЬ ПО
Цены.Период УБЫВ))
УПОРЯДОЧИТЬ ПО
Номенклатура,
Период
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Берете таблицу регистра сведений без среза, в условиях связи делаете запрос по типу:
Вроде бы ничего не напутал, конфы где это реализовывал нет под рукой.
РегистрСведений.Себестоимость.Период В(
ВЫБРАТЬ ПЕРВЫЕ 1
РегСвед.Период
ИЗ
РегистрСведений.Себестоимость КАК РегСвед
ГДЕ
РегСвед.Период <= [ПолеРегистраНакопления.Период])
ПоказатьВроде бы ничего не напутал, конфы где это реализовывал нет под рукой.
(8) не понял, что значит "в условиях связи делаете запрос".
накидал "с нуля" такой запрос:
накидал "с нуля" такой запрос:
ВЫБРАТЬ
Продажи.Номенклатура КАК Номенклатура,
Цены.Цена,
Продажи.ДокументПродажи.Дата КАК ДокументПродажиДата,
Продажи.КоличествоОборот
ИЗ
РегистрНакопления.Продажи.Обороты(НАЧАЛОПЕРИОДА(&НачалоПериода, МЕСЯЦ), КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ), , Номенклатура В (&Номенклатура)) КАК Продажи
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК Цены
ПО Продажи.Номенклатура = Цены.Номенклатура
И Продажи.ДокументПродажи.Дата >= Цены.Период
ГДЕ
Цены.ТипЦен = &ТипЦен
И Цены.Период В
(ВЫБРАТЬ ПЕРВЫЕ 1
Цены.Период КАК Период
ИЗ
РегистрСведений.ЦеныНоменклатуры КАК Цены
ГДЕ
Цены.Период <= Продажи.ДокументПродажи.Дата
И МЕСЯЦ(Продажи.ДокументПродажи.Дата) = МЕСЯЦ(Цены.Период)
И Продажи.Номенклатура = Цены.Номенклатура)
Показать
Вот что получил. Работает, как мне надо.
ВЫБРАТЬ
Продажи.Период КАК Период,
Продажи.Контрагент,
Продажи.Номенклатура КАК Номенклатура,
Продажи.КоличествоОборот КАК Количество,
Продажи.СтоимостьОборот КАК Стоимость,
ЕСТЬNULL(ЦеныНоменклатуры.Цена, 0) КАК Поле1
ИЗ
РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, День, Номенклатура В (&Номенклатура)) КАК Продажи
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
ПО Продажи.Номенклатура = ЦеныНоменклатуры.Номенклатура
И (ЦеныНоменклатуры.ТипЦен = &ТипЦен)
И (ЦеныНоменклатуры.Период В
(ВЫБРАТЬ ПЕРВЫЕ 1
Цены.Период
ИЗ
РегистрСведений.ЦеныНоменклатуры КАК Цены
ГДЕ
Цены.Период <= Продажи.Период
И Цены.Номенклатура = Продажи.Номенклатура
И МЕСЯЦ(Цены.Период) = МЕСЯЦ(Продажи.Период)
И Цены.ТипЦен = &ТипЦен
УПОРЯДОЧИТЬ ПО
Цены.Период УБЫВ))
УПОРЯДОЧИТЬ ПО
Номенклатура,
Период
Показать
Внимание! Тема сдана в архив
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот