Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.97.14.84] |
|
Страницы: (2) 1 [2] все ( Перейти к последнему сообщению ) |
Сообщ.
#16
,
|
|
|
Сообщ.
#17
,
|
|
|
Пример "Как нельзя писать код"
Система самописная, писалась местными "умельцами" с нуля и лет 7 назад, если не больше. В принципе достаточно неплохая, но местами встречаются такие косяки, что плакать хочется. Вчера позвонили пользователи и пожаловались на ошибку при проведении одного из документов. Это было странно, т.к. позавчера все работало, а обновлений никаких я не делал. Попросил скинуть скриншот ошибки с описанием действий - что именно вызвало ошибку. Короче, посмотрев в конфигураторе, обнаружил следующий фрагмент кода, на котором собственно все и сыпалось, причем только на двух документах: КонПериода = КонецДня(Дата(Год(НачПериода)+1, Месяц(НачПериода), День(НачПериода))); Повтыкал в код, понял что таким образом прибавляют год к дате первичного документа для последующей проверки. Немного выпал в осадок, т.к. все можно было написать гораздо проще, а именно: КонПериода = КонецДня(ДобавитьМесяц(НачПериода, 12)); Пока поставил себе зарубку переписать этот кусок кода и начал разбираться дальше - что же именно вызвало ошибку всего в двух документах. Посмотрев в отладчике значение НачПериода, увидел что там 29-02-2016, високосный год, Карл, а прибавив год к дате как описано выше, получаем 29 февраля 2017, а такой даты не существует. Сразу же переписал с использованием функции ДобавитьМесяц, и все заработало. Руки бы оторвал за такую работу с датой Сообщения были разделены в тему "Flood" |