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

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
Функция ОпределитьПроцентМотивации(_Заказ)
	Если 1=2 Тогда
		_Заказ = Документы.ЗаказПокупателя.СоздатьДокумент();
	КонецЕсли;
...
КонецФункции

Я вот даже не знаю, отнести к какой категории говнокода это отнести.
То ли 1С не достаточно хорошо проработала автозаполнение, то ли автор гений.

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

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

  • Скорее всего, это "оригинальная заглушка" условия, следовательно, три строчки кода лишние.
    Ответить
    • Тут все гораздо глубже. Функция принимает 1 параметр, который всегда будет ссылкой на документ "Заказ покупателя". Но 1С не способна это распознать, поэтому заполнение на Alt+Space не работает. А эти три строчки ей как бы намекают, что такое _Заказ, и заполнение будет работать
      Ответить
        • Да, типизация динамическая, но по вызовам функции можно понять какой тип у параметров, если она не экспортная.
          Ответить
          • Как хорошо в случае с "PHP" - нет вообще никакой типизации. 2="2". От программирования на этом языке получаешь одно лишь наслаждение.
            Ответить
                  • В чём проблема? Просто не используй "PHP", и вся недолга.
                    Ответить
                • Пофикшено же. А в питоне 2 ur"c:\Users" до сих пор ошибка.
                  Ответить
                  • потому что обратный слеш это боль by design

                    Спасибо тебе, дорогой макрософт. От лица миллионов пострадавших девепоперов, от лица всех тех кто писал каждый слеш два раза ("c:\\windows\\")во всех ЯПах включая твой собственный visual c и C#.

                    От всех фреймворков где блядь пришлось вводить констатну FileSystemSeparator, сука!


                    ps: виноват айбиэм
                    https://blogs.msdn.microsoft.com/larryosterman/2005/06/24/why-is-the-dos-path-character/
                    Ответить
                    • Но ведь в DOS, Windows и даже в OS/2 (помним, скорбим) работает и строка "c:/windows/". Даже путь, в котором перемешались два типа слешей, тоже работает.
                      Ответить
                      • Вроде раньше автодополнение для имён файлов в cmd не работало для путей с прямыми руками слэшами. Не знаю, починили или нет.
                        Ответить
                        • Некоторые стандартные утилиты и встроенные команды cmd.exe/command.com не работали с прямым слешем, потому что парсер — лох. Например, команда DIR ожидает, что после прямого слеша следует параметр (ключ).
                          Ответить
                    • > От всех фреймворков где блядь пришлось вводить констатну FileSystemSeparator, сука!

                      Если бы только слеш в DOS/Windows был причиной введения этой константы! Что вообще знают о боли те, кто не видел файловых систем Mac OS Classic (не OS/X), VMS и прочего говна мамонта?

                      Macintosh HD:Documents:Letter:fileincurrentdir::fileinparent:::fileingrandparent
                      
                      SYS$SYSDEVICE:[USER.DOCS]LETTER.TXT;4


                      https://en.wikipedia.org/wiki/Path_(computing)#Representations_of_paths_by_operating_system_and_shell

                      > от лица всех тех кто писал каждый слеш два раза

                      А за это надо сказать спасибо тем, кто внедрил в строковые константы эскейп-последовательности в обязательном порядке. Хорошо хоть, что в Паскале их нет. Да даже в противном ПХП есть строки в одинарных апострофах, в которых эскейп-последовательности не интерпретируются.
                      Ответить
                      • > Что вообще знают о боли те, кто не видел файловых систем Mac OS Classic (не OS/X), VMS и прочего говна мамонта?

                        Всё это счастье даже попало в стандарт Common Lisp, там есть (уже нинужная) абстракция pathname для работы с этим древним говном
                        https://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node214.html

                        The dominant file systems at the time the design [of Common Lisp] was done were TOPS-10, TENEX, TOPS-20, VAX VMS, AT&T Unix, MIT Multics, MIT ITS, not to mention a bunch of mainframe [OSs]. Some were uppercase only, some mixed, some were case-sensitive but case- translating (like CL). Some had dirs as files, some not. Some had quote chars for funny file chars, some not. Some had wildcards, some didn't. Some had :up in relative pathnames, some didn't. Some had namable root dirs, some didn't. There were file systems with no directories, file systems with non-hierarchical directories, file systems with no file types, file systems with no versions, file systems with no devices, and so on.

                        -- http://www.gigamonkeys.com/book/files-and-file-io.html
                        Ответить
                      • В питоне как бы тоже. Но во-первых, кавычки экранируются все равно, а во вторых в двойке эта фича битая.
                        Ответить
                    • Ещё немножко о боли: некоторые операторы шаблонизатора для регэкспов используют в качестве ограничителя слеши, а потом грызут кактус экранируют все слеши в образце или в строке замены.
                      Ответить
                        • Кто-то не знает до поры, до времени. А в некоторых окружениях (типа встроенного конструктора регэкспов в ECMAScript) и символ сменить нельзя.
                          Ответить
                        • В этом тоже может быть смысл, если в образце слишком много специфических символов и замена ограничителя со слеша на другой символ только ещё больше запутает.
                          Ответить
                    • Штоблядь. Прыщеблядь, соси уже, не отвлекайся.
                      Бля, надо будет скрыть этого прыщеполудурка.
                      Ответить
                    • >обратный слеш это боль by design
                      Это разногласия между ibm dos-овским решением (прямой слеш был занят в опциях софта) и юниксовским. Ниже тебе подсказали, что было еще макоблядство.
                      В сисярпе же есть сырые строки?
                      Ответить
      • Костыль примотали к хлебному мякишу изолентой.

        1C такой 1С. Не удивительно что они купили написанный на пхп битрикс
        Ответить
        • Для того чтобы описать на сколько я ненавижу 1С в русском языке не таких слов. Если только словами 1С...
          Ответить
                • Объективно я работал только с 1С, не смотря на разработки в свободное время, и для работодателя это определяющий фактор... Очень хочу вырваться из 1С, но, пока нету вариантов куда. 🙁
                  Ответить
                  • Объективно - на работе? Как-то впихнуть работодателю факт самоповышения квалификации у вас можно?
                    Ответить
                    • Это не повышение квалификации, а смена деятельности.)
                      Ответить
                      • Ну или устроиться программистом с самообразованием в некой области.
                        Ответить
                        • Куда?) Я хочу писать софт для спутников. Мне кажется с записями в трудовой "Программист 1С" мне путь туда заказан.
                          Ответить
                          • > с записями в трудовой "Программист 1С"
                            Таких не берут в космонавты :3

                            Ну через пару промежуточных контор, которые поближе к теме - может и проканать.
                            Ответить
                            • Я не говорю космонавтом быть, я озвучил то к чему душа лежит.
                              Промежуточные конторы это все сказки.
                              Ответить
                                • Ты такой злой потому что тебя все игнорят, и даже администрация?
                                  Ответить
                              • > Промежуточные конторы это все сказки.

                                Надо просто начать принимать активные действия для достижения цели, а не искать оправдания. Нет ничего хуже, чем каждый день ходить на работу, которую терпеть не можешь.
                                Ответить
                              • Ну вот мне где-то года полтора назад попадалась вакансия в духе "разработка ПО для космического аппарата". Требования сейчас не помню, но ничего особо страшного там не было.
                                Ответить
                                  • > расстреляют
                                    Да вот поэтому и не пошёл собеседоваться к ним (ну ещё зарплата маленькая, но это второстепенно). Обидно будет, если все труды и надежды за несколько минут разобьются о небесную твердь.
                                    Ответить
                                    • А если без шуток, то какие риски при работе в подобных конторах?
                                      Ответить
                                      • Один знакомый работал в Rocket Science (не в рашке), по его словам основной риск там -- тупо не дожить до релиза в том смысле, что любой проект разрабатывается много-много лет.
                                        Ответить
                                        • Не понимаю, как такое возможно? Твоё очко я разработал за пять минут.
                                          Ответить
                                  • Да всем известно, какие спецы сейчас идут работать в окологосударственные учреждения. От того и такие успехи в запуске ракет в космос в последнее время. Думаю, одинэсник там будет в самый раз.
                                    Ответить
                    • Да можно, сам проверял. Вот только если семья-дети - тупо времени может не хватить.
                      Ответить
  • Это один из приемов включить автозаполнение. До вызова функции 1с не знает параметр какого типа будет передан.
    Недостаток подобного способа в том, что при каждом вызове функции условие будет проверяться на истинность. Обычно используются детективы предпроцессора #контекствызова (сервер, клиент).
    Пример:
    #автозаполнение
    \\\код 1с \\
    #
    Не сумев распознать детективу, 1с исключить код между ## еще на этапе синтаксического анализа, интерпретатор его просто не увидит. Контекстная подсказка напротив, напрочь игнорирует ##.
    Ответить
    • В том то все и дело, что 1С не умеет делать простые вещи, или умеет, но не полностью или не предсказуемо не всегда. За это ее не люблю.
      Ответить
        • Не умеет ждать. Нету функции Пауза(), аналог Sleep.
          На тонком клиенте не возможно получить форму открытого документа.
          В управляемом приложении нельзя простыми средствами, без изменения конфигурации (скажем во внешней обработке) вывести состояние длительного процесса серверной процедуры.
          Ответить
        • много чего не умеет. 1С это как урезанный php + framework , в котором все жестко прибито гвоздями. к примеру , в 1С нет callback-ов, а следовательно невозможно создавать свои события, а следовательно все, что касается событийных вещей, которые не заложены в этот встроенный framework , сделать встроенными средствами нельзя. к примеру , чат делают через БД и через постоянный просмотр, не появилась ли запись в БД. и фиг бы с этим. нет никакой логики в самом языке. т.е. операторы вводятся без какой-либо общей логики. достаточно посмотреть эти жуткие конструкции по разбору запросов (СхемаЗапроса и прочее). Что касается топика. Перечислять недостатки можно долго. Автор кода пытался получить скорее всего intellisense (который убог чуть более чем полностью) по _Заказ.
          Ответить
        • ах да, добавлю еще. в языке программирования 1С , отсутствуют битовые операции и операции сдвига, в языке программирования ,Карл! не, понятно, что можно и через обычные логические операции,нужные операции написать самому. ну и соответственно отсутствует какая-либо нормальная возможность (потоковая) работы с бинарными данными. т.е. с файлами. есть ДвоичныеДанные, но оно умеет только считать полностью файл (без возможности какой-либо работы с этими данными) и записать его обратно в файл. т.е. создано чисто для работы с файлами, чтобы их записать в БД. и все. обещают к какой-то версии 1С , выкатить нормальную работу с файлами. но подозреваю, что опять будет работать через одно место и код будет выглядеть как всегда убого, не имея какой-либо внутренней логики.
          Ответить
        • ну и из-за прибитости гвоздями, в 1С реализуется полноценно только императивщина. никаких ООП, ФП , ничего такого там нет. ну есть извращенцы , которые раз в год пишут статью где-нить, о том как сделать ООП в 1С. но понятно, что к реальности это имеет отношение, чуть менее чем никакое. в lua и то больше свободы.
          Ответить
            • ну это именно юмор (то бишь фантазии). никакого отношения к реальному коду 1С это не имеет(ну т.е. это все нерабочие конструкции псевдоязыка). какие-то попытки косплея под haskell . ФП в 1С по определению не может быть. там нет никаких способов оперировать функциями как first class object, нет ни указателей, нет ни каких других абстракций более высого порядка.
              Ответить
              • > абстракций более высого порядка
                Вызов функции по имени есть?
                Ответить
                • Есть через костыль, типа Выполнить("ИмяМодуля.ИмяФункции();")
                  Ответить
                  • Ну вот, значит можно функции высшего порядка юзать, хоть и через жопу 🙂
                    Ответить
                    • Ну как тебе сказать... Функция "ИмяФункции" должна быть Экспортной, или находится в том же модуле, откуда вызывается. А еще, костыль "Выполнить" можно активизировать только в функциях с пометкой &НаСервере. Так что толку от него мало.
                      Ответить
                      • Не знаю что делают фигурные скобки, но вродебы все работает =)
                        Ответить
                        • УЧитателейОстатки

                          Я, кстати, тоже не знаю что они там делают. Я думал это русский SQL, но в них обычгно нет фигурных скобок (в MDX правда)
                          Ответить
                          • У меня не работал код!
                            foo(42);
                            Не знаю, что делают джва слеша, но теперь вроде бы всё работает =)
                            // foo(42);
                            Ответить
                          • Фигурные скобки - это не из языка запросов 1С, и даже не часть кода 1С.
                            Это из костыля дополнительного "псевдо-языка" запросов (или "расширения", если угодно) для отчетов СКД, т.е. обрабатывается исключительно, когда данный кусок находится в составе запроса в СКД.
                            А здесь, т.к. любой запрос для интерпретатора - всего лишь текст (сам код запроса имеется ввиду), то и фигурные скобки игнорируются.
                            {} - означает, что то, что находится внутри - будет обрабатываться при выполнении отчета (причем их "понимает" исключительно отчет на СКД).
                            Например, в данном случае если там поставлено условие (отбор) - пользователю интерактивно при работе отчета будет дана возможность задавать или менять значение переменной "Читатель", получая в результате формирования отчет с наложенным отбором. О чем автор и пишет - "когда я убирал там галочку выводились все читатели?", - т.е. пользователю дается возможность выбора: использовать условие (и задать значение отбора), или не использовать.
                            Т.е. вся задача - из-за "хочу при работе отчета галочкой разрешения отбора то выводить всех, то только кого укажу".
                            Ответить

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

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

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


    8