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

    −129

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    Функция ВыделитьАртикул(А) Экспорт
    	Перем СтрВспом, Инд;
    	
    	Инд = 1;
    	СтрВспом = "";
    	
    	Пока Инд <= СтрДлина(А) Цикл
    		Если (Сред(А,Инд,1)="0") ИЛИ (Сред(А,Инд,1)="1") ИЛИ
    			 (Сред(А,Инд,1)="2") ИЛИ (Сред(А,Инд,1)="3") ИЛИ
    			 (Сред(А,Инд,1)="4") ИЛИ (Сред(А,Инд,1)="5") ИЛИ
    			 (Сред(А,Инд,1)="6") ИЛИ (Сред(А,Инд,1)="7") ИЛИ
    			 (Сред(А,Инд,1)="8") ИЛИ (Сред(А,Инд,1)="9") ИЛИ 
    			 (Сред(А,Инд,1)="/") ИЛИ (Сред(А,Инд,1)="-") Тогда
    			СтрВспом = СтрВспом + Сред(А, Инд, 1);
    			Инд = Инд + 1;
    		Иначе
    			Прервать;
    		КонецЕсли;
    	КонецЦикла;
    	Возврат СтрВспом;
    КонецФункции

    Нашел у клиента, когда рефакорил код конфы. Страшно подумать, если придется выделять еще с десяток символов...

    Запостил: YouAreEmpty, 09 Сентября 2011

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

    • > СтрВспом
      стрёмно вспоминать

      > Сред
      среднего

      > Инд
      индуса
      Ответить
    • Православный быдлоперебор.
      Ответить
    • Если (Сред(А,Инд,1)="0") ИЛИ (Четвер(Г,Инд,1)="1")
      Ответить
      • Мне больше функция Лев() нравится
        Ответить
        • Это же Левъ! Скорее в машину!

          Мне в этом языке не нравится его говняность, непоследовательность и тотальная унылость. Немного сахару в нём бы не помешало.
          Это всё случается, когда язык проектируют непрофессионалы.
          Ответить
          • А что, в 1С действительно такие извращенные функции?
            Ответить
            • Лев() - отсекает n-символов от строки слева, название конечно доставляет)
              Ответить
            • функции как функции... Они везде такие, только по англицки. Если задумывать над переводом, выйдет такаяже ересь
              Ответить
          • Для своих задач он вполне подходит, хотя мне лично часто не хватает ООП и типов-коллекций. 1С и не претендует на звание языка программирования,собственно его и называют "встроенный язык 1С Предприятия"
            Ответить
            • есть в 1с77 и ооп, и классы... искать "1с++" ;)
              Ответить
          • Вы просто ненавидите всё русское.
            Ответить
            • Лютой ненавистью, стоит отметить!
              Ответить
              • А сколько систем типа 1С разработал ты, чтобы так отзываться об 1С?
                Ответить
                • а сколько космических одиссей снял ты, чтобы так отзываться о ней?

                  илита
                  Ответить
                • Я не написал ни одного софтрендерера. Но для того, чтобы понять, что говно это говно - не нужно его ни жрать, ни производить.
                  Ответить
                  • Ты вообще программ не пишешь, я тебя уже послал.
                    Ответить
          • Николаевичъ
            Ответить
    • СтрВспом
      !!!
      Ответить
    • всегда было интересно, а как разработчики, которые пишут вот на этом, набирают символы "<" и ">" ??? каждый раз раскладку клавиатуры переключают?
      Ответить
      • Я надеюсь, что это предусмотрено и там есть горячие клавиши для вставки в текст всяких нужных символов.
        Ответить
        • В семёрке редактор настолько убог, что там даже мышкой с шифтом ничего не выделить. Или я просто видел слишком много хороших сред.
          Ответить
          • А как же там выделяют текст, если нельзя ни мышкой, ни шифтом?
            Ответить
            • Возможно, я не так выразился. Моё знакомство было весьма поверхностным, но я заметил интересный момент - в любом приличном редакторе можно выделить блок, нажав мышью в нужном месте при зажатом шифте, при этом будет выделен блок до курсора. А в одноэсном редакторе, видимо, или стрелочками с шифтом, или с зажатой мышью, но не мышью со шифтом. Я уже привык выделять так и было чертовски неудобно.
              Ответить
              • А в ФАРе вообще мышка для выделения не работает.
                Ответить
                • Use insert или выделение по маске, Дглу!
                  Ответить
                  • Я не про файлы, а про работу ФАРа в режиме текстового редактора (когда Ф4 нажимаешь).
                    Ответить
                    • И правильно. Текстовый редактор — не графический.
                      Ответить
                      • Мышь нужна только для графических редакторов? А я думал, для удобства работы.
                        Ответить
                        • Ъ-линуксоиды считают, что мышь не нужна. Консоли хватит всем.
                          Ответить
                          • и клава с кнопками 0 и 1
                            Ответить
                          • Дико плюсую. Кто познал счастье vim'а, тому мышь не нужна.
                            Ответить
                            • Познавшие edlin для DOS, а также Бейсик с командами EDIT, DELETE и LIST счастья познавших vim'а не понимают.
                              Ответить
                        • Мышь — это костыль для тех, у кого нет графического планшета. А при редактировании текста такие костыли вообще не нужны, потому что перекладывание руки с клавиатуры на мышь — потеря времени. Десятипальцевый метод изобретали, чтобы не перекладывать конечности, а Вы советуете противоположное?

                          Кстати, я жалею, что у меня нет педалей для шифта, контрола и альта. Было бы очень удобно.
                          Ответить
                          • > нет педалей для шифта, контрола и альта
                            Именно для десятипальцевого набора Ctrl, Alt, Shift находятся по обоим сторонам клавиатуры. С педалью много времени уходило бы на синхронизацию :)
                            Ответить
                          • Выделение текста клавиатурой - куда большая потеря времени, чем перекладывание руки.
                            Ответить
                            • Таки попробуйте vim :) К примеру:
                              v$ - выделить текст с текущей позиции в текущей строке до конца строки
                              vw - выделить текст до конца текущего/следующего слова
                              v5w - выделить пять следующих слов
                              Хотя выделение с vim нужно довольно редко...
                              Ответить
                            • не скажите, alt, shift, ctrl и клавиши курсора всегда под рукой
                              другое дело, если нужно переместить, а буфер обмена терять не хочется
                              Ответить
                              • Вот необходимость пользоваться клавишами курсора меня напрягает, если често, поскольку из-за них приходится смещать правую руку с home row. Мне понравилась идея повесить ту же функциональность на клавиши с основной клавиатуры (hjkl в vim и С-n, C-p, C-f, C-b в emacs)
                                Ответить
                                • сейчас проследил за своей рукой: оказывается, рука не смещается, на home-row три пальца: указательный, средний и безымянный, а большой и мизинец на курсоре.
                                  Ответить
                                  • У вас, наверное, какая-то специальная клавиатура. на моей такой акробатический этюд физически не возможен :)
                                    Ответить
                                    • Use Mini NetBook, Luke!
                                      Клавиатура скрывается под одной рукой.
                                      Ответить
                                    • стандартная 103 клавиатура.
                                      просто большой и мизинец под ладонь надо сгибать :)
                                      Ответить
                                      • На моём ThinkPad T61p мне такое сделать не удаётся даже с учётом моего пианистического прошлого.
                                        Ответить
                                        • на вашем ThinkPad T61p и я бы не смог, слишком уж далеко клавиши home row и курсора друг от друга... на стандартной клаве от стационара можно было бы
                                          Ответить
                                          • Следовательно, ваш подход - воркараунд, а не полноценное решение, как в vim и emacs :). Что радует, так это то, что в IntelliJ IDEA и Eclipse можно включить emacs-like маппинг для клавиш.
                                            Ответить
                            • Я пользовался какое-то время vim'ом - хороший редактор, но emacs мне больше нравится... Если уж речь о том, как выделить текст: C-Space (откуда начинать) - дальше обычные команды для перемещения курсора, например, C-e - до конца строки, M-f - до конца слова и т.п. В vim я обычно переключался в "визуальный" режим, чтобы выделить, т.как часто нужную часть текста нельзя было описать заготовленными командами (и, как правило заготовленная команда сразу же и копирует текст). Конечно можно написать макросы самому и т.д. Но в emacs это было как-то удобнее :)
                              Но emacs - сильно на любителя, и, обычно, с самого начала вызывает много негативыных эмоций :)
                              Ответить
                              • У vi есть два режима, в одном он бибикает, во втором всё портит. (q)
                                Ответить
                              • +1.
                                К vim'у нужно привыкать пару месяцев, но он очень эргономичен и позволяет писать текст экстремально быстро. А уж после пары лет практики пальцы сами работают, даже не задумываешься над командами.
                                Я бы не перешёл на emacs, если бы не огромное количество плагинов. Elisp - главное преимущество emacs'а. К примеру, постоянно пользуюсь org-mode, у vim'а подобных вещей, наверное, никогда не будет (если не считать vim outliner, но он по сравнению с org-mode - унылая поделка).
                                Ответить
                • Я пока делаю скидку на то, что семёрка древняя, как говно мамонта. И, опять же, по всему выходит, что таки разрабатывали непрофессионалы.
                  Ни малейшего юзабилити нет.

                  Хотя, если мне не отшибает память, пятый борланд цпп билдер вышел примерно в это время и там уже было автодополнение и клёвые фишки.
                  Думаю, это просто унылый русский высер, совершенно неюзабельный. А что мартышки его освоили - так это они от недостатка годных систем продолжают жрать кактус.
                  Ответить
                  • в 7-ке юзабилити дает сто очков вперед 8-ке.
                    правда - на плечах энтузиастов.
                    openconf + telepat + colorer + ... , и скрипты в объектной(!) модели(!) конфигуратора(!!!) пишутся на js/vbs самостоятельно для чего угодно и какие угодно. :))
                    Ответить
              • а вот обманывать нехорошо, только что проверил, всё прекрасно выделяется, к 1С и правда много претензий, особенно убивает тугодумство 7.7 и прожорливость 8.х, но для своих задач это лучший инструмент, учитывая наличие очень удобного редактора печатных форм и возможность разработки и подключения внешних компонент.
                Ответить
                • Пруф!

                  Для своих задач это говно. Просто говно уже привычное, только и всего. И провоцирует кодерков на обезьянокод.
                  Ответить
      • они набирают ALT + 60, 61 и 62 соотв. = )
        Ответить
        • У меня на ноуте нет цифровой клавы((( Ноут для 1с не подходит...
          Ответить
          • Цифровая клава на многих ноутах — это Fn+алфавитные клавиши. Так что можно, но клавиша Fn сотрётся под корень.
            Ответить
            • >Fn+алфавитные клавиши
              У меня на нетбуке:
              Fn+8=8
              Fn+(=9
              Fn+ш=6
              Ответить
        • не, а серьезно?? здесь есть разработчики 1С? ну мне правда интересно
          Ответить
          • где-то полгода назад мелькал файл кастомной раскладки для этих извращенцев
            Ответить
            • А как набирают программы на языке APL? У них клава покруче китайской?
              Ответить
              • судя по педивикии у них есть такой болт http://upload.wikimedia.org/wikipedia/commons/9/92/IBM_Selectric_Globe_Wiki.jpg
                Ответить
                • Не вижу пока на нём хитрых символов, в моём поле зрения только ASCII. Или все хитрые символы на обратной стороне Луны?
                  Ответить
                  • Остаётся только на либрацию надеяться.
                    Пикча рядом постулирует такую раскладку: http://upload.wikimedia.org/wikipedia/commons/9/9f/APL-keybd2.svg

                    Не Вы ли постили тогда ссылку на раскладку для 1С, предлагаемую за донат?
                    Ответить
                    • Ссылку на раскладку сурового челябинского дизайнера Бирмана, кажется, постил. А на раскладку для 1С — точно не я.
                      Ответить
          • вот, анон, нашёлся боян
            http://govnokod.ru/3617#comment36994

            Disclaimer: Я её НЕ КОЧАЛ и без понятия, что внутри. Официальное дистро говорит, что там ВИРУС.
            Ответить
          • серьезно, постоянно переключаюсь, но уже как-то не замечаю этого, если сильно задалбливает, то можно просто шаблон настроить и не надо будет переключаться, на самом деле проблема слишком преувеличена, в 1С есть проблемы покруче, но всё равно со своими задачами, в небольших масштабах она справляется.
            Ответить
      • Всегда было интересно, А как разработчики, которым лень раскладку дернуть пишут коменты в англоязычных языках? На "авторском" англицком?
        Ответить
        • вся хитрость в том, чтобы на них не писать, потому что там всё не по-нашему
          Ответить
    • это результат рефакторинга, да?
      Ответить
      • Нет, в результате была написана процедурка, которая проверяет уже имеющиеся артикулы, а на будущее артикулы уже будут вводится по маске.

        Процедурка выглядит примерно так:

        Функция ПроверитьАртикул(Артикул)

        СтрокаПоиска = "0123456789-/";

        Для Инд = 1 по СтрДлина(Артикул) Цикл
        ТекСимв = Сред(Артикул, Инд ,1);

        Если Найти(СтрокаПоиска, ТекСимв) = 0 Тогда
        Возврат Ложь;
        КонецЕсли;
        КонецЦикла;
        Возврат Истина;
        КонецФункции
        Ответить
        • *okay*
          *ладн*
          Ответить
        • > по СтрДлина(Артикул)
          Интересно, константа всегда вычисляется до цикла или на каждой итерации?
          Ответить
          • Какая разница, я надеюсь они не такие идиоты, как Томпсон и Ритчи, чтобы делать строки, не знающие свою длину.
            Ответить
            • Разработчики ФЯП тоже идиоты, ведь ни один функциональный список своей длины не знает...
              Ответить
              • Все архитекторы срочно побежали переделывать реализацию строк списками...
                Ответить
          • в таком цикле граничные условия вычисляются единожды - при входе в цикл.
            Ответить

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