Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / [игнор отключен] [закрыт для гостей] / Использование секций и дублирование строк / 3 сообщений из 3, страница 1 из 1
18.03.2011, 15:00
    #37172336
Taekwonder
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование секций и дублирование строк
Здравствуйте ув. форумчане, 1С-ники.
Возникла проблема в 1С7.7, при выводе отчёта дублируется первая строка. То есть сколько строк в отчете - столько первая строка повторяется. Данный трабл возник после того как стал использовать конструкцию
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
//Выберем непосредственно само тело 
		Попытка
			ОблТела = ?(ЕстьДопТаб =  1 , ТБД.ПолучитьСекцию("Тело|СекОсн"), ТБ.ПолучитьСекцию("Тело|СекОсн"));
			//Печатаем непосредственно само тело.
		    ТБ.ВывестиСекцию(ОблТела);
		Исключение 
			ОблТела =  ТБ.ПолучитьСекцию("Тело|СекОсн");
			//Печатаем непосредственно само тело.
		    ТБ.ВывестиСекцию(ОблТела);
		КонецПопытки;
		ОблТела = ПолучитьПустоеЗначение(ОблТела);

Код процедуры
Код: plaintext
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 ;
		Исключение
			Сообщить("При попытке вывода консультационного листа возникла ошибка: " + ОписаниеОшибки());
		КонецПопытки;	
	КонецЕсли;
	
КонецПроцедуры

Подскажите, как побороть данную фигню?
...
Рейтинг: 0 / 0
18.03.2011, 15:05
    #37172346
Taekwonder
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование секций и дублирование строк
Если не использую ПолучитьСекцию, а сразу ВывестиСекцию("ХХХ") - то всё ОК. Но есть большая необходимость использовать именно ПолучитьСекцию, так как она может браться из другой таблицы. Как это побороть?
...
Рейтинг: 0 / 0
18.03.2011, 15:23
    #37172395
Taekwonder
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование секций и дублирование строк
Taekwonder,

ХАХА, Это невероятно, решил проблему тем, что переменной ОблТела после вывода стал присваивать пустую строку!!
...
Рейтинг: 0 / 0
Форумы / [игнор отключен] [закрыт для гостей] / Использование секций и дублирование строк / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]