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

Тема в разделе "1C и всё что с ней связано", создана пользователем kuza87, 25 май 2012.

Статус темы:
Закрыта.
  1. kuza87

    kuza87 Гость

    Привет, товарищи! Делал внешнюю печатную форму к документу "Зарплата к выплате". Там всё простенько выводиться список сотрудников с сортировкой по подразделениям. Мне нужно сделать так, чтобы выводлся заголовок с подразделением человека, если подразделение не равно предыдущему. Вот сам запрос:
    <!--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>
    Помогите разобраться что я написал не так, буду очень признателен.
     
  2. s512

    s512 New Member

    Регистрация:
    9 ноя 2011
    Сообщения:
    4
    Симпатии:
    0
    думаю так пойдет:

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

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

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

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

    КонецЦикла;
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей