Почему в запрос всегда попадает дата 28.12.2024 ???

1. user2010088 15.07.24 11:39 Сейчас в теме
Здравствуйте! Подскажите пожалуйста, почему в запрос всегда попадает первая дата 28.12.2024 ????

Текст запроса:

ВЫБРАТЬ ПЕРВЫЕ 13
ДанныеПроизводственногоКалендаря.Дата КАК ДатаКалендаря,
АВТОНОМЕРЗАПИСИ() КАК Номер
ПОМЕСТИТЬ ВТ_РабочиеДни
ИЗ
РегистрСведений.ДанныеПроизводственногоКалендаря КАК ДанныеПроизводственногоКалендаря
ГДЕ
ДанныеПроизводственногоКалендаря.ВидДня = &ВидДня_РабочийДень
И ДанныеПроизводственногоКалендаря.Дата >= &ИсходнаяДата
;


////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ ПЕРВЫЕ 13
ВТ_РабочиеДни.ДатаКалендаря КАК ДатаКалендаря,
ВТ_РабочиеДни.Номер КАК Номер
ИЗ
ВТ_РабочиеДни КАК ВТ_РабочиеДни
УПОРЯДОЧИТЬ ПО ВТ_РабочиеДни.Номер УБЫВ


Если пойму почему попадает 28.12.2024 то и АВТОНОМЕРЗАПИСИ будет не нужен
Найденные решения
9. Kulakov_P 16.07.24 10:21 Сейчас в теме
(1) вы когда из регистра выдергиваете первые 13 записей подразумеваете, что записи лежат в хронологическом порядке дат. Но физически в таблицах регистра это может быть совсем не так. Например, если пользователь руками забивал данные производственного календаря в разброс. Поэтому сначала отбирайте все даты больше или равные исходной, сортируйте по хронологии и затем получайте первые 13.
Но тут возникает вопрос неоптимальности - например вам надо отобрать 13 рабочих дней с 1 июля 2022 года. И тогда в случае, если в регистре заполнены данные на 2023 и 2024 год, то они все попадут в первую выборку, будут отсортированы, а потом будут отобраны первые 13. Сортировать лишние данные - зачем?
Поэтому я бы сделал иначе. Создал ТЗ с датами с некоторым запасом. Например, 30 дней начиная с нужной даты. Передал в запрос и из производственного календаря узнал бы, рабочий или выходной день. Откинул выходные. Отсортировал, а потом получил нужные 13 дней.
"Запас" по датам необходим т.к. будут отобраны первично и выходные, и заранее не известно, сколько этих выходных. Размер запаса определяется исходя из максимального периода нерабочих дней (январь), чтобы гарантированно захватить нужные 13 рабочих дней.
Sejix; starik-2005; +2 Ответить
10. VmvLer 16.07.24 10:37 Сейчас в теме
(7) 28.12.24 - это последний рабочий день этого года

Кто-то открыл календарь и модифицировал это день - поставил не рабочий, а потом опять рабочий.
В результате в таблице регистра эта эта запись стала первой.

Чтобы проверить эту версию, в календаре модифицируете 27.12.24 и запишите его.
11. starik-2005 3070 16.07.24 12:38 Сейчас в теме
(1)
И ДанныеПроизводственногоКалендаря.Дата >= &ИсходнаяДата
И ДанныеПроизводственногоКалендаря.Дата >= &ИсходнаяДата
УПОРЯДОЧИТЬ ПО ДанныеПроизводственногоКалендаря.Дата
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
8. Vinzor 104 15.07.24 12:36 Сейчас в теме
(1) такие изначальные вопросы с чуть-чуть данными - флуд. А где значения параметров, а где вид или описание, как заполнен регистр?
На что рассчитываете, "проситель"? Что эксперты всё бросят и начнут кучей встречных вопросов спрашивать всё, чего изначально не хватает в описании?

