Сохранение ширины колонок в отчете СКД
При формировании отчета СКД бывает так, что отчет не умещается на экране, и приходится изменять ширину колонок. К сожалению, при формировании отчета ширина колонок не сохраняется и поправлять ширину колонок нужно после каждого формирования отчета. Можно настроить условное оформление, как обсуждается тут: http://forum.infostart.ru/forum26/topic112590/. Этот вариант не устроил, реализована возможность сохранять ширины колонок в настройках вариантов отчетов
- Описание
- Подробнее
Описание
Использовали данный функционал в универсальном отчете СКД (УниверсальныйОтчетСхемСКД)
В модуле формы добавлены две функции:
УложитьНастройкиВСоответствие(Форма)
Функция УложитьНастройкиВСоответствие(Форма);
//Укладывает настройки ширины колонок в структуру
СоответствиеНастроек = Новый Структура;
Для Каждого Элемент Из Форма.ЭлементыФормы Цикл
Если ТипЗнч(Элемент) = Тип("ПолеТабличногоДокумента") Тогда
щ = 0;
Для ы = 1 по Элемент.ВысотаТаблицы Цикл
Для ыы = 1 по Элемент.ШиринаТаблицы Цикл
ОбластьЯчейка = Элемент.Область(ы, ыы, ы, ыы);
СоответствиеНастроек.Вставить(ОбластьЯчейка.Имя, ОбластьЯчейка.ШиринаКолонки);
щ = щ + 1;
Если щ > 300 Тогда // Сохраняем ширины ячеек примерно до тех пор пока начинаются данные
Прервать;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЕсли;
КонецЦикла;
Возврат СоответствиеНастроек;
КонецФункции
ИзменитьКолонкиТППоНастройкам(Форма, СтруктураНастроек)
Процедура ИзменитьКолонкиТППоНастройкам(Форма, СтруктураНастроек)
//Изменяет настройки колонок элементов формы типа "Табличное поле" по переданным сохраненным
Если СтруктураНастроек = Неопределено или ТипЗнч(СтруктураНастроек) <> Тип("Структура") Тогда
СтруктураНастроек = Новый Структура;
Возврат;
КонецЕсли;
щ = 0;
Для Каждого Элемент Из ЭтаФорма.ЭлементыФормы Цикл
Если ТипЗнч(Элемент) = Тип("ПолеТабличногоДокумента") Тогда
Для каждого Колонки из СтруктураНастроек Цикл
Элемент.Область(Колонки.Ключ).ШиринаКолонки = Колонки.Значение;
щ = щ + 1;
Если щ > 300 Тогда
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецПроцедурыВ процедуре Сохранения настройки добавили код:
СоответствиеНастроек = УложитьНастройкиВСоответствие(ЭтаФорма);
НастройкиКолонок = Новый ХранилищеЗначения(СоответствиеНастроек, Новый СжатиеДанных(9));
СтруктураНастройки.Вставить("ДополнительныеПараметры", НастройкиКолонок);Добавили код в процедуре Восстановления настроек:
Если мТекущаяНастройка.Свойство("ДополнительныеПараметры") И ТипЗнч(мТекущаяНастройка.ДополнительныеПараметры) = Тип("ХранилищеЗначения") Тогда
ИзменитьКолонкиТППоНастройкам(ЭтаФорма, мТекущаяНастройка.ДополнительныеПараметры.Получить());
КонецЕсли;В процедуре ПриОткрытии():
ИзменитьКолонкиТППоНастройкам(ЭтаФорма, мТекущаяНастройка.ДополнительныеПараметры.Получить());Соответственно, настройка колонок после формирования отчета (отделено комментарием):
Процедура СформироватьОтчет(Кнопка)
ЭтотОбъект.СкомпоноватьРезультат(ЭлементыФормы.Результат,ДанныеРасшифровки);
СгенерироватьКнопкиУправленияГруппировкой();
// 160915
Если мТекущаяНастройка <> Неопределено Тогда
Если мТекущаяНастройка.Свойство("ДополнительныеПараметры") И ТипЗнч(мТекущаяНастройка.ДополнительныеПараметры) = Тип("ХранилищеЗначения") Тогда
ИзменитьКолонкиТППоНастройкам(ЭтаФорма, мТекущаяНастройка.ДополнительныеПараметры.Получить());
КонецЕсли;
КонецЕсли;
//! 160915
КонецПроцедуры
В регистр сведений «Сохраненные настройки» мы добавили ресурс Дополнительные параметры и сохраняем настройку в это поле, чтобы наши настройки не путались с типовыми настройками (ресурс «СохраненнаяНастройка») . Соответственно нам пришлось немного изменить типовой функционал. Вы можете поступить как Вам удобно.
