К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

Доработка Универсального отчета в УТ10.3

0 - 22.07.2013 - 08:27
Нужно было в УТ10 сделать, чтоб во всех типовых отчетах была автоматическая фиксация колонок слева. Вот результат, если кому пригодится:
Вставляется в модуль Универсального отчета и вызывается из процедуры СформироватьОтчет() этого-же модуля

Процедура УстановитьФиксациюКолонок(ТабличныйДокумент) Экспорт

локКолонокФиксировать = 1; // это пустая колонка в начале

локКолонкиИзмерения = 0;
локВОтдельнойКолонкеПеред = 0;
локВОтдельныхКолонкахПеред = 0;
локВОтдельнойКолонкеПосле = 0;
локВОтдельныхКолонкахПосле = 0;

Для каждого стрСтруктураИзмеренийСтроки Из мСтруктураИзмеренийСтроки Цикл
Если ПостроительОтчета.РазмещениеИзмеренийВКолонках = ТипРазмещенияИзмерений.Вместе Тогда
локКолонкиИзмерения = 1;
Иначе
локКолонкиИзмерения = локКолонкиИзмерения + 1;
КонецЕсли;

текКолонкиПередВОтдельнойКолонке = стрСтруктураИзмеренийСтроки.Значение.ПередГруппиро вкой.ВОтдельнойКолонке;
Если текКолонкиПередВОтдельнойКолонке.Количество() > 0 Тогда
Если ПостроительОтчета.РазмещениеИзмеренийВКолонках = ТипРазмещенияИзмерений.Вместе Тогда
локВОтдельнойКолонкеПеред = 1;
Иначе
локВОтдельнойКолонкеПеред = локВОтдельнойКолонкеПеред + 1;
КонецЕсли;
КонецЕсли;
текКолонкиПередВОтдельныхКолонках = стрСтруктураИзмеренийСтроки.Значение.ПередГруппиро вкой.ВОтдельныхКолонках;
Если текКолонкиПередВОтдельныхКолонках.Количество() > 0 Тогда
Если ПостроительОтчета.РазмещениеИзмеренийВКолонках = ТипРазмещенияИзмерений.Вместе Тогда
локВОтдельныхКолонкахПеред = Макс(локВОтдельныхКолонкахПеред,текКолонкиПередВОт дельныхКолонках.Количество());
Иначе
локВОтдельныхКолонкахПеред = локВОтдельныхКолонкахПеред + текКолонкиПередВОтдельныхКолонках.Количество();
КонецЕсли;
КонецЕсли;

текКолонкиПослеВОтдельнойКолонке = стрСтруктураИзмеренийСтроки.Значение.ПослеГруппиро вки.ВОтдельнойКолонке;
Если текКолонкиПослеВОтдельнойКолонке.Количество() > 0 Тогда
Если ПостроительОтчета.РазмещениеИзмеренийВКолонках = ТипРазмещенияИзмерений.Вместе Тогда
локВОтдельнойКолонкеПосле = 1;
Иначе
локВОтдельнойКолонкеПосле = локВОтдельнойКолонкеПосле + 1;
КонецЕсли;
КонецЕсли;
текКолонкиПослеВОтдельныхКолонках = стрСтруктураИзмеренийСтроки.Значение.ПослеГруппиро вки.ВОтдельныхКолонках;
Если текКолонкиПослеВОтдельныхКолонках.Количество() > 0 Тогда
Если ПостроительОтчета.РазмещениеИзмеренийВКолонках = ТипРазмещенияИзмерений.Вместе Тогда
локВОтдельныхКолонкахПосле = Макс(локВОтдельныхКолонкахПосле,текКолонкиПослеВОт дельныхКолонках.Количество());
Иначе
локВОтдельныхКолонкахПосле = локВОтдельныхКолонкахПосле + текКолонкиПослеВОтдельныхКолонках.Количество();
КонецЕсли;
КонецЕсли;

КонецЦикла;

локКолонокФиксировать = локКолонокФиксировать + локКолонкиИзмерения + локВОтдельнойКолонкеПеред + локВОтдельныхКолонкахПеред + локВОтдельнойКолонкеПосле + локВОтдельныхКолонкахПосле;

ТабличныйДокумент.ФиксацияСлева = локКолонокФиксировать;

КонецПроцедуры // УстановитьФиксацию()



1 - 22.07.2013 - 10:56
спасибо, это польза!
вообще, явно маловато публикаций на тему, как работать с Универсальным отчётом (и с двумя другими общими отчётами).
нашёл пока только одно внятное описание
http://infostart.ru/public/62223/
2 - 22.07.2013 - 14:42
вот щас сижу ломаю мозг: как программно указать ширину колонки в отчёте, формируемом на основе Кросс-таблицы
3 - 22.07.2013 - 16:12
2(2) Ищи "Профессиональная разработка в системе 1С:Предприятие 8" 1-е издание. Раздел "Работа с построителем отчета".


К списку вопросов






Copyright ©, Все права защищены