1. 1C / Говнокод #16636

    −162

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

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

    Запостил: Ivon, 03 Сентября 2014

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

    • Издержки рефакторинга?
      Ответить
    • прав возвращает правый аргумент?)
      Ответить
      • Да нет, это ж бейсик, trim right.
        Ответить
      • function прав(s, n) {
            return s.substring(s.length - n);
        }
        Короче прав возвращает n символов с конца строки, а лев - с начала.
        Ответить
    • Есть ещё вариант - вставлено с учётом какой-то не совсем очевидной магии.
      Ответить
      • Может быть, таким методом телефонный номер принудительно приводится к строке, если был задан числом?
        Ответить
        • Я об этом думал уже, но это какой-то ад и израиль, если так. Неясна семантика объекта НоваяСтрока. В принципе, я имею возможность скачать эту конфигурацию и посмотреть, благо кой-чего я кумекаю в этом. Если будет не лень - ждите результатов расследования.
          Ответить
          • НоваяСтрока - это наименование объекта типа СтрокаТаблицыЗначений.
            Для добавления новой строки в 1С новая строка объявляется вот так:
            НоваяСтрока = Таблица.Добавить();
            В общем - аналог Rows.NewRow()
            Ответить
            • Спасибо, капитан. Я даже не знаю, что бы мы без тебя делали.
              Ответить
              • Не за что. Я же не знал, насколько вы не шарите в 1С. Поэтому решил объяснить подробнее.
                Ответить
                • Мы не шарим не то, чтобы совсем. Так, кумекаем кое-как.
                  Ответить
    • да это ж франчи. Вы типа не знаете кто в основном на франчах работает...
      Ответить
      • Не надо обобщать. Я тоже работаю во франче. Программеры бывают разные.
        Ответить
        • Я же написал "в основном". Никто не спорит, что на франчах есть отличные специалисты, но как правило они оттуда бегут рано или поздно.
          Ответить
          • > они оттуда бегут рано или поздно
            Бегут от 1с куда подальше? :)
            Ответить
          • What a pleasure to find someone who idteeifins the issues so clearly
            Ответить
          • Is that really all there is to it because that'd be flabebrgasting. http://tmkqxf.com [url=http://fcqtcjj.com]fcqtcjj[/url] [link=http://wdnnwkfas.com]wdnnwkfas[/link]
            Ответить
    • Итак, расследование, как и обещал. Конфигурация - последняя доступная, 1C-Рарус СофтФон, 2.0.3.2
      По поиску найдено одно-единственное вхождение. И, вот как сей фрагмент выглядит ИРЛ:
      НоваяСтрока.ТелефонныйНомер		= ?(НЕ ПустаяСтрока(СокрЛП(RecordSet.Fields(2).Value)), СокрЛП(RecordSet.Fields(2).Value), СокрЛП(RecordSet.Fields(15).Value)); // PhoneNumber(2) и ConnectedId(14) 
      // ...
      Если НЕ НоваяСтрока.ВнутреннийЗвонок И НЕ НоваяСтрока.ВходящийЗвонок Тогда
      	НоваяСтрока.ТелефонныйНомер	= Прав(НоваяСтрока.ТелефонныйНомер, стрДлина(НоваяСтрока.ТелефонныйНомер) - сфпПараметрыСервера.КоличествоСтанцийДоСтанцииОбщегоПользования);
      КонецЕсли;


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

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

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

                    Например, выдвинем гипотезу, что каждый участник коллектива является пони. В случае пустого коллектива это неопровержимо!
                    Ответить
                    • >что на нём невозможно опровергнуть ни одно предположение.
                      В случае пустого коллектива это неопровержимо!
                      Но и недоказуемо.
                      В терминах SQL это Не Истина И Не Ложь это чистый NULL.
                      Ответить
                      • Возьмём другой пример: «Если участник коллектива является слоном, то он зелёного цвета». Можно ли его опровергнуть или доказать в случае пустого коллектива?
                        Ответить
        • Эко как тебе мужской сок в голову ударил
          Ответить

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