На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное DigiMania RSS
msm.ru
! Правила раздела:

  • Перед тем, как задать вопрос, желательно почитать документацию и воспользоваться поиском.
  • Когда задаёте вопрос, то обязательно указывайте платформу (7.7, 8.0, 8.1, 8.2, etc), причем желательно в заголовке. Если речь идёт о типовой конфигурации, то указывайте её название и релиз. Текущие версии можно посмотреть здесь.
  • Ещё раз напоминаем о необходимости соблюдать не только правила, но и законы. Уважайте авторские права.

Высказать своё мнение о модераторах раздела можно здесь: evGenius
Модераторы: evGenius
Страницы: (2) 1 [2]  все  ( Перейти к последнему сообщению )  
> Оптимизация. "Хороший стиль" написания под 1С, (заголовок изменен модератором)
      Пример "Как нельзя писать код"
      Система самописная, писалась местными "умельцами" с нуля и лет 7 назад, если не больше. В принципе достаточно неплохая, но местами встречаются такие косяки, что плакать хочется.

      Вчера позвонили пользователи и пожаловались на ошибку при проведении одного из документов. Это было странно, т.к. позавчера все работало, а обновлений никаких я не делал. Попросил скинуть скриншот ошибки с описанием действий - что именно вызвало ошибку. Короче, посмотрев в конфигураторе, обнаружил следующий фрагмент кода, на котором собственно все и сыпалось, причем только на двух документах:

      ExpandedWrap disabled
        КонПериода = КонецДня(Дата(Год(НачПериода)+1, Месяц(НачПериода), День(НачПериода)));


      Повтыкал в код, понял что таким образом прибавляют год к дате первичного документа для последующей проверки. Немного выпал в осадок, т.к. все можно было написать гораздо проще, а именно:

      ExpandedWrap disabled
        КонПериода = КонецДня(ДобавитьМесяц(НачПериода, 12));


      Пока поставил себе зарубку переписать этот кусок кода и начал разбираться дальше - что же именно вызвало ошибку всего в двух документах. Посмотрев в отладчике значение НачПериода, увидел что там 29-02-2016, високосный год, Карл, а прибавив год к дате как описано выше, получаем 29 февраля 2017, а такой даты не существует. Сразу же переписал с использованием функции ДобавитьМесяц, и все заработало. Руки бы оторвал за такую работу с датой >:(
      [А что Если… КонецЕсли]
        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script Execution time: 0,0982 ]   [ 17 queries used ]   [ Generated: 19.07.19, 15:17 GMT ]