Дробление столбца при выгрузке в эксель

1. ksen 14.11.19 14:29 Сейчас в теме
Добрый день, формирую отчет с помощью скд, в 1с все хорошо, при сохранении в эксель дробит колонки и объединяет. Есть способ это исправить?
Прикрепленные файлы:
Найденные решения
5. vasgius 03.12.19 18:11 Сейчас в теме
Вопрос старый, но все таки напишу свое решение:

дробление колонок при сохранении в Excel возникает из-за того, что в отчет выводится несколько разных областей (на скриншоте это область параметров и область самого отчета) и у каждой области своя ширина колонок.
Выхода тут два:
1) Выводить в отчет только одну область (т.е. не выводить параметры, отборы, заголовки и в группировках на верхнем уровне должна быть только одна группировка - подгруппировок может быть сколько угодно)

2) Сделать ширину колонок в каждой области одинаковой. Что бы добиться этого есть опять же два пути:
2.1 Изменить табличный документ после вывода отчета (или до сохранения в Excel)
2.2 Программно доработать МакетКомпоновки присвоив каждой области одинаковую ширину.

// Для того, чтобы таб. документ сохранялся в Excel c тем же количеством колонок
// установим фиксированную ширину колонок во всех макетах. 
Для Каждого ОписаниеМакета Из МакетКомпоновки.Макеты Цикл
	Для Каждого СтрокаТаблицыОбласти Из ОписаниеМакета.Макет Цикл
		ЭтоПерваяЯчейка = Истина;

		Для Каждого Ячейка Из СтрокаТаблицыОбласти.Ячейки Цикл

			Если ЭтоПерваяЯчейка Тогда
				Ячейка.Оформление.УстановитьЗначениеПараметра("МинимальнаяШирина", 	47); //ширина первой колонки
				Ячейка.Оформление.УстановитьЗначениеПараметра("МаксимальнаяШирина",	47);
				ЭтоПерваяЯчейка = Ложь;
				
			Иначе
				Ячейка.Оформление.УстановитьЗначениеПараметра("МинимальнаяШирина", 	22);  //ширина второй и последующих колонок
				Ячейка.Оформление.УстановитьЗначениеПараметра("МаксимальнаяШирина",	22);	
			КонецЕсли;												

		КонецЦикла;				
	КонецЦикла;
КонецЦикла;
Показать

минус этого подхода - нужно заранее определить ширину колонок отчета
silvermilion; Lusine; zakirov_CS24; Marliiin; ksen; +5 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
6. Xershi 1490 03.12.19 19:22 Сейчас в теме
(1) нарисуй свой макет и дело с концом. Иначе настраивай форму правильно.
2. FetisovAN 14.11.19 14:31 Сейчас в теме
3. 1segen1 33 14.11.19 15:13 Сейчас в теме
Зависит от настроек отчета. Иногда помогает этот способ:
- запретить вывод отборов и параметров;
- создать группировку с детальными записями. Удалить из нее все поля выбора. Нужные группировку вложить в эту группировку.
AlexandrSmith; +1 Ответить
4. AlexandrSmith 69 14.11.19 15:38 Сейчас в теме
(3)(1) Можно пометить ответ как лучший и закрыть тему. Очевидно, что решения с сохранением отображения в отчете, как сейчас у вас нет и не будет.
5. vasgius 03.12.19 18:11 Сейчас в теме
Вопрос старый, но все таки напишу свое решение:

дробление колонок при сохранении в Excel возникает из-за того, что в отчет выводится несколько разных областей (на скриншоте это область параметров и область самого отчета) и у каждой области своя ширина колонок.
Выхода тут два:
1) Выводить в отчет только одну область (т.е. не выводить параметры, отборы, заголовки и в группировках на верхнем уровне должна быть только одна группировка - подгруппировок может быть сколько угодно)

2) Сделать ширину колонок в каждой области одинаковой. Что бы добиться этого есть опять же два пути:
2.1 Изменить табличный документ после вывода отчета (или до сохранения в Excel)
2.2 Программно доработать МакетКомпоновки присвоив каждой области одинаковую ширину.

// Для того, чтобы таб. документ сохранялся в Excel c тем же количеством колонок
// установим фиксированную ширину колонок во всех макетах. 
Для Каждого ОписаниеМакета Из МакетКомпоновки.Макеты Цикл
	Для Каждого СтрокаТаблицыОбласти Из ОписаниеМакета.Макет Цикл
		ЭтоПерваяЯчейка = Истина;

		Для Каждого Ячейка Из СтрокаТаблицыОбласти.Ячейки Цикл

			Если ЭтоПерваяЯчейка Тогда
				Ячейка.Оформление.УстановитьЗначениеПараметра("МинимальнаяШирина", 	47); //ширина первой колонки
				Ячейка.Оформление.УстановитьЗначениеПараметра("МаксимальнаяШирина",	47);
				ЭтоПерваяЯчейка = Ложь;
				
			Иначе
				Ячейка.Оформление.УстановитьЗначениеПараметра("МинимальнаяШирина", 	22);  //ширина второй и последующих колонок
				Ячейка.Оформление.УстановитьЗначениеПараметра("МаксимальнаяШирина",	22);	
			КонецЕсли;												

		КонецЦикла;				
	КонецЦикла;
КонецЦикла;
Показать

минус этого подхода - нужно заранее определить ширину колонок отчета
silvermilion; Lusine; zakirov_CS24; Marliiin; ksen; +5 Ответить
7. Lusine 31.08.22 10:10 Сейчас в теме
(5) спасибо, Ваш совет очень помог)
8. пользователь 01.09.22 13:46
Сообщение было скрыто модератором.
...
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот