Отображение группировок строк в EXCEL в файле XLSX, созданного из 1с с LibroOffice Calc

1. Olga12 181 27.07.21 08:26 Сейчас в теме
Добрый день, у меня вопрос -

Обычные формы. Работаю с ПакетОтображаемыхДокументов, сохраняю тестовый прайс с группировками на двух страницах в XLSX, далее делаю постобработку в 1с этого файла средствами LibroOffice Calc(как пример - крашу ярлычки и указываю активный лист) и сохраняю результат в тот же файл.После чего группировки этого файла при открытии в Excel выглядят не верно, а если постобработку не делать - то верно.

Вот тестовая обработка
ТестГруппировкиПослеОбработкиLO



Если надо приведу код. Помогите отобразить группировки как надо(без итогов внизу)
Прикрепленные файлы:
Вознаграждение за ответ
Показать полностью
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. Olga12 181 27.07.21 08:33 Сейчас в теме
Вот код тестовой обработки

Процедура КнопкаВыполнитьНажатие(Кнопка)
	
	Пакет = Новый ПакетОтображаемыхДокументов;
	Пакет.КоличествоЭкземпляров = 1;
	
	Макет = ПолучитьМакет("Макет");
	ТабДок = Новый ТабличныйДокумент;
	
	ТабДок.НачатьАвтогруппировкуСтрок();
	Уровень1 = 0;
	Уровень2 = 1;
	
	ОбластьНачало = Макет.ПолучитьОбласть("СтрокаТовар|НачальныеКолонки");
	ОбластьНачало.Параметры.Товар = "Игрушка1";
	ТабДок.Вывести(ОбластьНачало,Уровень1);
	ОбластьНачало = Макет.ПолучитьОбласть("СтрокаТовар|НачальныеКолонки");
	ОбластьНачало.Параметры.Товар = "Малая(Игрушка1)";
	ТабДок.Вывести(ОбластьНачало,Уровень2);
	ОбластьНачало = Макет.ПолучитьОбласть("СтрокаТовар|НачальныеКолонки");
	ОбластьНачало.Параметры.Товар = "Большая(Игрушка1)";
	ТабДок.Вывести(ОбластьНачало,Уровень2);
	
	ОбластьНачало = Макет.ПолучитьОбласть("СтрокаТовар|НачальныеКолонки");
	ОбластьНачало.Параметры.Товар = "Игрушка2";
	ТабДок.Вывести(ОбластьНачало,Уровень1);
	ОбластьНачало = Макет.ПолучитьОбласть("СтрокаТовар|НачальныеКолонки");
	ОбластьНачало.Параметры.Товар = "Синяя(Игрушка2)";
	ТабДок.Вывести(ОбластьНачало,Уровень2);
	ОбластьНачало = Макет.ПолучитьОбласть("СтрокаТовар|НачальныеКолонки");
	ОбластьНачало.Параметры.Товар = "Белая(Игрушка2)";
	ТабДок.Вывести(ОбластьНачало,Уровень2);
	
	ТабДок.ЗакончитьАвтогруппировкуСтрок();	
	ТабДок.Защита = Ложь;
	ТабДок.ИтогиСнизу = Ложь;
	//ТабДок.Показать();
	
	ЭлементПакета = Пакет.Состав.Добавить();
	ЭлементПакета.Данные = ПоместитьВоВременноеХранилище(ТабДок, Новый УникальныйИдентификатор);
	ЭлементПакета.Наименование = СокрЛП("Мой лист1");
			
	
	ТабДок1 = Новый ТабличныйДокумент;
	
	ТабДок1.НачатьАвтогруппировкуСтрок();
	
	ОбластьНачало = Макет.ПолучитьОбласть("СтрокаТовар|НачальныеКолонки");
	ОбластьНачало.Параметры.Товар = "Игрушка0";
	ТабДок1.Вывести(ОбластьНачало,Уровень1);
	
	ОбластьНачало = Макет.ПолучитьОбласть("СтрокаТовар|НачальныеКолонки");
	ОбластьНачало.Параметры.Товар = "Игрушка3";
	ТабДок1.Вывести(ОбластьНачало,Уровень1);
	ОбластьНачало = Макет.ПолучитьОбласть("СтрокаТовар|НачальныеКолонки");
	ОбластьНачало.Параметры.Товар = "Простая(Игрушка3)";
	ТабДок1.Вывести(ОбластьНачало,Уровень2);
	ОбластьНачало = Макет.ПолучитьОбласть("СтрокаТовар|НачальныеКолонки");
	ОбластьНачало.Параметры.Товар = "Сложная(Игрушка3)";
	ТабДок1.Вывести(ОбластьНачало,Уровень2);
	
	ОбластьНачало = Макет.ПолучитьОбласть("СтрокаТовар|НачальныеКолонки");
	ОбластьНачало.Параметры.Товар = "Игрушка4";
	ТабДок1.Вывести(ОбластьНачало,Уровень1);
	ОбластьНачало = Макет.ПолучитьОбласть("СтрокаТовар|НачальныеКолонки");
	ОбластьНачало.Параметры.Товар = "Синяя(Игрушка4)";
	ТабДок1.Вывести(ОбластьНачало,Уровень2);
	
	ТабДок1.ЗакончитьАвтогруппировкуСтрок();
	ТабДок1.Защита = Ложь;
	ТабДок1.ИтогиСнизу = Ложь;
	//ТабДок1.Показать();
	
	ЭлементПакета = Пакет.Состав.Добавить();
	ЭлементПакета.Данные = ПоместитьВоВременноеХранилище(ТабДок1, Новый УникальныйИдентификатор);
	ЭлементПакета.Наименование = СокрЛП("Мой лист2");
	
	Путь = ПолучитьИмяВременногоФайла("XLSX");
	Пакет.Записать(Путь, ТипФайлаПакетаОтображаемыхДокументов.XLSX);
	
	фл = ОбработатьФайлВLO(Путь);
	
	СозданныйПрайс = Путь;
	
КонецПроцедуры

Функция ПривестиФайлКУРЛ(ПутьКФайлу) Экспорт
	 
	 ПутьКФайлу1 = СтрЗаменить(ПутьКФайлу," ","%20");
	 ПутьКФайлу1 = СтрЗаменить(ПутьКФайлу1,"\","/");
	 Возврат "file:/" + "/localhost/" + ПутьКФайлу1;
	 
Конецфункции 

Функция ОбработатьФайлВLO(ИмяПрайса)Экспорт
	
   Попытка
      ServiceManager = Новый COMОбъект("com.sun.star.ServiceManager");
   Исключение
      Сообщить("Ошибка при связи с сервис менеджером (com.sun.star.ServiceManager)." + 
                + Символы.ПС + ОписаниеОшибки());
      Возврат Истина;        
   КонецПопытки;
   
   Попытка
      Desktop = ServiceManager.CreateInstance("com.sun.star.frame.Desktop");
   Исключение
      Сообщить("Ошибка при запуске сервиса Desktop (com.sun.star.frame.Desktop).'" + 
       + Символы.ПС + ОписаниеОшибки());
      Возврат Ложь; 
   КонецПопытки;
    
   Парам = Новый COMSafeArray("VT_DISPATCH", 1);
   
   Свойства1 = ServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue");
   Свойства1.Name = "Hidden";
   Свойства1.Value = Истина;
   Парам.SetValue(0,Свойства1);
   
   Document = Desktop.LoadComponentFromURL(ПривестиФайлКУРЛ(ИмяПрайса), "_blank", 0, Парам);
   
   Document.lockControllers();
   Document.addActionLock();
   
   Sheets=Document.getSheets();
   
   
   //Покраска ярлычков листов
   
   ЦветЯрлычка = 255;//синий
   Sheet = Sheets.getByIndex(0);
   Sheet.TabColor = ЦветЯрлычка;
	
   ЦветЯрлычка = 16776960;//желтый
   Sheet = Sheets.getByIndex(1);
   Sheet.TabColor = ЦветЯрлычка;
   
   
   //Установка активного листа
   oCtrl = Document.CurrentController;
   oCtrl.setActiveSheet(Sheets.getByIndex(0));
	
	//Сохранение документа
   Document.unlockControllers();
   Document.removeActionLock();

   Попытка
      Document.Store();
   Исключение
      Сообщить(ОписаниеОшибки());
   КонецПопытки;

   Document.Close(Истина);
   
   //Отключаем COM - соединение
   Desktop.terminate();
   
   Возврат Истина;
	
КонецФункции
Показать
3. alex_bob 246 27.07.21 14:55 Сейчас в теме +0.5 $m
Думаю, что это невозможно, так как LibreOffice не имеет такой настройки.
4. Olga12 181 27.07.21 16:17 Сейчас в теме
Ну если не имеет, то буду делать без группировок(оформлю характеристики сдвигом текста).
Может кто еще что знает по поводу группировок в ЛО(сохранение руками в xlsx и ods тоже группировки отображает не так как хотелось бы)
5. uno-c 235 29.07.21 00:44 Сейчас в теме
XLSX - это зазипованные XML. Ярлычки листов можно "покрасить" вообще без COM - разобравшись в XML-ях
6. Olga12 181 29.07.21 07:18 Сейчас в теме
(5) ярлычки это часть постобработки(в тестовой как пример), там еще формулы надо вписывать и гиперссылки проставлять.
7. Olga12 181 29.07.21 07:35 Сейчас в теме
(5) Спасибо, в ваших сообщениях нашлось Выгрузка отчета в Excel с формулами, используя заполнение - шаблон макета для сложных формул, так что возможно обойтись, наверное, без постобработки в LO.
Хотя там останется такой момент - пока не перещелкнешь лист - гиперссылки, в частности, не будут на первом листе работать, т.к Пакет сохраняет так, что все листы активны, а надо только один.
8. uno-c 235 29.07.21 07:39 Сейчас в теме +0.5 $m
там еще формулы надо вписывать и гиперссылки проставлять
Тоже через XML реализуемо, но тут уже несравнимо дольше разбираться.
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)