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

    −139

    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
    Функция ПолучитьЕдиницу(ТекЕдиница)
    	Тек = Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию(ТекЕдиница.Наименование);
    	Если Тек = Справочники.КлассификаторЕдиницИзмерения.ПустаяСсылка() Тогда
    		Тек = Справочники.КлассификаторЕдиницИзмерения.СоздатьЭлемент();
    		Тек.Наименование = ТекЕдиница.Наименование;
    		Тек.НаименованиеПолное = ТекЕдиница.Наименование;
    		СтроковыйКод = "001";
    		Запрос = Новый Запрос;
    		Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1
    		               |	КлассификаторСтранМира.Код КАК Код
    		               |ИЗ
    		               |	Справочник.КлассификаторСтранМира КАК КлассификаторСтранМира
    		               |
    		               |УПОРЯДОЧИТЬ ПО
    		               |	Код УБЫВ";
    					   
    					   Результат = Запрос.Выполнить().Выгрузить();
    					   ЧисловойКод = Число(Результат[0].Код) + 1;
    					   Если ЧисловойКод < 10 Тогда
    						   СтроковыйКод = "00"+ЧисловойКод
    					   ИначеЕсли ЧисловойКод < 100 Тогда
    						   СтроковыйКод = "0"+ЧисловойКод
    					   Иначе
    						   СтроковыйКод = ""+ЧисловойКод
    					   КонецЕсли;
    					   
    		Тек.Код = СтроковыйКод;
    		
    		Попытка
    			Тек.Записать();
    		Исключение
    			ЕстьОшибка = Истина;
    			Сообщить("Не могу записать единицу измерения "+ТекЕдиница.Наименование+" !");
    			Сообщить(ОписаниеОшибки());
    			Возврат "";
    		КонецПопытки;
    	КонецЕсли;
    	Если Тек = Справочники.КлассификаторЕдиницИзмерения.ПустаяСсылка() Тогда
    		ЕстьОшибка = Истина;
    		Возврат "";
    	Иначе
    		Возврат Тек;
    	КонецЕсли;
    КонецФункции

    Получила в наследство от команды разработчиков во главе с неким Леонидом. Порадовало формирование кода для нового элемента классификатора единиц измерения. И правда, почему бы не поискать максимальный код в каком-нибудь неожиданном месте? А такое оригинальное формирование строки с лидирующими нулями просто убило до смерти.

    Shapokljak, 12 Сентября 2011

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

    −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
    Функция ВыделитьАртикул(А) Экспорт
    	Перем СтрВспом, Инд;
    	
    	Инд = 1;
    	СтрВспом = "";
    	
    	Пока Инд <= СтрДлина(А) Цикл
    		Если (Сред(А,Инд,1)="0") ИЛИ (Сред(А,Инд,1)="1") ИЛИ
    			 (Сред(А,Инд,1)="2") ИЛИ (Сред(А,Инд,1)="3") ИЛИ
    			 (Сред(А,Инд,1)="4") ИЛИ (Сред(А,Инд,1)="5") ИЛИ
    			 (Сред(А,Инд,1)="6") ИЛИ (Сред(А,Инд,1)="7") ИЛИ
    			 (Сред(А,Инд,1)="8") ИЛИ (Сред(А,Инд,1)="9") ИЛИ 
    			 (Сред(А,Инд,1)="/") ИЛИ (Сред(А,Инд,1)="-") Тогда
    			СтрВспом = СтрВспом + Сред(А, Инд, 1);
    			Инд = Инд + 1;
    		Иначе
    			Прервать;
    		КонецЕсли;
    	КонецЦикла;
    	Возврат СтрВспом;
    КонецФункции

    Нашел у клиента, когда рефакорил код конфы. Страшно подумать, если придется выделять еще с десяток символов...

    YouAreEmpty, 09 Сентября 2011

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

    −153

    1. 1
    ТСтрока=Товары.Получить(Товары.Индекс(ЭтаФорма.ЭлементыФормы.Товары.ТекущаяСтрока));

    luns, 26 Июля 2011

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

    −140

    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
    Говно = 0;
    		ТекущийДокумент.ВыбратьСтроки();
    		Пока ТекущийДокумент.ПолучитьСтроку() = 1 Цикл
    			Если (ТекущийДокумент.ДатаПоставкиЭА < ТекущаяДата()) и (ПустоеЗначение(ТекущийДокумент.ДатаПоставкиЭА) = 0) и (ТекущийДокумент.Аннулирован = 0) и (ТекущийДокумент.Аннулирована = 0) Тогда
    				Если (ТекущийДокумент.СостояниеСтрокиЗаказа = Перечисление.СостояниеЗаказа.Сделан) или (ПустоеЗначение(ТекущийДокумент.СостояниеСтрокиЗаказа) = 1) Тогда
    					Говно = 1;
    					Прервать;
    				КонецЕсли;
    			КонецЕсли;
    		КонецЦикла;
    		Если Говно = 1 Тогда
    			Возврат "FONT["+ПолучитьЦвет(0,0,0)+"] BRUSH["+ПолучитьЦвет(128,128,0)+"]";		
    		КонецЕсли;
    
    Код окрашивает строку в цвет говна:)
    К коду претензий не имею, но говно-код получается.

    Unknown181538, 26 Июля 2011

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

    −132

    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
    Запрос = Новый Запрос;
       Запрос.УстановитьПараметр("ин_Кодификатор",Кодификатор);
       Запрос.Текст =  "ВЫБРАТЬ
       | СтатьиДвиженияДенежныхСредств.Ссылка
       |ИЗ
       | Справочник.СтатьиДвиженияДенежныхСредств КАК СтатьиДвиженияДенежныхСредств
       |ГДЕ
       | СтатьиДвиженияДенежныхСредств.ин_Кодификатор = &ин_Кодификатор
       |";
       
       Выборка = Запрос.Выполнить().Выбрать();
       Если Выборка.Следующий() Тогда   
        Если  Выборка.Ссылка.Наименование <> Наименование Тогда
         СтатьяДДСОбъект = Выборка.Ссылка.ПолучитьОбъект();      
         СтатьяДДСОбъект.Наименование = Наименование;
         СтатьяДДСОбъект.Записать(); 
        КонецЕсли;
        Если  Выборка.Ссылка.ин_Кодификатор <> Кодификатор Тогда
         СтатьяДДСОбъект = Выборка.Ссылка.ПолучитьОбъект();         
         СтатьяДДСОбъект.ин_Кодификатор = Кодификатор;
         СтатьяДДСОбъект.Записать(); 
        КонецЕсли;

    Отбор в запросе ин_Кодификатор = &ин_Кодификатор.
    Потом идет проверка Выборка.Ссылка.ин_Кодификатор <> Кодификатор

    s-in-m, 25 Июля 2011

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

    −134

    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
    Функция ПолучитьОстаток(ДанныеСтроки)
    
    	Запрос = Новый Запрос("ВЫБРАТЬ
    	                       |	ПартииТоваровНаСкладахОстатки.КоличествоОстаток
    	                       |ИЗ
    	                       |	РегистрНакопления.ПартииТоваровНаСкладах.Остатки КАК ПартииТоваровНаСкладахОстатки
    	                       |ГДЕ
    	                       |	ПартииТоваровНаСкладахОстатки.СерияНоменклатуры = &Серия");
    	Запрос.УстановитьПараметр("Серия", ДанныеСтроки.Ссылка);
    
    	РезультатЗапроса = Запрос.Выполнить().Выбрать();
    
    	СерияНоменклатуры = ДанныеСтроки.Ссылка.ПолучитьОбъект();
    
    	Если РезультатЗапроса.Следующий() тогда
    		 СерияНоменклатуры.Остаток = РезультатЗапроса.КоличествоОстаток;
    	Иначе
    		 СерияНоменклатуры.Остаток = 0;
    	КонецЕсли;
    
    	СерияНоменклатуры.Записать(); 	 
    
    КонецФункции
    
    Процедура СправочникСписокПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
    
    	ПолучитьОстаток(ДанныеСтроки);
    	
    КонецПроцедуры // СправочникСписокПриВыводеСтроки()

    Задача была - при выборе серии номенклатуры подтягивать в форму выбора остатки на складе...

    Kirmas, 29 Июня 2011

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

    −131

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    РегламентированнаяОтчетность.ПередОткрытиемФормыРегламентированногоОтчета(ЭтаФорма, Отказ);
    ////Вызывается перед открытием, а потом видим:
    
    Процедура ПередОткрытиемФормыРегламентированногоОтчета(Форма, Отказ) Экспорт
    	
    	Отказ = Ложь;
    	
    КонецПроцедуры

    Windtalkers, 27 Июня 2011

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

    −144

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    Процедура ЗаполнитьНажатие(Элемент)	
    	Если Период_планирования="" или Структурное_подразделение.Пустая() или Плановая_потребность_в_кадрах.Пустая() или Начальник_ППО.Пустая() или Начальник_отдела_кадров.Пустая() тогда
    	ks = Новый COMОбъект ("WScript.Shell");
    	ks.popup("Заполните все необходимые риквизиты верхней части!", 1, "Внимание", 64); 
    	Возврат;
    конецесли;

    Из студенческих работ :)

    r3nya, 06 Июня 2011

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

    −365

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    Функция ПреобразоватьМаленькиеБуквыВБольшиеБуквы(Слово)
        
        Слово = СтрЗаменить(Слово, "а", "А");
        Слово = СтрЗаменить(Слово, "б", "Б");
        //...
     
        Слово = СтрЗаменить(Слово, "я", "Я");
        
        Возврат Слово;
        
    КонецФункции

    Легкие пути для слабых))))

    kirillsas, 02 Июня 2011

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