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