Календарик или выборка дат

15.05.10

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

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

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

для типовых конфигураций возможны решения использующие различные регистры сведений например курсы валют или производственный календарь.

Мой вариант не зависит от конфигурации, он сделан на основе нескольких размещенных здесь и на мисте и оптимизирован по объему кода, и количеству виртуальных таблиц \ вложенных запросов

ВЫБРАТЬ
            0 КАК a
Поместить vt_aa           
            ОБЪЕДИНИТЬ
           
            ВЫБРАТЬ
                1
           
            ОБЪЕДИНИТЬ
           
            ВЫБРАТЬ
                2
           
            ОБЪЕДИНИТЬ
           
            ВЫБРАТЬ
                3
           
            ОБЪЕДИНИТЬ
           
            ВЫБРАТЬ
                4
           
            ОБЪЕДИНИТЬ
           
            ВЫБРАТЬ
                5
           
            ОБЪЕДИНИТЬ
           
            ВЫБРАТЬ
                6
           
            ОБЪЕДИНИТЬ
           
            ВЫБРАТЬ
                7
           
            ОБЪЕДИНИТЬ
           
            ВЫБРАТЬ
                8
           
            ОБЪЕДИНИТЬ
           
            ВЫБРАТЬ
                9
                ;
ВЫБРАТЬ
    ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, РазностьДат.НомерДняИзДиапазона) КАК датаПериода
ПОМЕСТИТЬ Даты   
ИЗ
    (ВЫБРАТЬ
        bb.a * 100 + cc.a * 10 + dd.a КАК НомерДняИзДиапазона
    ИЗ
         vt_aa КАК bb           
            ПОЛНОЕ СОЕДИНЕНИЕ vt_aa КАК cc
            ПО (ИСТИНА)
            ПОЛНОЕ СОЕДИНЕНИЕ vt_aa КАК dd
            ПО (ИСТИНА)) КАК РазностьДат
ГДЕ
    РазностьДат.НомерДняИзДиапазона < РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ)

если не хватает размера выборки то можно увеличить изменив строку

        bb.a * 100 + cc.a * 10 + dd.a КАК НомерДняИзДиапазона

на    aa.a*1000 +     bb.a * 100 + cc.a * 10 + dd.a КАК НомерДняИзДиапазона

и добавив полное соединение

            ПОЛНОЕ СОЕДИНЕНИЕ vt_aa КАК aa
            ПО (ИСТИНА)

Вступайте в нашу телеграмм-группу Инфостарт

См. также

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

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

15500 руб.

02.09.2020    224039    1217    415    

1066

Инструментарий разработчика Запросы Программист 1С v8.3 Сложные периодические расчеты Запросы 1С:Зарплата и кадры государственного учреждения 3 1С:Зарплата и Управление Персоналом 3.x Абонемент ($m)

QueryConsole1C — расширение, включающее консоль запросов с поддержкой исполняемых представлений — аналогов виртуальных таблиц, основанных на методах программного интерфейса ЗУП. Оно позволяет выполнять запросы с учётом встроенной бизнес-логики, отлаживать алгоритмы получения данных и автоматически генерировать код на встроенном языке 1С.

1 стартмани

16.05.2025    6817    94    zup_dev    22    

74

Инструментарий разработчика Запросы Программист 1С v8.3 Управляемые формы Запросы 1С:ERP Управление предприятием 2 Абонемент ($m)

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

2 стартмани

05.03.2025    4483    18    XilDen    12    

28

Обновление 1С Запросы Программист 1С v8.3 1С:ERP Управление предприятием 2 Абонемент ($m)

Данный инструмент помогает анализировать доработанную конфигурацию после обновления на новый релиз и находить «битые» тексты запросов, в которых участвуют несуществующие в новом релизе метаданные.

3 стартмани

06.02.2025    4081    27    XilDen    26    

39

Запросы Программист 1С v8.3 Запросы 1C:Бухгалтерия Бесплатно (free)

В статье приведена удобная возможность отладки исполняемого запроса динамического списка.

