Срез последних N записей, пример на СКД

29.07.23

Разработка - Запросы

Пример получения в СКД последних N записей, т.е. например, получить последние 3 записи по каждой категории.

Скачать исходный код

Наименование Файл Версия Размер
СрезПоследних_N_записей
.erf 6,57Kb
5
.erf 1.0.0.1 6,57Kb 5 Скачать

Описание работы 

Пример получения в СКД последних N записей,

т.е. например, получить последние 3 записи по каждой категории (наименованию, группе).

В примере не используются: временные таблицы (см. уточнение ниже), нумерация строк запроса и какие-то особые возможности СКД. Поэтому работает быстро.

Пример будет работать и без СКД, например, в коде 1С в запросе.

Если вам нужно в запросе не три записи по каждой категории, а, например, пять,  поправьте в запросе строку:

ВЫБРАТЬ ПЕРВЫЕ 3
 
 (развернуть) уточнение по временным таблицам

Описание настроек

Запустить Предприятие 1С. И далее, Файл - Открыть - ... отчет

Тестировал на платформе 1С:Предприятие 8.3 (8.3.12.1685, 8.3.20.1674).

Будет работать в любых конфигурациях на управляемых формах.

Отчет не зависит от объектов конфигурации, таблица с данными создается в отчете.

скд срез последних 3 5 несколько записей СрезПоследних две три пять отобрать получить N группы сразу по всем таблица значений

См. также

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

Инструментарий разработчика Роли и права Запросы СКД Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

10000 руб.

02.09.2020    124805    682    389    

732

СКД на JavaScript в 1С

СКД WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Долгое время поддерживаю web-портал, в котором появилась необходимость создавать отчеты. Просмотрев различные фреймворки на js, я решил сделать свое решение, которое позволяло бы быстро разрабатывать и добавлять новые отчеты на web-портал.

2 стартмани

11.12.2023    8370    20    John_d    25    

123

Модель СКД

Инструментарий разработчика СКД Платформа 1С v8.3 Система компоновки данных Абонемент ($m)

DSL для работы с СКД.

1 стартмани

15.11.2023    6007    15    kalyaka    5    

86

Начните уже использовать хранилище запросов

HighLoad оптимизация Запросы

Очень немногие из тех, кто занимается поддержкой MS SQL, работают с хранилищем запросов. А ведь хранилище запросов – это очень удобный, мощный и, главное, бесплатный инструмент, позволяющий быстро найти и локализовать проблему производительности и потребления ресурсов запросами. В статье расскажем о том, как использовать хранилище запросов в MS SQL и какие плюсы и минусы у него есть.

11.10.2023    16584    skovpin_sa    14    

101

Разрыв страницы в СКД. Легко!

СКД Платформа 1С v8.3 Система компоновки данных Бесплатно (free)

Когда отчет надо разделить по страницам, это всегда проблема для разработчика. Поскольку в СКД нет стандартных вариантов, как это сделать. Нашел (на свой взгляд) самое простое и оптимальное решение.

01.09.2023    4762    KVIKS    15    

80

MS SQL Server: изучаем планы запросов

Запросы HighLoad оптимизация Запросы Бесплатно (free)

Многие знают, что для ускорения работы запроса нужно «изучить план». При этом сам план обычно обескураживает: куча разноцветных иконок и стрелочек; ничего не понятно, но очень интересно! Аналитик производительности Александр Денисов на конференции Infostart Event 2021 Moscow Premiere рассказал, как выполняется план запроса и что нужно сделать, чтобы с его помощью находить проблемы производительности.

20.06.2023    16984    Филин    37    

114

Вывод элементов иерархии верхнего уровня на СКД

СКД Платформа 1С v8.3 Абонемент ($m)

Как получить родителя первого уровня иерархического справочника с помощью СКД.

1 стартмани

06.06.2023    6502    echo77    6    

79

Все консоли запросов для 1С

Запросы Инструментарий разработчика Бесплатно (free)

Список всех популярных обработок.

17.03.2023    37363    kuzyara    87    

181
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. user1146461 09.03.22 12:57 Сейчас в теме
если кто-то вдруг потратит на это стармани, то поведайте пожалуйста, что здесь такого неординарного, что за это деньги просят?
+
2. ardn 627 09.03.22 14:49 Сейчас в теме
(1)
потратит на это стармани, то поведайте пожалуйста, что здесь такого

Правда хитрость с запросом, не уверен, что это документированное поведение
+
5. user-z99999 67 09.03.22 16:06 Сейчас в теме
(2)
Правда хитрость с запросом, не уверен, что это документированное поведение

1С транслирует запросы на языке 1С в запросы на языке SQL.

У меня в примере, используются возможности языка SQL, документированные, которые поддерживаются 1С.

Поэтому я написал код на языке 1С, которые выполнятеся без проблем.
+
6. ardn 627 09.03.22 16:15 Сейчас в теме
(5)
Прошу разрешения опубликовать ваш ход с соединением таблицы в условии, может быть гуру этого сайта подскажут, насколько уместно использование такого запроса. Подозреваю, при трансляции его в SQL получится не оптимальная конструкция.
+
8. user-z99999 67 09.03.22 16:25 Сейчас в теме
(6)
Чтобы рассуждать о не оптимальности, нужно изучить альтернативные варианты решения этой задачи.
У меня таблица соединяется сама с собой и получается результат.

В решениях с нумерацией строк таблицы, исходная таблица используется большее количество раз,
чем у меня, что не оптимально.


Просьба не публивать моё решение.
Для гуру - можно прочитать в интернете: Коррелированные Подзапросы Sql.
+
3. ardn 627 09.03.22 14:51 Сейчас в теме
(0)
Все-таки это нечестные последние N записей.
Добавил в ваш пример 4 одинаковых даты по одной из валют, в результате вывелось 4 строчки со срезом "последних"
+
4. user-z99999 67 09.03.22 16:02 Сейчас в теме
(3)
Т.е. вы решили добавить строки:
06.04.2024  "JPY", 255	
06.04.2024  "JPY", 256	
06.04.2024  "JPY", 257	
06.04.2024  "JPY", 258	

И ждете адекватного ответа от запроса?

Запрос - это не документ, поэтому в нём нет МоментаВремени(). Выборка происходит по Датам.
И запросу не известно, какая запись у вас первая, а какая последняя т.к. это запрос!

Если вам действительно нужно в течении дня отслеживать записи, тогда нужно:
вместо
ВЫБРАТЬ ДАТАВРЕМЯ(2024, 1, 1) КАК Период

использовать Дату с точностью до секуды
ВЫБРАТЬ ДАТАВРЕМЯ(2024, 1, 1,0,0,1) КАК Период

Первоначально предполагалось, что в примере РегистрСведений_КурсыВалют
у него периодичность в типовых конфигурациях в пределах Дня.

Выше показал пример, что делать, если у вас в течении дня много записей (использовать Дату с точностью до секуды).
+
7. ardn 627 09.03.22 16:25 Сейчас в теме
(4)
Совершенно верно - я добавил такие строки и жду, что мне вернутся N последних записей. Получаю не N, непорядок.
Я понимаю, почему так получается, я все-таки посмотрел запрос.
Просто в тексте вы противопоставляете свой способ использованию нумерации строк запроса, это не совсем правильно - ваш способ не даст такого же результата, как там.
+
9. user-z99999 67 09.03.22 16:44 Сейчас в теме
(7)
Какую запись я должен показать, если их четыре? Любую?
06.04.2024  "JPY", 255    
06.04.2024  "JPY", 256    
06.04.2024  "JPY", 257    
06.04.2024  "JPY", 258    

И я уже объяснил, что у Регистра Свеедний бывает периодичность. Т.е. с периодическим регистром сведений - работает верно.
Т.е. можно взять моё решение и использовать для периодического Регистра Сведений.

А если вы что-то хотие сделать с записями, у которых Период и Валюта одинаковые,
их предварительно можно сгруппировать, и взять Значение показателя Max или Min.
А дальше, как у меня написано.
Но такое решение будет трудно читаться, если очень очень нужно, тогда можно сделать защиту от повторов.

Самое оптимальное - группировать и убирать "дубли" (если у вас они есть) уже результата т.к. там очень мало записей.
+
Оставьте свое сообщение