|   |   | 
| 
 | Табличный документ из 1С на новый лист существующей книги Excel | ☑ | ||
|---|---|---|---|---|
| 0
    
        AleksandrUs75 26.05.14✎ 11:11 | 
        Есть внешняя обработка по созданию некой табличной части, в модуле формы которой имеется код:
 ИмяФайла = Объект.Каталог + "\" + Объект.ИмяФайла + ".xlsx"; ТабДок.Записать(ИмяФайла,ТипФайлаТабличногоДокумента.XLSX); В результате которого создается новая книга Excel. Но, есть уже готовая книга с соответствующими листами. Вопрос, как изменить код, чтобы открывалась именно эта книга, добавлялся лист (с определенным именем, если такого еще нет) и уже в него выгружался табличный документ? | |||
| 1
    
        kobzon 26.05.14✎ 11:46 | 
        В результате этого ничего не создается!     | |||
| 2
    
        Crush 26.05.14✎ 11:53 | 
        (0) Создать файл через 1С, и дальше работать экселевскими шестеренками.
 1. Открыть созданный файл; 2. Открыть имеющийся файл; 3. Выбрать всё. Скопировать. 4. Добавить лист. Вставить.:) Сначала сделай вручную с записью макроса. Потом примени этот макрос в 1С. | |||
| 3
    
        Crush 26.05.14✎ 11:59 | 
        + (2) ну и погуглить немного
 http://www.planetaexcel.ru/techniques/3/49/ | |||
| 4
    
        Яйца 1С 26.05.14✎ 12:01 | 
        + права на папку     | |||
| 5
    
        AleksandrUs75 26.05.14✎ 13:01 | 
        (2) (3) Посредством Excel, это понятно, но заказчик не желает производить ни каких дополнительных манипуляций, хотят чтоб из 1С, сразу...
 Поэтому и вопрос, может-ли 1С "сама" добавить лист в существующую книгу Excel? | |||
| 6
    
        Crush 26.05.14✎ 13:20 | 
        1С умеет выполнять в экселе работу пользователя. Ищи 1С + Эксель     | |||
| 7
    
        AleksandrUs75 26.05.14✎ 13:30 | 
        (6) Значит все таки может! Спасибо, пошел искать :)     | |||
| 8
    
        kobzon 26.05.14✎ 13:31 | 
        (7) Тут глянь может поможет: http://exp-1c.narod.ru/articles/articl01.htm     | |||
| 9
    
        AleksandrUs75 26.05.14✎ 13:39 | 
        (8) Уже смотрю, спасибо.     | |||
| 10
    
        AleksandrUs75 28.05.14✎ 10:45 | 
        Проблема не решилась :(
 Изначально база лежит на сервере - Режим: Серверный (сжатие усиленное) Выгрузил ее (для экспериментов) - Режим: Файловый (без сжатия) Сделал ВнешнююОбработку Все работает, открывается Excel, создается лист, выгружаются данные (да, действительно тот еще геморрой). Был безумно счастлив, но не долго… Подключаю обработку к рабочей базе (на сервере) и… На строке: <CODE>ExcelПриложение = Новый COMОбъект("Excel.Application");</CODE> Получаю: Ошибка при запуске Microsoft Excel. {ВнешняяОбработка.ОтчетПоБанку.МодульОбъекта(70)}: Ошибка при вызове конструктора (COMОбъект): -2147221005(0x800401F3): Недопустимая строка с указанием класса : -2147221005(0x800401F3): Недопустимая строка с указанием класса Попробовал так: <CODE>ExcelПриложение = ПолучитьCOMОбъект("D:\1.xlsx");</CODE> Получил: Ошибка при запуске Microsoft Excel. {ВнешняяОбработка.ОтчетПоБанку.МодульОбъекта(72)}: Ошибка при вызове метода контекста (ПолучитьCOMОбъект): Ошибка получения объекта COM: -2147221014(0x800401EA): Не удается открыть файл при помощи специального имени Помогите, че за ерунда? | |||
| 11
    
        Irbis 28.05.14✎ 10:47 | 
        КнигаТемп=Excel.WorkBooks.Open(КаталогВременныхФайлов()+"TempAPP.xls");
 ЛистТемп=КнигаТемп.WorkSheets(1); //Лист=Книга.WorkSheets.Add(); ЛистТемп.Copy(Книга.WorkSheets(1)); Книга.WorkSheets(1).Name="ОПТАН-Челябинск, Чел.-Южный"; КнигаТемп.Close(); УдалитьФайлы(КаталогВременныхФайлов()+"TempAPP.xls"); | |||
| 12
    
        f_vadim 28.05.14✎ 10:48 | 
        (10) а код где исполняется? а excel на сервере есть?     | |||
| 13
    
        AleksandrUs75 28.05.14✎ 10:51 | 
        (12) код в модуле объекта внешней обработки
 Excel на сервере??? а кто его знает... | |||
| 14
    
        1cVandal 28.05.14✎ 10:52 | 
        Excel = Новый COMОбъект("Excel.Application");
 Книга = Excel.Workbooks.Add(); Excel.DisplayAlerts = False; Книга.SaveAs(ФайлДанных); // если удастся найти способ копировать лист из временного файла в текущую открытую книгу, то от этого нагроможденая записей и открытий файла можно будет избавиться Excel.Workbooks(тФайл.Имя).Close(); Книга = Excel.Workbooks.Open(ФайлДанных); Excel.DisplayAlerts = True; ВремФайл = ПолучитьИмяВременногоФайла(РасширениеФайлаExcel); // для сброса в него mxl-ки с бухгалтерской отчетностью вФайл = Новый Файл(ВремФайл); ПечатнаяФорма.Записать(ВремФайл, ?(РасширениеФайлаExcel = "xlsx", ТипФайлаТабличногоДокумента.XLSX, ТипФайлаТабличногоДокумента.XLS)); Excel.Workbooks.Open(ВремФайл); InBook = Excel.Workbooks.Item(вФайл.Имя); OutBook = Excel.Workbooks.Item(тФайл.Имя); InSheet = InBook.Sheets("TDSheet"); // потому что сформированный из mxl-ки лист Excel получает по умолчанию имя "TDSheet" InSheet.Copy(OutBook.Worksheets(1)); Лист = OutBook.Worksheets("TDSheet"); Лист.Name = НазваниеЛиста.Значение; Excel.Workbooks(вФайл.Имя).Close(); СтеретьФайл(ВремФайл); | |||
| 15
    
        1cVandal 28.05.14✎ 10:53 | 
        грубо говоря есть файл эксель А, ты сохранняешь свою инфу в файл Б, затем копируешь из Б в А в новый лист     | |||
| 16
    
        f_vadim 28.05.14✎ 10:53 | 
        (13) хммм... ок. толстый клиент?
 &НаСервере &НаКлиенте - о чём нибудь говорит? | |||
| 17
    
        1cVandal 28.05.14✎ 10:55 | 
        не зареган у тебя эксель на сервере     | |||
| 18
    
        f_vadim 28.05.14✎ 10:56 | 
без установленного екселя не взлетит. ваш КО | |||
| 19
    
        AleksandrUs75 28.05.14✎ 10:57 | 
        т.е. на сервере, где лежит база, обязательно должен быть Excel, и по другому ни как?     | |||
| 20
    
        f_vadim 28.05.14✎ 10:59 | 
        (19) excel должен быть там, где исполняется код.     | |||
| 21
    
        Irbis 28.05.14✎ 10:59 | 
        (19) Эксель должен быть там где выполняется код по созданию объекта Эксель, а на сервере это или нет дело второстепенное     | |||
| 22
    
        AleksandrUs75 28.05.14✎ 11:02 | 
        попробую перенести код на клиента, посмотрим че выйдет...     | |||
| 23
    
        AleksandrUs75 28.05.14✎ 14:12 | 
        Перенес, все ОК!
 Всем спасибо! | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |