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

29.07.23

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
СрезПоследних_N_записей
.erf 6,57Kb
5
5 Скачать (3 SM) Купить за 2 450 руб.

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

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

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

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

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

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

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

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

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

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

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

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

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

См. также

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

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

10000 руб.

02.09.2020    152134    834    397    

842

Инструментарий разработчика СКД Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

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

3 стартмани

05.02.2024    6471    49    obmailok    21    

79

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

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

2 стартмани

11.12.2023    10314    23    John_d    25    

124

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

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

11.10.2023    18695    skovpin_sa    15    

104

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

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

01.09.2023    6244    KVIKS    15    

81

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

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

20.06.2023    25463    Филин    37    

118

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

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

1 стартмани

06.06.2023    8967    echo77    6    

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

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

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

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

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

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


Просьба не публивать моё решение.
Для гуру - можно прочитать в интернете: Коррелированные Подзапросы Sql.
3. ardn 649 09.03.22 14:51 Сейчас в теме
(0)
Все-таки это нечестные последние N записей.
Добавил в ваш пример 4 одинаковых даты по одной из валют, в результате вывелось 4 строчки со срезом "последних"
4. user-z99999 70 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 649 09.03.22 16:25 Сейчас в теме
(4)
Совершенно верно - я добавил такие строки и жду, что мне вернутся N последних записей. Получаю не N, непорядок.
Я понимаю, почему так получается, я все-таки посмотрел запрос.
Просто в тексте вы противопоставляете свой способ использованию нумерации строк запроса, это не совсем правильно - ваш способ не даст такого же результата, как там.
9. user-z99999 70 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.
А дальше, как у меня написано.
Но такое решение будет трудно читаться, если очень очень нужно, тогда можно сделать защиту от повторов.

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