Имя: Пароль:
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С нужно отображать по особому?
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn