Функция СтрокФиксироватьСверху(КомпоновщикНастроек, ПоказыватьЗаголовок = Истина) Экспорт
СтрокОтборова = 0;
ВыводитьПараметрыДанных = КомпоновщикНастроек.Настройки.ПараметрыВывода.Элементы.Найти("FilterOutput");
Если ВыводитьПараметрыДанных.Значение = ТипВыводаТекстаКомпоновкиДанных.Авто ИЛИ
(ВыводитьПараметрыДанных.Значение = ТипВыводаТекстаКомпоновкиДанных.Выводить И ВыводитьПараметрыДанных.Использование = Истина) Тогда
Для Каждого ЭлементОтбора Из КомпоновщикНастроек.Настройки.Отбор.Элементы Цикл
Если ЭлементОтбора.Использование Тогда
СтрокОтборова = 3;
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
СтрокЗаголовка = 0;
Если ПоказыватьЗаголовок Тогда
СтрокЗаголовка = 3;
КонецЕсли;
СтрокГрупировокСтрок = 0;
ЭлемСтруктуры = КомпоновщикНастроек.Настройки.Структура[0];
Если ТипЗнч(ЭлемСтруктуры) = Тип("ТаблицаКомпоновкиДанных") Тогда
Если ЭлемСтруктуры.Строки.Количество() > 0 Тогда
Узел = ЭлемСтруктуры.Строки[0];
Иначе
Узел = 0;
КонецЕсли;
ИначеЕсли ТипЗнч(ЭлемСтруктуры) = Тип("ГруппировкаКомпоновкиДанных") Тогда
Узел = ЭлемСтруктуры;
КонецЕсли;
Пока Узел <> 0 И Узел.Структура.Количество() > 0 Цикл
СтрокГрупировокСтрок = СтрокГрупировокСтрок + 1;
Если ТипЗнч(Узел.Структура[0]) = Тип("ГруппировкаКомпоновкиДанных") ИЛИ ТипЗнч(Узел.Структура[0]) = Тип("ГруппировкаТаблицыКомпоновкиДанных") Тогда
Если НЕ Узел.Структура[0].Использование Тогда
Прервать;
КонецЕсли;
Узел = Узел.Структура[0];
Иначе
Прервать;
КонецЕсли;
КонецЦикла;
СтрокГруппПолей = 0;
ВыводитьПараметрыДанных = КомпоновщикНастроек.Настройки.ПараметрыВывода.Элементы.Найти("РасположениеРесурсов");
Если ВыводитьПараметрыДанных.Значение = РасположениеРесурсовКомпоновкиДанных.Горизонтально Тогда
Для Каждого ПолеКД Из КомпоновщикНастроек.Настройки.Выбор.Элементы Цикл
Если ТипЗнч(ПолеКД) = Тип("ГруппаВыбранныхПолейКомпоновкиДанных") Тогда
СтрокГруппПолей = 1;
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Возврат СтрокОтборова + СтрокЗаголовка + СтрокГрупировокСтрок + СтрокГруппПолей + ?(СтрокОтборова > 0 И СтрокЗаголовка > 0, 0, 1);
КонецФункции
Функция СтрокФиксироватьСлева(КомпоновщикНастроек) Экспорт
СтрокФиксироватьСлева = 1;
ВыводитьПараметрыДанных = КомпоновщикНастроек.Настройки.ПараметрыВывода.Элементы.Найти("ГоризонтальноеРасположениеОбщихИтогов");
Если (ВыводитьПараметрыДанных.Значение = РасположениеИтоговКомпоновкиДанных.Начало
ИЛИ ВыводитьПараметрыДанных.Значение = РасположениеИтоговКомпоновкиДанных.НачалоИКонец)
И ВыводитьПараметрыДанных.Использование = Истина Тогда
СтрокФиксироватьСлева = СтрокФиксироватьСлева + 1;
КонецЕсли;
ВыводитьПараметрыДанных = КомпоновщикНастроек.Настройки.ПараметрыВывода.Элементы.Найти("РасположениеРесурсов");
Если ВыводитьПараметрыДанных.Значение = РасположениеРесурсовКомпоновкиДанных.Вертикально
И ВыводитьПараметрыДанных.Использование = Истина Тогда
СтрокФиксироватьСлева = СтрокФиксироватьСлева + 1;
КонецЕсли;
Возврат СтрокФиксироватьСлева;
КонецФункции
Пользоваться этими функциями очень просто. Достаточно после вывода отчета написать следующий код:
ТабличныйДокумент.ФиксацияСверху = СтрокФиксироватьСверху(КомпоновщикНастроек, ПоказыватьЗаголовок);
ТабличныйДокумент.ФиксацияСлева = СтрокФиксироватьСлева(КомпоновщикНастроек);