Имя: Пароль:
1C
 
1С Запись несколько отчетов в один файл Excel с закладками
0 spiller26
 
20.11.14
09:41
Есть стандартный способ в 1С сохранения нескольких отчетов в один Excel файл закладками без запуска самого Excel?
1 butterbean
 
20.11.14
09:41
нет
2 spiller26
 
20.11.14
09:47
(1) оч.жаль.
Просто есть скрипт, который открывает 1С формирует отчеты, закидывает по закладкам (с открытием Excel в фоне) и отсылает.
Но сработка происходит только когда запустить скрипт ручками.
Где копать не знаю, может кто сталкивался?

До этого не парились, т.к. отчеты по одному рассылались, теперь же захотелось новшеств пользакам.
3 Banned
 
20.11.14
09:55
(2) Послать пользователей - не предлагать? )
4 Лодырь
 
20.11.14
09:58
(2) Так в чем проблема то? Непонятно, что хочется получить.
5 spiller26
 
20.11.14
10:02
(4) Вот кусок формирования

            Попытка    
                //Формирование отчетов
                ТабДок = ПолучитьОтчет(Рез.Вид, НастройкиОтчета, Рез.СКД, Рез.ВнешнийОтчет);
                Если ТипЗнч(ТабДок) = Тип("Строка") Тогда
                    ИмяВременногоФайла = ТабДок;
                ИначеЕсли ТипЗнч(ТабДок) = Тип("ТабличныйДокумент") Тогда    
                    ТабДок.Записать(ИмяВременногоФайла, ТипФайлаТабличногоДокумента.XLSX);
                ИначеЕсли ТипЗнч(ТабДок) = Тип("Структура") Тогда
                    //таблица имени и пути временных файлов
                    МассивВременных = Новый ТаблицаЗначений;
                    МассивВременных.Колонки.Добавить("Название", Новый ОписаниеТипов("Строка"));
                    МассивВременных.Колонки.Добавить("Путь", Новый ОписаниеТипов("Строка"));
                    //запись временных
                    Для каждого СтрСтруктуры Из ТабДок Цикл
                        ИмяВременногоФайлаСтруктуры = КаталогВременныхФайлов() + Рез.Вид + " "+ СтрСтруктуры.Ключ + ".xlsx";
                        //НовТабДок = Новый ТабличныйДокумент;
                        НовТабДок = СтрСтруктуры.Значение;
                        НовТабДок.Записать(ИмяВременногоФайлаСтруктуры, ТипФайлаТабличногоДокумента.XLSX);
                        //
                        ТЗ = МассивВременных.Добавить();
                        ТЗ.Название = СтрСтруктуры.Ключ;
                        ТЗ.Путь     = ИмяВременногоФайлаСтруктуры;
                    КонецЦикла;
                    
                    //определяем переменную
                    Попытка                                                                                            
                        ExcelApp = Новый COMОбъект("Excel.Application");
                    Исключение                                                                                        
                        Предупреждение(ОписаниеОшибки()+"; программа Excel не установлена на данном компьютере!");    
                    КонецПопытки;
                    
                    КнигаЭксель = ExcelApp.Workbooks.Add();
                    ExcelApp.DisplayAlerts = False;

                    Лист = 1;
                    Для Каждого ПутьКФайлуXLS Из МассивВременных Цикл
                        Книга = ExcelApp.WorkBooks.Open(ПутьКФайлуXLS.Путь);
                        Книга.Sheets("TDSheet").Copy(КнигаЭксель.Sheets(Лист));//копируем лист из временного в тек
                        
                        Состояние("Выгружается отчет "+ПутьКФайлуXLS.Название);
                        Книга.Close();
                        КнигаЭксель.Sheets(Лист).Name = ПутьКФайлуXLS.Название;
                        Лист = Лист+1;
                    КонецЦикла;    
                    //удаление 3 листов (стандартных)
                    Попытка
                        КнигаЭксель.Sheets("Лист1").Delete();
                        КнигаЭксель.Sheets("Лист2").Delete();
                        КнигаЭксель.Sheets("Лист3").Delete();
                    Исключение
                        //ОписаниеОшибки()
                    КонецПопытки;
                    
                    КнигаЭксель.SaveAs(ИмяВременногоФайла);
                    КнигаЭксель.Close();        
                    ExcelApp.Application.Quit();
                    //удаление временных файлов
                    //Для каждого ПутьКФайлуXLS Из МассивВременных Цикл
                    //    Попытка
                    //        УдалитьФайлы(СокрЛП(ПутьКФайлуXLS.Путь));
                    //    Исключение
                    //        Сообщить(ОписаниеОшибки());
                    //    КонецПопытки;
                    //КонецЦикла;
                    //<- гап Кравченко 12.11.2014    
                КонецЕсли;
                ОшибкаФормированияотчета = Ложь;
            Исключение
                ОшибкаФормированияотчета = Истина;
                ОписаниеОшибкиФормированияОтчета = ОписаниеОшибки();
            КонецПопытки;
6 Лодырь
 
20.11.14
10:07
и? у тебя проблемы с работоспособностью кода при выполнении его в регламентном задании?
7 spiller26
 
20.11.14
10:07
(6) Да
8 Banned
 
20.11.14
10:07
(6) У него екселя на сервере нет. Вот и проблема.
9 Лодырь
 
20.11.14
10:09
(7) учти (8), сделай себе процедуру с директивой исполнения &НаСервере и тестируй на здоровье. Потом тупо скопируешь текст  в общий модуль и запускай в регламентном.
10 spiller26
 
20.11.14
10:17
(8) Excel - есть
(9) &НаСервере вот про это я как то не учёл момент.
Если эта процедура будет в обработке (&НаСервере), то будет толк или обязательно пихать в общ.модуль?
11 Лодырь
 
20.11.14
10:20
(10) Ты умудряешся задавать вопросы абсолютно непонятные. Которые можно трактовать по разному. Что вы подразумеваете под "будет толк"?
12 spiller26
 
20.11.14
10:23
(11) Процедура обязательно должна быть в общ.модуле или оставить её в обработке, в которой происходит формирование отчетов с рассылкой?
13 Мимохожий Однако
 
20.11.14
10:25
Присоединяюсь к (3), если не понимают (1).
14 Лодырь
 
20.11.14
10:31
(12) Вы сумеете запустить процедуру находящуюся в обработке из регламентного задания? Если да, то оставляйте.
15 spiller26
 
20.11.14
10:33
(14) Да, она так и запускается.
Спасибо за совет, буду пробовать с "&НаСервере".
16 spiller26
 
20.11.14
10:34
(13) Интересно если ты ген.дира послёшь, что будет?
17 Мимохожий Однако
 
20.11.14
10:40
(16)Если подходить буквально, то я не посылаю никого. Это невежливо. А вот по сути и вежливо я многократно повторяю как мантру "нет". )) Просто и коротко. "В платформе на данный момент это не предусмотрено". Если очень хочет, то пусть покупает Офис и тогда средствами Excel.
18 Лодырь
 
20.11.14
11:39
(17) Нарветесь на грамотного заказчика и получите геморрой с openoffice
19 spiller26
 
20.11.14
11:57
Все разрешилось.
На сервере просто нужно было создать папку
Windows\SysWOW64\config\systemprofile\Desktop
т.к. сервер 64х, а Excel 32х
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан