Имя: Пароль:
1C
1С v8
БП 3.0 Поступление товаров и услуг "Дата документа должна быть не ранее 2000 года"
🠗 (Волшебник 04.09.2024 18:42)
0 internewsmaker
 
04.09.24
11:39
После обновления БП на версию 3.0.157.32. При проведении документа собственно выдает такую ошибку "Дата документа должна быть не ранее 2000 года". Ошибка я так понимаю на уровне платформы возникает после процедуры ПередЗаписью(). В чем может быть проблема?
1 Волшебник
 
04.09.24
11:48
В дате документа!
2 internewsmaker
 
04.09.24
11:56
Да, согласен. Но, во-первых например у документа дата 02.09.2024 13:37:08, а во-вторых почему сломалось после обновления конфы? Такое ощущение что платформа перестала понимать дату у документа.
3 Волшебник
 
04.09.24
11:58
(2) запустите отладчик
Проверьте Период по всем наборам записей
4 Eiffil123
 
04.09.24
12:11
(2) так вы конфу обновляли, причем тут платформа. очевидно что в конфе что-то пошло не так.
5 Гена
 
гуру
04.09.24
12:17
А док Поступления часом не загружен из внешней программы? Если да, то не использовался ли эксель при загрузке?
6 Winnie Buh
 
04.09.24
12:47
открою секрет - в типовых конфах есть диапазон дат, в котором можно проводить документы,
в БП 3.0.157.32 это с 01.01.2000 по 31.12.2033 г.
провести документ вне этого диапазона невозможно, зашито в конфигурации,
можно ли дипазон изменить с помощью расширения без снятия конфы с поддержки - не проверял
7 Волшебник
 
04.09.24
12:51
(6) Хорошая защита от дурака. Простая, широкая, но защищает от беспредельщиков.
8 Winnie Buh
 
04.09.24
12:56
(7) ага, а то проведут документ 224 годом, потом программа начнет закрывать периоды за пару тысяч лет
9 Волшебник
 
04.09.24
12:58
(8) именно
Или нумерация нарушается.
Короче, творится полная дичь
10 Климов Сергей
 
04.09.24
13:26
(6) Круто! Спасибо, не знал!
11 internewsmaker
 
04.09.24
16:58
Спасибо всем! Ложная тревога. При обновлении очередность подписок слетела и старый код кривой вылез и все поломал.
12 Гена
 
гуру
04.09.24
16:58
(6) Глянул. В БП есть такая функция:
Функция КорректныйПериодВводаДокументов() Экспорт
    
    // Контролируем ошибку на один разряд. Например, 0017 вместо 2017; 2071 вместо 2017.
    // Допустимым считаем ввод документов на 9 лет в будущем. Например, в 2020 году разрешаем
    // вводить даты в интервале с января 2000 по декабрь 2029.
    
    КонецКорректногоПериода = ДобавитьМесяц(КонецГода(ТекущаяДатаСеанса()), 9 * 12);
    
    КорректныйПериод = Новый Структура;
    КорректныйПериод.Вставить("НачалоКорректногоПериода", Дата(2000, 01, 01));
    КорректныйПериод.Вставить("КонецКорректногоПериода",  КонецКорректногоПериода);
    Возврат КорректныйПериод;
    
КонецФункции

т.е. интервал не зависит от релиза и определяется по концу - текущим годом + 9

Почему именно обновление выдало ошибку для вчерашнего документа?
1. Кто-то ранее правил функцию и ввёл старый док до 2000 года и она обновилась;
2. Раз док свежий, то сглючила его дата при загрузке из полученного от поставщика файла;
3. Забарахлила текущая дата на компе.
13 Гена
 
гуру
04.09.24
17:11
К слову, достаточно распространённая ошибка при пулемётном вводе с клавиатуры в перепутке последней и предпоследних цифр. И разница между ними делится на 9. Вот почему я бы рекомендовал в функции снизить девятку на семёрку, потому что сейчас именно 2023 год чаще всего набирают на клавиатуре, ведь 2024 и так прыгает по умолчанию.
А ошибка вместо 2023 даст 2032 и он войдёт в нынешний интервал.