Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Excel.Workbooks.Add()

Excel.Workbooks.Add()
Я
   nadysaan
 
18.04.18 - 09:54
Всем доброго дня!
Валится ошибка, моя не понимать. Помогите!
{Обработка.Доработка_ЗаказНоменклатуры.Форма.Форма.Форма(1452)}: Ошибка при вызове метода контекста (Add)
        Книга = Excel.Workbooks.Add();
по причине:
Произошла исключительная ситуация (Microsoft Excel): Невозможно получить свойство Add класса Workbooks
Кусок кода:
    НаименованиеФайла = "Заказ " + СокрЛП(ПоставщикДляОтбора.Наименование);

    ИмяФайла = КаталогВременныхФайлов()+НаименованиеФайла+".xls";
    ФайлДанных = ИмяФайла;
        //подключаемся к MS Excel

    Попытка
        Excel = Новый COMОбъект("Excel.Application");
        
    Исключение
        Сообщить(ОписаниеОшибки());
    КонецПопытки;
    Попытка                          
        Книга = Excel.Workbooks.Open(ФайлДанных);
    Исключение
        Книга = Excel.Workbooks.Add();
        Книга.SaveAs(ФайлДанных);
    КонецПопытки;
 
 
   Остап Сулейманович
 
1 - 18.04.18 - 10:01
(0) Я бы сделал так. Убрал бы из попытки
Книга = Excel.Workbooks.Open(ФайлДанных);
и посмотрел какая при этом возникает ошибка. Возможно (и даже скорее всего) она и не дает создать рабочую книгу.
   mistеr
 
2 - 18.04.18 - 10:01
(0) Проверь на ЗначениеЗаполнено(Excel)
   Масянька
 
3 - 18.04.18 - 10:10
(0) А зачем Add?
   Остап Сулейманович
 
4 - 18.04.18 - 10:13
(3) Если не удалось открыть из папки временных файлов - тогда просто добавим пустой. А вот зачем... - тут интрига.
   Масянька
 
5 - 18.04.18 - 10:13
(4) А просто записать не вариант?
   Остап Сулейманович
 
6 - 18.04.18 - 10:17
(5) Ну так потом и делается Книга.SaveAs(ФайлДанных);
Тут больше вопрос зачем пытаться открыть файл, которого может и не быть. И почему бы не проверить существование до момента открытия? Опять же... Интрига.
   Масянька
 
7 - 18.04.18 - 10:20
(6) По кругу - зачем Add? :))))))
Сразу нельзя впихнуть?
кстати, речь же о печ. форме?
   mistеr
 
8 - 18.04.18 - 10:22
(7) Как создать книгу без Add()?
   Остап Сулейманович
 
9 - 18.04.18 - 10:23
(7) "Сразу нельзя впихнуть?" Не понятен вопрос. Кому именно впихнуть? И почему именно сразу? )))
"речь же о печ. форме?" - не факт. Исходя из
"НаименованиеФайла = "Заказ " + СокрЛП(ПоставщикДляОтбора.Наименование);" 
возможно такой себе файл обмена с контрагентом.
   Масянька
 
10 - 18.04.18 - 10:25
(8) Это семерка:
        КаталогДляЗаписи = СокрЛП(КаталогДляЗаписи + "xls");
        
        ТабДокумент = СоздатьОбъект ("ТабличныйДокумент");
        ТабДокумент.ЗагрузитьИзТаблицы (АктивныйКонтекст);
        ТабДокумент.ПараметрыПечати.Ориентация = 1;
        
        ТабДокумент.Записать(КаталогДляЗаписи, 1);
        
        // удаляем картинки (печать + подписи)

        Excel    = СоздатьОбъект("Excel.Application");
        Книга     = Excel.Application.Workbooks.Open(КаталогДляЗаписи); 
        Лист     = Книга.WorkSheets(1);
        Лист.Shapes.SelectAll();
        Excel.Selection.Delete();
        Книга.Save();
        Excel.ActiveWorkBook.Close(0);

Восьмерка настолько сырая?
 
 Рекламное место пустует
   Масянька
 
11 - 18.04.18 - 10:25
(9) Мужчина... Однозначно... :))))))))
   mistеr
 
