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-е издание. Раздел "Работа с построителем отчета". | |
| Интернет-форум Краснодарского края и Краснодара |