Почему в запрос всегда попадает дата 28.12.2024 ???
Здравствуйте! Подскажите пожалуйста, почему в запрос всегда попадает первая дата 28.12.2024 ????
Текст запроса:
ВЫБРАТЬ ПЕРВЫЕ 13
ДанныеПроизводственногоКалендаря.Дата КАК ДатаКалендаря,
АВТОНОМЕРЗАПИСИ() КАК Номер
ПОМЕСТИТЬ ВТ_РабочиеДни
ИЗ
РегистрСведений.ДанныеПроизводственногоКалендаря КАК ДанныеПроизводственногоКалендаря
ГДЕ
ДанныеПроизводственногоКалендаря.ВидДня = &ВидДня_РабочийДень
И ДанныеПроизводственногоКалендаря.Дата >= &ИсходнаяДата
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ ПЕРВЫЕ 13
ВТ_РабочиеДни.ДатаКалендаря КАК ДатаКалендаря,
ВТ_РабочиеДни.Номер КАК Номер
ИЗ
ВТ_РабочиеДни КАК ВТ_РабочиеДни
УПОРЯДОЧИТЬ ПО ВТ_РабочиеДни.Номер УБЫВ
Если пойму почему попадает 28.12.2024 то и АВТОНОМЕРЗАПИСИ будет не нужен
Текст запроса:
ВЫБРАТЬ ПЕРВЫЕ 13
ДанныеПроизводственногоКалендаря.Дата КАК ДатаКалендаря,
АВТОНОМЕРЗАПИСИ() КАК Номер
ПОМЕСТИТЬ ВТ_РабочиеДни
ИЗ
РегистрСведений.ДанныеПроизводственногоКалендаря КАК ДанныеПроизводственногоКалендаря
ГДЕ
ДанныеПроизводственногоКалендаря.ВидДня = &ВидДня_РабочийДень
И ДанныеПроизводственногоКалендаря.Дата >= &ИсходнаяДата
;
////////////////////////////////////////////////////////////
ВЫБРАТЬ ПЕРВЫЕ 13
ВТ_РабочиеДни.ДатаКалендаря КАК ДатаКалендаря,
ВТ_РабочиеДни.Номер КАК Номер
ИЗ
ВТ_РабочиеДни КАК ВТ_РабочиеДни
УПОРЯДОЧИТЬ ПО ВТ_РабочиеДни.Номер УБЫВ
Если пойму почему попадает 28.12.2024 то и АВТОНОМЕРЗАПИСИ будет не нужен
Найденные решения
(1) вы когда из регистра выдергиваете первые 13 записей подразумеваете, что записи лежат в хронологическом порядке дат. Но физически в таблицах регистра это может быть совсем не так. Например, если пользователь руками забивал данные производственного календаря в разброс. Поэтому сначала отбирайте все даты больше или равные исходной, сортируйте по хронологии и затем получайте первые 13.
Но тут возникает вопрос неоптимальности - например вам надо отобрать 13 рабочих дней с 1 июля 2022 года. И тогда в случае, если в регистре заполнены данные на 2023 и 2024 год, то они все попадут в первую выборку, будут отсортированы, а потом будут отобраны первые 13. Сортировать лишние данные - зачем?
Поэтому я бы сделал иначе. Создал ТЗ с датами с некоторым запасом. Например, 30 дней начиная с нужной даты. Передал в запрос и из производственного календаря узнал бы, рабочий или выходной день. Откинул выходные. Отсортировал, а потом получил нужные 13 дней.
"Запас" по датам необходим т.к. будут отобраны первично и выходные, и заранее не известно, сколько этих выходных. Размер запаса определяется исходя из максимального периода нерабочих дней (январь), чтобы гарантированно захватить нужные 13 рабочих дней.
Но тут возникает вопрос неоптимальности - например вам надо отобрать 13 рабочих дней с 1 июля 2022 года. И тогда в случае, если в регистре заполнены данные на 2023 и 2024 год, то они все попадут в первую выборку, будут отсортированы, а потом будут отобраны первые 13. Сортировать лишние данные - зачем?
Поэтому я бы сделал иначе. Создал ТЗ с датами с некоторым запасом. Например, 30 дней начиная с нужной даты. Передал в запрос и из производственного календаря узнал бы, рабочий или выходной день. Откинул выходные. Отсортировал, а потом получил нужные 13 дней.
"Запас" по датам необходим т.к. будут отобраны первично и выходные, и заранее не известно, сколько этих выходных. Размер запаса определяется исходя из максимального периода нерабочих дней (январь), чтобы гарантированно захватить нужные 13 рабочих дней.
(7) 28.12.24 - это последний рабочий день этого года
Кто-то открыл календарь и модифицировал это день - поставил не рабочий, а потом опять рабочий.
В результате в таблице регистра эта эта запись стала первой.
Чтобы проверить эту версию, в календаре модифицируете 27.12.24 и запишите его.
Кто-то открыл календарь и модифицировал это день - поставил не рабочий, а потом опять рабочий.
В результате в таблице регистра эта эта запись стала первой.
Чтобы проверить эту версию, в календаре модифицируете 27.12.24 и запишите его.
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) такие изначальные вопросы с чуть-чуть данными - флуд. А где значения параметров, а где вид или описание, как заполнен регистр?
На что рассчитываете, "проситель"? Что эксперты всё бросят и начнут кучей встречных вопросов спрашивать всё, чего изначально не хватает в описании?
ЗЫ, после чтения всей ветки. Кэш 1С почистите
На что рассчитываете, "проситель"? Что эксперты всё бросят и начнут кучей встречных вопросов спрашивать всё, чего изначально не хватает в описании?
ЗЫ, после чтения всей ветки. Кэш 1С почистите
(1) вы когда из регистра выдергиваете первые 13 записей подразумеваете, что записи лежат в хронологическом порядке дат. Но физически в таблицах регистра это может быть совсем не так. Например, если пользователь руками забивал данные производственного календаря в разброс. Поэтому сначала отбирайте все даты больше или равные исходной, сортируйте по хронологии и затем получайте первые 13.
Но тут возникает вопрос неоптимальности - например вам надо отобрать 13 рабочих дней с 1 июля 2022 года. И тогда в случае, если в регистре заполнены данные на 2023 и 2024 год, то они все попадут в первую выборку, будут отсортированы, а потом будут отобраны первые 13. Сортировать лишние данные - зачем?
Поэтому я бы сделал иначе. Создал ТЗ с датами с некоторым запасом. Например, 30 дней начиная с нужной даты. Передал в запрос и из производственного календаря узнал бы, рабочий или выходной день. Откинул выходные. Отсортировал, а потом получил нужные 13 дней.
"Запас" по датам необходим т.к. будут отобраны первично и выходные, и заранее не известно, сколько этих выходных. Размер запаса определяется исходя из максимального периода нерабочих дней (январь), чтобы гарантированно захватить нужные 13 рабочих дней.
Но тут возникает вопрос неоптимальности - например вам надо отобрать 13 рабочих дней с 1 июля 2022 года. И тогда в случае, если в регистре заполнены данные на 2023 и 2024 год, то они все попадут в первую выборку, будут отсортированы, а потом будут отобраны первые 13. Сортировать лишние данные - зачем?
Поэтому я бы сделал иначе. Создал ТЗ с датами с некоторым запасом. Например, 30 дней начиная с нужной даты. Передал в запрос и из производственного календаря узнал бы, рабочий или выходной день. Откинул выходные. Отсортировал, а потом получил нужные 13 дней.
"Запас" по датам необходим т.к. будут отобраны первично и выходные, и заранее не известно, сколько этих выходных. Размер запаса определяется исходя из максимального периода нерабочих дней (январь), чтобы гарантированно захватить нужные 13 рабочих дней.
Потому что календарь заполнен на весь 2024 год. Последний рабочий день в году - 28.12.2024. При сортировке по убыванию он становится первым в списке.
Чего непонятного?
Чего непонятного?
запустил у себя. Не попадает 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
ДатаКалендаря Номер
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
(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
Я получаю такие данные, исходная дата указана 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
(7) 28.12.24 - это последний рабочий день этого года
Кто-то открыл календарь и модифицировал это день - поставил не рабочий, а потом опять рабочий.
В результате в таблице регистра эта эта запись стала первой.
Чтобы проверить эту версию, в календаре модифицируете 27.12.24 и запишите его.
Кто-то открыл календарь и модифицировал это день - поставил не рабочий, а потом опять рабочий.
В результате в таблице регистра эта эта запись стала первой.
Чтобы проверить эту версию, в календаре модифицируете 27.12.24 и запишите его.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот