Бухгалтерия / Говнокод #16636 Ссылка на оригинал

0

  1. 1
НоваяСтрока.ТелефонныйНомер = Прав(НоваяСтрока.ТелефонныйНомер, стрДлина(НоваяСтрока.ТелефонныйНомер));

Выдрано из Рарус СофтФон. Ума не приложу, что они хотели этим сказать...

Запостил: Ivon Ivon, (Updated )

Комментарии (42) RSS

    • function прав(s, n) {
          return s.substring(s.length - n);
      }
      Короче прав возвращает n символов с конца строки, а лев - с начала.
      Ответить
  • Есть ещё вариант - вставлено с учётом какой-то не совсем очевидной магии.
    Ответить
    • Может быть, таким методом телефонный номер принудительно приводится к строке, если был задан числом?
      Ответить
      • Я об этом думал уже, но это какой-то ад и израиль, если так. Неясна семантика объекта НоваяСтрока. В принципе, я имею возможность скачать эту конфигурацию и посмотреть, благо кой-чего я кумекаю в этом. Если будет не лень - ждите результатов расследования.
        Ответить
        • НоваяСтрока - это наименование объекта типа СтрокаТаблицыЗначений.
          Для добавления новой строки в 1С новая строка объявляется вот так:
          НоваяСтрока = Таблица.Добавить();
          В общем - аналог Rows.NewRow()
          Ответить
          • Спасибо, капитан. Я даже не знаю, что бы мы без тебя делали.
            Ответить
            • Не за что. Я же не знал, насколько вы не шарите в 1С. Поэтому решил объяснить подробнее.
              Ответить
              • Мы не шарим не то, чтобы совсем. Так, кумекаем кое-как.
                Ответить
  • да это ж франчи. Вы типа не знаете кто в основном на франчах работает...
    Ответить
    • Не надо обобщать. Я тоже работаю во франче. Программеры бывают разные.
      Ответить
      • Я же написал "в основном". Никто не спорит, что на франчах есть отличные специалисты, но как правило они оттуда бегут рано или поздно.
        Ответить
  • Итак, расследование, как и обещал. Конфигурация - последняя доступная, 1C-Рарус СофтФон, 2.0.3.2
    По поиску найдено одно-единственное вхождение. И, вот как сей фрагмент выглядит ИРЛ:
    НоваяСтрока.ТелефонныйНомер		= ?(НЕ ПустаяСтрока(СокрЛП(RecordSet.Fields(2).Value)), СокрЛП(RecordSet.Fields(2).Value), СокрЛП(RecordSet.Fields(15).Value)); // PhoneNumber(2) и ConnectedId(14) 
    // ...
    Если НЕ НоваяСтрока.ВнутреннийЗвонок И НЕ НоваяСтрока.ВходящийЗвонок Тогда
    	НоваяСтрока.ТелефонныйНомер	= Прав(НоваяСтрока.ТелефонныйНомер, стрДлина(НоваяСтрока.ТелефонныйНомер) - сфпПараметрыСервера.КоличествоСтанцийДоСтанцииОбщегоПользования);
    КонецЕсли;


    Таким образом, тут есть джва варианта. Либо у автора сего треда очень древняя конфигурация, в которой был добавлен задел под вычленение номера, либо он безбожно пиздит и выкладывает фейк, потому что любой может просто взять и проверить этот кусок кода. Версию о черезжопном приведении ко строке можно опустить, поскольку очевидность изначального строкового значения является очевидной.
    Ответить
    • У тебя почти тот же код. Здесь вопросы к конструкции
      Прав(НоваяСтрока.ТелефонныйНомер, стрДлина(НоваяСтрока.ТелефонныйНомер)

      То, что в твоем релизе там добавлено еще вычитание числового значения из строкового, не меняет сути приведенного говнокода. Ведь Прав(НоваяСтрока.ТелефонныйНомер, стрДлина(НоваяСтрока.ТелефонныйНомер) будет всегда равно НоваяСтрока.ТелефонныйНомер.
      И я не знаю, какая версия конфы это была, так как я допиливаю то, что есть в конфе у клиента.
      Ответить
      • Ало, йоба, ты ведь долбоёб? Тебе одноэс мозги съел или ты в глаза долбишься?
        Числовое значение ни откуда не вычитается, посчитай порядок скобок, ёпта. В этом куске берётся правая часть размером длина строки за вычетом количества станций в параметрах сервера. Если это значение ненулевое, сюрпрайз, то результат не будет совпадать с НоваяСтрока.ТелефонныйНомер.
        Но вы же в сранчах все долбоёбы, не?
        Давай, мелко обтекай на тему того, что у твоего клиента так. Твои познания лично мне уже предельно ясны.
        Ответить
        • Да ты имбецил! (с)
          Прав(НоваяСтрока.ТелефонныйНомер, стрДлина(НоваяСтрока.ТелефонныйНомер) ВСЕГДА равно НоваяСтрока.ТелефонныйНомер, о чём и говорит Ivon.
          Ответить
  • эх, это же та компания, где лет десять назад была сверхдрама и все успели переспать со всеми.
    Ответить
    • > и все успели переспать со всеми
      Эх, пойду учить 1с.
      Ответить
          • Да и коллектив, как таковой, тоже...

            Грустная история: в коллективе из одного человека все переспали друг с другом.
            Ответить
              • >> в коллективе все переспали друг с другом.
                > Пустое множество мне нравится больше.
                Потому, что у пустого множества нет юристов, которые засудят за клевету.
                Ответить
                • Пустое множество прекрасно тем, что на нём невозможно опровергнуть ни одно предположение.

                  Например, выдвинем гипотезу, что каждый участник коллектива является пони. В случае пустого коллектива это неопровержимо!
                  Ответить

Добавить комментарий

Где здесь C++, guest?!

    А не использовать ли нам bbcode?


    8