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

    −165

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

    Прям классика жанра) Запрос в цикле, и условие к виртуальной таблице регистра сведений)

    adc5, 13 Июня 2014

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

    −127

    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
    Function Розница()
    	If Покупатель.Выбран() = 1 Then
    		If Покупатель.Вид() = "ПунктДоставки" Then
    			If Покупатель.Владелец.ТипЦенОтгрузки = Enum.ТипыОтпускныхЦен.Розничные Then
    				Return 1;
    			Else
    				Return 0;
    			EndIf;
    		Else
    			Return 0;
    		EndIf;
    	Else
    		Return 0;
    	EndIf;
    EndFunction

    Сегодня наткнулся на такой вот кусок кода

    TekhnoLife, 10 Июня 2014

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

    −130

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    Запрос.Текст = "
    |...
    | И УслугиОказанные.Проведен = &Истина
    |...";
    Запрос.УстановитьПараметр("Истина", Истина);

    Вот как бывает когда людям платят за количество строк.
    Коллега нашёл в отчёте из БГУ 1.0.

    Voittamaton, 04 Июня 2014

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

    −125

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    Процедура ПриОткрытии()
    	Если ЭтоНовый() И НЕ РольДоступна("СуперАдмин") Тогда
                  ЭтаФорма.Закрыть();
    	      Возврат;
    	КонецЕсли;
    КонецПроцедуры

    УТ 10.3. Такие перлы добавлены почти во все документы конфигурации

    105_306330_ru, 28 Мая 2014

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

    −123

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    ИначеЕсли  Отправитель = "h*@**k.ua" Тогда
      НовыйДокумент.Услуга   = Справочники.Услуги.НайтиПоКоду("0000000029");
     ИначеЕсли  Отправитель = "*******@**k.ua" Тогда
      НовыйДокумент.Услуга   = Справочники.Услуги.НайтиПоКоду("0000000029");
      НовыйДокумент.Ответственный = Справочники.Сотрудники.НайтиПоКоду("0000000063");
     КонецЕсли;

    alexinzaz, 23 Мая 2014

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

    −132

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    Выборка = Запрос.Выполнить().Выбрать();
    Если Выборка.Следующий() И Выборка.Количество() > 0 Тогда
    	Возврат Выборка.ПлощадьДома;
    Иначе
    	Возврат 0;
    КонецЕсли;

    проверка пустая ли выборка по одному из принципов:
    "больше лучше, чем меньше", "доверяй, но проверяй", "семь раз отмерь, один отрежь"

    Olna, 21 Мая 2014

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

    −126

    1. 1
    2. 2
    3. 3
    4. 4
    Запрос = Новый Запрос("
    |ВЫБРАТЬ ПЕРВЫЕ 1000
    |.....");
    ВыборкаДанных = Запрос.Выполнить().Выгрузить();

    Код из правила выгрузки данных с произвольным запросом.
    Ведущий программист: "Блин, почему каждый раз выгружается разное количество объектов? Это же мистика!!!"

    Voittamaton, 06 Мая 2014

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

    −166

    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
    Функция ЭтоБуква(Буква)
                    Возврат Найти("еоатинркулмДСвПдОсКцчыгзпбТНИьБФхВяРАЗЭйУЕГМЦжщЙШЩЫЛЯЧЬХЪЖЮЁёшъфэюQWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm", Буква) > 0;
    КонецФункции
     
    Функция ЭтоЦифра(Буква)
     
                    Возврат Найти("1234567890", Буква)>0;
     
    КонецФункции // ЭтоЦифра()
     
    Функция ЭтоБукваИлиЦифра(Символ)
     
                    Возврат Найти("еоатинркулмДСвПдОсКцчыгзпбТНИьБФхВяРАЗЭйУЕГМЦжщЙШЩЫЛЯЧЬХЪЖЮЁёшъфэюQWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm1234567890", Символ) > 0;
     
    КонецФункции // ЭтоБукваИлиЦифра()

    Из типовой конфигурации БГУ 2.0.
    На первый взгляд реализация забавна :-) Но, в общем-то, это не является говнокодом: просмотрев в гугле различные "рейтинги букв", получил примерно то же самое.
    Тем не менее, можно решить вопрос с помощью проверки кода символа.

    Voittamaton, 01 Мая 2014

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

    −162

    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
    Процедура ОбождатьПятьСекунд()
    	
    	Время1 = ТекущаяДата();
    	Пока ТекущаяДата() <= Время1 + 5 Цикл
    	КонецЦикла;
    	
    КонецПроцедуры
    
    Процедура ОбождатьМенуту()
    	
    	Н = 1;
    	Пока Н <= 12 Цикл
    		ОбождатьПятьСекунд();
    		Н = Н + 1;
    	КонецЦикла;
    	
    КонецПроцедуры
    
    Процедуры ВыгрузитьВСайт(КоличествоМенут)
    	
    	Н = 1;
    	Пока Н <= КоличествоМенут Цикл
    		ОбождатьМенуту();
    		Н = Н + 1;
    	КонецЦикла;
    	
    	СформероватьОправитьХМЛ();
    	
    КонецПроцедуры

    В пятницу на собеседование пришёл программист.
    Задание было следующим: по определённым правилам сформировать XML-файл для выгрузки в интернет-кабинет. Выгрузка должна была производиться с определённой периодичностью. В клиент-серверной версии нужно было создать регламентное задание.

    С заполнением XML-файла программист справился согласно требованиям.
    Но, к сожалению, парень не умел работать с регламентными заданиями, поэтому в качестве решения сделал внешнюю обработку с обработчиком ожидания, которая запускалась в отдельном сеансе.
    Орфография сохранена :-)

    Voittamaton, 12 Апреля 2014

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

    −163

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    ВЫБОР
      КОГДА ПеремещениеТоваровТовары.ЕдиницаИзмерения = ПеремещениеТоваровТовары.Номенклатура.ЕдиницаХраненияОстатков
       ТОГДА ПеремещениеТоваровТовары.Количество * ПеремещениеТоваровТовары.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент * ПеремещениеТоваровТовары.Номенклатура.бит_п_МассаНетто
      КОГДА ПеремещениеТоваровТовары.ЕдиницаИзмерения = ПеремещениеТоваровТовары.Номенклатура.ЕдиницаДляОтчетов
       ТОГДА ПеремещениеТоваровТовары.Количество * ПеремещениеТоваровТовары.Номенклатура.ЕдиницаДляОтчетов.Коэффициент * ПеремещениеТоваровТовары.Номенклатура.бит_п_МассаНетто
      КОГДА ПеремещениеТоваровТовары.ЕдиницаИзмерения = ПеремещениеТоваровТовары.Номенклатура.ЕдиницаИзмеренияМест
       ТОГДА ПеремещениеТоваровТовары.Количество * ПеремещениеТоваровТовары.Номенклатура.ЕдиницаИзмеренияМест.Коэффициент * ПеремещениеТоваровТовары.Номенклатура.бит_п_МассаНетто
      КОГДА ПеремещениеТоваровТовары.ЕдиницаИзмерения = ПеремещениеТоваровТовары.Номенклатура.бит_п_ЕдиницаПаллет
       ТОГДА ПеремещениеТоваровТовары.Количество * ПеремещениеТоваровТовары.Номенклатура.бит_п_ЕдиницаПаллет.Коэффициент * ПеремещениеТоваровТовары.Номенклатура.бит_п_МассаНетто
    КОНЕЦ

    iMoxa, 02 Апреля 2014

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