|
Создание многостраничного файла Excel фоновым заданием | ☑ | ||
---|---|---|---|---|
0
lalex23
23.12.15
✎
16:58
|
Задача: формировать отчёты по расписанию и рассылать юзерам, отчётов несколько - требуется собрать в один файл, каждый отчёт отдельным листом.
Среда: ОС Win 2012 R2 Std, Excel 2007 12.0.6611.1000 x32, Сервер 1С-х64 8.2.19.76 стартует от выделеного пользователя Usr1Cv82 Что работает: регламентное задание формирует отчёты, сохраняет табличные документы в формате xlsx, COM объект Excel на сервере создаётся, свободно открывает все эти файлы (проверял) Что не работает: как только наступает момент Excel.WorkBooks.Add() - получаю ошибку: Ошибка при вызове метода контекста (Add): Произошла исключительная ситуация (Microsoft Office Excel): Microsoft Office Excel не может открыть или сохранить документы из-за нехватки памяти или места на диске. • Чтобы освободить память, закройте ненужные программы или книги. • Чтобы освободить место на диске, удалите с этого диска ненужные файлы. Код рабочий - на клиенте отрабатывает без проблем. Excel = Новый COMОбъект("Excel.Application"); Excel.DisplayAlerts = False; Excel.Visible = False; NewBook = Excel.WorkBooks.Add(); Для Сч = 0 По МассивФайлов.Количество() - 1 Цикл CurrentFile = Excel.WorkBooks.Open(МассивФайлов[Сч].Файл); CurrentFile.Sheets(1).Name = МассивФайлов[Сч].Наименование; CurrentFile.Sheets(1).Copy(NewBook.Sheets(1)); CurrentFile.Close(); КонецЦикла; NewBook.Sheets(МассивФайлов.Количество() + 1).Delete(); NewBook.Sheets(МассивФайлов.Количество() + 1).Delete(); NewBook.Sheets(МассивФайлов.Количество() + 1).Delete(); ИмяФайлаXLS = ПолучитьИмяВременногоФайла("xls"); NewBook.SaveAs(ИмяФайлаXLS,-4143); NewBook.Close(); Excel.Quit(); Excel = Неопределено; |
|||
1
lalex23
23.12.15
✎
17:06
|
C:\Windows\System32\config\systemprofile\Desktop
C:\Windows\SysWOW64\config\systemprofile\Desktop каталоги существуют и у пользователя на них прав вроде хватает и на чтение и на запись Собственно вопрос: что я делаю не так? Возможно существуют более эффективные способы создания многостраничного xls? Про Ёксель слышал, готов попробовать, но есть вопросы: отработает ли он на сервере и сохранит ли отчёт в исходном виде как он выглядит для пользователя - это мегакритичное условие, юзеры с тонкой душевной организацией, от изменения оттенков фона или ширины колонок начинают нервничать и паниковать. |
|||
2
Garykom
гуру
23.12.15
✎
17:11
|
||||
3
Necessitudo
23.12.15
✎
17:26
|
Кривой дорогой вы идете, товагисч.
|
|||
4
avb
23.12.15
✎
17:36
|
||||
5
lalex23
23.12.15
✎
21:27
|
(2) уточню: отчётов что надо рассылать - около десятка, одни на СКД, другие на построителе, третьи кодом, все их переписать на вывод по этой технологии в принципе можно... когда-нибудь, но я не уверен что удастся сохранить визуальное сходство на 100%, а это одно из основных условий - отчёты должны быть те же.
(3) дык я и прошу махнуть в правильную сторону (4) повторяю: у меня нет проблемы прочитать ексель на сервере COM объект успешно открывает файлы, для чтения я бы вовсе воспользовалcя ADODB, проблема - записать новую книгу и впихнуть туда данные из многих разрозненных отчётов, ошибка возникает на строке NewBook = Excel.WorkBooks.Add(); |
|||
6
Garykom
гуру
23.12.15
✎
21:40
|
vbs скрипт запущенный из 1С с аналогичным кодом (добавления книг/листов) отрабатывает?
если да то разделите задачи |
|||
7
lalex23
23.12.15
✎
22:31
|
уточню ещё раз: код на клиенте работает нормально - итоговый файл генерится в том виде что и требуется, проблема именно при исполнении кода на сервере - фоновым заданием
не уверен что vbs скрипт что-то изменит, но попробовать конечно могу.. |
|||
8
Garykom
гуру
23.12.15
✎
22:39
|
(7) так про это и речь, про попытку запустить vbs фоновым заданием и посмотреть что будет
еще туда запись файла лога добавить |
|||
9
Repey
24.12.15
✎
08:01
|
Логи сервера смотрел?
Ексель на сервере от имени 1С запускал? В запущенном от имени 1С екселе книгу добавлял? В запущенном от имени 1С екселе этот макрос выполнял? |
|||
10
lalex23
24.12.15
✎
10:20
|
проблема явно в том что при создании новой книги ексель где-то пытается создать временный файл, где он это хочет сделать - я так и не понял, потому как на все места куда мне пришло в голову права были выданы, в общем плюнул - создаю из табличного документа новый файл во временном каталоге и вставляю туда листы - кривовато конечно, но сохраняется нормально
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |