Кресты / Говнокод #9726 Ссылка на оригинал

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
  69. 69
  70. 70
  71. 71
  72. 72
  73. 73
  74. 74
  75. 75
  76. 76
  77. 77
  78. 78
Для Каждого ТекСтрокаТовары Из ЭтотОбъект.Товары Цикл
		
      //Товары в резерве на складах
      Если ЗначениеЗаполнено(ЭтотОбъект.ЗаказПокупателя) Тогда

        ЗапросРезерв = Новый Запрос;
        ЗапросРезерв.УстановитьПараметр("Период", КонецДня(ЭтотОбъект.Дата));
        ЗапросРезерв.УстановитьПараметр("Склад", ЭтотОбъект.Склад);
        ЗапросРезерв.УстановитьПараметр("Номенклатура", ТекСтрокаТовары.Номенклатура);
	ЗапросРезерв.УстановитьПараметр("Цвет", ТекСтрокаТовары.Цвет);
	ЗапросРезерв.УстановитьПараметр("Регистратор", ЭтотОбъект.ЗаказПокупателя.Ссылка);
	ЗапросРезерв.Текст = "ВЫБРАТЬ
	|	ТоварыВРезервеНаСкладах.Номенклатура,
	|	isnull(ТоварыВРезервеНаСкладах.Количество, 0) КАК Количество,
	|	isnull(ТоварыВРезервеНаСкладах.Размер42, 0) КАК Размер42,
	|	isnull(ТоварыВРезервеНаСкладах.Размер44, 0) КАК Размер44,
	|	isnull(ТоварыВРезервеНаСкладах.Размер46, 0) КАК Размер46,
	|	isnull(ТоварыВРезервеНаСкладах.Размер48, 0) КАК Размер48,
	|	isnull(ТоварыВРезервеНаСкладах.Размер50, 0) КАК Размер50,
	|	isnull(ТоварыВРезервеНаСкладах.Размер52, 0) КАК Размер52,
	|	isnull(ТоварыВРезервеНаСкладах.Размер54, 0) КАК Размер54,
	|	isnull(ТоварыВРезервеНаСкладах.Размер56, 0) КАК Размер56,
	|	isnull(ТоварыВРезервеНаСкладах.Размер58, 0) КАК Размер58,
	|	isnull(ТоварыВРезервеНаСкладах.Размер60, 0) КАК Размер60
	|ИЗ
	|	РегистрНакопления.ТоварыВРезервеНаСкладах КАК ТоварыВРезервеНаСкладах
	|ГДЕ
	|	ТоварыВРезервеНаСкладах.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
	|	ТоварыВРезервеНаСкладах.Период <= &Период
	|	И ТоварыВРезервеНаСкладах.Регистратор = &Регистратор
	|	И ТоварыВРезервеНаСкладах.Склад = &Склад
	|	И ТоварыВРезервеНаСкладах.Номенклатура = &Номенклатура
	|	И ТоварыВРезервеНаСкладах.Цвет = &Цвет";
	ТЗРезерв = ЗапросРезерв.Выполнить().Выгрузить();
			
	Если ЗапросРезерв.Выполнить().Пустой() = Истина Тогда
	Иначе
		ЗапросСнятие = Новый Запрос;
		ЗапросСнятие.УстановитьПараметр("Период", КонецДня(ЭтотОбъект.Дата));
		ЗапросСнятие.УстановитьПараметр("Склад", ЭтотОбъект.Склад);
		ЗапросСнятие.УстановитьПараметр("Номенклатура", ТекСтрокаТовары.Номенклатура);
		ЗапросСнятие.УстановитьПараметр("Цвет", ТекСтрокаТовары.Цвет);
		ЗапросСнятие.УстановитьПараметр("ДокументРезерва", ЭтотОбъект.ЗаказПокупателя.Ссылка);
		ЗапросСнятие.Текст = "ВЫБРАТЬ
		|	ТоварыВРезервеНаСкладах.Номенклатура,
		|	isnull(ТоварыВРезервеНаСкладах.Количество, 0) КАК Количество,
		|	isnull(ТоварыВРезервеНаСкладах.Размер42, 0) КАК Размер42,
				.....
		|	isnull(ТоварыВРезервеНаСкладах.Размер60, 0) КАК Размер60			
		|ИЗ
		|	РегистрНакопления.ТоварыВРезервеНаСкладах КАК ТоварыВРезервеНаСкладах
		|ГДЕ
		|	ТоварыВРезервеНаСкладах.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
		|	И ТоварыВРезервеНаСкладах.ДокументРезерва = &ДокументРезерва
		|	И ТоварыВРезервеНаСкладах.Период = &Период
		|	И ТоварыВРезервеНаСкладах.Склад = &Склад
		|	И ТоварыВРезервеНаСкладах.Номенклатура = &Номенклатура
		|	И ТоварыВРезервеНаСкладах.Цвет = &Цвет";
		ТЗСнятие = ЗапросСнятие.Выполнить().Выгрузить();
				
		//Товары в резерве на складах
		Движение = Движения.ТоварыВРезервеНаСкладах.Добавить();
		Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
		Движение.Период = Дата;
		Движение.Склад = ЭтотОбъект.Склад; 
		Движение.Номенклатура = ТекСтрокаТовары.Номенклатура;
		Движение.ДокументРезерва = ЭтотОбъект.ЗаказПокупателя.Ссылка;
		Движение.Цвет = ТекСтрокаТовары.Цвет;
		//42
		Если ТЗРезерв.Итог("Размер42") - ТЗСнятие.Итог("Размер42") > 0 Тогда
			Если ТЗРезерв.Итог("Размер42") - ТЗСнятие.Итог("Размер42") > ТекСтрокаТовары.Количество Тогда
				Движение.Размер42 = ТекСтрокаТовары.Размер42;
			Иначе
				Движение.Размер42 = ТЗРезерв.Итог("Размер42") - ТЗСнятие.Итог("Размер42");
			КонецЕсли;
		КонецЕсли;      
		...
                //И так до 60го размера

Нашел у себя эту простыню. Чтобы вычислить остатки по резерву - делается запрос по движения со знаком плюс, потом запрос с движениями по минус.
Далее все это дело выгружается в две таблицы значений и высчитывается разность колонок. Вместо простого запроса по регистру остатков) Ну и много чего интересного)

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

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

    • Да, я тоже хочу такую опцию в текстовом редакторе:
      1. Пишешь проект на английском языке.
      2. Tools -> Change Language -> Java.
      3. ...
      4. PROFIT!!!
      Ответить
      • почему на английском? сразу - на русском!
        упс, мы, правда, рискуем получить 1С
        Ответить
    • Не вини себя! Это авторы этого проекта говнокодеры не смогли по синтаксису определять и выдавать предупреждение о не соответствии.
      Ответить
        • дело за малым - осталось только написать годный парсер, отличающий произвольный кусок кода на С от С++
          Ответить
  • Хорошо, что английский для меня не родной, а то бы код на C++ читался так-же дико, как этот код на 1C
    Для Каждого ТекСтрокаТовары Из ЭтотОбъект.Товары Цикл - ужос 🙂
    Ответить
  • х?X)I?D!O$E(Q?H)B(G?Q$U,N$Y,W,EO)E)WX$T"G(J)Q$Z?T$C!V!U$M!X$L.M$W)M(C C)H,C)U,T Z:G(I,Y$N$K$IJ.N:Q"K(B$F!Z$QX"P?YE:Z(C$W.E$Z(D.L.ER"B X.A$A!D$Y$W!R:S:G?D(N,I(V"N:K$D(E!Y:D,T"RT.P.U(H G(Q?X!V"H?UD(H(SU?A Z:C?M!P?V.H)M!E!X!D)E)G"X!T A(V!R,R(C"T.E?VP!B$W$W?D)B"SR)O L:EJ"U(O"Q:K J,Z?F)D,Y"V)X?Z"Q)P?P:K!I!L?L)R:BE:X)U$N!Z"L:P$A,DJ,HM"T:C.A X,J$H?CZ:P?P:O.T?O$P,Z)H,S(M"H!T,W,C)I?G)C,N(G"F$I!U?P!M)Z,Z,Y)U,T,V,EVX)L!D(C?T)RI!O?I)B"Y$L:T!JU(D"B$D(E!T,PN"Y:B$Z$D(C,BBS)K.L:A.IHF?O,N T U)O"Q$J C"XB,UT"E"C?D.C,I!P Q?G$X"C,G)I T M:Y!B!W(T,O"H$Y.T:V(L!R!ID$U,W!V C(A)U W?I)B"S!W,Y!TM"G,F$CG!Y$R.A!T!P)V:J:DF?F:R$HT:I.H.QZ:S!M:K"OB)NH$Z:UC U!J P$TZ)N G K.S)Q K.Y"D.A$H(T?WS"O"N$K,R)C!J"X N:A$I!XB)CG$T.X,O,B.F"P?X?J)R$O!T$I.R"Y$O.O?Y)J(W(XW K,I?Z"Q$D?I,U!U:D KK"P)Y,Z)X K$P$S"O!U)S.VG$A$B$V!PW$Z.Z!S!X T?O!Q!CJW)B"D:I,G)H)K?Q.D"D!GA.H"U$T!G!W:L?A!HF,N(E"L!E)P,U?M.L?T"H!I!G!M$Y.V"U?V"Q,X,W)P,L,M$Y"E?P?V$R E"JT)G!X!T!U)Q$R?N,M!DD.C)B D!G)V"P"P G,S(A,I$I,F,U$L)SC"RJ(C.G"A?G,N!E.E.W$B G?E?G)HQ!Y)Y,F(C"E)H Z:F!Y"EB P.R!Q?C$U$E"O?K$I:X:VS,S U F!K J.K,E$O!K:Y(D(P(S:E.K M!C)I$S(B!C?S Z!O?J"E(J(JE!K?C!W)T.H,G G.O$I"Q,G!P M!Z.J(U:Q)E:N$K$F!P?L:E)A.W:H?V.E(Y.A!Y,Q"N"L:O"D)E(S,N"R O?O!E)B B?K!U.P)Z)A)Q$H?L$G!X$V"K)T:B?V:P$T?K(Q!P!N"O$S!D,Y!Z?D!V:N$M,X"L"T"U!C$PL Y$F.O)Q$K"W O.L?M(G?N.R$N K)Z G.E?U$A,M!D!W V.QJ(Q)W"N(J?C XV,W,K(F)L$G)H,A(I!Y!L N.O:A N:O)W?O"R$Y"H$J)L X A$N:FJ)B"T,P:W$O?B?Q"I"C!R W"U)N P,VХTCZJREQOXJNDUTCJLRWABTPVN
    Ответить

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

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

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


    8