Как Вывести Заголовок В Печатной Форме

  • Автор темы kuza87
  • Дата начала
Статус
Закрыто для дальнейших ответов.
K

kuza87

#1
Привет, товарищи! Делал внешнюю печатную форму к документу "Зарплата к выплате". Там всё простенько выводиться список сотрудников с сортировкой по подразделениям. Мне нужно сделать так, чтобы выводлся заголовок с подразделением человека, если подразделение не равно предыдущему. Вот сам запрос:
<!--shcode--><pre><code class='"<pre><code class="sql'>SELECT Blue FROM SomeThing[/CODE]">Запрос=Новый Запрос;

Запрос.Текст = "ВЫБРАТЬ
| ЗарплатаКВыплатеОрганизацийЗарплата.Физлицо КАК Физлицо,
| ЗарплатаКВыплатеОрганизацийЗарплата.Сумма КАК Сумма,
| ЕСТЬNULL(РаботникиОрганизацийСрезПоследних.Сотрудник.ПодразделениеОрганизации, ДоговорНаВыполнениеРаботСФизЛицом.ПодразделениеОрганизации) КАК СотрудникПодразделениеОрганизации,
| РаботникиОрганизацийСрезПоследних.Период КАК Период,
| ЗарплатаКВыплатеОрганизацийЗарплата.Ссылка.Номер КАК Номер,
| ЗарплатаКВыплатеОрганизацийЗарплата.Ссылка.Дата КАК Дата
|ИЗ
| Документ.ЗарплатаКВыплатеОрганизаций.Зарплата КАК ЗарплатаКВыплатеОрганизацийЗарплата
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций.СрезПоследних(&Период, ) КАК РаботникиОрганизацийСрезПоследних
| ПО ЗарплатаКВыплатеОрганизацийЗарплата.Физлицо = РаботникиОрганизацийСрезПоследних.Сотрудник.Физлицо
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ДоговорНаВыполнениеРаботСФизЛицом КАК ДоговорНаВыполнениеРаботСФизЛицом
| ПО ЗарплатаКВыплатеОрганизацийЗарплата.Физлицо = ДоговорНаВыполнениеРаботСФизЛицом.ФизЛицо
|ГДЕ
| ЗарплатаКВыплатеОрганизацийЗарплата.Ссылка = &Ссылка
|
|УПОРЯДОЧИТЬ ПО
|ЗарплатаКВыплатеОрганизацийЗарплата.Физлицо.Наименование,
|Период УБЫВ
|ИТОГИ ПО
| Физлицо";

Запрос.Параметры.Вставить("Период",СсылкаНаОбъект.Дата);
Запрос.Параметры.Вставить("Ссылка",СсылкаНаОбъект.Ссылка); //ЗНАЧЕНИЕ(Документ.ЗарплатаКВыплатеОрганизаций.ПустаяСсылка)
РезультатЗапроса=Запрос.Выполнить();
Выборка=РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией
);//ПоГруппировкам/Прямой
ТЗ=РезультатЗапроса.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);//ПоГруппировкам/Прямой
//Заполняем в таблицу значений только 1-ю строку чтобы люди не двоились
Для Каждого Стр1 из ТЗ.Строки Цикл
ЗаполнитьЗначенияСвойств(Стр1, Стр1.Строки [0])
КонецЦикла;
ТЗ.Строки.Сортировать("СотрудникПодразделениеОрганизации");
ТЗ.ВыбратьСтроку();
</code></pre>
А вот сам код который заполняет строки:
<!--shcode--><pre><code class='"<pre><code class="sql'>SELECT Blue FROM SomeThing[/CODE]">//заполняем строки
ТекущееПодразделение = Неопределено;
Для Каждого Сотрудник из ТЗ.Строки Цикл
ЗаполнитьЗначенияСвойств(Стр1, Стр1.Строки [0]);
ОбластьМакетаСтрока.Параметры.Заполнить(Сотрудник);
ОбластьМакетаПодразделение.Параметры.Заполнить(Сотрудник);
ТекущееПодразделение = ОбластьМакетаПодразделение.Параметры.Подразделение;
Если Сотрудник.Подразделение<>ТекущееПодразделение тогда
ТабДокумент.Вывести(ОбластьМакетаПодразделение);
КонецЕсли;</code></pre>
Помогите разобраться что я написал не так, буду очень признателен.
 

s512

New member
09.11.2011
4
0
#2
думаю так пойдет:

Запрос.Параметры.Вставить("Период",СсылкаНаОбъект.Дата);
Запрос.Параметры.Вставить("Ссылка",СсылкаНаОбъект.Ссылка); //ЗНАЧЕНИЕ(Документ.ЗарплатаКВыплатеОрганизаций.ПустаяСсылка)
ТЗ=РезультатЗапроса.Выполнить().Выгрузить();// иерархия не нужна
ТЗ.сортировать("СотрудникПодразделениеОрганизации возр");

ОбластьМакетаПодразделение = Макет.получитьОбласть(???);
ОбластьМакетаСтрока = Макет.получитьОбласть(???);

ТекущееПодразделение = Неопределено;
Для Каждого Сотрудник из ТЗ Цикл
Если Сотрудник.СотрудникПодразделениеОрганизации<>ТекущееПодразделение тогда
ОбластьМакетаПодразделение.Параметры.Заполнить(Сотрудник);
ТабДокумент.Вывести(ОбластьМакетаПодразделение);
ТекущееПодразделение = Сотрудник.СотрудникПодразделениеОрганизации;
КонецЕсли;

ОбластьМакетаСтрока.Параметры.Заполнить(Сотрудник);
ТабДокумент.Вывести(ОбластьМакетаСтрока);

КонецЦикла;
 
Статус
Закрыто для дальнейших ответов.