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

    −136

    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
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    Процедура ПриОткрытии()	
    	Таймер();
    	ПодключитьОбработчикОжидания("Таймер",1);	 
    КонецПроцедуры
    
    Процедура Таймер()	
    	Если ИспользоватьНапоминание Тогда
    		Если ТекущаяДата() = ВремяНапоминания Тогда
    			Предупреждение(ТекстНапоминания);
    		КонецЕсли;
    	КонецЕсли;
    	Если НачалоДня(ТекущаяДата()) + 13*60*60 > ТекущаяДата() Тогда
    		ЗаголовокДляУстановки = Формат(Дата('00010101') + (НачалоДня(ТекущаяДата()) + 13*60*60 - ТекущаяДата()), "ДФ=HH:mm:ss");
    		Если Прав(ЭтаФорма.Заголовок,1) <> "\" и Прав(ЭтаФорма.Заголовок,1) <> "|" и Прав(ЭтаФорма.Заголовок,1) <> "/" и Прав(ЭтаФорма.Заголовок,1) <> "-" тогда
    			ЭтаФорма.Заголовок = ЗаголовокДляУстановки + " \";
    		ИначеЕсли Прав(ЭтаФорма.Заголовок,1) = "\" Тогда
    			ЭтаФорма.Заголовок = ЗаголовокДляУстановки + "  |"; 
    		ИначеЕсли Прав(ЭтаФорма.Заголовок,1) = "|" Тогда
    			ЭтаФорма.Заголовок = ЗаголовокДляУстановки + " /";
    		ИначеЕсли Прав(ЭтаФорма.Заголовок,1) = "/" Тогда
    			ЭтаФорма.Заголовок = ЗаголовокДляУстановки + " --";
    		ИначеЕсли Прав(ЭтаФорма.Заголовок,1) = "-" Тогда   
    			ЭтаФорма.Заголовок = ЗаголовокДляУстановки + " \";
    		КонецЕсли;	
    	ИначеЕсли НачалоДня(ТекущаяДата()) + 14*60*60 > ТекущаяДата() тогда		
    		Если Прав(ЭтаФорма.Заголовок,1) <> "\" и Прав(ЭтаФорма.Заголовок,1) <> "|" и Прав(ЭтаФорма.Заголовок,1) <> "/" и Прав(ЭтаФорма.Заголовок,1) <> "-" тогда
    			ЭтаФорма.Заголовок = "??:??:??" + " \"; 
    		ИначеЕсли Прав(ЭтаФорма.Заголовок,1) = "\" Тогда
    			ЭтаФорма.Заголовок = "??:??:??" + "  |"; 
    		ИначеЕсли Прав(ЭтаФорма.Заголовок,1) = "|" Тогда
    			ЭтаФорма.Заголовок = "??:??:??" + " /";
    		ИначеЕсли Прав(ЭтаФорма.Заголовок,1) = "/" Тогда
    			ЭтаФорма.Заголовок = "??:??:??" + " --";
    		ИначеЕсли Прав(ЭтаФорма.Заголовок,1) = "-" Тогда   
    			ЭтаФорма.Заголовок = "??:??:??" + " \";
    		КонецЕсли;
    	ИначеЕсли НачалоДня(ТекущаяДата()) + 18*60*60 > ТекущаяДата() Тогда
    		ЗаголовокДляУстановки = Формат(Дата('00010101') + (НачалоДня(ТекущаяДата()) + 18*60*60 - ТекущаяДата()), "ДФ=HH:mm:ss");
    		Если Прав(ЭтаФорма.Заголовок,1) <> "\" и Прав(ЭтаФорма.Заголовок,1) <> "|" и Прав(ЭтаФорма.Заголовок,1) <> "/" и Прав(ЭтаФорма.Заголовок,1) <> "-" тогда
    			ЭтаФорма.Заголовок = ЗаголовокДляУстановки  + " \"; 
    		ИначеЕсли Прав(ЭтаФорма.Заголовок,1) = "\" Тогда
    			ЭтаФорма.Заголовок = ЗаголовокДляУстановки + "  |"; 
    		ИначеЕсли Прав(ЭтаФорма.Заголовок,1) = "|" Тогда
    			ЭтаФорма.Заголовок = ЗаголовокДляУстановки + " /";
    		ИначеЕсли Прав(ЭтаФорма.Заголовок,1) = "/" Тогда
    			ЭтаФорма.Заголовок = ЗаголовокДляУстановки + " --";
    		ИначеЕсли Прав(ЭтаФорма.Заголовок,1) = "-" Тогда   
    			ЭтаФорма.Заголовок = ЗаголовокДляУстановки + " \";
    		КонецЕсли;
    	Иначе
    		Если Формат(ТекущаяДата(), "ДФ=dddd") = "пятница" тогда
    			Если Прав(ЭтаФорма.Заголовок,1) <> ")" тогда
    				ЭтаФорма.Заголовок = "С Пятницей!!! :)";
    			Иначе
    				ЭтаФорма.Заголовок = "С Пятницей!!! xD";
    			КонецЕсли; 
    		Иначе
    			Если Прав(ЭтаФорма.Заголовок,1) <> "\" и Прав(ЭтаФорма.Заголовок,1) <> "|" и Прав(ЭтаФорма.Заголовок,1) <> "/" и Прав(ЭтаФорма.Заголовок,1) <> "-" тогда
    				ЭтаФорма.Заголовок = "ХХ.ХХ.ХХ" + " \"; 
    			ИначеЕсли Прав(ЭтаФорма.Заголовок,1) = "\" Тогда
    				ЭтаФорма.Заголовок = "ХХ.ХХ.ХХ" + "  |"; 
    			ИначеЕсли Прав(ЭтаФорма.Заголовок,1) = "|" Тогда
    				ЭтаФорма.Заголовок = "ХХ.ХХ.ХХ" + " /";
    			ИначеЕсли Прав(ЭтаФорма.Заголовок,1) = "/" Тогда
    				ЭтаФорма.Заголовок = "ХХ.ХХ.ХХ" + " --";
    			ИначеЕсли Прав(ЭтаФорма.Заголовок,1) = "-" Тогда   
    				ЭтаФорма.Заголовок = "ХХ.ХХ.ХХ" + " \";
    			КонецЕсли;	
    		КонецЕсли;
    	КонецЕсли;
    КонецПроцедуры

    Текст процедуры обработчика ожидания обработки, показывающей время до обеда и до окончания рабочего дня.

    EvilWisp, 05 Октября 2011

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

    −154

    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
    Лично я 1С не люблю. И вообще лучше не говорить об этом, настроение портится...
    Цикл ВЦикле Открывающая_Скобка От Ноль до Двадцать_Один Закрывающая_Скобка
    Начало_цикла
    Печать Кавычка Один С - Обратный_Слеш Кавычка Говно Обратный_Слеш Кавычка Кавычка Точка_С_Запятой
    Конец_цикла
    
    Конечно это фантазия, но представьте что случилос бы, если бы 1С писали люди, \
     которые не смогли осилить не только английский язык, но и цифры и знаки пунктуации.
    К тому же бухгалтерия предлагает отвратительнейшие задачи, которые предлагается решать на отвратительнейшем языке.
    Бюрократический ад пишется на бюрократическом языке. Зачем английский язык, если есть русский?
    Помоему это какая-то особая программа по порабощению русского народа. Русские дети хотели стать космонавтами,\
     а их осадили прямо в кресло с мерцающим монитором и программой такой бюрократически-желтой иконкой.
    Боже упаси вас от продукции этой компании!

    alexoy, 01 Октября 2011

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

    −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
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    //делает паузу с округлением до целого числа секунд - 1000, 2000 и т.д.
    //Использует ВводСтроки с таймаутом, который работает даже если окно теряет фокус ввода.
    Процедура Sleep(Таймаут)
        Предупреждение("Таймаут " + Строка(Таймаут) + " секунд", Таймаут, "Sleep");
    	ОбработкаПрерыванияПользователя();
    КонецПроцедуры  
    
    Процедура КнопкаВыполнитьНажатие(Кнопка)
    	
    	Если НЕ ВремяНачалаВыполнения = Дата(1,1,1) Тогда
    		Пока Истина = Истина Цикл
    			ОбработкаПрерыванияПользователя();
    			Sleep(45); //Шаг 45 секунд.	
    			Если Час(ТекущаяДата()) = Час(ВремяНачалаВыполнения) И Минута(ТекущаяДата()) >= Минута(ВремяНачалаВыполнения) Тогда
    				Прервать;
    			КонецЕсли;
    		КонецЦикла;
    	КонецЕсли;
            
            //Далее идет обработка перепроведения документов
    
    КонецПроцедуры

    Интересная версия выполнить процедуру по времени

    AndreyEvtyushin, 30 Сентября 2011

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

    −160

    1. 1
    Номенклатура

    Слово гадкое, не то что программа.

    alexoy, 27 Сентября 2011

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

    −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
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    Процедура Кнопка1Нажатие(Элемент)
    	// Вставить содержимое обработчика.
    	//орг=элементыформы.организация.Значение;
    
    запрос1=новый запрос;
    запрос1.текст=""выбрать * из регистрсведений.регионыорганизаций где  регион=&регион"";
    запрос1.УстановитьПараметр(""регион"",регион);
    выборка=запрос1.Выполнить().Выбрать();
    запрос2=новый запрос;
    пока выборка.Следующий()цикл
    	орг=выборка.организация;
    	//Сообщить(выборка.Количество()); 
    	запрос2.Текст=""выбрать * из регистрсведений.сведенияосотруднике где организация=&орг и ""+
    ""должность=&должн"";
    
    запрос2.УстановитьПараметр(""орг"", орг);
    запрос2.УстановитьПараметр(""должн"",должность);
    выборка2=запрос2.Выполнить().Выбрать();
     если выборка2.Количество()>2 тогда
    сообщить(строка(орг )+"" - ""+строка(выборка2.количество()));
    конецесли;
    конеццикла
    
    КонецПроцедуры

    Задание было такое
    Написать интерфейс для выборки данных о количестве заместителей генерального директора в каждой организации, работающей в n-й области, где таковых заместителей более двух.

    Авторское решение приведено в первозданном виде.

    glavdir, 27 Сентября 2011

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

    −152

    1. 1
    2. 2
    Пока 2*2=4 Цикл
    ...

    Улыбнуло. Не помню, в какой то чей то нетленке видел...

    F00FC7C8, 26 Сентября 2011

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

    −141

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    Для К = 1 По 11 Цикл
    Если Форм = 1 Тогда
    ExcelApp.Cells(КолЗ,К).Font.Bold = 1;
    ExcelApp.Cells(КолЗ,К).Font.Color = 16732963; 
    КонецЕсли;      
    КонецЦикла;

    "Орфография автора сохранена" =)

    HellMaster_HaiL, 23 Сентября 2011

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

    −141

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    //Адрес Получателя
    	СписокКому = Новый СписокЗначений;
        СписокОбъектов = Новый СписокЗначений;
    	СписокОбъектов.Добавить(ОбъектОтправки);
    	Для каждого СтрокаСпискаОбъектов Из СписокОбъектов Цикл
    		Адрес = УправлениеЭлектроннойПочтой.ОпределитьАдресПолучателя(СтрокаСпискаОбъектов.Значение);
    		СписокКому.Добавить(Адрес,Строка(СтрокаСпискаОбъектов.Значение));
        КонецЦикла;
    
    	СтруктураНовогоПисьма.Вставить("Кому", СписокКому);

    что автор хотел этим сделать?? написано с нуля, так как автор сказал, что немного подкорректировал конфигурацию и вот мне стало интересно... но увидев удивительные строки хотелось бы спросить сначала экспертов, а потом автора )))))

    drhihi, 21 Сентября 2011

    Комментарии (2)
  9. 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)
  10. 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)