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