|
Excel.Workbooks.Add() | ☑ | ||
---|---|---|---|---|
0
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(ФайлДанных); и посмотрел какая при этом возникает ошибка. Возможно (и даже скорее всего) она и не дает создать рабочую книгу. |
|||
2
mistеr
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? :))))))
Сразу нельзя впихнуть? кстати, речь же о печ. форме? |
|||
8
mistеr
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) Мужчина... Однозначно... :))))))))
|
|||
12
mistеr
18.04.18
✎
10:29
|
(10) Можно так, но... некрасиво. :)
|
|||
13
Остап Сулейманович
18.04.18
✎
10:31
|
(12) Самый простой путь - скорее всего самый правильный.
|
|||
14
nadysaan
18.04.18
✎
11:05
|
изначально было
Книга = Excel.Workbooks.Add(); это потом уже эксперементы пошли с попыткой открыть файл |
|||
15
nadysaan
18.04.18
✎
11:08
|
Речь не про печ форму. Создаю ексель документ чтобы отправить поставщику
|
|||
16
Vovik
18.04.18
✎
11:10
|
Это ж эксель. Воркбукс, воркщитс. Примеров масса в нете. Помоему кстати по разному отрабатывает в зависимости от того в какой версии сохранишь (ексель 97, лист ексель, xls?xlsx).
|
|||
17
nadysaan
18.04.18
✎
11:11
|
при проверке на ЗначениеЗаполнено(Excel) пишет
Обработка.Доработка_ЗаказНоменклатуры.Форма.Форма.Форма(1448)}: Ошибка при вызове метода контекста (ЗначениеЗаполнено) Если ЗначениеЗаполнено(Excel) Тогда по причине: Проверка мутабельных значений на заполненность не поддерживается |
|||
18
nadysaan
18.04.18
✎
11:12
|
ИмяФайла = КаталогВременныхФайлов()+НаименованиеФайла+".xls"
Excel2013 |
|||
19
mistеr
18.04.18
✎
11:15
|
(17) Тогда так
Если Excel <> Неопределено Тогда |
|||
20
Масянька
18.04.18
✎
11:17
|
(15) И что?
Выгрузить во врем. таблицу и её пихануть в Excel. |
|||
21
nadysaan
18.04.18
✎
11:18
|
Excel <> Неопределено Истина
|
|||
22
nadysaan
18.04.18
✎
11:19
|
Попытка
Книга = Excel.WorkBooks.Add(); Именно здесь вылетает |
|||
23
mistеr
18.04.18
✎
11:26
|
Что-то с Экселем не так, похоже.
Если подумать, то на этой строке Книга = Excel.Workbooks.Open(ФайлДанных); тоже вылетает, а ошибку не видно, она съедается. Добавь Сообщить(ОписаниеОшибки()) перед Книга = Excel.Workbooks.Add(); |
|||
24
Масянька
18.04.18
✎
11:28
|
(12) Насчет "красиво": ИМХО, красиво - это когда одна строка кода.
|
|||
25
nadysaan
18.04.18
✎
11:33
|
Никакого сообщения нет, просто спокойно проходит строку Сообщить(ОписаниеОшибки());
а на этой Книга = Excel.WorkBooks.Add(); в исключение идет сразу |
|||
26
Spirtus
18.04.18
✎
11:36
|
А нафига козе баян, когда 1С само умеет в Excel?
http://catalog.mista.ru/public/341855/ |
|||
27
Happy Bear
18.04.18
✎
11:37
|
регистр важен - пиши WorkBooks
|
|||
28
mistеr
18.04.18
✎
11:50
|
(27) Да ладно
|
|||
29
mistеr
18.04.18
✎
11:52
|
(26) По ссылке - "ИЗ" Excel. А тут как раз "В" нужно/
|
|||
30
nadysaan
18.04.18
✎
11:53
|
"регистр важен - пиши WorkBooks" -Ctrl + C Ctrl + v не помогло
|
|||
31
aka AMIGO
18.04.18
✎
11:54
|
Ну почему все забывают про макросы?!?!
Проще всего подсмотреть, что делает сам Excel, а не изобретать ненужные ему функции.. |
|||
32
Spirtus
18.04.18
✎
11:55
|
(29) А синтакс-помощник отменили уже?
|
|||
33
aka AMIGO
18.04.18
✎
11:57
|
(32) Сменили название на "Миста" :)
|
|||
34
nadysaan
18.04.18
✎
11:58
|
(29) А синтакс-помощник отменили уже? Весь уже пересмотрела, нет про ADD ничего. Найдешь скажу спасибо
|
|||
35
aka AMIGO
18.04.18
✎
11:59
|
(34) Поменяй пол в личке.
|
|||
36
PiotrLoginov
18.04.18
✎
12:00
|
(15) "Создаю ексель документ чтобы отправить поставщику" имхо, ошибка здесь. Следовало формировать данные силами платформы, после чего просто сохранить таблицу в формате, удобном поставщику - excel, pdf или еще каком-то.
|
|||
37
Масянька
18.04.18
✎
12:00
|
(36) Они ищут "красиво"... :)
|
|||
38
PiotrLoginov
18.04.18
✎
12:02
|
+ (35) и фото тогда не забудь
|
|||
39
Масянька
18.04.18
✎
12:03
|
+ (37)
- Лёлик! Это же не эстетично! - Зато - дешево, надежно и практично! (тут - клюшкой по голове) (С) :)))))))))))) |
|||
40
nadysaan
18.04.18
✎
12:03
|
(34) Поменяй пол в личке. Поменяла :)
|
|||
41
Масянька
18.04.18
✎
12:04
|
(35) Валера! Как ники вставлять?
|
|||
42
Spirtus
18.04.18
✎
12:05
|
(34) Общие объекты - Табличный документ - Методы - Записать
|
|||
43
nadysaan
18.04.18
✎
12:05
|
(15) "Создаю ексель документ чтобы отправить поставщику" имхо, ошибка здесь. Следовало формировать данные силами платформы, после чего просто сохранить таблицу в формате, удобном поставщику - excel, pdf или еще каком-то.
Данные с помощью обработки формируются для манагеров, потом после проверки манагер должен нажать "Волшебную кнопку" и то что он (манагер) навоял должно улететь поставщику |
|||
44
aka AMIGO
18.04.18
✎
12:06
|
(40) Теперь - порядок :)
(41) Собака + текст ника. Если в нике есть пробелы - ник после собаки взять в фигурные скобки.. @{...} Как-то так.. ЗЫ. тест: @Масянька |
|||
45
Масянька
18.04.18
✎
12:06
|
(44) Не работает... Однако...
|
|||
46
Масянька
18.04.18
✎
12:07
|
(43) Очень тяжелый случай...
|
|||
47
aka AMIGO
18.04.18
✎
12:08
|
Мммм... После сбоя на серверах Мисты было восстановление форума, и этот способ перестал работать..
Некогда Asmody ремонтировать.. :(( |
|||
48
nadysaan
18.04.18
✎
12:08
|
вопрос не в том, как надо, а как не надо, не понятки именно с ADD. Много ваяла таких обработок и для этого клиента тоже есть несколько. а сейчас споткнулась и не знаю куда ковырять. или сервак или... не знаю. на другом серваке у этого же клиента даже ошибку не выдает, просто уходит в нирвану
|
|||
49
aka AMIGO
18.04.18
✎
12:09
|
Иногда срабатывает..
|
|||
50
nadysaan
18.04.18
✎
12:09
|
если предложений нет, буду по другому пробовать.
|
|||
51
mistеr
18.04.18
✎
12:10
|
(36) Вот у меня есть один "поставщик", которому нужно в формате .xls, причем два таблицы на двух листах, в одном файле. И никак иначе.
|
|||
52
Victor111
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С наличие файла прежде, чем пытаешься его открыть.
|
|||
56
nadysaan
18.04.18
✎
12:44
|
{Обработка.Доработка_ЗаказНоменклатуры.Форма.Форма.Форма(1448)}: Метод объекта не обнаружен (Save)
Excel.WorkBooks.Save(ФайлДанных); Попытка Excel = Новый COMОбъект("Excel.Application"); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; Excel.WorkBooks.SaveAs(ФайлДанных); Книга = Excel.WorkBooks.Open(ФайлДанных); Книга = Excel.WorkBooks.Add(); |
|||
57
Victor111
18.04.18
✎
12:50
|
(56) пример: Excel.ActiveWorkbook.SaveAs("C:\Temp\Файл.xls")
1) проверьте Полное имя файла или нет под переменной "ФайлДанных" |
|||
58
nadysaan
18.04.18
✎
12:55
|
{Обработка.Доработка_ЗаказНоменклатуры.Форма.Форма.Форма(1448)}: Метод объекта не обнаружен (SaveAs)
Excel.WorkBooks.SaveAs("C:\Temp\Проба.xls"); |
|||
59
dezss
18.04.18
✎
13:05
|
а там точно есть эксель?
|
|||
60
nadysaan
18.04.18
✎
13:09
|
:) Точно
|
|||
61
catena
18.04.18
✎
13:31
|
А если все-таки поставить возврат в исключение?
Попытка Excel = Новый COMОбъект("Excel.Application"); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; |
|||
62
nadysaan
18.04.18
✎
13:35
|
Может я Вас не понимаю, но у меня изначально как было
Попытка Excel = Новый COMОбъект("Excel.Application"); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; так и осталось |
|||
63
catena
18.04.18
✎
13:46
|
(62)Где возврат в исключении? Зачем дальше работать, если подключения не произошло?
Попытка Excel = Новый COMОбъект("Excel.Application"); Исключение Сообщить(ОписаниеОшибки()); ВОЗВРАТ; КонецПопытки; |
|||
64
nadysaan
18.04.18
✎
13:58
|
в том то и дело что подключение срабатывает
Excel <> Неопределено = Истина, проверила, зачем возврат? |
|||
65
1Садовник
18.04.18
✎
14:06
|
в (0) если файл существует то он открывается и ... ВСЕ (ошибок никаких не будет).
Если файла нет - он должен создаваться и записываться. У пользователя есть права на запись файла? |
|||
66
nadysaan
18.04.18
✎
14:29
|
я уже даже создала этот файл и через Excel он открывается спокойно, а из 1с нет. Захожу под пользователем с полными правами
|
|||
67
1Садовник
18.04.18
✎
14:33
|
(66) не могу воспроизвести ошибку. Этот кусок работает без ошибок:
Ексель = Новый COMОбъект("Excel.Application"); Попытка Книга = Ексель.Workbooks.Open("D:\Книга4.xlsx"); Исключение Книга = Ексель.Workbooks.Add(); Книга.SaveAs("D:\Книга9.xlsx"); КонецПопытки; |
|||
68
mistеr
18.04.18
✎
14:39
|
Я же говорю, что-то с Экселем не так.
(66) На локальном компе работает? |
|||
69
Сияющий в темноте
18.04.18
✎
19:55
|
Во первых,у адд могут быть параметры,во-вторых,когда вы создали ексель,он не инициализирован,и именно это может ему мешать работать
потом не забываем ставить Visible,иначе в диспетчере задач множатся процессы ексель со страшной силой |
|||
70
Сияющий в темноте
19.04.18
✎
09:27
|
Кстати,для работы ексель на сервере нужно,чтобы у серверного пользователя было хранилище настроек и рабочий стол,тогда при открытии или создании файла ексель не будет падать из за невозможности что то записать в аппдата
удачи |
|||
71
nadysaan
19.04.18
✎
11:02
|
Разобрались, кому интересно, проблема в том, что 1с 64 разрядная, а office 32 разрядный
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |