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

    −123

    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
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    Функция   СтрокаБезПробелов(sP,lenP= Неопределено) Экспорт
    	
    // убрать пробелы (на самом деле, символы 160) в строке sP
    // (после преобразования числа в cтроку)
    // если нужно - дописать пробелов спереди до длины lenP
    
     s_ = СтрЗаменить(Строка(sP),Символ(160),"");
     
     Если lenP>0 Тогда
          l_ = СтрДлина(s_);
    	  Если l_<lenP Тогда
    		   j = lenP-l_;
    		   Если j=1 Тогда
    			    s_ = " "+s_;
    		   Иначе	   
    		    Если j=2 Тогда
    			     s_ = "  "+s_;
    		    Иначе	   
    		     Если j=3 Тогда
    			      s_ = "   "+s_;
    		     Иначе	   
    		      Если j=4 Тогда
    			       s_ = "    "+s_;
    		      Иначе	   
    		       Если j=5 Тогда
    			        s_ = "     "+s_;
    		       Иначе	   
    		        Если j=6 Тогда
    			         s_ = "      "+s_;
    		        Иначе	   
    		         Если j=7 Тогда
    			          s_ = "       "+s_;
    		         Иначе	   
    		          Если j=8 Тогда
    			           s_ = "        "+s_;
    		          Иначе	   
                      КонецЕсли;
                     КонецЕсли;
                    КонецЕсли;
                   КонецЕсли;
                  КонецЕсли;
                 КонецЕсли;
                КонецЕсли;
               КонецЕсли;
          КонецЕсли;
     КонецЕсли;
      
     Возврат s_;
    КонецФункции

    Вот такая замена функции Формат нашлась в исходниках от одного из внедренцев.

    bytemdfab, 01 Октября 2012

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

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

    Получение константы в в привилегированном режиме поражает. Антипаттерн Спагетти (можно обойтись двумя строками). Автор Хан Юрий Валентинович.

    ilya2184, 27 Сентября 2012

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

    −122

    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
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    ВЫБРАТЬ
    	ПродажиОбороты.Номенклатура КАК Номенклатура,
    	ВЫРАЗИТЬ(ПродажиОбороты.СтоимостьОборот / ВложенныйЗапрос.Курс КАК ЧИСЛО(15, 2)) КАК Сумма,
    	ЕСТЬNULL(ПродажиОбороты.Номенклатура.Родитель, &ПустаяНоменклатура) КАК Родитель1,
    	ЕСТЬNULL(ПродажиОбороты.Номенклатура.Родитель.Родитель, &ПустаяНоменклатура) КАК Родитель2,
    	ЕСТЬNULL(ПродажиОбороты.Номенклатура.Родитель.Родитель.Родитель, &ПустаяНоменклатура) КАК Родитель3,
    	ЕСТЬNULL(ПродажиОбороты.Номенклатура.Родитель.Родитель.Родитель.Родитель, &ПустаяНоменклатура) КАК Родитель4,
    	Контрагенты.Контрагент.Ссылка КАК Контрагент,
    	Контрагенты.Контрагент._г_Код1С КАК КодПартнера,
    1 КАК Колво
    ИЗ
    	(ВЫБРАТЬ
    		СРЕДНЕЕ(КурсыВалют.Курс) КАК Курс
    	ИЗ
    		РегистрСведений.КурсыВалют КАК КурсыВалют
    	ГДЕ
    		КурсыВалют.Период МЕЖДУ &НачалоПериода И &КонецПериода
    		И КурсыВалют.Валюта = ЗНАЧЕНИЕ(Справочник.Валюты._г_Валюта_Доллар)) КАК ВложенныйЗапрос,
    	(ВЫБРАТЬ
    		Контрагенты.Ссылка КАК Контрагент
    	ИЗ             
    		Справочник.Контрагенты КАК Контрагенты
    	ГДЕ
    		Контрагенты.Ссылка В(&СписокКонтрагентов)) КАК Контрагенты
    		ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты(
    				&НачалоПериода,
    				&КонецПериода,
    				Регистратор,
    				Номенклатура В ИЕРАРХИИ (&ГруппыНоменклатуры)
    					И ДоговорКонтрагента.Владелец В (&СписокКонтрагентов)) КАК ПродажиОбороты 
    		ПО Контрагенты.Контрагент = ПродажиОбороты.ДоговорКонтрагента.Владелец
    ИТОГИ
    	СУММА(Сумма),
    	СУММА(Колво)
    ПО
    	Контрагент,
    	Номенклатура,
    	ЗаказПокупателя

    Вот я даже ХЗ, что они пытались сделать.

    kovyl2404, 03 Сентября 2012

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

    −159

    1. 1
    Говно.Наложить(Это)

    Коллеги намедни выдали

    noosipip, 18 Августа 2012

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

    −119

    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
    Перем СтрокаСрокДействия;
    
    Функция СтрокаСрокДействия()     
    
                Если ТекущийЭлемент().ФлагБессрочного = 1 Тогда
                      Если ПустоеЗначение(ТекущийЭлемент().СрокДействия.Получить(РабочаяДата())) = 1 Тогда
                            СтрокаСрокДействия = "от "+ ТекущийЭлемент().ДатаДоговора+" до ";
                      Иначе
                            СтрокаСрокДействия = "от "+ ТекущийЭлемент().ДатаДоговора+" до "+ТекущийЭлемент().СрокДействия.Получить(РабочаяДата());
                      КонецЕсли;
                ИначеЕсли ТекущийЭлемент().ФлагБессрочного = 2 Тогда
                      СтрокаСрокДействия = "бессрочно"; 
                ИначеЕсли ТекущийЭлемент().ФлагБессрочного = 3 Тогда
                      СтрокаСрокДействия = "пролонгируемый";
                КонецЕсли;     
    
          Возврат(СтрокаСрокДействия);           
    
    КонецФункции

    1C 7.7 Такая расчудесная функция была в модуле формы списка справочника. Функция была назначена на текстовое поле формы списка... И таким образом при пролистывании формы списка, в поле "Срок действия" непонятным образом попадали абсолютно левые значения, но зато в каждой из строк было одно и то же до следующего пролистывания...

    ok0504, 09 Августа 2012

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

    −128

    1. 1
    СсылкаНаТекущуюЗаписьРегистра.Записать();

    kovyl2404, 23 Июля 2012

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

    −121

    1. 1
    2. 2
    3. 3
    Если НЕ Отказ И ЭтоНовый() и Роль = Справочники.РолиКонтактныхЛиц.НайтиПоНаименованию("Директор") Тогда
    	Пол = Перечисления.ПолФизическихЛиц.Мужской;
    КонецЕсли;

    Тысячи теток мужского пола негодуют.

    kovyl2404, 03 Июля 2012

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

    −116

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    ВЫБОР 
    КОГДА ПолФизическихЛиц.Ссылка = "Женский" 
    ТОГДА "М" 
    ИНАЧЕ "Ж" 
    КОНЕЦ

    Вот такой вот забавный запрос

    glavdir, 25 Июня 2012

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

    −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
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    Если Номенклатура1 <> Номенклатура2 Тогда
    Запрос=Новый Запрос("ВЫБРАТЬ
    |РаспределениеМатериаловПоМенеджерам.ЗаявкаНаМатериалы,
    |РаспределениеМатериаловПоМенеджерам.Материал
    |ИЗ
    |РегистрСведений.РаспределениеМатериаловПоМенеджерам КАК РаспределениеМатериаловПоМенеджерам
    |ГДЕ
    |РаспределениеМатериаловПоМенеджерам.Материал = &Материал");
    Запрос.УстановитьПараметр("Материал",Номенклатура1);
    Выборка=Запрос.Выполнить().Выбрать();
    Пока Выборка.Следующий() Цикл
    МЗСтарой=РегистрыСведений.РаспределениеМатериаловПоМенеджерам.СоздатьМенеджерЗаписи();
    МЗСтарой.ЗаявкаНаМатериалы=Выборка.ЗаявкаНаМатериалы;
    МЗСтарой.Материал=Номенклатура2;
    МЗСтарой.Прочитать();
    МЗНовой=РегистрыСведений.РаспределениеМатериаловПоМенеджерам.СоздатьМенеджерЗаписи();
    МЗНовой.ЗаявкаНаМатериалы=Выборка.ЗаявкаНаМатериалы;
    МЗНовой.Материал=Выборка.Материал;
    МЗНовой.Прочитать();
    Если МЗСтарой.Выбран() тогда
    МЗНовой.Удалить();
    Иначе
    МЗНовой.Материал=Номенклатура2;
    МЗНовой.Записать(Истина);
    КонецЕсли;
    КонецЦикла;
    КонецЕсли;

    Вот такой код сделан был франчем, который потребовал за это еще и 3 часа оплаты)))) Одно только непонятно почему при обращении к регистру нельзя было использовать отбор это же гораздо проще и быстрее и кода меньше

    dart, 14 Июня 2012

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

    −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
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    Функция ЧерезНоль(Значность) Экспорт
    	Оборот=10;
    	Если Значность=2 Тогда
    		Оборот=100;
    	ИначеЕсли Значность=3 Тогда
    		Оборот=1000
    	ИначеЕсли Значность=4 Тогда
    		Оборот=10000
    	ИначеЕсли Значность=5 Тогда
    		Оборот=100000
    	ИначеЕсли Значность=6 Тогда
    		Оборот=1000000
    	ИначеЕсли Значность=7 Тогда
    		Оборот=10000000
    	ИначеЕсли Значность=8 Тогда
    		Оборот=100000000
    	ИначеЕсли Значность=9 Тогда
    		Оборот=1000000000
    	ИначеЕсли Значность=10 Тогда
    		Оборот=10000000000
    	ИначеЕсли Значность=11 Тогда
    		Оборот=100000000000
    	ИначеЕсли Значность=12 Тогда
    		Оборот=1000000000000
    	ИначеЕсли Значность=13 Тогда
    		Оборот=10000000000000
    	ИначеЕсли Значность=14 Тогда
    		Оборот=100000000000000
    	ИначеЕсли Значность=15 Тогда
    		Оборот=1000000000000000
    	КонецЕсли;	
     Возврат Оборот		
    КонецФункции

    суровое возведение в степень)

    dmurdoc, 13 Июня 2012

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