ЗЫ, после чтения всей ветки. Кэш 1С почистите
user2010088; +1 Ответить
9. Kulakov_P 16.07.24 10:21 Сейчас в теме
(1) вы когда из регистра выдергиваете первые 13 записей подразумеваете, что записи лежат в хронологическом порядке дат. Но физически в таблицах регистра это может быть совсем не так. Например, если пользователь руками забивал данные производственного календаря в разброс. Поэтому сначала отбирайте все даты больше или равные исходной, сортируйте по хронологии и затем получайте первые 13.
Но тут возникает вопрос неоптимальности - например вам надо отобрать 13 рабочих дней с 1 июля 2022 года. И тогда в случае, если в регистре заполнены данные на 2023 и 2024 год, то они все попадут в первую выборку, будут отсортированы, а потом будут отобраны первые 13. Сортировать лишние данные - зачем?
Поэтому я бы сделал иначе. Создал ТЗ с датами с некоторым запасом. Например, 30 дней начиная с нужной даты. Передал в запрос и из производственного календаря узнал бы, рабочий или выходной день. Откинул выходные. Отсортировал, а потом получил нужные 13 дней.
"Запас" по датам необходим т.к. будут отобраны первично и выходные, и заранее не известно, сколько этих выходных. Размер запаса определяется исходя из максимального периода нерабочих дней (январь), чтобы гарантированно захватить нужные 13 рабочих дней.
Sejix; starik-2005; +2 Ответить
11. starik-2005 3070 16.07.24 12:38 Сейчас в теме
(1)
И ДанныеПроизводственногоКалендаря.Дата >= &ИсходнаяДата
И ДанныеПроизводственногоКалендаря.Дата >= &ИсходнаяДата
УПОРЯДОЧИТЬ ПО ДанныеПроизводственногоКалендаря.Дата
2. user2033930 15.07.24 11:50 Сейчас в теме
Потому что календарь заполнен на весь 2024 год. Последний рабочий день в году - 28.12.2024. При сортировке по убыванию он становится первым в списке.
Чего непонятного?
starik-2005; +1 Ответить
3. Lenten 26 15.07.24 11:53 Сейчас в теме
запустил у себя. Не попадает 28.12.2024 . проверьте данные производственного календаря

ДатаКалендаря Номер
31.07.2024 0:00:00 13
30.07.2024 0:00:00 12
29.07.2024 0:00:00 11
26.07.2024 0:00:00 10
25.07.2024 0:00:00 9
24.07.2024 0:00:00 8
23.07.2024 0:00:00 7
22.07.2024 0:00:00 6
19.07.2024 0:00:00 5
18.07.2024 0:00:00 4
17.07.2024 0:00:00 3
16.07.2024 0:00:00 2
15.07.2024 0:00:00 1
4. user2010088 15.07.24 12:00 Сейчас в теме
5. user2010088 15.07.24 12:17 Сейчас в теме
(3) Данные заполнены согласно производственному календарю РФ. Заполняется по неделям, заполнен до 31.12.2024
6. Lenten 26 15.07.24 12:25 Сейчас в теме
(5) тогда можно только &ИсходнаяДата проверять

потом перезагрузить компьютер и сходить 15 минут подышать на воздух
7. user2010088 15.07.24 12:34 Сейчас в теме
(6)
Я получаю такие данные, исходная дата указана 15.07.2024
30.07.2024 0:00:00 13
29.07.2024 0:00:00 12
26.07.2024 0:00:00 11
25.07.2024 0:00:00 10
24.07.2024 0:00:00 9
23.07.2024 0:00:00 8
22.07.2024 0:00:00 7
19.07.2024 0:00:00 6
18.07.2024 0:00:00 5
17.07.2024 0:00:00 4
16.07.2024 0:00:00 3
15.07.2024 0:00:00 2
28.12.2024 0:00:00 1
10. VmvLer 16.07.24 10:37 Сейчас в теме
(7) 28.12.24 - это последний рабочий день этого года

Кто-то открыл календарь и модифицировал это день - поставил не рабочий, а потом опять рабочий.
В результате в таблице регистра эта эта запись стала первой.

Чтобы проверить эту версию, в календаре модифицируете 27.12.24 и запишите его.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот