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

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
//Адрес Получателя
	СписокКому = Новый СписокЗначений;
    СписокОбъектов = Новый СписокЗначений;
	СписокОбъектов.Добавить(ОбъектОтправки);
	Для каждого СтрокаСпискаОбъектов Из СписокОбъектов Цикл
		Адрес = УправлениеЭлектроннойПочтой.ОпределитьАдресПолучателя(СтрокаСпискаОбъектов.Значение);
		СписокКому.Добавить(Адрес,Строка(СтрокаСпискаОбъектов.Значение));
    КонецЦикла;

	СтруктураНовогоПисьма.Вставить("Кому", СписокКому);

что автор хотел этим сделать?? написано с нуля, так как автор сказал, что немного подкорректировал конфигурацию и вот мне стало интересно... но увидев удивительные строки хотелось бы спросить сначала экспертов, а потом автора )))))

drhihi drhihi, (Updated )

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

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

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
  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
Функция ПолучитьЕдиницу(ТекЕдиница)
	Тек = Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию(ТекЕдиница.Наименование);
	Если Тек = Справочники.КлассификаторЕдиницИзмерения.ПустаяСсылка() Тогда
		Тек = Справочники.КлассификаторЕдиницИзмерения.СоздатьЭлемент();
		Тек.Наименование = ТекЕдиница.Наименование;
		Тек.НаименованиеПолное = ТекЕдиница.Наименование;
		СтроковыйКод = "001";
		Запрос = Новый Запрос;
		Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1
		               |	КлассификаторСтранМира.Код КАК Код
		               |ИЗ
		               |	Справочник.КлассификаторСтранМира КАК КлассификаторСтранМира
		               |
		               |УПОРЯДОЧИТЬ ПО
		               |	Код УБЫВ";
					   
					   Результат = Запрос.Выполнить().Выгрузить();
					   ЧисловойКод = Число(Результат[0].Код) + 1;
					   Если ЧисловойКод < 10 Тогда
						   СтроковыйКод = "00"+ЧисловойКод
					   ИначеЕсли ЧисловойКод < 100 Тогда
						   СтроковыйКод = "0"+ЧисловойКод
					   Иначе
						   СтроковыйКод = ""+ЧисловойКод
					   КонецЕсли;
					   
		Тек.Код = СтроковыйКод;
		
		Попытка
			Тек.Записать();
		Исключение
			ЕстьОшибка = Истина;
			Сообщить("Не могу записать единицу измерения "+ТекЕдиница.Наименование+" !");
			Сообщить(ОписаниеОшибки());
			Возврат "";
		КонецПопытки;
	КонецЕсли;
	Если Тек = Справочники.КлассификаторЕдиницИзмерения.ПустаяСсылка() Тогда
		ЕстьОшибка = Истина;
		Возврат "";
	Иначе
		Возврат Тек;
	КонецЕсли;
КонецФункции

Получила в наследство от команды разработчиков во главе с неким Леонидом. Порадовало формирование кода для нового элемента классификатора единиц измерения. И правда, почему бы не поискать максимальный код в каком-нибудь неожиданном месте? А такое оригинальное формирование строки с лидирующими нулями просто убило до смерти.

Shapokljak Shapokljak, (Updated )

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

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

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
Функция ВыделитьАртикул(А) Экспорт
	Перем СтрВспом, Инд;
	
	Инд = 1;
	СтрВспом = "";
	
	Пока Инд <= СтрДлина(А) Цикл
		Если (Сред(А,Инд,1)="0") ИЛИ (Сред(А,Инд,1)="1") ИЛИ
			 (Сред(А,Инд,1)="2") ИЛИ (Сред(А,Инд,1)="3") ИЛИ
			 (Сред(А,Инд,1)="4") ИЛИ (Сред(А,Инд,1)="5") ИЛИ
			 (Сред(А,Инд,1)="6") ИЛИ (Сред(А,Инд,1)="7") ИЛИ
			 (Сред(А,Инд,1)="8") ИЛИ (Сред(А,Инд,1)="9") ИЛИ 
			 (Сред(А,Инд,1)="/") ИЛИ (Сред(А,Инд,1)="-") Тогда
			СтрВспом = СтрВспом + Сред(А, Инд, 1);
			Инд = Инд + 1;
		Иначе
			Прервать;
		КонецЕсли;
	КонецЦикла;
	Возврат СтрВспом;
КонецФункции

Нашел у клиента, когда рефакорил код конфы. Страшно подумать, если придется выделять еще с десяток символов...

YouAreEmpty YouAreEmpty, (Updated )

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

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

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

По нормальному решается:

    Сотр = СоздатьОбъект("Справочник.Сотрудники");
    Сотр.ВыбратьЭлементы();
    Пока  (Сотр.ПолучитьЭлемент() = 1)  Цикл
      . . . 
    КонецЦикла

Досталось в наследство на основной работе, самописная конфа на 7.7,
как выяснилось этот участок кода писала 50-ти летняя женщина-программист

adammartin adammartin, (Updated )

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

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

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
Говно = 0;
		ТекущийДокумент.ВыбратьСтроки();
		Пока ТекущийДокумент.ПолучитьСтроку() = 1 Цикл
			Если (ТекущийДокумент.ДатаПоставкиЭА < ТекущаяДата()) и (ПустоеЗначение(ТекущийДокумент.ДатаПоставкиЭА) = 0) и (ТекущийДокумент.Аннулирован = 0) и (ТекущийДокумент.Аннулирована = 0) Тогда
				Если (ТекущийДокумент.СостояниеСтрокиЗаказа = Перечисление.СостояниеЗаказа.Сделан) или (ПустоеЗначение(ТекущийДокумент.СостояниеСтрокиЗаказа) = 1) Тогда
					Говно = 1;
					Прервать;
				КонецЕсли;
			КонецЕсли;
		КонецЦикла;
		Если Говно = 1 Тогда
			Возврат "FONT["+ПолучитьЦвет(0,0,0)+"] BRUSH["+ПолучитьЦвет(128,128,0)+"]";		
		КонецЕсли;

Код окрашивает строку в цвет говна:)
К коду претензий не имею, но говно-код получается.

Unknown181538 Unknown181538, (Updated )

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

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

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

Отбор в запросе ин_Кодификатор = &ин_Кодификатор.
Потом идет проверка Выборка.Ссылка.ин_Кодификатор <> Кодификатор

s-in-m s-in-m, (Updated )

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

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

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
Функция ПолучитьОстаток(ДанныеСтроки)

	Запрос = Новый Запрос("ВЫБРАТЬ
	                       |	ПартииТоваровНаСкладахОстатки.КоличествоОстаток
	                       |ИЗ
	                       |	РегистрНакопления.ПартииТоваровНаСкладах.Остатки КАК ПартииТоваровНаСкладахОстатки
	                       |ГДЕ
	                       |	ПартииТоваровНаСкладахОстатки.СерияНоменклатуры = &Серия");
	Запрос.УстановитьПараметр("Серия", ДанныеСтроки.Ссылка);

	РезультатЗапроса = Запрос.Выполнить().Выбрать();

	СерияНоменклатуры = ДанныеСтроки.Ссылка.ПолучитьОбъект();

	Если РезультатЗапроса.Следующий() тогда
		 СерияНоменклатуры.Остаток = РезультатЗапроса.КоличествоОстаток;
	Иначе
		 СерияНоменклатуры.Остаток = 0;
	КонецЕсли;

	СерияНоменклатуры.Записать(); 	 

КонецФункции

Процедура СправочникСписокПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)

	ПолучитьОстаток(ДанныеСтроки);
	
КонецПроцедуры // СправочникСписокПриВыводеСтроки()

Задача была - при выборе серии номенклатуры подтягивать в форму выбора остатки на складе...

Kirmas Kirmas, (Updated )

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

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

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
РегламентированнаяОтчетность.ПередОткрытиемФормыРегламентированногоОтчета(ЭтаФорма, Отказ);
////Вызывается перед открытием, а потом видим:

Процедура ПередОткрытиемФормыРегламентированногоОтчета(Форма, Отказ) Экспорт
	
	Отказ = Ложь;
	
КонецПроцедуры

Windtalkers Windtalkers, (Updated )

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

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

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
Процедура ЗаполнитьНажатие(Элемент)	
	Если Период_планирования="" или Структурное_подразделение.Пустая() или Плановая_потребность_в_кадрах.Пустая() или Начальник_ППО.Пустая() или Начальник_отдела_кадров.Пустая() тогда
	ks = Новый COMОбъект ("WScript.Shell");
	ks.popup("Заполните все необходимые риквизиты верхней части!", 1, "Внимание", 64); 
	Возврат;
конецесли;

Из студенческих работ :)

r3nya r3nya, (Updated )

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