03.12.2024    9425    artemusII    11    

24

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

Увидел cheatsheet по SQL и захотелось нарисовать подобное, но про запросы.

18.10.2024    18553    sergey279    18    

72

Запросы Программист 1С v8.3 Запросы 1C:Бухгалтерия Бесплатно (free)

Столкнулся с интересной ситуацией, которую хотел бы разобрать, ввиду её неочевидности. Речь пойдёт про использование функции запроса АВТОНОМЕРЗАПИСИ() и проблемы, которые могут возникнуть.

11.10.2024    13304    XilDen    38    

107
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. alexk-is 6548 15.05.10 10:53 Сейчас в теме
Вот календарик в диапазоне до 2739 лет. http://www.infostart.ru/public/68269/
Работает значительно быстрее.
2. grub 6 15.05.10 17:49 Сейчас в теме
(1) замеры в студию :!: твой слишком громоздкий куча временных таблиц и в зависимости от диапазона дат ( периода ) твой будет выдавать разную скорость, твой смотрел механизмы похожи мне мой больше нравится он проще короче и в нём только одна временная таблица

p.s на практике отчеты с выборкой по дням за период больше года не делаются не читабельно обычно хватает месяца за глаза
5. alexk-is 6548 15.05.10 21:06 Сейчас в теме
(2) Вариант указанный по ссылочке будет стабильно работать от 01.01.0001 по текущую дату ещё 700 лет. В комментариях указаны диапазоны и выбросить "не нужные" таблицы проблем не составляет. Замеры сейчас сделаю.
9. grub 6 15.05.10 22:19 Сейчас в теме
(5) Замеры сделанные в ИР
Время формирования результата - 16 мс
Время формирования результата - 15 мс
Время формирования результата - 0 мс
вот такой разброс для обоих запросов
в iE мой показывает 0,1
ваш 0,1 - 0,3 так что где ваш работает значительно быстрее не вижу
11. alexk-is 6548 16.05.10 08:02 Сейчас в теме
(9) Расклад такой на 1000 повторов для 3х вариантов:
1. Пример запроса из этой публикации
2. Пример запроса из ссылки (1)
3. Пример запроса из ссылки (1) с ограничениями на 2.5 года как в этой публикации

Период 1 месяц
1 - 5,891
2 - 6,172
3 - 3,391

Период 3 месяца
1 - 6,001
2 - 6,720
3 - 3,688

Период 6 месяцев
1 - 6,077
2 - 7,452
3 - 4,094

Период 12 месяц
1 - 6,173
2 - 8,923
3 - 4,938

Отсюда вывод запрос на 2739 лет (вариант 2) работает медленнее всех. Думаю это понятно, т.к. обрабатывается больше связей. Вариант 3 работает быстрее варианта 1, т.к. выполняется отсечение до соединения и меньше математики в результирующем запросе.
3. пользователь 15.05.10 18:44
Сообщение было скрыто модератором.
...
6. grub 6 15.05.10 21:59 Сейчас в теме
(3) на полноценную статью пока нет времени сравнить с решением alexk-is сравним
один из худших. - каковы критерии ?

(4) можно пальцем в типовой где посмотреть ( если это зарплата то я с ней не работаю)
4. пользователь 15.05.10 18:47
Сообщение было скрыто модератором.
...
7. пользователь 15.05.10 22:05
Сообщение было скрыто модератором.
...
8. пользователь 15.05.10 22:06
Сообщение было скрыто модератором.
...
10. grub 6 15.05.10 22:21 Сейчас в теме
(8) для типовой волне нормальное решение, если нужно универсальный внешний запрос то приходится изгалятся
(3) Eugeneer за это пост хочется поставить сразу и + и -
я за критику, но с конкретикой хочется понять по каким критерия оценивается запрос :idea:
12. alexk-is 6548 17.05.10 16:12 Сейчас в теме
(0) Текст запроса в статье можно раскрасить получше.
Для отправки сообщения требуется регистрация/авторизация