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

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

    Вот такая вот подписка при записи любых ссылок. 3 Если подряд? Логическое умножение - не, не слышал. Зато Записать() в подписке ПриЗаписи - слышал. Автор Хан Юрий Валентинович.

    ilya2184, 10 Октября 2012

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

    −117

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    ВЫБОР
        КОГДА ПродажиОбороты.Регистратор.Товары.СерияНоменклатуры.СрокГодности ЕСТЬ NULL 
                ИЛИ ПродажиОбороты.Регистратор.Товары.СерияНоменклатуры.СрокГодности < ДАТАВРЕМЯ(2000, 1, 1)
    
           ТОГДА ПродажиОбороты.Регистратор.Товары.Ссылка.Дата МЕЖДУ НАЧАЛОПЕРИОДА(Регистр1.ДатаНачала, ДЕНЬ) И КОНЕЦПЕРИОДА(Регистр1.ДатаОкончания, ДЕНЬ)
       ИНАЧЕ ПродажиОбороты.Регистратор.Товары.СерияНоменклатуры.СрокГодности МЕЖДУ НАЧАЛОПЕРИОДА(Регистр1.ДатаНачала, ДЕНЬ) И КОНЕЦПЕРИОДА(Регистр1.ДатаОкончания, ДЕНЬ)
    КОНЕЦ

    dmurdoc, 08 Октября 2012

    Комментарии (6)
  3. 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)
  4. 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)
  5. 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)
  6. 1C / Говнокод #11607

    −159

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

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

    noosipip, 18 Августа 2012

    Комментарии (11)
  7. 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)
  8. 1C / Говнокод #11466

    −128

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

    kovyl2404, 23 Июля 2012

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

    −121

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

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

    kovyl2404, 03 Июля 2012

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

    −116

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

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

    glavdir, 25 Июня 2012

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