Почему в запрос всегда попадает дата 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 рабочих дней.
запустил у себя. Не попадает 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 и запишите его.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот