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

    −160

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    Ученик 1С спросил у своего учителя: что означает аббревиатура "Один Эс"?
    Учитель долго думал и наконец ответил ему:
    - "Один" - это когда солнечный день и воняет из трубы, это "Один"
    А "Эс", что такое "Эс", - спросил ученик
    - "Эс" - это когда солнечный день и опять же воняет из трубы

    Если бы у 1С были коаны, они выглядели бы примерно так.
    По мотивам к/ф "Моцарт" 2006

    serpinski, 02 Июня 2013

    Комментарии (26)
  2. 1C / Говнокод #13055

    −177

    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
    //подписка ПередЗаписью
    
    ИначеЕсли ТипЗнч(Источник) = Тип("ДокументОбъект.КонтрольПлатежейПросрочка") Тогда
    		
    		Если Источник.ПометкаУдаления Тогда
    			мНабор=РегистрыНакопления.КонтрольПлатежейПросрочка.СоздатьНаборЗаписей();
    			мНабор.Отбор.Регистратор.Установить(Источник.Ссылка);
    			мНабор.Записать();
    			Попытка
    				Источник.Удалить();
    			Исключение КОнецПопытки;
    			Отказ=Истина;
    		КонецЕсли;

    Удалить документ в транзакции "перед записью" при пометке удаления - это сильно, а "Попытка" - так, на всякий случай, а чтобы продолжения банкета не было - Отказ. Звезда Хан Ю.В.

    ilya2184, 27 Мая 2013

    Комментарии (44)
  3. 1C / Говнокод #13039

    −166

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    Функция  УбратьПробелы(Строка)
    	ВозвратСтрока = "";
    	Сч = 1;
    	ДлинаСтроки = СтрДлина(Строка);
    	Пока Сч <= ДлинаСтроки Цикл 
    		Если КодСимвола(Строка, Сч) <> 160 Тогда
    			ВозвратСтрока = ВозвратСтрока + Символ(КодСимвола(Строка, Сч));
    		КонецЕсли;
    		Сч = Сч + 1;
    	КонецЦикла;
    	Возврат ВозвратСтрока;
    КонецФункции

    Видимо
    Строка = СтрЗаменить(Строка, Символ(160), "");
    выглядело слишком неочевидно, пробелы же нестандартные, а вот УбратьПробелы(Строка) - это - да, это всем понятно.

    madcat_sev, 23 Мая 2013

    Комментарии (5)
  4. 1C / Говнокод #13014

    −101

    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
    31. 31
    32. 32
    // Преобразует целое десятичное число (как вариант представления двоичного числа) в вещественное
    Функция ПреобразоватьВЧисло(Знач ДесятичноеЧисло = 0, Точность = 1) Экспорт
    	
    	СчБитов 	= 0;
    	Мантисса 	= 1;
    	Экспонента 	= ?(Точность = 2, -1023, -127);
    	Знак 		= 1;
    	
    	ГраницаМантиссы   = ?(Точность = 2, 52, 23);
    	ГраницаЭкспоненты = ?(Точность = 2, 63, 31);
    	
    	Пока ДесятичноеЧисло >= 1 Цикл
    		
    		Частное = Цел(ДесятичноеЧисло / 2);
    		Остаток = ДесятичноеЧисло % 2;
    		
    		Если СчБитов < ГраницаМантиссы Тогда
    			Мантисса = Мантисса + Остаток * Pow(2, СчБитов - ГраницаМантиссы);
    		ИначеЕсли СчБитов < ГраницаЭкспоненты И СчБитов > ГраницаМантиссы - 1 Тогда
    			Экспонента = Экспонента + Остаток * Pow(2, СчБитов - ГраницаМантиссы);
    		Иначе
    			Знак = ?(Остаток = 1, -1, 1);
    		КонецЕсли;
    		
    		ДесятичноеЧисло = Частное;
    		СчБитов	= СчБитов + 1;
    		
    	КонецЦикла; 
    		
    	Возврат Знак * Мантисса * Pow(2, Экспонента);
    
    КонецФункции

    TamerlanDE, 18 Мая 2013

    Комментарии (11)
  5. 1C / Говнокод #13008

    −166

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    Попытка
    	ФС.КопироватьФайл(Каталог+Файл+Расширение,НовоеИмя,1);
    	Если ФС.СуществуетФайл(НовоеИмя)=0 Тогда
    		СоздатьОбъект("АбсолютнаяЧушь");
    	КонецЕсли;
    	НовоеЗначение=Сред(НовоеИмя,СтрДлина(Лев(КаталогИБ(),СтрДлина(КаталогИБ())-1)+"-MEDIA\")+1);
    	НовоеСтрока=НовоеЗначение;
    Исключение
    	Предупреждение("Не удаётся скопировать файл!",5);
    КонецПопытки;

    Классный способ вызвать исключение.

    jerokee, 16 Мая 2013

    Комментарии (12)
  6. 1C / Говнокод #13006

    −171

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    ЕстьПроблема       = (Мин(СсылкаНаЗапрос.ЭтоПроблема,СвязанныйЗапрос.ЭтоПроблема)<>Макс(СсылкаНаЗапрос.ЭтоПроблема,СвязанныйЗапрос.ЭтоПроблема));
    ТолькоПроблемы = Мин(СсылкаНаЗапрос.ЭтоПроблема,СвязанныйЗапрос.ЭтоПроблема);
    
    Если ЕстьПроблема И Не ТолькоПроблемы Тогда 
         // кусок кода
    Иначе 
         // кусок кода
    КонецЕсли;

    Наваял тут... Самому прикольно стало.

    jerokee, 16 Мая 2013

    Комментарии (13)
  7. 1C / Говнокод #12987

    −167

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    МассивКоэффициентов = Новый Структура;
    -------------------------------------------------------------------------------------------------------
    Если Элемент.Имя = "КнопкаПерсонал" тогда
    	СписокВидоврасчета = 1;
    иначе
    	СписокВидоврасчета = 2;
    конецЕсли;

    "Принцип наименьшего удивления" при выборе имен переменных в работе

    doom2good, 13 Мая 2013

    Комментарии (4)
  8. 1C / Говнокод #12934

    −121

    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
    Функция ТекстЗапросаИзСтрокиВЧисло(пИмяПоля, пДлинаСтроки, пСимволРазделителя=".")
        лТекст="ВЫБОР ";
        Для лДлинаЦелойЧасти=0 По пДлинаСтроки Цикл
            Если лДлинаЦелойЧасти=пДлинаСтроки Тогда 
                лТекст=лТекст+"ИНАЧЕ"+Символы.ПС;
            Иначе
                лТекст=лТекст+"КОГДА ПОДСТРОКА("+пИмяПоля+", "+(лДлинаЦелойЧасти+1)+", 1)="""+пСимволРазделителя+""" ИЛИ ПОДСТРОКА("+пИмяПоля+", "+(лДлинаЦелойЧасти+1)+", 1)="""" ТОГДА "+Символы.ПС;
            КонецЕсли; 
            Если лДлинаЦелойЧасти=0 Тогда лТекст=лТекст+"    0"+Символы.ПС; КонецЕсли; 
            Для лИнд=1 По лДлинаЦелойЧасти Цикл
               лТекст=лТекст+"    ВЫБОР "+Символы.ПС;
                Для лЦифра=0 По 9 Цикл
                    лТекст=лТекст+"    КОГДА ПОДСТРОКА("+пИмяПоля+", "+лИнд+", 1)="""+лЦифра+""" ТОГДА "+лЦифра+Символы.ПС;
                КонецЦикла;
                лТекст=лТекст+"    ИНАЧЕ 0 КОНЕЦ"+?(лИнд=лДлинаЦелойЧасти, "", "*"+Формат(Pow(10, лДлинаЦелойЧасти-лИнд), "ЧРД=.; ЧГ=0")+"+")+Символы.ПС;
            КонецЦикла;
            Для лИнд=лДлинаЦелойЧасти+2 По пДлинаСтроки Цикл
                лТекст=лТекст+"+ ВЫБОР";
                Для лЦифра=0 По 9 Цикл
                    лТекст=лТекст+"    КОГДА ПОДСТРОКА("+пИмяПоля+", "+лИнд+", 1)="""+лЦифра+""" ТОГДА "+лЦифра+Символы.ПС;
                КонецЦикла;
                лТекст=лТекст+"    ИНАЧЕ 0 КОНЕЦ"+?(лИнд=лДлинаЦелойЧасти, "", "/"+Формат(Pow(10, лИнд-лДлинаЦелойЧасти-1), "ЧРД=.; ЧГ=0"))+Символы.ПС;
            КонецЦикла;
        КонецЦикла;
        лТекст=лТекст+"КОНЕЦ";
        Возврат лТекст;
    КонецФункции

    kovyl2404, 23 Апреля 2013

    Комментарии (35)
  9. 1C / Говнокод #12851

    −117

    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
    Запрос.УстановитьПараметр("Дата1",началомесяца(дата));
     запрос.УстановитьПараметр("Дата2",Конецмесяца(дата)-Дней(1));//дата заказа
     Запрос.УстановитьПараметр("МесяцОплаты",Месяц(Дата));
     Запрос.УстановитьПараметр("ПДата1",НачалоМесяца(Дата));
     Запрос.УстановитьПараметр("ПДата2",КонецМесяца(Дата)+345600);
     Запрос.УстановитьПараметр("ЗДата1",НачалоМесяца(ПДата));
     Запрос.УстановитьПараметр("ЗДата2",КонецМесяца(ПДата));
     Запрос.УстановитьПараметр("ЗПДата1",НачалоМесяца(Дата));
     Запрос.УстановитьПараметр("ЗПДата2",КонецМесяца(Дата));
     Запрос.УстановитьПараметр("ППДата1",НачалоМесяца(Дата));
     Запрос.УстановитьПараметр("ППДата2",КонецМесяца(Дата));
     запрос.УстановитьПараметр("дата22",Конецмесяца(дата));
     запрос.УстановитьПараметр("Дата21", Конецмесяца(дата));// для корпоративных клиентов берем весь период
     запрос.УстановитьПараметр("ПодключениеФ",Справочники.ФормулировкиСчетов.Подключение);
     запрос.УстановитьПараметр("Сотрудник",Сотрудник);
     запрос.УстановитьПараметр("Список",Список);
     запрос.УстановитьПараметр("ПРИХОД",ВидДвиженияНакопления.Расход);

    kovyl2404, 05 Апреля 2013

    Комментарии (9)
  10. 1C / Говнокод #12766

    −124

    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
    КоличествоОбъектов_ = 0;
    	
    	Для Каждого СтрокаТаблицы Из Объекты Цикл
    		Если СтрокаТаблицы.Объект = Элемент.Значение Тогда
    			КоличествоОбъектов_ = КоличествоОбъектов_ + 1;
    		КонецЕсли;
    	КонецЦикла;
    
    	Если КоличествоОбъектов_ > 1 Тогда
    		Элемент.Значение = Справочники.ОбъектыСтрахования.ПустаяСсылка();
    		Предупреждение("Выбранный объект уже присутствует в списке");
    		Возврат;
    	КонецЕсли;

    Нашел такое в конфе, которую поддерживаю.
    Программер накнопал алгоритм, чтобы исключить попадание одного и того же объекта в таблицу.
    Вначале был ступор, потом дошло.

    Ivon, 18 Марта 2013

    Комментарии (12)