Каталог решений - Сохранение ширины колонок в отчете СКД

Сохранение ширины колонок в отчете СКД

Сохранение ширины колонок в отчете СКД

В наличии

При формировании отчета СКД бывает так, что отчет не умещается на экране, и приходится изменять ширину колонок. К сожалению, при формировании отчета ширина колонок не сохраняется и поправлять ширину колонок нужно после каждого формирования отчета. Можно настроить условное оформление, как обсуждается тут: http://forum.infostart.ru/forum26/topic112590/. Этот вариант не устроил, реализована возможность сохранять ширины колонок в настройках вариантов отчетов

Категория:

Описание

Использовали данный функционал в универсальном отчете СКД (УниверсальныйОтчетСхемСКД)

В модуле формы добавлены две функции:

УложитьНастройкиВСоответствие(Форма)

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

ИзменитьКолонкиТППоНастройкам(Форма, СтруктураНастроек)

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

В процедуре Сохранения настройки добавили код:

СоответствиеНастроек = УложитьНастройкиВСоответствие(ЭтаФорма); 
НастройкиКолонок = Новый ХранилищеЗначения(СоответствиеНастроек, Новый СжатиеДанных(9)); 
СтруктураНастройки.Вставить("ДополнительныеПараметры", НастройкиКолонок);

Добавили код в процедуре Восстановления настроек:

Если мТекущаяНастройка.Свойство("ДополнительныеПараметры") И ТипЗнч(мТекущаяНастройка.ДополнительныеПараметры) = Тип("ХранилищеЗначения") Тогда
			ИзменитьКолонкиТППоНастройкам(ЭтаФорма, мТекущаяНастройка.ДополнительныеПараметры.Получить());
КонецЕсли;

В процедуре ПриОткрытии():

ИзменитьКолонкиТППоНастройкам(ЭтаФорма, мТекущаяНастройка.ДополнительныеПараметры.Получить());

Соответственно, настройка колонок после формирования отчета (отделено комментарием):

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

 

В регистр сведений «Сохраненные настройки» мы добавили ресурс Дополнительные параметры и сохраняем настройку в это поле, чтобы наши настройки не путались с типовыми настройками (ресурс «СохраненнаяНастройка») . Соответственно нам пришлось немного изменить типовой функционал. Вы можете поступить как Вам удобно.

has been added to your cart:
Оформление заказа