12 - 18.04.18 - 10:29
(10) Можно так, но... некрасиво. :)
   Остап Сулейманович
 
13 - 18.04.18 - 10:31
(12) Самый простой путь - скорее всего самый правильный.
   nadysaan
 
14 - 18.04.18 - 11:05
изначально было
Книга = Excel.Workbooks.Add();
 это потом уже эксперементы пошли с попыткой открыть файл
   nadysaan
 
15 - 18.04.18 - 11:08
Речь не про печ форму. Создаю ексель документ чтобы отправить поставщику
   Vovik
 
16 - 18.04.18 - 11:10
Это ж эксель. Воркбукс, воркщитс. Примеров масса в нете. Помоему кстати по разному отрабатывает в зависимости от того в какой версии сохранишь (ексель 97, лист ексель, xls?xlsx).
   nadysaan
 
17 - 18.04.18 - 11:11
при проверке на ЗначениеЗаполнено(Excel) пишет 
Обработка.Доработка_ЗаказНоменклатуры.Форма.Форма.Форма(1448)}: Ошибка при вызове метода контекста (ЗначениеЗаполнено)
    Если ЗначениеЗаполнено(Excel) Тогда
по причине:
Проверка мутабельных значений на заполненность не поддерживается
   nadysaan
 
18 - 18.04.18 - 11:12
ИмяФайла = КаталогВременныхФайлов()+НаименованиеФайла+".xls"
Excel2013
   mistеr
 
19 - 18.04.18 - 11:15
(17) Тогда так 

   Если Excel <> Неопределено Тогда
   Масянька
 
20 - 18.04.18 - 11:17
(15) И что?
Выгрузить во врем. таблицу и её пихануть в Excel.
   nadysaan
 
21 - 18.04.18 - 11:18
Excel <> Неопределено Истина
   nadysaan
 
22 - 18.04.18 - 11:19
Попытка
Книга = Excel.WorkBooks.Add();
Именно здесь вылетает
   mistеr
 
23 - 18.04.18 - 11:26
Что-то с Экселем не так, похоже.
Если подумать, то на этой строке


  Книга = Excel.Workbooks.Open(ФайлДанных);


тоже вылетает, а ошибку не видно, она съедается. Добавь Сообщить(ОписаниеОшибки()) перед


  Книга = Excel.Workbooks.Add();
   Масянька
 
24 - 18.04.18 - 11:28
(12) Насчет "красиво": ИМХО, красиво - это когда одна строка кода.
   nadysaan
 
25 - 18.04.18 - 11:33
Никакого сообщения нет, просто спокойно проходит строку        Сообщить(ОписаниеОшибки());
а на этой 
Книга = Excel.WorkBooks.Add();
в исключение идет сразу
   Spirtus
 
26 - 18.04.18 - 11:36
А нафига козе баян, когда 1С само умеет в Excel?
http://catalog.mista.ru/public/341855/
   Happy Bear
 
27 - 18.04.18 - 11:37
регистр важен - пиши WorkBooks
   mistеr
 
28 - 18.04.18 - 11:50
(27) Да ладно
   mistеr
 
29 - 18.04.18 - 11:52
(26) По ссылке - "ИЗ" Excel. А тут как раз "В" нужно/
   nadysaan
 
30 - 18.04.18 - 11:53
"регистр важен - пиши WorkBooks" -Ctrl + C Ctrl + v не помогло
   aka AMIGO
 
31 - 18.04.18 - 11:54
Ну почему все забывают про макросы?!?!
Проще всего подсмотреть, что делает сам Excel, а не изобретать ненужные ему функции..
   Spirtus
 
32 - 18.04.18 - 11:55
(29) А синтакс-помощник отменили уже?
   aka AMIGO
 
33 - 18.04.18 - 11:57
(32) Сменили название на "Миста" :)
 
 
   nadysaan
 
34 - 18.04.18 - 11:58
(29) А синтакс-помощник отменили уже? Весь уже пересмотрела, нет про ADD ничего. Найдешь скажу спасибо
   aka AMIGO
 
35 - 18.04.18 - 11:59
(34) Поменяй пол в личке.
   PiotrLoginov
 
36 - 18.04.18 - 12:00
(15) "Создаю ексель документ чтобы отправить поставщику"  имхо, ошибка здесь.   Следовало формировать данные силами платформы, после чего просто сохранить таблицу в формате, удобном поставщику - excel, pdf или еще каком-то.
   Масянька
 
37 - 18.04.18 - 12:00
(36) Они ищут "красиво"... :)
   PiotrLoginov
 
38 - 18.04.18 - 12:02
+ (35)  и фото тогда не забудь
   Масянька
 
39 - 18.04.18 - 12:03
+ (37) 
- Лёлик! Это же не эстетично!
- Зато - дешево, надежно и практично!
(тут - клюшкой по голове)
(С)
:))))))))))))
   nadysaan
 
40 - 18.04.18 - 12:03
(34) Поменяй пол в личке. Поменяла :)
   Масянька
 
41 - 18.04.18 - 12:04
(35) Валера! Как ники вставлять?
   Spirtus
 
42 - 18.04.18 - 12:05
(34) Общие объекты - Табличный документ - Методы - Записать
   nadysaan
 
43 - 18.04.18 - 12:05
(15) "Создаю ексель документ чтобы отправить поставщику"  имхо, ошибка здесь.   Следовало формировать данные силами платформы, после чего просто сохранить таблицу в формате, удобном поставщику - excel, pdf или еще каком-то.
Данные с помощью обработки формируются для манагеров, потом после проверки манагер должен нажать "Волшебную кнопку" и то что он (манагер) навоял должно улететь поставщику
   aka AMIGO
 
44 - 18.04.18 - 12:06
»
   Масянька
 
45 - 18.04.18 - 12:06
»
   Масянька
 
46 - 18.04.18 - 12:07
»
   aka AMIGO
 
47 - 18.04.18 - 12:08
»
   nadysaan
 
48 - 18.04.18 - 12:08
вопрос не в том, как надо, а как не надо, не понятки именно с ADD. Много ваяла таких обработок и для этого клиента тоже есть несколько. а сейчас споткнулась и не знаю куда ковырять. или сервак или... не знаю. на другом серваке у этого же клиента даже ошибку не выдает, просто уходит в нирвану
   aka AMIGO
 
49 - 18.04.18 - 12:09
»
 
 Рекламное место пустует
   nadysaan
 
50 - 18.04.18 - 12:09
если предложений нет, буду по другому пробовать.
   mistеr
 
51 - 18.04.18 - 12:10
(36) Вот у меня есть один "поставщик", которому нужно в формате .xls, причем два таблицы на двух листах, в одном файле. И никак иначе.
   Victor111
 
52 - 18.04.18 - 12:10
(0) Проверьте настройку DCOM компоненты "Excel.Application"
http://catalog.mista.ru/public/325873/
   Остап Сулейманович
 
53 - 18.04.18 - 12:14
(50) Тебе уже предложили. Вынеси Книга = Excel.Workbooks.Open(ФайлДанных); за Попытку и прочитай ошибку. Наверняка Эксель пытается тебе сказать, что файл типа "разрушен". И спрашивает что делать.

Поскольку вот это вот :
НаименованиеФайла = "Заказ " + СокрЛП(ПоставщикДляОтбора.Наименование);

ИмяФайла = КаталогВременныхФайлов()+НаименованиеФайла+".xls";
    ФайлДанных = ИмяФайла;

...
Книга = Excel.Workbooks.Open(ФайлДанных);
Скорее всего приводит к тому, что эксель пытается открыть несуществующий файл. И обработка ошибки методами 1С ничего не дает.
   Остап Сулейманович
 
54 - 18.04.18 - 12:16
+ (53) Если коротко - то ПЕРЕД Excel.Workbooks.Open(ФайлДанных) нужно что бы когда-нибудь было Excel.Workbooks.Save(ФайлДанных). У тебя этого нет. Поэтому Ексель не понимает что от него хотят.

ЗЫ. Я бы точно не понял.
   Остап Сулейманович
 
55 - 18.04.18 - 12:17
+ (54) Ну или хотя бы проверь средствами 1С наличие файла прежде, чем пытаешься его открыть.
   nadysaan
 
56 - 18.04.18 - 12:44
{Обработка.Доработка_ЗаказНоменклатуры.Форма.Форма.Форма(1448)}: Метод объекта не обнаружен (Save)
    Excel.WorkBooks.Save(ФайлДанных);    

Попытка
        Excel = Новый COMОбъект("Excel.Application");
        
    Исключение
        Сообщить(ОписаниеОшибки());
    КонецПопытки;
    Excel.WorkBooks.SaveAs(ФайлДанных);    
    Книга = Excel.WorkBooks.Open(ФайлДанных);
    Книга = Excel.WorkBooks.Add();
   Victor111
 
57 - 18.04.18 - 12:50
(56) пример: Excel.ActiveWorkbook.SaveAs("C:\Temp\Файл.xls")
1) проверьте Полное имя файла или нет под переменной "ФайлДанных"
   nadysaan
 
58 - 18.04.18 - 12:55
{Обработка.Доработка_ЗаказНоменклатуры.Форма.Форма.Форма(1448)}: Метод объекта не обнаружен (SaveAs)
    Excel.WorkBooks.SaveAs("C:\Temp\Проба.xls");
   dezss
 
59 - 18.04.18 - 13:05
а там точно есть эксель?
   nadysaan
 
60 - 18.04.18 - 13:09
:) Точно
   catena
 
61 - 18.04.18 - 13:31
А если все-таки поставить возврат в исключение?

    Попытка
        Excel = Новый COMОбъект("Excel.Application");
    Исключение
        Сообщить(ОписаниеОшибки());
    КонецПопытки;
   nadysaan
 
62 - 18.04.18 - 13:35
Может я Вас не понимаю, но у меня изначально как было
    Попытка
        Excel = Новый COMОбъект("Excel.Application");
    Исключение
        Сообщить(ОписаниеОшибки());
    КонецПопытки;

так и осталось
   catena
 
63 - 18.04.18 - 13:46
(62)Где возврат в исключении? Зачем дальше работать, если подключения не произошло?

    Попытка
        Excel = Новый COMОбъект("Excel.Application");
    Исключение
        Сообщить(ОписаниеОшибки());
        ВОЗВРАТ;
    КонецПопытки;
   nadysaan
 
64 - 18.04.18 - 13:58
в том то и дело что подключение срабатывает 
Excel <> Неопределено = Истина, проверила, зачем возврат?
   1Садовник
 
65 - 18.04.18 - 14:06
в (0) если файл существует то он открывается и ... ВСЕ (ошибок никаких не будет).

Если файла нет - он должен создаваться и записываться. У пользователя есть права на запись файла?
   nadysaan
 
66 - 18.04.18 - 14:29
я уже даже создала этот файл и через Excel он открывается спокойно, а из 1с нет. Захожу под пользователем с полными правами
   1Садовник
 
67 - 18.04.18 - 14:33
(66) не могу воспроизвести ошибку. Этот кусок работает без ошибок:

Ексель   = Новый COMОбъект("Excel.Application");
Попытка                          
   Книга = Ексель.Workbooks.Open("D:\Книга4.xlsx");
Исключение
   Книга = Ексель.Workbooks.Add();
   Книга.SaveAs("D:\Книга9.xlsx");
КонецПопытки;
   mistеr
 
68 - 18.04.18 - 14:39
Я же говорю, что-то с Экселем не так.

(66) На локальном компе работает?
   Сияющий в темноте
 
69 - 18.04.18 - 19:55
Во первых,у адд могут быть параметры,во-вторых,когда вы создали ексель,он не инициализирован,и именно это может ему мешать работать
потом не забываем ставить Visible,иначе в диспетчере задач множатся процессы ексель со страшной силой
   Сияющий в темноте
 
70 - 19.04.18 - 09:27
Кстати,для работы ексель на сервере нужно,чтобы у серверного пользователя было хранилище настроек и рабочий стол,тогда при открытии или создании файла ексель не будет падать из за невозможности что то записать в аппдата
удачи
   nadysaan
 
71 - 19.04.18 - 11:02
Разобрались, кому интересно, проблема в том, что 1с 64 разрядная, а office 32 разрядный


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует