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

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
//часть текста запроса
                               |ИЗ
		               |	ЭтапыОплатыИсходник КАК ЭтапыОплаты
		       		   |//ТекстОтбора
		               |{ГДЕ
.................

		//Добавляем поля если используется отбор
		ТекстОтбора="ГДЕ ";
		ТекстОтбора=ТекстОтбора+" ИСТИНА";		
		НомерПеременнойОтбора=1;
		Для каждого  СтрокаТекущегоОтбора Из ПостроительОтчета.Отбор Цикл

			if НЕ СтрокаТекущегоОтбора.Использование then
				continue;
			endif;

			СложноеИмяПоля=ПолучитьИмяПоляБезТочек(СтрокаТекущегоОтбора.ПутьКДанным);
			Если  ПостроительОтчета.Отбор.Найти(СложноеИмяПоля)=Неопределено Тогда
				Если СтрокаТекущегоОтбора.ВидСравнения=ВидСравнения.Больше Тогда
					ТекстОтбора=ТекстОтбора+Символы.ПС+" И ЭтапыОплаты."+СтрокаТекущегоОтбора.ПутьКДанным+" > &ПеременнаяОтбора"+НомерПеременнойОтбора;	
					Запрос.УстановитьПараметр("ПеременнаяОтбора"+НомерПеременнойОтбора,СтрокаТекущегоОтбора.Значение);
					НомерПеременнойОтбора=НомерПеременнойОтбора+1
				ИначеЕсли СтрокаТекущегоОтбора.ВидСравнения=ВидСравнения.БольшеИлиРавно Тогда
					ТекстОтбора=ТекстОтбора+Символы.ПС+" И ЭтапыОплаты."+СтрокаТекущегоОтбора.ПутьКДанным+" >= &ПеременнаяОтбора"+НомерПеременнойОтбора;	
					Запрос.УстановитьПараметр("ПеременнаяОтбора"+НомерПеременнойОтбора,СтрокаТекущегоОтбора.Значение);
					НомерПеременнойОтбора=НомерПеременнойОтбора+1
				ИначеЕсли СтрокаТекущегоОтбора.ВидСравнения=ВидСравнения.ВИерархии или 
					СтрокаТекущегоОтбора.ВидСравнения=ВидСравнения.ВСписке или 
					СтрокаТекущегоОтбора.ВидСравнения=ВидСравнения.ВСпискеПоИерархии Тогда
					ТекстОтбора=ТекстОтбора+Символы.ПС+" И ЭтапыОплаты."+СтрокаТекущегоОтбора.ПутьКДанным+" В (&ПеременнаяОтбора"+НомерПеременнойОтбора+")";	
					Запрос.УстановитьПараметр("ПеременнаяОтбора"+НомерПеременнойОтбора,СтрокаТекущегоОтбора.Значение);
					НомерПеременнойОтбора=НомерПеременнойОтбора+1
				ИначеЕсли СтрокаТекущегоОтбора.ВидСравнения=ВидСравнения.ВИерархии Тогда
					ТекстОтбора=ТекстОтбора+Символы.ПС+" И ЭтапыОплаты."+СтрокаТекущегоОтбора.ПутьКДанным+" В ИЕРАРХИИ(&ПеременнаяОтбора"+НомерПеременнойОтбора+")";	
					Запрос.УстановитьПараметр("ПеременнаяОтбора"+НомерПеременнойОтбора,СтрокаТекущегоОтбора.Значение);
					НомерПеременнойОтбора=НомерПеременнойОтбора+1
				ИначеЕсли СтрокаТекущегоОтбора.ВидСравнения=ВидСравнения.Меньше Тогда
					ТекстОтбора=ТекстОтбора+Символы.ПС+" И ЭтапыОплаты."+СтрокаТекущегоОтбора.ПутьКДанным+" < &ПеременнаяОтбора"+НомерПеременнойОтбора;	
					Запрос.УстановитьПараметр("ПеременнаяОтбора"+НомерПеременнойОтбора,СтрокаТекущегоОтбора.Значение);
					НомерПеременнойОтбора=НомерПеременнойОтбора+1
				ИначеЕсли СтрокаТекущегоОтбора.ВидСравнения=ВидСравнения.МеньшеИлиРавно Тогда
					ТекстОтбора=ТекстОтбора+Символы.ПС+" И ЭтапыОплаты."+СтрокаТекущегоОтбора.ПутьКДанным+" <= &ПеременнаяОтбора"+НомерПеременнойОтбора;	
					Запрос.УстановитьПараметр("ПеременнаяОтбора"+НомерПеременнойОтбора,СтрокаТекущегоОтбора.Значение);
					НомерПеременнойОтбора=НомерПеременнойОтбора+1
				ИначеЕсли СтрокаТекущегоОтбора.ВидСравнения=СтрокаТекущегоОтбора.ВидСравнения=ВидСравнения.НеВСписке или 
					СтрокаТекущегоОтбора.ВидСравнения=ВидСравнения.НеВСпискеПоИерархии Тогда
					ТекстОтбора=ТекстОтбора+Символы.ПС+" И НЕ "+"ЭтапыОплаты."+СтрокаТекущегоОтбора.ПутьКДанным+" В (&ПеременнаяОтбора"+НомерПеременнойОтбора+")";	
					Запрос.УстановитьПараметр("ПеременнаяОтбора"+НомерПеременнойОтбора,СтрокаТекущегоОтбора.Значение);
					НомерПеременнойОтбора=НомерПеременнойОтбора+1
				ИначеЕсли СтрокаТекущегоОтбора.ВидСравнения=ВидСравнения.НеВИерархии  Тогда
					ТекстОтбора=ТекстОтбора+Символы.ПС+" И НЕ "+"ЭтапыОплаты."+СтрокаТекущегоОтбора.ПутьКДанным+" В ИЕРАРХИИ(&ПеременнаяОтбора"+НомерПеременнойОтбора+")";	
					Запрос.УстановитьПараметр("ПеременнаяОтбора"+НомерПеременнойОтбора,СтрокаТекущегоОтбора.Значение);
					НомерПеременнойОтбора=НомерПеременнойОтбора+1
				ИначеЕсли СтрокаТекущегоОтбора.ВидСравнения=ВидСравнения.НеРавно Тогда
					ТекстОтбора=ТекстОтбора+Символы.ПС+" И ЭтапыОплаты."+СтрокаТекущегоОтбора.ПутьКДанным+" <> &ПеременнаяОтбора"+НомерПеременнойОтбора;	
					Запрос.УстановитьПараметр("ПеременнаяОтбора"+НомерПеременнойОтбора,СтрокаТекущегоОтбора.Значение);
					НомерПеременнойОтбора=НомерПеременнойОтбора+1
				ИначеЕсли СтрокаТекущегоОтбора.ВидСравнения=ВидСравнения.Равно Тогда
					ТекстОтбора=ТекстОтбора+Символы.ПС+" И ЭтапыОплаты."+СтрокаТекущегоОтбора.ПутьКДанным+" = &ПеременнаяОтбора"+НомерПеременнойОтбора;	
					Запрос.УстановитьПараметр("ПеременнаяОтбора"+НомерПеременнойОтбора,СтрокаТекущегоОтбора.Значение);
					НомерПеременнойОтбора=НомерПеременнойОтбора+1
				КонецЕсли; 
			КонецЕсли; 
		КонецЦикла; 

		Если НомерПеременнойОтбора>1 Тогда
			Запрос.Текст=СтрЗаменить(Запрос.Текст,"//ТекстОтбора",ТекстОтбора);
		КонецЕсли;

При этом при всем, в отчете используется 2 построителя ( на одном не смог построить , одного видимо было было мало для стратегии заложенной в голове:) ) + между ними используется куча запросов , в которых выгружаются таблицы (РезультатЗапроса.Выполнить().Выгрузить( )) и передаются в следующие запросы как параметры.
От себя добавлю: Добавлял элементарные вещи, чтобы вывести пару дополнительных колонок - убить 1 час , тоже самое, что ничего не сделать..... Да и к тому же отчет рисуется через "ТабДок.Присоеденить".

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

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

  • Порядок отчета выводиться аналогично, так же как и отбор. Яблоко от яблони далеко не падает.
    Ответить
  • пошел прикладывать к глазам подорожник
    Ответить
      • При желании на любом ЯП можно хуячить говно, но в php и 1С исторически говна больше.
        всегда ваш, Капитан Очевидность.
        Ответить
  • Что же случилось со мной или даже с нами обоими? Почему мне так хорошо просто лежать здесь на берегу реки рядом с Пашкой, и почему так хочется чтобы этот вечер, этот закат никогда не кончался.
    Ответить
  • У Михи совсем снесло тормоза: приподняв Егору ножищи, он уже вовсю облизывал его бритое аналище. Я, перехватив его за лодыжки, подтянул их к себе, ещё больше растопыривая Егоркину пиздень, блестящую от слюней Михи. Её края, не выдержав этого натиска, расступились, образовав сквозное отверстие. Миха, уже совсем не стесняясь, проверил пальцем упругость стенок этой дыры и стал готовить её к массовому проёбу. Очуметь, он и подлизывал её, и пускал внутрь её свою слюну, и впивался языком и пальцами куда-то вовнутрь.
    Ответить

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

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

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


    8