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