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

    −154

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    Исходные коды на 1С!
    На джаву перейти мы рады,
    Но не стерплю такой утраты,
    Я снова перейду на 1С
    
    А мой товарищ одинокий
    Нам закодирует EE

    Ну и кто сказал, что Маяковский умер?

    alexoy, 12 Октября 2011

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

    −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
    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
    Для Каждого ТекущаяСтрока Из ОтработанноеВремя Цикл
            ТекущаяСтрока.ИтогоЧасов=0;
    		ТекущаяСтрока.ИтогоЧасов=ТекущаяСтрока.ПервыйЧасов1+ТекущаяСтрока.ПервыйЧасов2+ТекущаяСтрока.ПервыйЧасов3+
    		ТекущаяСтрока.ПервыйЧасов4+ТекущаяСтрока.ПервыйЧасов5+ТекущаяСтрока.ПервыйЧасов6+ТекущаяСтрока.ПервыйЧасов7+
    		ТекущаяСтрока.ПервыйЧасов8+ТекущаяСтрока.ПервыйЧасов9+ТекущаяСтрока.ПервыйЧасов10+ТекущаяСтрока.ПервыйЧасов11+
    		ТекущаяСтрока.ПервыйЧасов12+ТекущаяСтрока.ПервыйЧасов13+ТекущаяСтрока.ПервыйЧасов14+ТекущаяСтрока.ПервыйЧасов15+
    		ТекущаяСтрока.ПервыйЧасов16+ТекущаяСтрока.ПервыйЧасов17+ТекущаяСтрока.ПервыйЧасов18+ТекущаяСтрока.ПервыйЧасов19+
    		ТекущаяСтрока.ПервыйЧасов20+ТекущаяСтрока.ПервыйЧасов21+ТекущаяСтрока.ПервыйЧасов22+ТекущаяСтрока.ПервыйЧасов23+
    		ТекущаяСтрока.ПервыйЧасов24+ТекущаяСтрока.ПервыйЧасов25+ТекущаяСтрока.ПервыйЧасов26+ТекущаяСтрока.ПервыйЧасов27+
    		ТекущаяСтрока.ПервыйЧасов28+ТекущаяСтрока.ПервыйЧасов29+ТекущаяСтрока.ПервыйЧасов30+ТекущаяСтрока.ПервыйЧасов31;	
    		
    		ТекущаяСтрока.ИтогоОклад=0;
    		ТекущаяСтрока.ИтогоОклад= ОКр(ТекущаяСтрока.ИтогоЧасов/ТекущаяСтрока.НормаЧасов*ТекущаяСтрока.Оклад,2);
    		
    		ТекущаяСтрока.Выручка=0;
    		
    		Если ТекущаяСтрока.ПервыйЧасов1>0 тогда
    			НайденнаяСтрока = РабочаяТаблица.Найти(1, "День");
    			Если НайденнаяСтрока = Неопределено Тогда			
    			Иначе
    				ТекущаяСтрока.Выручка = ТекущаяСтрока.Выручка+НайденнаяСтрока.Продано;
    			КонецЕсли;	
    		КонецЕсли;	
    		Если ТекущаяСтрока.ПервыйЧасов2>0 тогда
    			НайденнаяСтрока = РабочаяТаблица.Найти(2, "День");
    			Если НайденнаяСтрока = Неопределено Тогда			
    			Иначе	
    				ТекущаяСтрока.Выручка = ТекущаяСтрока.Выручка+НайденнаяСтрока.Продано;
    			КонецЕсли;	
    		КонецЕсли;	
    		Если ТекущаяСтрока.ПервыйЧасов3>0 тогда
    			НайденнаяСтрока = РабочаяТаблица.Найти(3, "День");
    			Если НайденнаяСтрока = Неопределено Тогда			
    			Иначе
    				ТекущаяСтрока.Выручка = ТекущаяСтрока.Выручка+НайденнаяСтрока.Продано;
    			КонецЕсли;	
    		КонецЕсли;	
    		Если ТекущаяСтрока.ПервыйЧасов4>0 тогда
    			НайденнаяСтрока = РабочаяТаблица.Найти(4, "День");
    			Если НайденнаяСтрока = Неопределено Тогда			
    			Иначе
    				ТекущаяСтрока.Выручка = ТекущаяСтрока.Выручка+НайденнаяСтрока.Продано;
    			КонецЕсли;	
    		КонецЕсли;
    		Если ТекущаяСтрока.ПервыйЧасов5>0 тогда
    			НайденнаяСтрока = РабочаяТаблица.Найти(5, "День");
    			Если НайденнаяСтрока = Неопределено Тогда			
    			Иначе
    				ТекущаяСтрока.Выручка = ТекущаяСтрока.Выручка+НайденнаяСтрока.Продано;
    			КонецЕсли;	
    		КонецЕсли;	
    
    ************************************************************  и так далее :)

    Почти 300 строк говнокода превращаются в 10 :D

    Для Инд = 1 По 31 Цикл
    Если ТекущаяСтрока["ПервыйЧасов" + Инд] > 0 Тогда
    ТекущаяСтрока.ИтогоЧасов = ТекущаяСтрока.ИтогоЧасов + ТекущаяСтрока["ПервыйЧасов" + Инд];

    НайденнаяСтрока = РабочаяТаблица.Найти(Инд, "День");
    Если НайденнаяСтрока <> Неопределено Тогда
    ТекущаяСтрока.Выручка = ТекущаяСтрока.Выручка+НайденнаяСтрока.Пр одано;
    КонецЕсли;
    КонецЕсли;
    КонецЦикла;

    VikUp, 12 Октября 2011

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

    −154

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    Мое решение является эффективным и уникальным.
    Решение задачи базируется на принципе двойственности.
    В первом стеке будем хранить сами числа, а во втором - результат XOR над ними.
    [] []
    push a ->[a] [a]
    push b -> [b a] [a^b a]
    pop -> b^(a^b) = a [a] [a]
    Однако после такого pop пропадает b.
    Как с этим бороться я расскажу через 24 часа.

    Задача о двух стеках. Поэтапное решение для повышения слюноотделения.

    alexoy, 10 Октября 2011

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

    −154

    1. 1
    2. 2
    Задача о двух стеках. Как продвигается решение?
    Через 2 часа будет рабочий вариант.

    alexoy, 09 Октября 2011

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

    −153

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    Итак, у вас есть два стека с ограничением на размер - N. Стеки поддерживают операции push, pop, top.
    pop пустого стека, как и push заполненного стека вызывает соответствующее исключение.
    Необходимо из этих двух стеков смоделировать стек с таким же размером, но с дополнительным свойством -\
    push заполненного стека вызывает затирание последнего элемента стека, push(41,[1,2,3]) -> [41,1,2] ,\
    где N=3.
    Время пошло. Язык программирования любой.

    Да, это не говнокод, но 90% кандидатов не могут ее решить. (Наверное, потому, что язык собеседования - 1С)

    alexoy, 08 Октября 2011

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

    −155

    1. 1
    2. 2
    3. 3
    4. 4
    Я подхожу к терминалу и включаю 1С.
    Сегодня пояснять ничего не надо.
    Не звенит "Поясните мысль"
    В желтом пламени гори, ненавижу, 1С!

    Накипело

    alexoy, 07 Октября 2011

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

    −136

    1. 1
    лев(документ.Дата,10)  //получает строку даты в виде "15.09.2011" :)))))))

    Сети предоставили свою печатную форму.

    Hatson, 07 Октября 2011

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