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

    −122

    1. 1
    2. 2
    3. 3
    Word.FormFields("Data").Result  = СокрЛП(?(ДатаЧисло(ДатаДок2)<10,"0","")+ДатаЧисло(ДатаДок2)); 
    Word.FormFields("Manth").Result = СокрЛП(МесяцПрописью(ДатаДок2)); 
    Word.FormFields("God").Result   = СокрЛП(ДатаГод(ДатаДок2));

    взято из конфигурации одного автодилера, особенно порадовали имена частей даты

    Запостил: VladC, 21 Декабря 2012

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

    • А в чем фикальность? В том, что у особи с фантазией проблема? Нах такие экземпляры!!!
      Ответить
      • 1. ну хотя бы в том, что выражение:
        СокрЛП(?(ДатаЧисло(ДатаДок2)<10,"0","")+ ДатаЧисло(ДатаДок2))
        может быть заменено на:
        Формат(ДатаЧисло(ДатаДок2),"Ч(0)2")
        2. его функция МесяцПрописью возвращает месяц прописью в родительном падеже, весь этот трёхстрочный выперд можно было бы написать вообще просто:
        Word.FormFields("Date").Result = Формат(ДатаДок2,"ДДДММММГГГГ");
        если бы он в вордовском шаблоне сделал дату одним полем, а не тремя.
        Ответить
        • +2. ну и конечно же отпала бы необходимость в функции МесяцПрописью, итого вместо 32 строк одна, так разве это не говнокод?
          Ответить
    • Word manthan literally means deep contemplation, churning of facts, analysis aimed at solution or conclusion.
      Может это?
      Ответить
    • Редко кто осиливает форматирование чисел.
      Ответить
    • Oh, manth god!
      Ответить
    • Почувствуйте разницу: хваленый формат красиво запишет результат в одной ячейке, в то время как у автора он помещается аж в целых три. Может, прежде чем критиковать, стоит подумать, почему реализовано именно так?

      PS: А формат сможет выдать что нибудь вроде ["21"_декабря_2012г.]??? С кавычками и подчеркиваниями (блэкджеком и шлюхами, блин)
      Ответить
      • 1. дело не только в том, что результат помещается в 3 ячейки, а ещё и в том, что незнание функции формат вынудило автора писать функцию возвращающую месяц прописью. можно конечно искать какой-то глубокий смысл в выводе даты по частям, но я не стану,уверен, что смысла нет ;). ну и плюс ко всему дело ведь не только в результате, но и в способе достижения, если вы не видите разницы между тем чтобы написать одну строку кода вместо 32 для получения одного и того же, то может пора подумать о смене профессии ;)?

        2. функция формат используется для форматирования значений, то что вы написали: "["21"_декабря_2012г.]" нельзя назвать просто "датой", это дата в квадратных скобках, достигается элементарной конкатенацией строк:
        "["+Формат(НекаяДата,"ДДДММММГГГГ")+"]". и код опять уже уместился в одну строку, просто стал длиннее на несколько символов ;)
        Ответить
        • В квадратные строки взято то, что надо получить форматом, дабы отделить от знаков вопроса. Их не учитываем, конкатенацию опускаем, остается число в кавычках и подчерки в месяце
          Ответить
          • PS: Итого, остается только придирка к МесяцПрописью, где, с Ваших слов, 32 строки кода. Тут их не видно. Если автор не совсем бабуин, то в этом методе мог использовать именно формат, возвращающий ТОЛЬКО наименование месяца, с приведением его к нижнему регистру (насколько помню, названия месяцев идут с заглавной буквы). Т.О., МесяцПрописью - просто удобная запись двух безобидных действий. Повторяю, в приведенном куске кода этого не видно, это Ваши придирки и не более того. И я сильно сомневаюсь, что для дефекации собственного кода Вы досконально анализируете каждую строку. Так что поищиче фекалии в своих произведениях
            Ответить
            • здравствуйте Оксана ;)
              Ответить
            • кстати поиском фекалий обожаю заниматься, в нашей среде это называется рефакторингом, хотя вам это слово конечно же не знакомо ;)
              Ответить
          • это так ... по вашему, уводить вопрос в сторону ;). в том коде, который я привёл, не стояла задача выводить дату в кавычках и с подчёркиваниями вместо пробелов, это вы уже тут просто хуйней страдать начали, т.к. именно по этому высеры вам сказать просто нечего ;). по существу: именно такую строку функцией Формат получить нельзя, т.к. она не умеет выдавать значения даты с произвольными разделителями, но всё опять же делается достаточно просто конкатенацией и заменой строк, пример приводить не буду, уверен, что вы уже знаете как, а если нет, то тем более не стану, т.к. всё равно не поймёте ;).
            Ответить
      • Вот так может, например:
        Формат(НужнаяДата, ДФ='``dd`` _ММММ_ гггг')

        Конечно, не совсем кавычки, но выглядит похоже. Да и СтрЗаменить никто не отменял.
        Да, дело в 8. Хотя и для 7.7 есть пути.
        Так что претензия к формату необоснована. А вот к автору кода по поводу размещения в трех полях - очень даже имеет основания. И, если верить VladC, то он (автор кода) таки совсем бабуин - отдельная функция для вывода месяца прописью просто не имеет смысла.
        И уж если совсем грамотно подходить к делу, то форматирование должно быть настроено непосредственно в ячейке конечного документа - отделяем мух от котлет, т.е. данные от их представления.
        Ответить

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