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

    −94

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    Для Каждого Ст Из ВремяФактическое Цикл
    	ВремяПрибытияНаЗагрузкуДляРасчета = ?(МаршрутыТаблица[Ст.НомерСтроки-1].ДатаПогрузкиПлан >= Ст.ВремяПрибытияНаЗагрузку,МаршрутыТаблица[Ст.НомерСтроки-1].ДатаПогрузкиПлан,Ст.ВремяПрибытияНаЗагрузку);
    	ВремяПрибытияНаВыгрузкуДляРасчета = ?(?(ЗначениеЗаполнено(МаршрутыТаблица[Ст.НомерСтроки-1].ДатаРазгрузкиПлан),МаршрутыТаблица[Ст.НомерСтроки-1].ДатаРазгрузкиПлан,Ст.ВремяПрибытияНаВыгрузку) >= Ст.ВремяПрибытияНаВыгрузку,?(ЗначениеЗаполнено(МаршрутыТаблица[Ст.НомерСтроки-1].ДатаРазгрузкиПлан),МаршрутыТаблица[Ст.НомерСтроки-1].ДатаРазгрузкиПлан,Ст.ВремяПрибытияНаВыгрузку),Ст.ВремяПрибытияНаВыгрузку);
    	ВремяНаПогрузке = -1*(ВремяПрибытияНаЗагрузкуДляРасчета - Ст.ВремяУбытияСЗагрузки)/60;//В минутах
    	ВремяНаВыгрузке = -1*(ВремяПрибытияНаВыгрузкуДляРасчета - Ст.ВремяУбытияСВыгрузки)/60;//В минутах
    	ОбщееВремя.Добавить(ВремяНаПогрузке+ВремяНаВыгрузке);
    КонецЦикла;

    Когда любишь тернарные операторы больше чем маму и президента.

    HomoAlbus, 13 Марта 2016

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

    −89

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    КолЯ=	ЦЕЛ(колБутДлчЯщ/20) ;
    колЯщ=колЯЩ+ КолЯ;
    если колЯ< колБутДлчЯщ/20 Тогда
    	колЯщ=  колЯщ+1;
    конецЕсли;

    Что будет, если пустить в конфигуратор беременную женщину? В коде окажется Коля.

    onden, 09 Марта 2016

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

    −99

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    Функция ЭтоКолбаса(НомерЗаказа) Экспорт
    	Результ = Ложь;
    	Если (НомерЗаказа <= 99999) ИЛИ ((НомерЗаказа > 999999) и ((Цел(НомерЗаказа/10000) - Цел(НомерЗаказа/100000)*10) = 2)) Тогда
    		Результ = Истина;
    	КонецЕсли;
    	Возврат Результ;	   
    КонецФункции

    Так... чисто поржать)

    levxxx, 02 Марта 2016

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

    −99

    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
    КолонкаTMCID=ТаблицаСЗаказ.колонки.TMCID;
    	КолонкаTMCID.ТекстШапки				= "№ тов.";
    	КолонкаTMCID.толькоПросмотр			= Истина;
    	КолонкаTMCID.Ширина					= Окр(ШиринаТаблицы * 0.08, 0);
    	
    	КолонкаType=ТаблицаСЗаказ.колонки.Type;
    	КолонкаType.ТекстШапки				= "Тип этикетки";
    	КолонкаType.толькоПросмотр			= Истина;
    	КолонкаType.Ширина					= Окр(ШиринаТаблицы * 0.08, 0);
    	
    	КолонкаName=ТаблицаСЗаказ.колонки.Name;
    	КолонкаName.ТекстШапки				= "Наименование";
    	КолонкаName.толькоПросмотр			= Истина;
    	КолонкаName.Ширина					= Окр(ШиринаТаблицы * 0.3, 0);
    	
    	КолонкаКод=ТаблицаСЗаказ.колонки.Kod_et;
    	КолонкаКод.ТекстШапки				= "Код этикетки";
    	КолонкаКод.толькоПросмотр			= Истина;
    	КолонкаКод.Ширина					= Окр(ШиринаТаблицы * 0.08, 0);
    		
    	//КолонкаSpecif=ТаблицаСЗаказ.колонки.Specif;
    	//КолонкаSpecif.ТекстШапки			= "Спецификация заказа";
    	//КолонкаSpecif.толькоПросмотр		= Истина;
    	//КолонкаSpecif.Ширина				= Окр(ШиринаТаблицы * 0.11, 0);
    	
    	КолонкаUnit=ТаблицаСЗаказ.колонки.Unit;
    	КолонкаUnit.ТекстШапки				= "Ед.изм";
    	КолонкаUnit.толькоПросмотр			= Истина;
    	КолонкаUnit.Ширина					= Окр(ШиринаТаблицы * 0.08, 0);
    	
    	КолонкаГород = ТаблицаСЗаказ.колонки.НаправлениеНамоткиГород;
    	КолонкаГород.ТекстШапки				= "Город";
    	КолонкаГород.толькоПросмотр			= Истина;
    	КолонкаГород.Ширина					= Окр(ШиринаТаблицы * 0.12, 0);
    	
    	КолонкаАдрес = ТаблицаСЗаказ.Колонки.АдресДоставки;
    	КолонкаАдрес.ТекстШапки				= "Адрес Доставки";
    	КолонкаАдрес.толькоПросмотр			= Истина;
    	КолонкаАдрес.Ширина					= Окр(ШиринаТаблицы * 0.12, 0);

    Ну вот не в падлу людям такой код писать... Подумаешь +-10 ненужных переменных. Какой-там нахрен рефакторинг?! Делать больше нечего рефакторингом всяким занниматься. Про повторное использование кода слышали? Так вот взяли код, скопировали, вставили - там самым повторно использовали. Горите в аду, копипастеры!

    levxxx, 02 Марта 2016

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

    −97

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    tmpDt = ДобавитьМесяц(СсылкаНаОбъект.Дата, -3);
    Если Месяц(СсылкаНаОбъект.Дата)<4 Тогда
    	txt = "Д.в. "+Месяц(tmpDt)+"/"+Год(tmpDt)+"-"+ "0"+Месяц(СсылкаНаОбъект.Дата)+"/"+Формат(Год(СсылкаНаОбъект.Дата),"ЧГ=0");
    Иначе
    	Если Месяц(СсылкаНаОбъект.Дата)<10 Тогда
    		txt="Д.в. "+"0"+Месяц(tmpDt)+"-"+"0"+Месяц(СсылкаНаОбъект.Дата)+"/"+Формат(Год(СсылкаНаОбъект.Дата),"ЧГ=0");
    	Иначе    
    		txt="Д.в. "+"0"+Месяц(tmpDt)+"-"+Месяц(СсылкаНаОбъект.Дата)+"/"+Формат(Год(СсылкаНаОбъект.Дата),"ЧГ=0");
    	КонецЕсли;
    КонецЕсли;

    Неумение пользоваться форматной строкой приводит к перлам наподобие "если месяц меньше 10, то добавить к месяцу нолик слева".
    Это не считая разборки в числа и сборки назад в строку.

    WildSery, 01 Марта 2016

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

    −98

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

    Реализация ограничения прав на установку прав для пользователей ИБ.

    CMblCL, 25 Февраля 2016

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

    −96

    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; ВПутиУжеЗаказано=0;Остаток=0;Резерв=0;
    	
    	Для Каждого ВыбСклад из СписокСкладов Цикл
    		Скл=Справочники.Склады.НайтиПоНаименованию(СокрЛП(ВыбСклад.Ссылка.Наименование));
    		СтруктураОтбора = Новый Структура(); // для отбора остатков взаиморасчетов
    		СтруктураОтбора.Вставить("Номенклатура", Номенклатура);
    		СтруктураОтбора.Вставить("Склад", Скл);
    		Остаток =Остаток+ РегистрыНакопления.ТоварыНаСкладах.Остатки(КонецДня(КонДата),
    		СтруктураОтбора,"Номенклатура,Склад","Количество").Итог("Количество");
    		Резерв = Резерв+РегистрыНакопления.ТоварыВРезервеНаСкладах.Остатки(КонецДня(КонДата),
    		СтруктураОтбора,"Номенклатура,Склад","Количество").Итог("Количество");
    	КонецЦикла;
    		
    	СтрокаЗапаса=СокрЛП(Остаток);
    	СтрокаЗапаса=СтрЗаменить(СтрокаЗапаса," ","");
    	Запас=?(СтрокаЗапаса="",0,Число(СтрокаЗапаса));

    Лихие манипуляции со стоками. Следите за руками!

    saturn5, 24 Февраля 2016

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

    −95

    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
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    92. 92
    93. 93
    94. 94
    95. 95
    96. 96
    97. 97
    Запрос = Новый Запрос;
    	Запрос.Текст = 
    	 "текст запроса не важен...";
    	Запрос.УстановитьПараметр("Заказ", Заказ);
    	Выборка = Запрос.Выполнить().Выбрать();
    	Пока Выборка.Следующий() Цикл
    		Если Выборка.Версия = 0 Тогда 
    			Версия = "0";
    		Иначе
    			Версия = Выборка.Версия;
    		КонецЕсли;
    		ИмяФайла = "\\eskoautomation\HotFolders\zakaz\" +Выборка.НомерЗаказа+"_"+Версия+".xml";
    		Файл = Новый ЗаписьXML;
    		Файл.ОткрытьФайл(ИмяФайла);
    		Файл.ЗаписатьНачалоЭлемента("Главный");
    			Файл.ЗаписатьНачалоЭлемента("НомерЗаказа");
    			ЗаписатьXML(Файл,Выборка.НомерЗаказа);
    			Файл.ЗаписатьКонецЭлемента();
    			Файл.ЗаписатьНачалоЭлемента("Версия");
    			ЗаписатьXML(Файл,Выборка.Версия);
    			Файл.ЗаписатьКонецЭлемента();
    			Файл.ЗаписатьНачалоЭлемента("Контрагент");
    			ЗаписатьXML(Файл,Выборка.Контрагент);
    			Файл.ЗаписатьКонецЭлемента();
    			Файл.ЗаписатьНачалоЭлемента("ТипЗаказа");
    			ЗаписатьXML(Файл,Выборка.ТипЗаказа);
    			Файл.ЗаписатьКонецЭлемента();
    			Файл.ЗаписатьНачалоЭлемента("ВидЗаказа");
    			ЗаписатьXML(Файл,Выборка.ВидЗаказа);
    			Файл.ЗаписатьКонецЭлемента();
    	        Файл.ЗаписатьНачалоЭлемента("ТипРЦ");
    			ЗаписатьXML(Файл,Выборка.ТипРЦ);
    			Файл.ЗаписатьКонецЭлемента();
    			РабочийЦентр = Выборка.РабочийЦентр;
    			Если Не ЗначениеЗаполнено(РабочийЦентр) Тогда
    				Отбор = Новый Структура;
    				Отбор.Вставить("НомерПроката", 1);
    				Отбор.Вставить("Номерварианта", Выборка.НомерВарианта);
    				строки = Выборка.Спецификация.ВидыРабот.НайтиСтроки(Отбор);
    				Если строки<>Неопределено Тогда 
    					РабочийЦентр = строки[0].рабочийЦентр.порядковыйномер;
    				КонецЕсли;
    			КонецЕсли;	
    	        Файл.ЗаписатьНачалоЭлемента("РабочийЦентр");
    			ЗаписатьXML(Файл,РабочийЦентр);
    			Файл.ЗаписатьКонецЭлемента();
    			Файл.ЗаписатьНачалоЭлемента("ОсновнойМатериал");
    			ЗаписатьXML(Файл,Выборка.ОсновнойМатериал);
    			Файл.ЗаписатьКонецЭлемента();
    			Файл.ЗаписатьНачалоЭлемента("Штамп");
    			ЗаписатьXML(Файл,Выборка.Штамп);
    			Файл.ЗаписатьКонецЭлемента();
    			Файл.ЗаписатьНачалоЭлемента("ЭтикетокНаЛисте");
    			ЗаписатьXML(Файл,Выборка.ЭтикетокНаЛисте);
    			Файл.ЗаписатьКонецЭлемента();
    			Файл.ЗаписатьНачалоЭлемента("Нарезка");
    			ЗаписатьXML(Файл,Выборка.Нарезка);
    			Файл.ЗаписатьКонецЭлемента();
    			Файл.ЗаписатьНачалоЭлемента("Ручьи");
    			ЗаписатьXML(Файл,Выборка.Ручьи);
    			Файл.ЗаписатьКонецЭлемента();
    			Файл.ЗаписатьНачалоЭлемента("Z");
    			ЗаписатьXML(Файл,Выборка.Z);
    			Файл.ЗаписатьКонецЭлемента();
    	        Файл.ЗаписатьНачалоЭлемента("ШагПечати");
    			ЗаписатьXML(Файл,Выборка.ШагПечати);
    			Файл.ЗаписатьКонецЭлемента();
    	        Файл.ЗаписатьНачалоЭлемента("ДлинаЭтикетки");
    			ЗаписатьXML(Файл,Выборка.ДлинаЭтикетки);
    			Файл.ЗаписатьКонецЭлемента();
    			Файл.ЗаписатьНачалоЭлемента("ШиринаЭтикетки");
    			ЗаписатьXML(Файл,Выборка.ШиринаЭтикетки);
    			Файл.ЗаписатьКонецЭлемента();
    			Файл.ЗаписатьНачалоЭлемента("ДлинаКонтрЭтикетки");
    			ЗаписатьXML(Файл,Выборка.ДлинаКонтрЭтикетки);
    			Файл.ЗаписатьКонецЭлемента();
    			Файл.ЗаписатьНачалоЭлемента("ДлинаКольеретки");
    			ЗаписатьXML(Файл,Выборка.ДлинаКольеретки);
    			Файл.ЗаписатьКонецЭлемента();
    			Файл.ЗаписатьНачалоЭлемента("ШиринаКонтрЭтикетки");
    			ЗаписатьXML(Файл,Выборка.ШиринаКонтрЭтикетки);
    			Файл.ЗаписатьКонецЭлемента();
    			Файл.ЗаписатьНачалоЭлемента("ШиринаКольеретки");
    			ЗаписатьXML(Файл,Выборка.ШиринаКольеретки);
    			Файл.ЗаписатьКонецЭлемента();
    			Файл.ЗаписатьНачалоЭлемента("ШиринаПоНожам");
    			ЗаписатьXML(Файл,Выборка.ШиринаПоНожам);
    			Файл.ЗаписатьКонецЭлемента();
    	        Файл.ЗаписатьНачалоЭлемента("ИнтервалМеждуРучьями");
    			ЗаписатьXML(Файл,Выборка.ИнтервалМеждуРучьями);
    			Файл.ЗаписатьКонецЭлемента();
    	        Файл.ЗаписатьНачалоЭлемента("ИнтервалМеждуЭтикетками");
    			ЗаписатьXML(Файл,Выборка.ИнтервалМеждуЭтикетками);
    			Файл.ЗаписатьКонецЭлемента();
    			Файл.ЗаписатьНачалоЭлемента("Комментарий");
    			ЗаписатьXML(Файл,Заказ.Комментарий);
    			Файл.ЗаписатьКонецЭлемента();

    А вот так мы выгружаем XML. Можно конечно было бы пройтись циклом по колонкам выборки или таблицы значений, но зачем?! Зачем, когда можно написать лишних 300 строчек. Я соду с ума.

    levxxx, 24 Февраля 2016

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

    −98

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

    Я допускаю, что это было написано в староглиняные времена, когда у РезультатЗапроса не было метода Выгрузить() но блин! Всей истории 1С я не знаю, и сомневаюсь, что такие времена когда-то были. А вообще что-то подсказывает что песатель просто не знал...

    levxxx, 24 Февраля 2016

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

    −99

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    Запрос.УстановитьПараметр("Бумага", Справочники.Номенклатура.НайтиПоКоду("g0000000012"));
    	Запрос.УстановитьПараметр("Пленка", Справочники.Номенклатура.НайтиПоКоду("g0000000382"));
    	Запрос.УстановитьПараметр("Тиснение", Справочники.Номенклатура.НайтиПоКоду("g0000000481"));
    	Запрос.УстановитьПараметр("Фольга", Справочники.Номенклатура.НайтиПоКоду("g0000000459"));
    	Запрос.УстановитьПараметр("Полуфабрикат", Справочники.Номенклатура.НайтиПоКоду("g0000001919"));
    	Запрос.УстановитьПараметр("Ламинация1", Справочники.Номенклатура.НайтиПоКоду("g0000000074"));
    	Запрос.УстановитьПараметр("Ламинация2", Справочники.Номенклатура.НайтиПоКоду("g0000001292"));

    Возможно стоило использовать предопределенные элементы? Или справочник виды номенклатуры? Или свойства и категории объектов? Или создать своё перечисление? ДА БЛИН ЧТО УГОДНО ТОЛЬКО НЕ ЭТО!!!

    levxxx, 24 Февраля 2016

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