|
Использование секций и дублирование строк
#37172336
Ссылка:
Ссылка на сообщение:
Ссылка с названием темы:
Ссылка на профиль пользователя:
|
Участник
Откуда: Ростов-на-Дону-->Moscow
Сообщения: 458
|
|
Здравствуйте ув. форумчане, 1С-ники.
Возникла проблема в 1С7.7, при выводе отчёта дублируется первая строка. То есть сколько строк в отчете - столько первая строка повторяется. Данный трабл возник после того как стал использовать конструкцию
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
//Выберем непосредственно само тело
Попытка
ОблТела = ?(ЕстьДопТаб = 1 , ТБД.ПолучитьСекцию("Тело|СекОсн"), ТБ.ПолучитьСекцию("Тело|СекОсн"));
//Печатаем непосредственно само тело.
ТБ.ВывестиСекцию(ОблТела);
Исключение
ОблТела = ТБ.ПолучитьСекцию("Тело|СекОсн");
//Печатаем непосредственно само тело.
ТБ.ВывестиСекцию(ОблТела);
КонецПопытки;
ОблТела = ПолучитьПустоеЗначение(ОблТела);
Код процедуры
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115.
Процедура ВывестиНаправление(ТБ, ТЗ, Начало, Конец, ОсталосьСтрок, ТБД)
Перем ТекС, ДинШапка, КГрп, Т, ТекГрп, ВыводитьКЛист;
Перем СтрокВШапке, Врач, Комната, СпрВ, ОблЗаг, ОблТела, Обл;
ДинШапка = 0 ;
ВыводитьКЛист = 0 ;
СтрокВШапке = 13 ;
Комната = "";
СпрВ = СоздатьОбъект("Справочник.Врачи");
Если (ОсталосьСтрок < (СтрокВШапке + (Конец - Начало + 1 ))) И (ОсталосьСтрок > 0 ) Тогда
ТБ.НоваяСтраница();
ОсталосьСтрок = 50 ;
ИначеЕсли ОсталосьСтрок < 0 Тогда
//Если всё таки залезли на следующий лист (одно напр. не уместилось на одном листе)
//Поиск оптимальности размещения не хочу делать, т.к. в данном случ. оно неоправданно
ОсталосьСтрок = 50 + ОсталосьСтрок;
КонецЕсли;
Для ТекС = Начало По Конец Цикл
ТЗ.ПолучитьСтрокуПоНомеру(ТекС);
//Начинаем заполнять и выводить направление.
КодУслуги = СокрЛП(ТЗ.КодУслуги) + " " + СуфЦен;
НаименованиеУслуги = ТЗ.Услуга.Наименование + ТЗ.Услуга.Описание;
Колво = ТЗ.Колво;
СуммаСК = ТЗ.СуммаСК;
МедСестра = ТЗ.Медсестра;
Если (СтрДлина(Комната) = 0 ) И (ОтображатьКомнату = 1 ) Тогда
Если СпрВ.НайтиПоКоду(ТЗ.КодВрача) = 1 Тогда
Комната = ?(СтрДлина(СпрВ.Комната) > 0 , "Комната № " + СпрВ.Комната, "");
КонецЕсли;
КонецЕсли;
Если ВыводитьКЛист = 0 Тогда
ВыводитьКЛист = ТЗ.Услуга.ВыводитьКонсультационныйЛист;
КонецЕсли;
Если ДинШапка = 0 Тогда
Попытка
ЗначениеГруппировки = СокрЛП(ТЗ.ПолучитьЗначение(ТекС, "ЗГ"));
ЗначениеГруппировки = Лев(ЗначениеГруппировки, СтрДлина(ЗначениеГруппировки) - 1 );
Исключение
Сообщить("При задании заголовка группы произошла ошибка!");
ЗначениеГруппировки = ПолучитьПустоеЗначение("Строка");
КонецПопытки;
ТБ.ВывестиСекцию("Шапка<");
Если ПустоеЗначение(Врач) = 0 Тогда
ТБ.ВывестиСекцию("СкцВрач");
СтрокВШапке = СтрокВШапке + 1 ;
КонецЕсли;
Если ПустоеЗначение(Направитель) = 0 Тогда
ТБ.ВывестиСекцию("СкцНаправитель");
СтрокВШапке = СтрокВШапке + 1 ;
КонецЕсли;
//Выберем заголовок тела
Попытка
ОблЗаг = ?(ЕстьДопТаб = 1 , ТБД.ПолучитьСекцию("ЗагТело|СекОсн"), ТБ.ПолучитьСекцию("ЗагТело|СекОсн"));
//Печатаем заголовок тела
ТБ.ВывестиСекцию(ОблЗаг);
Исключение
ОблЗаг = ТБ.ПолучитьСекцию("ЗагТело|СекОсн");
//Печатаем заголовок тела
ТБ.ВывестиСекцию(ОблЗаг);
КонецПопытки;
Если ОтображатьСуммы = 1 Тогда
ТБ.ПрисоединитьСекцию("ЗагТело|СекСум");
КонецЕсли;
ДинШапка = 1 ;
КонецЕсли;
//Выберем непосредственно само тело
Попытка
ОблТела = ?(ЕстьДопТаб = 1 , ТБД.ПолучитьСекцию("Тело|СекОсн"), ТБ.ПолучитьСекцию("Тело|СекОсн"));
//Печатаем непосредственно само тело.
ТБ.ВывестиСекцию(ОблТела);
Исключение
ОблТела = ТБ.ПолучитьСекцию("Тело|СекОсн");
//Печатаем непосредственно само тело.
ТБ.ВывестиСекцию(ОблТела);
КонецПопытки;
ОблТела = ПолучитьПустоеЗначение(ОблТела);
Если ОтображатьСуммы = 1 Тогда
ТБ.ПрисоединитьСекцию("Тело|СекСум");
КонецЕсли;
КонецЦикла;
ТБ.ВывестиСекцию("Шапка>");
ТБ.ВывестиСекцию("Раздел");
ОсталосьСтрок = ОсталосьСтрок - (СтрокВШапке + (Конец - Начало + 1 ));
Если ВыводитьКЛист = 1 Тогда
Попытка
Обл = ТБД.ПолучитьСекцию("КЛист");
ТБ.НоваяСтраница();
ТБ.ВывестиСекцию(Обл);
ТБ.НоваяСтраница();
ТБ.ВывестиСекцию(Обл);
ТБ.НоваяСтраница();
ОсталосьСтрок = 50 ;
Исключение
Сообщить("При попытке вывода консультационного листа возникла ошибка: " + ОписаниеОшибки());
КонецПопытки;
КонецЕсли;
КонецПроцедуры
Подскажите, как побороть данную фигню?
|
|
|