Имя: Пароль:
1C
1С v8
При объединении нескольких файлов xls в один меняются цвета в результирующем файле
0 Saari
 
26.10.23
10:43
Формируется отчет и результат выводится в три печатные формы.
Необходимо эти три печатные формы сохранить программно в один файл xls с тремя закладками (листами).
В результате процедуры (см. ниже) в результирующем файле сбиваются цвета ячеек. Причем перед объединением файлов в один цвета нормальные.
Вот код:

ТабДок = ВыводНаПечатьНаСервере("ОбщаяВыручка", "1");
ТабДок.Записать(Отчет.ВыбПутьКФайлу + "\temp1.xls", ТипФайлаТабличногоДокумента.XLS);
	
ТабДок = ВыводНаПечатьНаСервере("Выручка1", "2");
ТабДок.Записать(Отчет.ВыбПутьКФайлу + "\temp2.xls", ТипФайлаТабличногоДокумента.XLS);
	
ТабДок = ВыводНаПечатьНаСервере("Выручка2", "3");
ТабДок.Записать(Отчет.ВыбПутьКФайлу + "\temp3.xls", ТипФайлаТабличногоДокумента.XLS);

ОбъектЭксель = ПолучитьCOMОбъект("", "Excel.Application");
ОбъектЭксель.SheetsInNewWorkbook = 1;
ОбъектЭксель.DisplayAlerts = False;
Книга = ОбъектЭксель.Workbooks.Add();

ИмяФайла = Отчет.ВыбПутьКФайлу + "\ОтчетВыруча.xls";

НомерЛиста = 1;
 Пока НомерЛиста <= 3 Цикл
   ИмяВременногоФайла = Отчет.ВыбПутьКФайлу + "\temp" + Строка(НомерЛиста) + ".xls";
   ВременнаяКнига = ОбъектЭксель.Workbooks.Open(ИмяВременногоФайла);
   ЛистИсточник = ВременнаяКнига.WorkSheets(1);
   ЛистИсточник.Copy(Книга.WorkSheets(НомерЛиста));
   Книга.WorkSheets(НомерЛиста).Name = ?(НомерЛиста = 1, "Общая выручка",?(НомерЛиста = 2, "Выручка1", "Выручка2"));
   ВременнаяКнига.Close(0);			
   НомерЛиста = НомерЛиста + 1;			
 КонецЦикла;		
Книга.Sheets(НомерЛиста).Delete();		
ОбъектЭксель.Workbooks(1).Activate();
Книга.Worksheets(1).Activate();
Книга.SaveAs(ИмяФайла, 18);
Книга.Close(0);		
ОбъектЭксель.Quit();


Помогите, пожалуйста, решить проблему с изменением цветов ячеек.
1 Волшебник
 
26.10.23
10:43
Создайте корневой файл, где первой строчкой будут раскрашенные ячейки с палитрой документа. Строчку можно скрыть.
Объединяйте остальные файлы с корневым.
2 RomanYS
 
26.10.23
10:45
(0) У 1С есть свой объект для сохранения многостраничных экселей - ПакетОтображаемыхДокументов
3 Saari
 
26.10.23
11:48
(1) Подскажите, пожалуйста, как форматировать текст, чтобы код был как в первом сообщении? Какие теги добавлять?
4 Saari
 
26.10.23
11:49
(2) Получилось! Только пока в итоговом файле листы не переименованы как нужно. Ищу как переименовать лист.
5 DJ Anthon
 
26.10.23
11:58
(4) что там искать?
            //ОднаКнига = Новый ПакетОтображаемыхДокументов;
            //Элт = ОднаКнига.Состав.Добавить();
            //Элт.Данные = ПоместитьВоВременноеХранилище(Содержимое);
            //Элт.Наименование = "Данные";
            //Элт = ОднаКнига.Состав.Добавить();
            //Элт.Данные = ПоместитьВоВременноеХранилище(Справочники);
            //Элт.Наименование = "Справочники";
            //ОднаКнига.Записать(ПутьКФайлу, ТипФайлаПакетаОтображаемыхДокументов.XLSX);
6 Saari
 
26.10.23
12:50
Всем спасибо!
Все получилось.
И все же, как в сообщении на этом форуме указать, что текст кода процедуры 1С нужно отображать по особому?