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

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
  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
ВыборкаДетальныеЗаписи = Результат.Выбрать();
	
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		Продукт=ВыборкаДетальныеЗаписи.Продукт;
		ЕдИзм=ВыборкаДетальныеЗаписи.ЕдИзмПродукта;
		Количество=ВыборкаДетальныеЗаписи.КолвоПродукта;
		Если Прав(ВыборкаДетальныеЗаписи.Продукт,6)="1/2 кг" ИЛИ 
			Прав(ВыборкаДетальныеЗаписи.Продукт,5)="1/2кг"  ИЛИ 
			Прав(ВыборкаДетальныеЗаписи.Продукт,6)="1\2 кг" ИЛИ
			Прав(ВыборкаДетальныеЗаписи.Продукт,5)="1\2кг"  ИЛИ 
			Прав(ВыборкаДетальныеЗаписи.Продукт,9)="(500  гр)"  ИЛИ 
			Прав(ВыборкаДетальныеЗаписи.Продукт,5)="0,5кг" ИЛИ 
			Прав(ВыборкаДетальныеЗаписи.Продукт,6)="(05кг)"   Тогда
			Цена=Цена+ВыборкаДетальныеЗаписи.ЦенаПродукта/2;
			
		ИначеЕсли Прав(ВыборкаДетальныеЗаписи.Продукт,7)="1/2,5кг"  ИЛИ 
			Прав(ВыборкаДетальныеЗаписи.Продукт,8)="(250 гр)" ИЛИ 
			Прав(ВыборкаДетальныеЗаписи.Продукт,9)="(0,25 кг)" ИЛИ
			Прав(ВыборкаДетальныеЗаписи.Продукт,6)="0,25кг"   Тогда
			Цена=Цена+ВыборкаДетальныеЗаписи.ЦенаПродукта*0.25;
		ИначеЕсли Прав(ВыборкаДетальныеЗаписи.Продукт,6)="1/4кг." ИЛИ 
			Прав(ВыборкаДетальныеЗаписи.Продукт,5)="1/4кг"   ИЛИ 
			Прав(ВыборкаДетальныеЗаписи.Продукт,6)="1/4 кг"  ИЛИ 
			Прав(ВыборкаДетальныеЗаписи.Продукт,7)="1/4 кг."  ИЛИ 
			Прав(ВыборкаДетальныеЗаписи.Продукт,5)="0,4кг"  ИЛИ 
			Прав(ВыборкаДетальныеЗаписи.Продукт,3)="1/4"   Тогда
			Цена=Цена+ВыборкаДетальныеЗаписи.ЦенаПродукта*0.4;
		ИначеЕсли Прав(ВыборкаДетальныеЗаписи.Продукт,8)="0,085 кг"  ИЛИ 
			Прав(ВыборкаДетальныеЗаписи.Продукт,9)="(0,085кг)"   Тогда
			Цена=Цена+ВыборкаДетальныеЗаписи.ЦенаПродукта*0.085;
		ИначеЕсли Прав(ВыборкаДетальныеЗаписи.Продукт,5)="0,7кг"  Тогда
			Цена=Цена+ВыборкаДетальныеЗаписи.ЦенаПродукта*0.7;
		ИначеЕсли Прав(ВыборкаДетальныеЗаписи.Продукт,8)="(100 гр)"  Тогда
	        Цена=Цена+ВыборкаДетальныеЗаписи.ЦенаПродукта*0.1;
		ИначеЕсли Прав(ВыборкаДетальныеЗаписи.Продукт,8)="(350 гр)"  ИЛИ
			Прав(ВыборкаДетальныеЗаписи.Продукт,6)="350гр."  ИЛИ 
			Прав(ВыборкаДетальныеЗаписи.Продукт,6)="0,35кг"  ИЛИ 
			 Прав(ВыборкаДетальныеЗаписи.Продукт,7)="0,35 кг" Тогда
 	        Цена=Цена+ВыборкаДетальныеЗаписи.ЦенаПродукта*0.35;
		ИначеЕсли Прав(ВыборкаДетальныеЗаписи.Продукт,8)="(450 гр)" ИЛИ
			Прав(ВыборкаДетальныеЗаписи.Продукт,9)="(0,45 кг)" ИЛИ 
			Прав(ВыборкаДетальныеЗаписи.Продукт,6)="0,45кг"  Тогда
            Цена=Цена+ВыборкаДетальныеЗаписи.ЦенаПродукта*0.45;
		ИначеЕсли Прав(ВыборкаДетальныеЗаписи.Продукт,5)="1/3кг"  ИЛИ 
			Прав(ВыборкаДетальныеЗаписи.Продукт,8)="(0,3 кг)" ИЛИ
			Прав(ВыборкаДетальныеЗаписи.Продукт,5)="0,3кг"   Тогда
		    Цена=Цена+ВыборкаДетальныеЗаписи.ЦенаПродукта*0.3;
		ИначеЕсли Прав(ВыборкаДетальныеЗаписи.Продукт,8)="1\1,8 кг" ИЛИ 
			Прав(ВыборкаДетальныеЗаписи.Продукт,8)="(0,18кг)"   Тогда
			Цена=Цена+ВыборкаДетальныеЗаписи.ЦенаПродукта*0.18;
		ИначеЕсли  Прав(ВыборкаДетальныеЗаписи.Продукт,8)="1/1,5 кг" Тогда
			Цена=Цена+ВыборкаДетальныеЗаписи.ЦенаПродукта*0.15;
		ИначеЕсли Прав(ВыборкаДетальныеЗаписи.Продукт,8)="(0,12кг)" Тогда 
			Цена=Цена+ВыборкаДетальныеЗаписи.ЦенаПродукта*0.12;
		ИначеЕсли Прав(ВыборкаДетальныеЗаписи.Продукт,7)="0,08 кг" Тогда 
			Цена=Цена+ВыборкаДетальныеЗаписи.ЦенаПродукта*0.08;
		ИначеЕсли Прав(ВыборкаДетальныеЗаписи.Продукт,7)="0,075кг" Тогда 
			Цена=Цена+ВыборкаДетальныеЗаписи.ЦенаПродукта*0.75;
		ИначеЕсли  Прав(ВыборкаДетальныеЗаписи.Продукт,6)="0,03кг" Тогда
			Цена=Цена+ВыборкаДетальныеЗаписи.ЦенаПродукта*0.03;
		ИначеЕсли  Прав(ВыборкаДетальныеЗаписи.Продукт,6)="0,23кг" Тогда
			Цена=Цена+ВыборкаДетальныеЗаписи.ЦенаПродукта*0.23;
	
		Иначе
			Цена=Цена+ВыборкаДетальныеЗаписи.ЦенаПродукта;
		КонецЕсли;
		
	КонецЦикла;

Отчет почему-то не всегда работал :)

Запостил: sipkin sipkin, (Updated )

Комментарии (12) RSS

  • Хорошо им, вся номенклатура весовая шестнадцати видов. Хотя, судя по обилию вариантов из точек и пробелов, автор реально не заморачивался, а тупо добавлял все варианты, на которые ругалось. Можно же, в принципе, разработать более-менее универсальный парсер этих килограммов чёртовых, хоть и не так просто. Иногда мне кажется, что стандартная подсистема (не будем сейчас про недокостыли и расширения) должна быть адекватной и с нормальной текстовой/синтаксической обработкой. Наличие регекспов - минимальное требование. Нет - система говно.
    Но я знаю людей, которые умудрялись камменты к платёжкам парсить в чистом скуеле хитрым способом. Достойно отдельного говнокода.
    Ответить
  • Основной прикол говнокода в том, что в этой конфиге для веса отдельный реквизит есть. Я секунд 10 был в шоковом состоянии без движения, пытаясь представить лицо программера в момент написания этого чуда 🙂 Первая моя фраза после и вслух: "да ну нахрен..."
    Ответить
    • Реквизит может и быть, только заполнять его обычно всем лень. А наименование - вот оно.
      Особо выдающиеся работники торговли ленятся заводить новую позицию, потому берут какую-нибудь существующую, по которой давно движений не было и тупо переименовывают. Исправят штрих-код и артикул, если есть, а на остальные параметры пох. Так что человеческий фактор - ого-го.
      Ответить
      • Мне этот говнокод не потребовался, но если надо было бы, то для заполнения этого самого реквизита он вполне подходит 🙂 А то что осталось -- ручками. Так что самый говнокодный говнокод зачастую получше любой самой крутой обработки ))
        Ответить
    • Элементарно же. Куда солдата1с ни целуй - везде жопа. А оттуда хорошего не вылезало ничего, на моей памяти.
      Ответить
  • Автор - гений математики или я что-то не понимаю? Или это торгаши?
    1/2,5 кг = 0,25 кг
    1/4 кг = 0,4 кг
    Ответить
    • Это гений математики для торгашей 🙂
      А у вас намётанный глаз. Моё шоковое состояние не позволило проанализировать данный генокод так глубоко 🙂
      Ответить
  • Аффтар хотел учесть все варианты забивки. Но он не учёл, что юзер всегда придумает новый, например забьёт с ошибкой не "0,5кг", а "0.5 кг." или "1/2 килогр." или ещё шедевральнее "1/2 кг" - вроде такой вариант есть, но вместо пробела ухитрится скопировать знак табуляции из Word -а. И амбец, 1с сохранит это, а потом проит выгрузке в xml - обломит
    Ответить
    • Тогда Аффтар сядет и допишет этот новый вариант в код. Видимо так и родился этот ужас.
      Ответить

Добавить комментарий

Где здесь C++, guest?!

    А не использовать ли нам bbcode?


    8