Бухгалтерия / Говнокод #16157 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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 adc5, (Updated )

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

Бухгалтерия / Говнокод #16136 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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 TekhnoLife, (Updated )

Комментарии (17, +17)

Бухгалтерия / Говнокод #16108 Ссылка на оригинал

0

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

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

Voittamaton Voittamaton, (Updated )

Комментарии (4, +4)

Бухгалтерия / Говнокод #16068 Ссылка на оригинал

0

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

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

105_306330_ru 105_306330_ru, (Updated )

Комментарии (13, +13)

Бухгалтерия / Говнокод #16049 Ссылка на оригинал

0

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

alexinzaz alexinzaz, (Updated )

Комментарии (4, +4)

Бухгалтерия / Говнокод #16033 Ссылка на оригинал

0

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

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

Olna Olna, (Updated )

Комментарии (25, +25)

Бухгалтерия / Говнокод #15931 Ссылка на оригинал

0

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

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

Voittamaton Voittamaton, (Updated )

Комментарии (9, +9)

Бухгалтерия / Говнокод #15877 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
Функция ЭтоБуква(Буква)
                Возврат Найти("еоатинркулмДСвПдОсКцчыгзпбТНИьБФхВяРАЗЭйУЕГМЦжщЙШЩЫЛЯЧЬХЪЖЮЁёшъфэюQWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm", Буква) > 0;
КонецФункции
 
Функция ЭтоЦифра(Буква)
 
                Возврат Найти("1234567890", Буква)>0;
 
КонецФункции // ЭтоЦифра()
 
Функция ЭтоБукваИлиЦифра(Символ)
 
                Возврат Найти("еоатинркулмДСвПдОсКцчыгзпбТНИьБФхВяРАЗЭйУЕГМЦжщЙШЩЫЛЯЧЬХЪЖЮЁёшъфэюQWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm1234567890", Символ) > 0;
 
КонецФункции // ЭтоБукваИлиЦифра()

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

Voittamaton Voittamaton, (Updated )

Комментарии (21, +21)

Бухгалтерия / Говнокод #15740 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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 Voittamaton, (Updated )

Комментарии (31, +31)

Бухгалтерия / Говнокод #15648 Ссылка на оригинал

0

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

iMoxa iMoxa, (Updated )

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