![]() |
Доработка Универсального отчета в УТ10.3 Нужно было в УТ10 сделать, чтоб во всех типовых отчетах была автоматическая фиксация колонок слева. Вот результат, если кому пригодится: Вставляется в модуль Универсального отчета и вызывается из процедуры СформироватьОтчет() этого-же модуля Процедура УстановитьФиксациюКолонок(ТабличныйДокумент) Экспорт локКолонокФиксировать = 1; // это пустая колонка в начале локКолонкиИзмерения = 0; локВОтдельнойКолонкеПеред = 0; локВОтдельныхКолонкахПеред = 0; локВОтдельнойКолонкеПосле = 0; локВОтдельныхКолонкахПосле = 0; Для каждого стрСтруктураИзмеренийСтроки Из мСтруктураИзмеренийСтроки Цикл Если ПостроительОтчета.РазмещениеИзмеренийВКолонках = ТипРазмещенияИзмерений.Вместе Тогда локКолонкиИзмерения = 1; Иначе локКолонкиИзмерения = локКолонкиИзмерения + 1; КонецЕсли; текКолонкиПередВОтдельнойКолонке = стрСтруктураИзмеренийСтроки.Значение.ПередГруппировкой.ВОтдельнойКолонке; Если текКолонкиПередВОтдельнойКолонке.Количество() > 0 Тогда Если ПостроительОтчета.РазмещениеИзмеренийВКолонках = ТипРазмещенияИзмерений.Вместе Тогда локВОтдельнойКолонкеПеред = 1; Иначе локВОтдельнойКолонкеПеред = локВОтдельнойКолонкеПеред + 1; КонецЕсли; КонецЕсли; текКолонкиПередВОтдельныхКолонках = стрСтруктураИзмеренийСтроки.Значение.ПередГруппировкой.ВОтдельныхКолонках; Если текКолонкиПередВОтдельныхКолонках.Количество() > 0 Тогда Если ПостроительОтчета.РазмещениеИзмеренийВКолонках = ТипРазмещенияИзмерений.Вместе Тогда локВОтдельныхКолонкахПеред = Макс(локВОтдельныхКолонкахПеред,текКолонкиПередВОтдельныхКолонках.Количество()); Иначе локВОтдельныхКолонкахПеред = локВОтдельныхКолонкахПеред + текКолонкиПередВОтдельныхКолонках.Количество(); КонецЕсли; КонецЕсли; текКолонкиПослеВОтдельнойКолонке = стрСтруктураИзмеренийСтроки.Значение.ПослеГруппировки.ВОтдельнойКолонке; Если текКолонкиПослеВОтдельнойКолонке.Количество() > 0 Тогда Если ПостроительОтчета.РазмещениеИзмеренийВКолонках = ТипРазмещенияИзмерений.Вместе Тогда локВОтдельнойКолонкеПосле = 1; Иначе локВОтдельнойКолонкеПосле = локВОтдельнойКолонкеПосле + 1; КонецЕсли; КонецЕсли; текКолонкиПослеВОтдельныхКолонках = стрСтруктураИзмеренийСтроки.Значение.ПослеГруппировки.ВОтдельныхКолонках; Если текКолонкиПослеВОтдельныхКолонках.Количество() > 0 Тогда Если ПостроительОтчета.РазмещениеИзмеренийВКолонках = ТипРазмещенияИзмерений.Вместе Тогда локВОтдельныхКолонкахПосле = Макс(локВОтдельныхКолонкахПосле,текКолонкиПослеВОтдельныхКолонках.Количество()); Иначе локВОтдельныхКолонкахПосле = локВОтдельныхКолонкахПосле + текКолонкиПослеВОтдельныхКолонках.Количество(); КонецЕсли; КонецЕсли; КонецЦикла; локКолонокФиксировать = локКолонокФиксировать + локКолонкиИзмерения + локВОтдельнойКолонкеПеред + локВОтдельныхКолонкахПеред + локВОтдельнойКолонкеПосле + локВОтдельныхКолонкахПосле; ТабличныйДокумент.ФиксацияСлева = локКолонокФиксировать; КонецПроцедуры // УстановитьФиксацию() |
спасибо, это польза! вообще, явно маловато публикаций на тему, как работать с Универсальным отчётом (и с двумя другими общими отчётами). нашёл пока только одно внятное описание [url]http://infostart.ru/public/62223/[/url] |
вот щас сижу ломаю мозг: как программно указать ширину колонки в отчёте, формируемом на основе Кросс-таблицы |
2(2) Ищи "Профессиональная разработка в системе 1С:Предприятие 8" [u]1-е издание[/u]. Раздел "Работа с построителем отчета". |
Текущее время: 21:43. Часовой пояс GMT +3. |