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

    −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
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    . . .
    	ццц=0;                               
    	Если Сотрудникз.Выбран()=0 Тогда
    		Сомр= СоздатьОбъект("Справочник.Сотрудники");
    		Сомр.ВыбратьЭлементы();     
    		цццк=50000;
    	Иначе
    		Сомр=Сотрудникз;
    		цццк=1;
    	КонецЕсли;	  
    	Пока ((ццц<цццк) ) цикл   
    		ццц=ццц+1;    
    		Если цццк>1 Тогда
    			Если (Сомр.ПолучитьЭлемент()=0) Тогда
    				Прервать;
    			КонецЕсли;  
    		КонецЕсли;	 
    		Сотрудник = Сомр.ТекущийЭлемент();   
    		Если Сотрудник.ЭтоГруппа()=1 Тогда
    			продолжить;
    		КонецЕсли;
                    . . .
    
    По нормальному решается:
    
        Сотр = СоздатьОбъект("Справочник.Сотрудники");
        Сотр.ВыбратьЭлементы();
        Пока  (Сотр.ПолучитьЭлемент() = 1)  Цикл
          . . . 
        КонецЦикла

    Досталось в наследство на основной работе, самописная конфа на 7.7,
    как выяснилось этот участок кода писала 50-ти летняя женщина-программист

    Запостил: adammartin, 11 Августа 2011

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

    • цк+кпсс;
      Ответить
    • > Сотрудникз
      виз справочникз
      Ответить
    • Меня всегда удивляло, как люди могут писать код по-русски... Хотя, наверное, есть захочешь - ещё и не так раскорячишься.
      Ответить
      • Да легко:)

        ТабличныеДанные.ДобавитьЗначение((Итоги. НачисленоВсего - ПолучитьДанные("НачисленноВсего_СНачалаГ ода", (Индекс - 1))), "НачисленноВсего_Месяц" + Индекс);
        ТабличныеДанные.ДобавитьЗначение((Итоги. ПособийЗаСчетФСС - ПолучитьДанные("ПособияЗаСчетФСС_СНачала Года", (Индекс - 1))), "ПособияЗаСчетФСС_Месяц" + Индекс);
        ТабличныеДанные.ДобавитьЗначение(((Итоги .ЕСНОблагаемая - Итоги.ЕСНОблагаемаяФСС) - ПолучитьДанные("ДоговораПодряда_СНачалаГ ода", (Индекс - 1))), "ДоговораПодряда_Месяц" + Индекс);

        ТабличныеДанные.ДобавитьЗначение(?(Итоги .ЕСНОблагаемая >= Предел, Итоги.ЕСНОблагаемая - ПолучитьДанные("СуммаПревыщающая_СНачала Года", (Индекс - 1)) - Предел, ""), "СуммаПревыщающая_Месяц" + Индекс);
        ТабличныеДанные.ДобавитьЗначение(?(Итоги .ЕСНОблагаемаяФСС >= Предел, Итоги.ЕСНОблагаемаяФСС - ПолучитьДанные("СуммаПревыщающаяФСС_СНач алаГода", (Индекс - 1)) - Предел, ""), "СуммаПревыщающаяФСС_Месяц" + Индекс);
        Ответить
      • ABAP = 1С на английском (это для тех, кто языками владеет), так в нем тоже можно не код писать, а строчки из "Войны и мир", например:
        shift param_name left deleting leading space. // удаляет из строки param_name лидирующие пробелы
        data table_name1 like structure_name occurs 0 with header line. // объявление внутренней таблицы table_name1 со структурой structure_name, с инициализацией на 0 строк и с заголовочной частью
        Ответить
        • Авас не обыдлился до немецких ключевых слов, в этом различие
          Ответить
          • 1С — это пародия на VB или JS, поэтому плохо подходит для русских ключевых слов. А вот синтаксис ABAP можно было бы попробовать перевести на другие языки. Перевели же COBOL на русский!
            Ответить
      • это еще что, вы типовые конфигурации посмотрите, особенно под 8.х, которые пишутся не с целью повысить эффективность решения, а с целью минимально нарушить универсальность кода, чтобы его можно было с таскать между типовыми решениями, это приводит к появлению невероятно громоздких и тормознутных конструкций, которые вообще не документируются и их знают только авторы, т.е. сама 1С, так что когда приходится разбираться в этом говнокоде, то бывает матов не хватает, поэтому не люблю типовые решения
        Ответить
    • Круть. Вынос мозга.
      Ответить

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