21 ноября 2021 г.

1С Нумерация в запросе (УФ)

На платформе 8.3 появилась давно возможность нумерации строк прямо в запросе, все хорошо, но нумерация идет от 1, а мне нужно было от нуля. Решение оказалось банальным, равно как и сортировка записей во временной таблице:

ВЫБРАТЬ ПЕРВЫЕ 1000000
ЧекиУчастников.Участник КАК Участник,
ЧекиУчастников.ДатаПокупки КАК ДатаПокупки,
АВТОНОМЕРЗАПИСИ() КАК НомерШанса
ПОМЕСТИТЬ ВРЧекиУчастников
ИЗ
РегистрСведений.ЧекиУчастников КАК ЧекиУчастников
ГДЕ
ЧекиУчастников.ДатаПокупки МЕЖДУ &ДатаНачалаВыборки И &ДатаКонцаВыборки
УПОРЯДОЧИТЬ ПО
ДатаПокупки
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
ЧекиУчастников.Участник КАК Участник,
ЧекиУчастников.ДатаПокупки КАК ДатаПокупки,
ЧекиУчастников.НомерШанса - 1 КАК НомерШанса
ИЗ
ВРЧекиУчастников КАК ЧекиУчастников


Больше миллиона у меня записей не будет, поэтому и такое ограничение. Так как нумерация идет с единицы, то я уменьшаю ее на единицу.

Отмечу что в серверных БД на PostgreSQL автонумерация работает криво, может начать нумерацию от балды. Удаление временной таблицы не помогает, может помочь создание разных ВТ (например уникальность имени от полной даты с временем)

Комментариев нет:

Отправить комментарий