Часто бывает так, что одно и то же значение устанавливается в периодическом регистре сведений несколько раз подряд. На примере таблицы дат и цен следующий запрос позволяет избавиться от ненужных повторов:
Автор: ildarovich
ВЫБРАТЬ
Дано.Дата КАК Дата,
Дано.Цена
ИЗ
Дано КАК Дано
ЛЕВОЕ СОЕДИНЕНИЕ Дано КАК Слева
ПО (Слева.Дата < Дано.Дата)
СГРУППИРОВАТЬ ПО
Дано.Дата,
Дано.Цена
ИМЕЮЩИЕ
ЕСТЬNULL(МАКСИМУМ(Слева.Дата), 0) <> ЕСТЬNULL(МАКСИМУМ(ВЫБОР Слева.Цена КОГДА Дано.Цена ТОГДА Слева.Дата КОНЕЦ), 1)
//Или вот еще решение через коррелированный запрос (всегда требуется тестировать производительность таких вариантов!)
ВЫБРАТЬ
Дано.Дата КАК Дата,
Дано.Цена
ИЗ
Дано КАК Дано
ГДЕ
НЕ Дано.Цена В
(ВЫБРАТЬ ПЕРВЫЕ 1
Слева.Цена
ИЗ
Дано КАК Слева
ГДЕ
Слева.Дата < Дано.Дата
УПОРЯДОЧИТЬ ПО
Слева.Дата УБЫВ)
{2} Ожидается идентификатор
Запись в регистр сведений (периодический, независимый)
ПриОпределенииРегистровСДвижениями (БСП)
Добавить движение в регистр накопления
Создать запись в регистре сведений
Получение данных из регистра сведений не запросом
Срезы последних (интерполяция периодических сведений)
ВыбратьРегистраторыРегистраДляОбработки (БСП)