Имеется:
1. РегистрНакопления.Продажи – каждый документ записывает при проведении статистическую информацию
Например, продажи Товара А каждый день, значит каждый день несколько записей.
2. РегистрСведений.ТоварыПризнаки – периодический, независимый. В нем для каждого Товара записаны сведения на различные даты (не на каждый день!):
- 01.01.17 Товар = ТоварА, Признак = Хороший
- 08.01.17 Товар = ТоварА, Признак = Плохой
- 20.01.17 Товар = ТоварА, Признак = Очень Плохой
Необходимо запросом выбрать продажи за месяц, но возле каждой продажи Товара его значение из ТоварыПризнаки на этот день (срез первых). Если товар вообще не имеется в регистре ТоварыПризнаки – не выводить.
В моем примере запись от 10.01 должна дать Признак = Плохой.
Попробовал вроде:
ВЫБРАТЬ
Продажи.Регистратор КАК Документ,
Продажи. Регистратор.Дата КАК ДатаДок,
Продажи.Товар КАК Товар,
Продажи.Сумма КАК РеаСум,
ТоварыПризнаки.Признак КАК Признак
ИЗ
РегистрНакопления.Продажи КАК Продажи
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ТоварыПризнаки.СрезПервых КАК ТоварыПризнаки
ПО
Продажи.Товар = ТоварыПризнаки.Товар И
Продажи.Период >= ТоварыПризнаки.Период
ГДЕ
Продажи.Период МЕЖДУ НАЧАЛОПЕРИОДА(&ДатаНач, ДЕНЬ) И КОНЕЦПЕРИОДА(&ДатаКон, ДЕНЬ)
Показать
Но понятно – не то.
Попытался найти советы - предлагается через промежуточные таблицы. Не нравится.
Прошу подсказать.
Вложенный запрос разрезе всех дат периода будет очень тяжелым для базы данных, в связях получите запросом точный период ТоварыПризнаки который является самым близким к периоду операции.
Вложенный запрос разрезе всех дат периода будет очень тяжелым для базы данных, в связях получите запросом точный период ТоварыПризнаки который является самым близким к периоду операции.
Эта задача называется "срез последних на каждую дату в запросе". Решение легко гуглится.
Пользуйтесь конструктором JUG. http://infostart.ru/public/569569/ Там есть библиотека шаблонов (ваш случай там тоже есть).