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

    +4

    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
    &НаКлиенте
    Процедура Расчитать(Команда)
    	ТекДата = ТекущаяДата();
    	ТекМесяц = Месяц(ТекДата);
    	МесяцРождения = Месяц(ДатаРождения);
    
    	
    	Если ТекМесяц=МесяцРождения Тогда       //День рождения сегодня или в этом месяце,
    	    Если День(ТекДата)=День(ДатаРождения) Тогда
    		
    			КоличествоДнейДоДР = 0;
    		ИначеЕсли День(ТекДата)<День(ДатаРождения)  Тогда 
    			КоличествоДнейДоДР = День(ДатаРождения)-День(ТекДата);
    		Иначе
    			
    			
    		  КоличествоДнейДоДР = День(КонецМесяца(ТекДата))-День(ТекДата);
    		 Дата = ДобавитьМесяц(ТекДата,1);
    		 Ограничитель = (12-ТекМесяц)+МесяцРождения;
    		 Для сч=1 По Ограничитель Цикл
    			Если сч=Ограничитель Тогда			
    			    КоличествоДнейДоДР = КоличествоДнейДоДР+День(ДатаРождения);
    			    продолжить;			
    			КонецЕсли; 
    
    			КоличествоДнейДоДР = КоличествоДнейДоДР+День(КонецМесяца(Дата)) ;
    			 Дата = ДобавитьМесяц(Дата,1);
    		 	
    		 
    		 КонецЦикла; 
    		
    		КонецЕсли; 
    		
    	
    	ИначеЕсли ТекМесяц<МесяцРождения Тогда   //День рождения еще не наступил,
    		 КоличествоДнейДоДР = День(КонецМесяца(ТекДата))-День(ТекДата);
    		 Дата = ДобавитьМесяц(ТекДата,1);
    		 Для сч= ТекМесяц+1 По МесяцРождения Цикл
    			
                            Если сч=МесяцРождения Тогда
    			   КоличествоДнейДоДР = КоличествоДнейДоДР+День(ДатаРождения);
    			   продолжить;
    			КонецЕсли; 
    
    			КоличествоДнейДоДР = КоличествоДнейДоДР+День(КонецМесяца(Дата)) ;
    			 Дата = ДобавитьМесяц(Дата,1);
    		 	
    		 
    		 КонецЦикла; 
    		
    		
    	ИначеЕсли ТекМесяц>МесяцРождения Тогда     //День рождения уже прошел.	
    		     КоличествоДнейДоДР = День(КонецМесяца(ТекДата))-День(ТекДата);
    		 Дата = ДобавитьМесяц(ТекДата,1);
    		 Ограничитель = (12-ТекМесяц)+МесяцРождения;
    		 Для сч= 1 По Ограничитель Цикл
    
    			Если сч=Ограничитель Тогда
    			  КоличествоДнейДоДР = КоличествоДнейДоДР+День(ДатаРождения);
    			  продолжить;
    			КонецЕсли;
     
    			КоличествоДнейДоДР = КоличествоДнейДоДР+День(КонецМесяца(Дата)) ;
    			 Дата = ДобавитьМесяц(Дата,1);
    		 	
    		 
    		 КонецЦикла; 
    	
    	 КонецЕсли; 
    	 
    	 Сообщение = Новый СообщениеПользователю;
    	 Сообщение.Текст = КоличествоДнейДоДР;
    	 Сообщение.Сообщить(); 
    		
    	// Вставить содержимое обработчика.
    КонецПроцедуры

    Задача рассчитать количество дней до дня рождения, вопрос в том что не много ли я использовал условий Если?

    rusin_av, 16 Мая 2019

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

    0

    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].Номер;
    		ЭтаФорма.Элементы.Этап.Заголовок = Документы.ЭтапРемонт.НайтиПоНомеру(Ссыль);
    	КонецЕсли;

    Задача кода - установить текстовое представление документа в надписи на форме, для этого автор сначала получает номер требуемого документа, потом проверяет выборку на наличие записей, а потом по полученному номеру ищет ссылку методом НайтиПоНомеру.
    Говнокод в том, что:
    1. Ссылку можно получить сразу же в запросе
    2. Выгружать выборку в коллекцию значений нет никакой необходимости, можно всё необходимое взять из выборки, она для этого и предназначена.
    Автор - один из франей Абакана.

    VladC, 07 Мая 2019

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

    +2

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    Функция ПолучитьСтавкуНДС(СуммаСНДС, НДС)
    	Если НДС = 0  Тогда
    		Возврат Перечисления.СтавкиНДС.БезНДС;
    	ИначеЕсли СуммаСНДС = 0 Тогда //некорректные данные
    		Возврат Перечисления.СтавкиНДС.БезНДС;
    	ИначеЕсли НДС / СуммаСНДС <= 0.152+0.0152 и НДС / СуммаСНДС >= 0.152-0.0152 Тогда
    		Возврат Перечисления.СтавкиНДС.НДС18;
    	ИначеЕсли НДС / СуммаСНДС <= 0.091+0.0091 и НДС / СуммаСНДС >= 0.091-0.0091 Тогда
    		Возврат Перечисления.СтавкиНДС.НДС10;
    	КонецЕсли;
    КонецФункции

    Костыль костыльный

    sandvich, 24 Апреля 2019

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

    −1

    1. 1
    ЧисловойСимвол = ?(Найти("0123456789",СимволVIN)>0,Истина,Ложь);

    Проверка на то, является ли "СимволVIN" числом

    nytlenc, 17 Апреля 2019

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

    0

    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
    &НаСервере
    Процедура ЗаполнитьТовары()
    
    Объект.Товары.Загрузить(Товары.Выгрузить());
    
    КонецПроцедуры // ЗаполнитьТовары()
    
    
    &НаКлиенте
    Процедура КомандаЧО06ПлатежнаяКарта(Команда)
    
    	ЗаполнитьТовары();
    	ВыполнитьЧО06ПлатежнаяКарта();
    	Товары.Очистить();
    	Объект.Товары.Очистить();
    	Элементы.КнопкаСуммы.Заголовок = "";
    
    КонецПроцедуры

    kattushka, 03 Апреля 2019

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

    +2

    1. 1
    2. 2
    Если ЭтоКонецПрихода = 1 Тогда
    	ЭтоКонецПрихода = ЭтоКонецПрихода+1;

    1. Реальный код
    2. Переменная используется как логическая, 0 и 1

    homo, 02 Апреля 2019

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

    +2

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    Функция ПолучитьЗначениеПеременной(Имя) Экспорт	
    	ИмяПараметраВР = ВРег(Имя);	
    	НайденноеЗначение = Неопределено;	
    	Кэш = Неопределено;
    	ПоместитьВКэш = Ложь;	
    	НайденноеЗначение = Неопределено;	
    	Если НайденноеЗначение = Неопределено Тогда
            //... 
            КонецЕсли;

    Типовая УПП, общий модуль "РаботаСОбщимиПеренменными". Интересно, а бывает ситуация когда после двух присвоений переменной значения, она все таки не неопределено

    FesenkoA, 25 Марта 2019

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

    0

    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
    Набор = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьНаборЗаписей();
    		Отбор = Набор.Отбор;
    		Отбор.Объект.Использование = Истина;
    		Отбор.Объект.ВидСравнения = ВидСравнения.Равно;
    		Отбор.Свойство.ВидСравнения = ВидСравнения.Равно;
    		Отбор.Объект.Значение = Грузополучатель;                
    		Отбор.Свойство.Значение = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("GLN").Ссылка;
    		Набор.Прочитать();
    		GLN_получ = "";
    		Если Набор.Количество() > 0 Тогда
    			Для нумер = 0 по Набор.Количество()-1 Цикл
    				Свво = Набор.Получить(нумер).Свойство;
    				Если СокрЛП(Свво.Наименование) = "GLN" Тогда
    					GLN_получ = Набор.Получить(нумер).Значение;
    				КонецЕсли;
    			КонецЦикла;
    		КонецЕсли;
    
    		ОбластьМакета.Параметры.GLN_получ       = GLN_получ;

    cdpoma, 22 Марта 2019

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

    0

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    СтраницыПанели = ЭтаФорма.ЭлементыФормы.ОсновнаяПанель.Страницы;
    Для Каждого Страница Bз СтраницыПанели Цикл
    	Если ПакетныйВводКонтрагентов = Истина Тогда
    		Если Страница.Имя = "стрКонтрагенты" Тогда
    			Страница.Доступность = Истина;
    		КонецЕсли;
    	КонецЕсли;
    КонецЦикла;

    kvvit74, 25 Февраля 2019

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

    +3

    1. 1
    Мес = ?(Месяц(ДатаДок) > 9 ,Строка(Месяц(ДатаДок)) ,"0"+ Строка(Месяц(ДатаДок)));

    Формат(ДатаДок, "ДФ=MM") придуман для неудачников!

    Migelek, 19 Февраля 2019

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