Ошибка создания excel application

   Sh_Vlad

13.01.15 — 12:18

Здравстуйте.

Перестало работать:

Ексель = Новый COMОбъект(«Excel.Application»);

по причине:

-2147221005(0x800401F3): Недопустимая строка с указанием класса

Куда смотреть?

Спасибо.

   mikecool

1 — 13.01.15 — 12:20

не установлен эксель, смотреть в программы и компоненты

   Sh_Vlad

2 — 13.01.15 — 12:20

(1) Установлен. 2003

   Feunoir

3 — 13.01.15 — 12:25

Проверить наличие HKEY_CLASSES_ROOTExcel.Application в реестре.

   Sh_Vlad

4 — 13.01.15 — 12:33

(3) Наличиствует. + HKEY_CLASSES_ROOTExcel.Application.11

   Sh_Vlad

5 — 13.01.15 — 12:34

Работало до недавнего времени. Года три обработке

   Leksus

6 — 13.01.15 — 12:35

В релизе 8.3.5.1400 кажется что-то исправляли с подключением ком

   senior

7 — 13.01.15 — 12:38

создай этот же COM объект в блокноте на VB, думаю проблема не в 1С

   Sh_Vlad

8 — 13.01.15 — 13:05

(7) Если можно — поподробнее…

   DrZombi

9 — 13.01.15 — 13:13

(8) А точно 2003? Бывает, что обновляются до 2007 и усе :)

   Rie

10 — 13.01.15 — 13:15

(4) Ну так попробуй указать явно «Excel.Application.11»

   Rie

11 — 13.01.15 — 13:18

+(10) И посмотри, на всякий случай, в реестре в CLSID — путь правильный?

   Sh_Vlad

12 — 13.01.15 — 13:23

(11) Там вообще не путь. А {00024500-0000-0000-C000-000000000046}

   Rie

13 — 13.01.15 — 13:28

(12) В  разделе CLSID этот ключ найди и посмотри куда LocalServer (LocalServer32) смотрит.

   Sh_Vlad

14 — 13.01.15 — 13:48

(13) Путь правильный

   Rie

15 — 13.01.15 — 13:49

Пробовал (10)?

   Sh_Vlad

16 — 13.01.15 — 13:49

Да

   Rie

17 — 13.01.15 — 14:15

(8) Создай (в блокноте) файл с расширением .vbs

Вставь туда

set xl = CreateObject(«Excel.Application»)

xl.Workbooks.Add

xl.Visible = 1

Сохрани и запусти.

Что получилось?

   Sh_Vlad

18 — 13.01.15 — 14:59

(17) Получилось — открылась новая книга Ексель

   Sh_Vlad

19 — 13.01.15 — 15:03

Причем оба варианта — Excel.Application и Excel.Application.11

   Sh_Vlad

20 — 13.01.15 — 15:54

Люди добрые, есть еще варианты причин ошибки?

   Zamestas

21 — 13.01.15 — 15:57

(20) Запустить от администратора пробовал?

   Sh_Vlad

22 — 13.01.15 — 16:01

(21) Что запустить — Предприятие? Вообще-то учетка админская…

   DrZombi

23 — 13.01.15 — 16:10

(22) Обновись на старый релиз :)

   Zamestas

24 — 13.01.15 — 16:11

(22) Да предприятие, в win7/2008 и старше админские права не означают полные права.

   Sh_Vlad

25 — 13.01.15 — 16:19

Не помогло…

   ZUM

26 — 13.01.15 — 16:31

Здравствуйте!

1) Попробуйте это

При подключении к базе com-объектом вылетает ошибка (файл с ошибкой во вложении, вылетает на строчке кода при создании ком-объекта: Коннектор = Новый COMОбъект(«V8.COMConnector»);)

На форумах по данной ошибке нашла решение, но попробовав это проделать, у меня не получилось уже на первом пункте, возможно не хватает прав. Прошу вас мне помочь.

1. Администрирование — Службы компонентов – Компьютеры – Мой компьютер – Приложения COM+ — Создать приложение – Создать новое приложение – вводим имя «V82.COMConnector»(переключатель «Серверное приложение») – Указанный пользователь (Администратор)

2. В появившейся ветке V82COMConnector – подветка Компоненты – создание нового компонента – Установка новых компонентов — <каталог 1С>bincomcntr.dll

3. Правой кнопкой по ветке V82COMConnector – Свойства – Безопасность – Снял галку «Принудительная проверка доступа для приложений» — Поставил галку «Применить политику программных ограничений» — Уровень ограничений «Неограниченный»

2) Если не помогло

Проблема :

1. Не установлен Microsoft Excel

2. Для работы ком-объекта необходимо наличие папки

For Windows 2008 Server x64

  C:WindowsSysWOW64configsystemprofileDesktop

For Windows 2008 Server x86

  C:WindowsSystem32configsystemprofileDesktop

Источник (https://social.msdn.microsoft.com/Forums/en-US/b81a3c4e-62db-488b-af06-44421818ef91/excel-2007-automation-on-top-of-a-windows-server-2008-x64?forum=innovateonoffice)

   Sh_Vlad

27 — 13.01.15 — 16:48

1) Проделал.

2) Папка есть, только вместо Desktop — по русски Рабочий стол

Не помогло…

   igork1966

28 — 13.01.15 — 16:51

(27) а если указать имя сервера в конструкторе?

localhost

   Rie

29 — 13.01.15 — 16:51

(18) То есть, Excel спокойно коннектится.

Наивный вопрос: а откуда коннектится? С клиента или с сервера?

   Rie

30 — 13.01.15 — 16:52

(28) То это будет уже совсем другая история…

   Sh_Vlad

31 — 13.01.15 — 16:59

(29) Клиент предприятия на терминальном сервере. Там же запускал скрипт.

   Sh_Vlad

32 — 13.01.15 — 17:00

Или вопрос не про то?

   Rie

33 — 13.01.15 — 17:03

(32) Про то. Тогда — странно очень.

Может, обработку правили — и буковку не из того алфавита поставили? Или (6)…

   Sh_Vlad

34 — 13.01.15 — 17:05

Работало везде «еще вчера»

Обработку не правили уже полгода (тем более в этой строке). Ексель не переустанавливали, т.к. см. выше

   yukon

35 — 13.01.15 — 17:05

(33)(32) Не про то.

Создание СOM-объекта происходит &НаКлиенте или &НаСервере?

   Sh_Vlad

36 — 13.01.15 — 17:06

&НаСервере

   Sh_Vlad

37 — 13.01.15 — 17:08

Сейчас надо &НаКлиенте?

   igork1966

38 — 13.01.15 — 17:09

(37) дык у тебя на сервере и пытается создать объект

   Rie

39 — 13.01.15 — 17:10

Так он и vbs запускал на сервере-то… И обработка раньше у него работала…

   yukon

40 — 13.01.15 — 17:11

Значит только костылями. Заказчику покажи это:

Вопросы серверной автоматизации Office

https://support.microsoft.com/kb/257757

Корпорация Microsoft на сегодняшний день не рекомендует производить и не поддерживает автоматизацию программ из пакета Microsoft Office с помощью автоматических, неинтерактивных клиентских приложений или компонентов (включая ASP, DCOM и службы NT), поскольку при запуске в этом окружении программы пакета Office могут работать нестабильно или зависать.

   yukon

41 — 13.01.15 — 17:12

(39) На каком сервере — на терминальном или 1С-ном?

   Rie

42 — 13.01.15 — 17:13

(41) Предполагаешь, что они сервер переставляли? Говорит ведь, что раньше — работало.

   yukon

43 — 13.01.15 — 17:16

(42) 1С-ный по любому переставляли.

Для 8.3 есть еще вариант, что включили в профилях безопасности ограничение на COM-объекты.

   Sh_Vlad

44 — 13.01.15 — 17:28

Так что с 1С-ным сервером не так?

   yukon

45 — 13.01.15 — 17:49

(44) Пока все нормально (глянь на всякий случай профили безопасности).

Терминальный сервер и сервер 1С на одной машине работают?

   Sh_Vlad

46 — 14.01.15 — 08:56

Проблема остается.

(45) На разных.

   ProxyInspector

47 — 14.01.15 — 09:15

Явно автор не раскрыл когда у него перестало работать. Я боюсь, что после пытания паяльником выяснится, что был установлен Windows 2008 x 64 сервер. Установлен сервер 1с предприятия х 64. Обновлена версия 1с предприятия с 8.2 на 8.3. Запуск сервера 1с предприятия раньше запускался от имени System, а сейчас запускается от имени Usr1c8. Раньше 1с работала в режиме толстого клиента, а сейчас на управляемых формах.

И вот после этого НЕОЖИДАННО перестал работать Exell в режиме ОЛЕ.

Я почему-то не очень сильно удивляюсь :)

   Sh_Vlad

48 — 14.01.15 — 09:45

(47) Что нужно изменить в коде чтобы работала конструкция Новый COMОбъект(«Excel.Application»);

Все указанные изменения имеют место быть. Обработка сделана под управляемые формы

   Dolphinbet

49 — 14.01.15 — 09:51

To resolve this issue follow these steps

1. Login to the server as a administrator.

2. Go to «Start» -> «Run» and enter «taskmgr»

3. Go to the process tab in task manager and check «Show Processes from all users»

4. If there are any «Excel.exe» entries on the list, right click on the entry and select «End Process»

5. Close task manager.

6. Go to «Start» -> «Run» and enter «services.msc»

7. Stop the service automating Excel if it is running.

8. Go to «Start» -> «Run» and enter «dcomcnfg»

9. This will bring up the component services window, expand out «Console Root» -> «Computers» -> «DCOM Config»

10. Find «Microsoft Excel Application» in the list of components.

11. Right click on the entry and select «Properties»

12. Go to the «Identity» tab on the properties dialog.

13. Select «The interactive user.»

14. Click the «OK» button.

15. Switch to the services console

16. Start the service automating Excel

17. Test you application again.

   yukon

50 — 14.01.15 — 10:07

(46) Вот это «Получилось — открылась новая книга Ексель» делалось на сервере 1С?

   Sh_Vlad

51 — 14.01.15 — 12:04

Помогла переустановка офиса на сервере.

Теперь не хочет открывать шаблон:

Ошибка при вызове метода контекста (Add)

        Ексель.WorkBooks.Add(«\……..TemplateZayvka.xlt»);

Произошла исключительная ситуация (Microsoft Excel): Приложению Microsoft Excel не удается получить доступ к файлу «………..TemplateZayvka.xlt». Это может быть вызвано одной из следующих причин.

• Указан несуществующий файл или путь.

• Файл используется другой программой.

• Имя книги, которую вы пытаетесь сохранить, совпадает с именем другой книги, открытой в данный момент.

Файл существует. Никем не открыт. Имя не с чем не совпадает

   Sh_Vlad

52 — 14.01.15 — 12:04

Доступ полный для всех

   Sh_Vlad

53 — 14.01.15 — 12:22

Скрипт открывает этот файл

   Dolphinbet

54 — 14.01.15 — 12:59

(51) см. 49 :)

   Dolphinbet

55 — 14.01.15 — 13:04

Только в пункте 13. Select «The interactive user.» вместо interactive user надо указать конкретного пользователя под котороым запускается сервер 1С-Предприятие.

   DrZombi

56 — 14.01.15 — 13:07

(47) Обычно такое перестает работать после обновления Форточек.

У нас как то было, при обновлении рабочей станции, т.е. обычного ПК. Но офис там был 2007-ой, обновление на него так подействовало :)

   Sh_Vlad

57 — 14.01.15 — 13:08

По (49) все проделано. «Microsoft Excel Application» такой ветки в настройках нет. В тех что есть стоит «Запускающий пользователь» («The interactive user»? ).

   Dolphinbet

58 — 14.01.15 — 13:10

(57) так вот надо не «Запускающий пользователь» а тот под которым запускается сервер 1С

   Sh_Vlad

59 — 14.01.15 — 13:27

Сервер запускается системной учетной записью. И куда пихать этого пользователя — нужной ветки нет

   Dolphinbet

60 — 14.01.15 — 13:27

а почему нет «Microsoft Excel Application»??

   Sh_Vlad

61 — 14.01.15 — 13:31

(60) У нас разделение труда. Офис устанавливает другая служба. Не могу сказать. Есть «Office Licensing COM Server 14»

   hhhh

62 — 14.01.15 — 13:34

(59) ну, поменяйте в строке запуска сервера 1с системную запись на другого пользователя. Зачем вы системную туда вбухали? Можно было оставить пользователя, который там по умолчанию был: Usr1cv8

   Sh_Vlad

63 — 14.01.15 — 13:38

(62) Смысл менять в сервере 1с, если его надо прописать в настройках DCOM Екселя — некуда писать…

   Dolphinbet

64 — 14.01.15 — 13:56

(61) похоже из-за этого и не работает, «Microsoft Excel Application» должен быть в ветке «Настройка DCOM»

   Sh_Vlad

65 — 14.01.15 — 14:09

Как его туда запихнуть? Не вручную же…

На других серверах тоже нет. Есть например «Книга Microsoft Office Excel 2007»

   Dolphinbet

66 — 14.01.15 — 14:15

(65) Да, действительно, почему-то в серверных ОС этой ветки нет…

   Dolphinbet

67 — 14.01.15 — 15:01

может по коду приложения поискать {00024500-0000-0000-C000-000000000046} ?

  

Dolphinbet

68 — 28.01.15 — 09:31

jediAlex

4 / 4 / 4

Регистрация: 12.07.2011

Сообщений: 623

1

14.12.2016, 10:26. Показов 9018. Ответов 8

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Здравствуйте. Делаю собственную конфигурацию в 1С8.3. Есть несколько обработок, которые выводят результат выборки данных в таблицу значений на форме и надо выгрузить эти данные в Excel. Проблема начинается с самой первой строки процесса выгрузки:

1C
1
ОтчетВExcel= Новый СОМОБъект("Excel.Application") ;

Вываливается ошибка «Недопустимая строка с указанием класса». Что не так? помогите пожалуйста. Во вложении скриншот сообщения об ошибке.

Миниатюры

Ошибка при создании объекта Excel.Application
 



0



о_____О

Эксперт 1С

224 / 223 / 37

Регистрация: 19.11.2010

Сообщений: 1,062

14.12.2016, 13:44

2

jediAlex, а excel установлен?

Добавлено через 1 минуту
comcntr.dll зареган в системе?



0



4 / 4 / 4

Регистрация: 12.07.2011

Сообщений: 623

14.12.2016, 13:51

 [ТС]

3

все есть, все установлено. Попробовал на локальной версии конфигурации — работает. Залил БД на SQL сервер и такое выскочило…



0



о_____О

Эксперт 1С

224 / 223 / 37

Регистрация: 19.11.2010

Сообщений: 1,062

14.12.2016, 13:58

4

Код где работает? На клиенте или сервере?



0



4 / 4 / 4

Регистрация: 12.07.2011

Сообщений: 623

15.12.2016, 09:13

 [ТС]

5

код на сервере работает



0



Эксперт 1С

3051 / 1998 / 524

Регистрация: 25.06.2009

Сообщений: 6,964

15.12.2016, 09:15

6

jediAlex, надо на клиенте.



0



jediAlex

4 / 4 / 4

Регистрация: 12.07.2011

Сообщений: 623

15.12.2016, 10:19

 [ТС]

7

вот полный код процедуры на сервере:

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
&НаСервере
Процедура ВыгрузитьОтчетВExcelНаСервере()
    // Вставить содержимое обработчика.
    ОтчетВExcel=Новый COMОбъект("Excel.Application");
Книга=ОтчетВExcel.Workbooks.Add();
Лист=Книга.Worksheets(1);
    Лист.Cells(1, 1).Value = СокрЛП("Отчет о выполнении календарногоплана(дата начала работ)");
    Лист.Cells(2, 1).Value = СокрЛП("Отчетная дата:");
    Лист.Cells(2, 2).Value=Объект.ОтчетнаяДата;
    Лист.Cells(3, 1).Value = СокрЛП("Наименование договора");
Лист.Cells(3, 2).Value = СокрЛП("Номер этапа") ;
 Лист.Cells(3, 3).Value = СокрЛП("Дата начала работ план");
 Лист.Cells(3, 4).Value = СокрЛП("Дата начала работ факт");
 Лист.Cells(3, 5).Value = СокрЛП("Отклонение, дней");
  Лист.Rows(1).Font.Bold=Истина;
   Лист.Rows(2).Font.Bold=Истина;
     Лист.Rows(3).Font.Bold=Истина;
    //Попытка
        
        Для Стр = 0 По ТаблицаВыгрузки.Количество()-1 Цикл
            
            Для Кол = 1 По ТаблицаВыгрузки.Колонки.Количество()-2 Цикл
                
                Если ТипЗнч(ТаблицаВыгрузки[Стр][Кол]) = Тип("Число") Тогда
                    // Установним формат для типа Число
                    //Лист.Cells(Стр + 2, Кол + 1).NumberFormat = "0,00";
                    Лист.Cells(Стр + 4, Кол).Value = ТаблицаВыгрузки[Стр][Кол];
                Иначе 
                    // Для всех других типов установим формат "Текстовый"
                    Лист.Cells(Стр + 4, Кол).NumberFormat = "@";
                    Если ЗначениеЗаполнено(ТаблицаВыгрузки[Стр][Кол]) Тогда
                    Лист.Cells(Стр + 4, Кол).Value = Строка(ТаблицаВыгрузки[Стр][Кол]);
                КонецЕсли;
                КонецЕсли;
            КонецЦикла;
        КонецЦикла;
        ОтчетВExcel.Visible=Истина;
        //ExcelПриложение.DisplayAlerts = False;
        //Книга.SaveAs(ПолноеИмяФайла); 
        //ExcelПриложение.ActiveWorkbook.Close();
        //ExcelПриложение.Quit();
 
//КонецПопытки;
    
КонецПроцедуры

Добавлено через 1 минуту
вызов процедуры на клиенте:

1C
1
2
3
4
&НаКлиенте
Процедура ВыгрузитьОтчетВExcel(Команда)
    ВыгрузитьОтчетВExcelНаСервере();
КонецПроцедуры

Добавлено через 17 минут
вот полный код ошибки:

1C
1
2
3
4
{Обработка.ВыполнениеКалендарногоПланаПоДатеНачала.Форма.Форма.Форма(42)}: Ошибка при вызове конструктора (COMОбъект)
    ОтчетВExcel=Новый COMОбъект("Excel.Application");
по причине:
-2147221005(0x800401F3): Недопустимая строка с указанием класса

Причем обработок, в которых данные выгружаются в Excel 4. В одной код срабатывает, объект excel создается, а в других — нет. Во всех делал создание объекта Excel на сервере.



0



Эксперт 1С

476 / 413 / 93

Регистрация: 26.09.2012

Сообщений: 1,910

15.12.2016, 10:58

8

Когда ваш код выполняется на сервере, то и эксель с дллкой смотрятся на сервере и еще два миллиона параметров доступа. И судя по ошибке нет у вас экселя на сервере.

А почему все не выгрузить в табличный документ, а потом его сохранить как файл эксель?



0



4 / 4 / 4

Регистрация: 12.07.2011

Сообщений: 623

15.12.2016, 13:49

 [ТС]

9

Спасибо, разобрался.



0



Содержание

  1. БП 8.3.5.1383 Ошибка COMОбъект(«Excel.Application»)
  2. Ошибка при вызове конструктора (COMObject) по причине: Интерфейс не поддерживается
  3. Ошибка при вызове конструктора (COMObject) по причине: Интерфейс не поддерживается
  4. Особенности
  5. Устранение:
  6. Может оказаться, что «Microsoft Excel Application» отсутствует в списке, в данном случае
  7. Заключение
  8. Новый comобъект excel application ошибка
  9. COM-объект и Excel
  10. COM-объект и Excel
  11. Re: COM-объект и Excel
  12. Re: COM-объект и Excel
  13. Re: COM-объект и Excel
  14. Re: COM-объект и Excel
  15. Re: COM-объект и Excel
  16. Использование COM-соединения, выгрузка в Excel через COM-объект Excel.Application
  17. COM-соединение
  18. Объект Excel.Application
  19. Постановка задачи
  20. Алгоритм выгрузки/загрузки в MS Excel
  21. Пример кода 1С
  22. Настройка DCOM для Excel.Application в 1С, за минуту
  23. Настройка DCOM для Excel.Application в 1С, за минуту
  24. Что такое DCOM
  25. Настройка DCOM для Excel.Application
  26. 2147221005(0x800401F3): Недопустимая строка с указанием класса — что делать
  27. Суть и причины «Недопустимая строка с указанием класса»
  28. Обновите вашу конфигурацию 1С до актуальной версии
  29. Запускайте 1С с правами админа
  30. Измените код программы
  31. Зарегистрируйте в системе библиотеку comcntr.dll
  32. Проверьте наличие установленного в системе Excel
  33. Используйте специализированные форумы 1С
  34. Заключение
  35. ComObject Excel.Application без офисного пакета
  36. 3 Ответа
  37. Похожие вопросы:

БП 8.3.5.1383 Ошибка COMОбъект(«Excel.Application»)

Ексель = Новый COMОбъект(«Excel.Application»);
по причине:
-2147221005(0x800401F3): Недопустимая строка с указанием класса

(8) Создай (в блокноте) файл с расширением .vbs
Вставь туда

set xl = CreateObject(«Excel.Application»)
xl.Workbooks.Add
xl.Visible = 1

Сохрани и запусти.
Что получилось?

1) Попробуйте это

При подключении к базе com-объектом вылетает ошибка (файл с ошибкой во вложении, вылетает на строчке кода при создании ком-объекта: Коннектор = Новый COMОбъект(«V8.COMConnector»);)

На форумах по данной ошибке нашла решение, но попробовав это проделать, у меня не получилось уже на первом пункте, возможно не хватает прав. Прошу вас мне помочь.

1. Администрирование — Службы компонентов – Компьютеры – Мой компьютер – Приложения COM+ — Создать приложение – Создать новое приложение – вводим имя «V82.COMConnector»(переключатель «Серверное приложение») – Указанный пользователь (Администратор)

2. В появившейся ветке V82COMConnector – подветка Компоненты – создание нового компонента – Установка новых компонентов — bincomcntr.dll

3. Правой кнопкой по ветке V82COMConnector – Свойства – Безопасность – Снял галку «Принудительная проверка доступа для приложений» — Поставил галку «Применить политику программных ограничений» — Уровень ограничений «Неограниченный»

2) Если не помогло

1. Не установлен Microsoft Excel

2. Для работы ком-объекта необходимо наличие папки

For Windows 2008 Server x64

For Windows 2008 Server x86

1) Проделал.
2) Папка есть, только вместо Desktop — по русски Рабочий стол

Источник

Ошибка при вызове конструктора (COMObject) по причине: Интерфейс не поддерживается

Ошибка при вызове конструктора (COMObject) по причине: Интерфейс не поддерживается

Ошибка происходит при попытке загрузить из Excel в 1С, когда код обработчика выполняется не на клиенте, а на сервере и в большинстве случаев текст ошибки говорит об отсутствии прав у пользователя сервера 1С.

Особенности

Кодом со стороны 1С без изменения места исполнения не устраняется, использование других функций подключения Com также не дает положительных результатов.

Убедиться в причине ошибки возможно, если посмотреть логи системы.

Устранение:

  • на сервере убиваем excel (taskkill /im excel.exe /f)
  • открываем оснастку «Службы компонентов» (Пуск->Администрирование->Службы компонентов)
  • в ней раскрываем ветку Службы компонентов->Компьютеры->Мой компьютер->Настройка DCOM
  • справа в списке находим Microsoft Excel Application, открываем Свойства, вкладка Удостоверение, выбираем пользователя с администраторскими правами, ОК.

Может оказаться, что «Microsoft Excel Application» отсутствует в списке, в данном случае

  1. Запускаем REGEDIT
  2. Открываем ветку ComputerHKEY_CLASSES_ROOTAppIDEXCEL.EXE, если ее нет, то создаем
  3. Создаем в ней строковый параметр AppID =
  4. Выполняем команду «mmc comexp.msc /32», которая делает то же что и DCOMCONFIG, но позволяет видеть 32 битные компоненты.
  5. После этого в Component Services должен появиться «Microsoft Excel Application»

Чтобы решить эту проблему, я включил пользователя USRV82, под которым запускается сервер приложений 1С Предприятия 8.3, в группу Distributed COM Users, но ошибка сразу не ушла, потребовалась перезагрузка.

Осложняло проблему то, что ошибка плавала: периодически выходила, либо в момент создания объекта, либо уже в момент вызова методов excel-application.

Так что нельзя однозначно сказать, что же решило проблему.

Заключение

В большинстве случаев уйти от дополнительной настройки операционной системы возможно, если использовать вызова Com-Объекта на клиенте. При правильной установке объектов они работают даже при различных по битности 1с и Excel, OS.

В моем же случае клиентские компьютеры работали на Ubuntu, поэтому вся обработка перенесена на сервер.

Бывает такое: вы прописываете для компонента пользователя и пароль.

Затем через некоторое время меняете пароль и компонент перестает работать: выходит такая же ошибка «Интерфейс не поддерживается». Следует просто вбить новый пароль.

Люди в массе своей терпеть не могут рекламу. Они никогда не читают рекламных объявлений как таковых. Но они читают подряд все, что их заинтересует, и иногда этим оказывается рекламное объявление.

— Говард Госсидж, практик рекламного бизнеса.

Источник

Новый comобъект excel application ошибка

lilyapo сказал(-а): 20.12.2016 13:59

Создаю COM-объект и пытаюсь открыть файл Excel:
ex=Новый ComОбъект(«Excel.Application»);
ex.WorkBooks.Open(Файл);
Файл существует, COM-объект создается, но при открытии файла Excel выдается сообщение:

Ошибка при вызове метода контекста (Open)
ex.WorkBooks.Open(Файл);
по причине:
Неизвестная ошибка

Сталкиваюсь с этим впервые, на других компах всю жизнь все работает, с любой платформой 8.3
Если что-то с Excel, то что?

avm3110 сказал(-а): 20.12.2016 15:25

Создаю COM-объект и пытаюсь открыть файл Excel:
ex=Новый ComОбъект(«Excel.Application»);
ex.WorkBooks.Open(Файл);
Файл существует, COM-объект создается, но при открытии файла Excel выдается сообщение:

Ошибка при вызове метода контекста (Open)
ex.WorkBooks.Open(Файл);
по причине:
Неизвестная ошибка

Сталкиваюсь с этим впервые, на других компах всю жизнь все работает, с любой платформой 8.3
Если что-то с Excel, то что?

lilyapo сказал(-а): 20.12.2016 15:55

avm3110 сказал(-а): 20.12.2016 16:31

А попробуй «завернуть» в Попытку

Попытка
Excel = Новый COMОбъект(«Excel.Application»);
Excel.WorkBooks.Open(ИмяФайла);
Состояние(«Обработка файла Microsoft Excel. «);
Исключение
Сообщить(«Ошибка при открытии файла с помощью Excel! Загрузка не будет произведена!»);
Сообщить(ОписаниеОшибки());
Возврат;
КонецПопытки;

lilyapo сказал(-а): 20.12.2016 17:04

avm3110 сказал(-а): 20.12.2016 17:25

[QUOTE=lilyapo;469920]Все то же самое.
Ошибка при вызове метода контекста (Open): Неизвестная ошибка

похоже у тебя проблема с com-ом. А у тебя Excel нормально в реестре зареген? Ты его видишь в com-объектах?

Попробуй подключиться к открытому «ручками» экселю

Как подключиться к запущенному Excel-евскому файлу в реальном времени, изменить его и даже не сохранять, а просто переключить окно на 1С и сразу же выгружать данные в табличную часть, лишь переключив окна

Обучение программированию на 1С

Вообще COM-объекты используют для соединения информационной базы 1С с файлом Word, Excel, Outlook или любой другой программой, поддерживающей данный интерфейс обмена данными. В этой статье рассмотрим задачу выгрузки/загрузки данных из/в MS Excel. Чтобы это осуществить воспользуемся COM-соединением и объектом Excel.Application. Для примера возьмём задачу выгрузки/загрузки данных о номенклатуре. Пример рассмотрим ниже.

Что же такое COM-соединение? Component Object Model (или COM) – это технология (фирмы Microsoft) взаимодействующих компонентов, которые одновременно могут быть использованы в разных приложениях. При этом весь функционал соответствующего компонента наследуется внутрь разрабатываемого приложения. В нашем случае COM-объект Excel.Application используется внутри кода 1С для операций с файлом книги MS Excel.

Объект Excel.Application

У объекта Excel.Application существует ряд методов, которые нам могут пригодиться для реализации нижепоставленной задачи:

  • ОбъектExcel.WorkBooks.Open(ИмяФайла) – Открытие книги MS Excel
  • ОбъектExcel.ActiveWorkbook.Close() – Закрытие текущей книги
  • ОбъектExcel.Quit() – Закрытие COM-объекта
  • ОбъектExcel.Sheets(ИмяЛиста) – Получает лист книги
  • ЛистExcel.Cells(НачалоСтрока, НачалоСтолбец) – Ячейка таблицы на данном листе
  • ЛистExcel.Range(Ячейка1, Ячейка2) – Выделенная область
  • ЯчейкаExcel.Value – Значение ячейки таблицы
  • ЯчейкаExcel.Text – Текст ячейки таблицы

Постановка задачи

Итак, предположим, что в обработке 1С у нас имеется табличная часть, состоящая из следующих колонок:

Необходимо реализовать 2 функционала (сделать на форме 2 основные кнопки):

  1. Выгрузка табличной части в подготовленный файл MS Excel
  2. Загрузка табличной части из файла.

Алгоритм выгрузки/загрузки в MS Excel

Алгоритм выгрузки следующий:

  1. Выгружаем табличную часть в таблицу значений
  2. Создаём новый COM-объект Excel.Application
  3. Выбираем файл, открываем файл книги MS Excel
  4. Переходим на заданный лист книги
  5. Выгружаем данные в файл
  6. Закрываем книгу, выходим из COM-объекта.

Алгоритм загрузки следующий:

  1. Создаём новый COM-объект Excel.Application
  2. Выбираем файл, открываем файл книги MS Excel
  3. Переходим на заданный лист книги
  4. Загружаем данные из файла в таблицу значений
  5. Закрываем книгу, выходим из COM-объекта
  6. Таблицу значений выгружаем в табличную часть.

Операция выгрузки и загрузки данных о номенклатуре происходит в заранее подготовленный шаблон MS Excel.

Пример кода 1С

Код 1С я постарался разделить на отдельные функции, чтобы, скопировав, с ними можно было работать где угодно. На форме обработки 1С были созданы 3 кнопки:

В итоге в реализации алгоритма получились следующие основные процедуры и функции 1С:

  • ПолучитьExcel – Получает COM-объект MS Excel;
  • ЗакрытьExcel – Закрывает использование COM-объекта MS Excel;
  • ПолучитьЛистExcel – Получает лист книги Excel;
  • ДобавитьТабличныйДокументВExcel – Добавляет табличный документ на лист Excel (нужно для выгрузки данных);
  • ПрочитатьОбластьИзExcel – Читает область ячеек с листа Excel (нужно для загрузки данных);
  • ШиринаЛистаExcel – Ширина листа Excel;
  • ВысотаЛистаExcel – Высота листа Excel;
  • ПреобразоватьТДвТЗ – Преобразует табличный документ в таблицу значений;
  • ПреобразоватьТЗвТД – Преобразует таблицу значений в табличный документ;

Для начала приведу вспомогательную функцию для открытия/сохранения файла на диске:

Добрый день! Уважаемые читатели и гости, популярного IT блога pyatilistnik.org. Сегодня я продолжу пополнять свою копилку знаний в разделе 1С. Вчера меня один из разработчиков, попросил ему помочь настроить компоненты DCOM для Excel.Application в связке с приложением 1С. Я ранее этого не делал, так что пришлось в этом разбираться. По итогам найденного решения, появилась и эта заметка. Уверен, что на этот материал найдутся желающие.

Что такое DCOM

Distributed Component Object Model (DCOM) — программная архитектура, разработанная компанией Microsoft для распределения приложений между несколькими компьютерами в сети. Программный компонент на одной из машин может использовать DCOM для передачи сообщения (его называют удаленным вызовом процедуры) к компоненту на другой машине. DCOM автоматически устанавливает соединение, передает сообщение и возвращает ответ удаленного компонента. С данным компонентов мы уже знакомились, когда решали ошибку 10016.

И так у меня есть виртуальная машина под управлением Windows Server 2012 R2, на ней установлены серверные компоненты 1С, есть задача для Excel.Application модуля, настроить DCOM компоненты.

Нам необходимо открыть в панели управления Windows, компонент «Службы компонентов».

Либо можете, через окно выполнить ввести DCOMCNFG, откроется, тоже самое.

В службах компонентов (Component Services) откройте ветку:

Если по каким-то причинам у вас нет пункта Microsoft Excel Application, откройте реестр Windows, найдите ветку: HKEY_CLASSES_ROOTAppIDEXCEL.EXE, если ее нет, то создаем ее. В ней должен быть ключ REG_SZ со значением .

КОМУ ЛЕНЬ самому создавать, то можете скачать данный ключ реестра у меня. Просто запустите потом и подтвердите, что согласны добавить. Затем откройте командную строку от имени администратора и выполните команду:

У вас откроется mmc оснастка «Службы компонентов», которая делает то же что и DCOMCONFIG, но позволяет видеть 32 битные компоненты. В результате этих манипуляций компонент Microsoft Excel Application у вас должен появиться. Открываем свойства Microsoft Excel Application.

Переходим на вкладку «Безопасность (Secutity)». В пункте «Разрешения на запуск и активацию (Launch and Activation Permissions)», выберите «Настроить (Customize )» и изменить. Вам нужно добавить сюда учетную запись, от имени которой запускается служба 1С и предоставить ей права:

  • Локальный запуск — Local Launch
  • Локальная активация — Local Activation

Далее переходим к пункту «Разрешения на доступ (Access Permissions)» и так же меняем их. Добавьте там ту же учетную запись, от имени которой запускается сервис 1С, и дайте ей права «Локальный доступ (Local Access)». Сохраните настройки.

Закрываем окно служб компонентов, теперь для того, чтобы закончит ьнастройку DCOM для 1С и Microsoft Excel Application, вам необходимо дать права на две папки.

Вам нужно убедиться, что у вас есть две папки:

2147221005(0x800401F3): Недопустимая строка с указанием класса — что делать

При выполнении каких-либо задач с комплексом 1С (фоновый обмен данными между компонентами, запуске нужной конфигурации, проверки выполнения кода etc) может появиться сообщение об ошибке 2147221005(0x800401F3). Последняя обычно сопровождается строкой « Недопустимая строка с указанием класса » и связана с неверным кодом программы, не зарегистрированными в системе компонентами и другими релевантными факторами. Давайте разберёмся, что делать при появлении ошибки 2147221005(0x800401F3) в вашей 1С.

Суть и причины «Недопустимая строка с указанием класса»

Ошибка 2147221005(0x800401F3) относится к регулярно встречающимся ошибкам 1С, и фиксируется у многих пользователей. Единственного и эффективного рецепта её решения не существует, так как она может иметь уникальную основу, и вызывается особенностями программного кода в конкретной системе.

Тем не менее к числу наиболее популярных причин ошибки 2147221005 относятся следующие:

  • Пользователь использует устаревшую конфигурацию 1С . К примеру, фиксировались случаи появления ошибки 2147221005(0x800401F3) при использовании архаичной конфигурации «Управление торговлей» при попытке обмена данными с 1С «Бухгалтерия предприятия»;
  • Наличие некорректного кода программы (к примеру, обращение к устаревшему «V82.COMConnector» вместо модерного «V83.COMConnector»);
  • В системе не зарегистрирована библиотека comcntr.dll , имеющая важное значение для работы 1С;
  • У пользователя, запускающего определённый комплекс 1С, нет достаточных прав для работы с ним (к примеру, запуск выполняется из гостевой учётной записи, вместо учётки администратора);
  • В системе не установлен (не зарегистрирован) Excel , необходимый для работы 1С.

Давайте разберёмся, как исправить ошибку 2147221005 «Недопустимая строка с указанием класса» в вашей системе 1С.

Обновите вашу конфигурацию 1С до актуальной версии

Первым делом убедитесь, что вы используете самую свежую версию конфигурации 1С. При подключении к нужным базам для выполнения обмена она может попытаться использовать устаревшую платформу (к примеру, 8.2), которая фактически отсутствует. Потому обновите вашу версию конфигурации до актуального релиза, а потом попробуйте осуществить требуемое подключение.

Используйте свежую версию 1С

Запускайте 1С с правами админа

Убедитесь, что вы запускаете систему под учётной записью администратора, а не ограниченного в правах «Гостя» или аналога.

Измените код программы

В некоторых случаях код программы может устареть и не соответствовать текущей версии 1С. Эффективным решением ошибки 2147221005 является замена строки кода:

COMConnector = Новый COMObject(«V82.COMConnector»);

COMConnector = Новый COMObject(«V83.COMConnector»);

После указанной замены ошибка «Недопустимая строка с указанием класса» может быть решена.

Зарегистрируйте в системе библиотеку comcntr.dll

Если вы пользуетесь Виндовс 64, то необходимо провести корректную регистрацию в системе библиотеки comcntr.dll . Нажмите на Win+R, введите следующую строку:

C:WindowsSysWOW64regsvr32 «c:Program Files(x86)1cv88.3.12.1469bincomcntr.dll»

Вместо «8.3.12.1469» укажите установленную у вас версию технологической платформы. После этого нажмите на ввод. Указанная регистрация может помочь избавиться от ошибки 2147221005 в 1С.

Проверьте наличие установленного в системе Excel

Наличие установленного в системе Excel является необходимым элементом при обращении к нему системы 1С. Потому рекомендуем убедиться, что Эксель в системе установлен корректно, для чего нажмите Win+R, введите там Excel , и нажмите ввод. Если программа запустилась, тогда всё работает корректно. Если нет, тогда следует установить (переустановить) Excel (комплекс «MS Office») на вашей машине (машинах).

Используйте специализированные форумы 1С

Если не один из указанных советов вам не помог, обратитесь к помощи форумов, которые посещают множество программистов и специалистов 1С. В частности, рекомендуем такие форумы как forum.infostart.ru, cyberforum.ru/1c-standard, is.ideasoft.in.ua где вам могут помочь в решении возникшей дисфункции.

Заключение

В нашем материале мы разобрали, когда появляется ошибка «2147221005(0x800401F3): Недопустимая строка с указанием класса», и как можно её исправить. Данная дисфункция может иметь различные причины, а для её решения рекомендуем задействовать весь комплекс способов, перечисленным нами выше. Их выполнение может помочь устранить ошибку 2147221005 в вашей системе 1С.

ComObject Excel.Application без офисного пакета

Мне нужно прочитать файл Excel из Powershell.
Я использую этот объект:

Он прекрасно работает на машине с установкой Office, но если Office не установлен, я получаю эту ошибку:

Есть ли какая-то среда выполнения для Office, чтобы использовать ее?

3 Ответа

Там нет «runtime» для Excel, которые вы можете использовать без получения надлежащей лицензии для Excel (и установки Excel на машину). Если вы пытаетесь сделать это на сервере OS с несколькими пользователями, вам также нужно рассмотреть возможность специального лицензирования (поскольку одна лицензия Excel не будет охватывать несколько пользователей более чем вероятно).

Вы можете рассмотреть возможность использования OpenXML SDK для Office в качестве способа выполнения некоторых общих действий в файле Excel, как описано здесь . Поскольку это библиотека .NET, вы сможете использовать ее изнутри PowerShell.

Нет времени выполнения, как и доступа.

Там есть зритель, если это вам поможет.

Обзор

С помощью средства просмотра Excel можно открывать, просматривать и печатать книги Excel, даже если у вас не установлен Excel. Вы также можете скопировать данные из Excel Viewer в другую программу. Тем не менее, вы не можете редактировать данные, сохраните книгу или создайте новую книгу.

Вместо COM можно использовать активные X-объекты данных (ADO), например

Похожие вопросы:

Мне нужно закончить заявку в C#. Теперь я хочу получить функцию, которая управляет файлом Excel для получения данных. Я использовал getActiveObject(Excel.Application) , но это ничего не возвращает.

У меня есть набор документов, чтобы запросить, чтобы пользователь открыл версию только для чтения(опция рекомендуется только для чтения). Я хотел бы открыть документ excel без чтения только в.

Я ищу разъяснений относительно влияния New на объекты и сценарий. Я понимаю, что если мне нужно выполнить действия над документом excel и приложение закрыто, то я должен использовать новый.

Я пытался получить доступ к COM объектам всех экземпляров Excel 2010, зарегистрированных в ROT в Visual C# Express 2010. Я нашел код на.

Есть ли способ преобразовать .xls в .csv без установки Excel с помощью Powershell? У меня нет доступа к Excel на конкретной машине, поэтому я получаю ошибку при попытке: New-Object -ComObject.

У меня есть powershell скрипт, который использует -ComObject Word.Application. Я хотел бы использовать это в сервере windows, но у него нет Word. На данный момент , когда я выполняю, у меня есть эта.

У меня есть небольшой скрипт, который позволяет мне объединить несколько .csv к А.файлы XLSX: $path = C:UsersFrancescoMDesktopCSVResults* $csvs = Get-ChildItem $path -Include *.csv $y =.

Я столкнулся с проблемой на Powershell Excel ComObject, где я не могу принять разделитель, отличный от запятой , . Некоторые из внешних .Полученные файлы csv используют другой разделитель, например.

Источник

Автор Истребитель, 22 июл 2015, 17:48

0 Пользователей и 1 гость просматривают эту тему.

При попытке создать COM объект Excel.Application вылезает стандартная ошибка:
Ошибка получения объекта COM: -2147467262(0x80004002): No such interface support

Однако, если открыть диспетчер задач, то приложение excel.exe запускается!
Приложение excel x32, 1Cка тоже x32.
В списках классов (HKLMSoftwareClasses) класс Excel.Application присутствует.
Права на Distributed COM дал своему юзеру, перелогинился, не помогло, дал всем (Everyone), не помогло.
База файловая.


Попробуйте так


Попытка
ОбъектЭксель = ПолучитьCOMОбъект(СокрЛП(ФайлЗагрузки));//ФайлЗагрузки - путь к файлу. строка
Исключение
Сообщить("Неудачная попытка открытия файла:"+СокрЛП(ФайлЗагрузки));
Возврат;
КонецПопытки;


КомОбъектЗагрузки = ОбъектЭксель.WorkSheets(1);


Очень забавно. Если перед вызовом функции с параметрами (Путь,Excel.Application) вызвать её без указания Excel.Application то повторный вызов уже с указанием Excel.Application работает!

Т.е. так работает:

ПолучитьCOMОбъект(ИмяФайла,)
ПолучитьCOMОбъект(ИмяФайла,"Excel.Application")

Так не работает:

ПолучитьCOMОбъект(ИмяФайла,"Excel.Application")

В любом случае, в дальнейшем вылезает вообще непонятная ошибка:

{Форма.Форма.Форма(47)}: Ошибка при вызове метода контекста (ПрочитатьЛистExcel)
ПрочитатьЛистExcel(,ПолучитьCOMОбъект(ИмяФайла));
по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства 'param':
форма: Элемент
имя: {http://v8.1c.ru/8.2/managed-application/modules}param
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа 'COMОбъект'


Поздравляю, походу вы открыли для себя впервые особенности управляемого приложения.


Ок, где мне почитать про эти «особенности» чтобы разобраться как выполнить такое простое задание, как чтение excel файла?


Путем проб и ошибок
Пробуйте «&НаСервере» всё это делать

Помогли — Скажи спасибо! Решил сам — поделись решением!
:)


Не сочтите за издевательство: http://v8.1c.ru/metod/faq2/
&НаКлиенте — это только форма, видимость,доступность, условное офомление и т.д.
&НаСервере — это работа с объектами. Добавить строки, заполнить объект и т.д.

С клиента можно вызывать сервер, наоборот — нельзя.

Все прочие особенности = интернет большой, уверен справитесь


Дааа. Простейшие вещи теперь хрен сделаешь. Почитал я это. Замечательно! Погуглил даже. Простейшая задача, неясно как решать.

Я хочу создать программно документ, заполнить его на основании данных из экселя, и открыть.

На клиенте я это сделать не могу, на клиенте «Документы» неопределена (нельзя создать документ). На сервере тоже не могу, нельзя открыть форму. На клиент нельзя передать ссылку на документ (когда пытаюсь сделать «Возврат Док», где Док это новый документ, вылезает ошибка передачи данных). Гугл «1с 8.3 передача документа с сервера на клиент» ничего не дал.

Что делать?


Остается сесть в углу и плакать.
На клиенте формируете структуры с простыми данными (строки, даты и т.д.) передаете на сервер. Создаете/ищите  документ на сервере и возвращаете ссылку на документ.


COM-объект и Excel

lilyapo сказал(-а): 20.12.2016 13:59

COM-объект и Excel

Создаю COM-объект и пытаюсь открыть файл Excel:
ex=Новый ComОбъект(«Excel.Application»);
ex.WorkBooks.Open(Файл);
Файл существует, COM-объект создается, но при открытии файла Excel выдается сообщение:

Ошибка при вызове метода контекста (Open)
ex.WorkBooks.Open(Файл);
по причине:
Неизвестная ошибка

Сталкиваюсь с этим впервые, на других компах всю жизнь все работает, с любой платформой 8.3
Если что-то с Excel, то что?

avm3110 сказал(-а): 20.12.2016 15:25

Re: COM-объект и Excel

Создаю COM-объект и пытаюсь открыть файл Excel:
ex=Новый ComОбъект(«Excel.Application»);
ex.WorkBooks.Open(Файл);
Файл существует, COM-объект создается, но при открытии файла Excel выдается сообщение:

Ошибка при вызове метода контекста (Open)
ex.WorkBooks.Open(Файл);
по причине:
Неизвестная ошибка

Сталкиваюсь с этим впервые, на других компах всю жизнь все работает, с любой платформой 8.3
Если что-то с Excel, то что?

lilyapo сказал(-а): 20.12.2016 15:55

Re: COM-объект и Excel

avm3110 сказал(-а): 20.12.2016 16:31

Re: COM-объект и Excel

А попробуй «завернуть» в Попытку

Попытка
Excel = Новый COMОбъект(«Excel.Application»);
Excel.WorkBooks.Open(ИмяФайла);
Состояние(«Обработка файла Microsoft Excel. «);
Исключение
Сообщить(«Ошибка при открытии файла с помощью Excel! Загрузка не будет произведена!»);
Сообщить(ОписаниеОшибки());
Возврат;
КонецПопытки;

lilyapo сказал(-а): 20.12.2016 17:04

Re: COM-объект и Excel

avm3110 сказал(-а): 20.12.2016 17:25

Re: COM-объект и Excel

[QUOTE=lilyapo;469920]Все то же самое.
Ошибка при вызове метода контекста (Open): Неизвестная ошибка

похоже у тебя проблема с com-ом. А у тебя Excel нормально в реестре зареген? Ты его видишь в com-объектах?

Попробуй подключиться к открытому «ручками» экселю

Как подключиться к запущенному Excel-евскому файлу в реальном времени, изменить его и даже не сохранять, а просто переключить окно на 1С и сразу же выгружать данные в табличную часть, лишь переключив окна

Обучение программированию на 1С

Использование COM-соединения, выгрузка в Excel через COM-объект Excel.Application

Вообще COM-объекты используют для соединения информационной базы 1С с файлом Word, Excel, Outlook или любой другой программой, поддерживающей данный интерфейс обмена данными. В этой статье рассмотрим задачу выгрузки/загрузки данных из/в MS Excel. Чтобы это осуществить воспользуемся COM-соединением и объектом Excel.Application. Для примера возьмём задачу выгрузки/загрузки данных о номенклатуре. Пример рассмотрим ниже.

COM-соединение

Что же такое COM-соединение? Component Object Model (или COM) – это технология (фирмы Microsoft) взаимодействующих компонентов, которые одновременно могут быть использованы в разных приложениях. При этом весь функционал соответствующего компонента наследуется внутрь разрабатываемого приложения. В нашем случае COM-объект Excel.Application используется внутри кода 1С для операций с файлом книги MS Excel.

Объект Excel.Application

У объекта Excel.Application существует ряд методов, которые нам могут пригодиться для реализации нижепоставленной задачи:

  • ОбъектExcel.WorkBooks.Open(ИмяФайла) – Открытие книги MS Excel
  • ОбъектExcel.ActiveWorkbook.Close() – Закрытие текущей книги
  • ОбъектExcel.Quit() – Закрытие COM-объекта
  • ОбъектExcel.Sheets(ИмяЛиста) – Получает лист книги
  • ЛистExcel.Cells(НачалоСтрока, НачалоСтолбец) – Ячейка таблицы на данном листе
  • ЛистExcel.Range(Ячейка1, Ячейка2) – Выделенная область
  • ЯчейкаExcel.Value – Значение ячейки таблицы
  • ЯчейкаExcel.Text – Текст ячейки таблицы

Постановка задачи

Итак, предположим, что в обработке 1С у нас имеется табличная часть, состоящая из следующих колонок:

Необходимо реализовать 2 функционала (сделать на форме 2 основные кнопки):

  1. Выгрузка табличной части в подготовленный файл MS Excel
  2. Загрузка табличной части из файла.

Алгоритм выгрузки/загрузки в MS Excel

Алгоритм выгрузки следующий:

  1. Выгружаем табличную часть в таблицу значений
  2. Создаём новый COM-объект Excel.Application
  3. Выбираем файл, открываем файл книги MS Excel
  4. Переходим на заданный лист книги
  5. Выгружаем данные в файл
  6. Закрываем книгу, выходим из COM-объекта.

Алгоритм загрузки следующий:

  1. Создаём новый COM-объект Excel.Application
  2. Выбираем файл, открываем файл книги MS Excel
  3. Переходим на заданный лист книги
  4. Загружаем данные из файла в таблицу значений
  5. Закрываем книгу, выходим из COM-объекта
  6. Таблицу значений выгружаем в табличную часть.

Операция выгрузки и загрузки данных о номенклатуре происходит в заранее подготовленный шаблон MS Excel.

Пример кода 1С

Код 1С я постарался разделить на отдельные функции, чтобы, скопировав, с ними можно было работать где угодно. На форме обработки 1С были созданы 3 кнопки:

В итоге в реализации алгоритма получились следующие основные процедуры и функции 1С:

  • ПолучитьExcel – Получает COM-объект MS Excel;
  • ЗакрытьExcel – Закрывает использование COM-объекта MS Excel;
  • ПолучитьЛистExcel – Получает лист книги Excel;
  • ДобавитьТабличныйДокументВExcel – Добавляет табличный документ на лист Excel (нужно для выгрузки данных);
  • ПрочитатьОбластьИзExcel – Читает область ячеек с листа Excel (нужно для загрузки данных);
  • ШиринаЛистаExcel – Ширина листа Excel;
  • ВысотаЛистаExcel – Высота листа Excel;
  • ПреобразоватьТДвТЗ – Преобразует табличный документ в таблицу значений;
  • ПреобразоватьТЗвТД – Преобразует таблицу значений в табличный документ;

Для начала приведу вспомогательную функцию для открытия/сохранения файла на диске:

Настройка DCOM для Excel.Application в 1С, за минуту

Настройка DCOM для Excel.Application в 1С, за минуту

Добрый день! Уважаемые читатели и гости, популярного IT блога pyatilistnik.org. Сегодня я продолжу пополнять свою копилку знаний в разделе 1С. Вчера меня один из разработчиков, попросил ему помочь настроить компоненты DCOM для Excel.Application в связке с приложением 1С. Я ранее этого не делал, так что пришлось в этом разбираться. По итогам найденного решения, появилась и эта заметка. Уверен, что на этот материал найдутся желающие.

Что такое DCOM

Distributed Component Object Model (DCOM) — программная архитектура, разработанная компанией Microsoft для распределения приложений между несколькими компьютерами в сети. Программный компонент на одной из машин может использовать DCOM для передачи сообщения (его называют удаленным вызовом процедуры) к компоненту на другой машине. DCOM автоматически устанавливает соединение, передает сообщение и возвращает ответ удаленного компонента. С данным компонентов мы уже знакомились, когда решали ошибку 10016.

Настройка DCOM для Excel.Application

И так у меня есть виртуальная машина под управлением Windows Server 2012 R2, на ней установлены серверные компоненты 1С, есть задача для Excel.Application модуля, настроить DCOM компоненты.

Нам необходимо открыть в панели управления Windows, компонент «Службы компонентов».

Либо можете, через окно выполнить ввести DCOMCNFG, откроется, тоже самое.

В службах компонентов (Component Services) откройте ветку:

Если по каким-то причинам у вас нет пункта Microsoft Excel Application, откройте реестр Windows, найдите ветку: HKEY_CLASSES_ROOTAppIDEXCEL.EXE, если ее нет, то создаем ее. В ней должен быть ключ REG_SZ со значением .

КОМУ ЛЕНЬ самому создавать, то можете скачать данный ключ реестра у меня. Просто запустите потом и подтвердите, что согласны добавить. Затем откройте командную строку от имени администратора и выполните команду:

У вас откроется mmc оснастка «Службы компонентов», которая делает то же что и DCOMCONFIG, но позволяет видеть 32 битные компоненты. В результате этих манипуляций компонент Microsoft Excel Application у вас должен появиться. Открываем свойства Microsoft Excel Application.

Переходим на вкладку «Безопасность (Secutity)». В пункте «Разрешения на запуск и активацию (Launch and Activation Permissions)», выберите «Настроить (Customize )» и изменить. Вам нужно добавить сюда учетную запись, от имени которой запускается служба 1С и предоставить ей права:

  • Локальный запуск — Local Launch
  • Локальная активация — Local Activation

Далее переходим к пункту «Разрешения на доступ (Access Permissions)» и так же меняем их. Добавьте там ту же учетную запись, от имени которой запускается сервис 1С, и дайте ей права «Локальный доступ (Local Access)». Сохраните настройки.

Закрываем окно служб компонентов, теперь для того, чтобы закончит ьнастройку DCOM для 1С и Microsoft Excel Application, вам необходимо дать права на две папки.

Вам нужно убедиться, что у вас есть две папки:

2147221005(0x800401F3): Недопустимая строка с указанием класса — что делать

При выполнении каких-либо задач с комплексом 1С (фоновый обмен данными между компонентами, запуске нужной конфигурации, проверки выполнения кода etc) может появиться сообщение об ошибке 2147221005(0x800401F3). Последняя обычно сопровождается строкой « Недопустимая строка с указанием класса » и связана с неверным кодом программы, не зарегистрированными в системе компонентами и другими релевантными факторами. Давайте разберёмся, что делать при появлении ошибки 2147221005(0x800401F3) в вашей 1С.

Суть и причины «Недопустимая строка с указанием класса»

Ошибка 2147221005(0x800401F3) относится к регулярно встречающимся ошибкам 1С, и фиксируется у многих пользователей. Единственного и эффективного рецепта её решения не существует, так как она может иметь уникальную основу, и вызывается особенностями программного кода в конкретной системе.

Тем не менее к числу наиболее популярных причин ошибки 2147221005 относятся следующие:

  • Пользователь использует устаревшую конфигурацию 1С . К примеру, фиксировались случаи появления ошибки 2147221005(0x800401F3) при использовании архаичной конфигурации «Управление торговлей» при попытке обмена данными с 1С «Бухгалтерия предприятия»;
  • Наличие некорректного кода программы (к примеру, обращение к устаревшему «V82.COMConnector» вместо модерного «V83.COMConnector»);
  • В системе не зарегистрирована библиотека comcntr.dll , имеющая важное значение для работы 1С;
  • У пользователя, запускающего определённый комплекс 1С, нет достаточных прав для работы с ним (к примеру, запуск выполняется из гостевой учётной записи, вместо учётки администратора);
  • В системе не установлен (не зарегистрирован) Excel , необходимый для работы 1С.

Давайте разберёмся, как исправить ошибку 2147221005 «Недопустимая строка с указанием класса» в вашей системе 1С.

Обновите вашу конфигурацию 1С до актуальной версии

Первым делом убедитесь, что вы используете самую свежую версию конфигурации 1С. При подключении к нужным базам для выполнения обмена она может попытаться использовать устаревшую платформу (к примеру, 8.2), которая фактически отсутствует. Потому обновите вашу версию конфигурации до актуального релиза, а потом попробуйте осуществить требуемое подключение.

Используйте свежую версию 1С

Запускайте 1С с правами админа

Убедитесь, что вы запускаете систему под учётной записью администратора, а не ограниченного в правах «Гостя» или аналога.

Измените код программы

В некоторых случаях код программы может устареть и не соответствовать текущей версии 1С. Эффективным решением ошибки 2147221005 является замена строки кода:

COMConnector = Новый COMObject(«V82.COMConnector»);

COMConnector = Новый COMObject(«V83.COMConnector»);

После указанной замены ошибка «Недопустимая строка с указанием класса» может быть решена.

Зарегистрируйте в системе библиотеку comcntr.dll

Если вы пользуетесь Виндовс 64, то необходимо провести корректную регистрацию в системе библиотеки comcntr.dll . Нажмите на Win+R, введите следующую строку:

C:WindowsSysWOW64regsvr32 «c:Program Files(x86)1cv88.3.12.1469bincomcntr.dll»

Вместо «8.3.12.1469» укажите установленную у вас версию технологической платформы. После этого нажмите на ввод. Указанная регистрация может помочь избавиться от ошибки 2147221005 в 1С.

Проверьте наличие установленного в системе Excel

Наличие установленного в системе Excel является необходимым элементом при обращении к нему системы 1С. Потому рекомендуем убедиться, что Эксель в системе установлен корректно, для чего нажмите Win+R, введите там Excel , и нажмите ввод. Если программа запустилась, тогда всё работает корректно. Если нет, тогда следует установить (переустановить) Excel (комплекс «MS Office») на вашей машине (машинах).

Используйте специализированные форумы 1С

Если не один из указанных советов вам не помог, обратитесь к помощи форумов, которые посещают множество программистов и специалистов 1С. В частности, рекомендуем такие форумы как forum.infostart.ru, cyberforum.ru/1c-standard, is.ideasoft.in.ua где вам могут помочь в решении возникшей дисфункции.

Заключение

В нашем материале мы разобрали, когда появляется ошибка «2147221005(0x800401F3): Недопустимая строка с указанием класса», и как можно её исправить. Данная дисфункция может иметь различные причины, а для её решения рекомендуем задействовать весь комплекс способов, перечисленным нами выше. Их выполнение может помочь устранить ошибку 2147221005 в вашей системе 1С.

ComObject Excel.Application без офисного пакета

Мне нужно прочитать файл Excel из Powershell.
Я использую этот объект:

Он прекрасно работает на машине с установкой Office, но если Office не установлен, я получаю эту ошибку:

Есть ли какая-то среда выполнения для Office, чтобы использовать ее?

3 Ответа

Там нет «runtime» для Excel, которые вы можете использовать без получения надлежащей лицензии для Excel (и установки Excel на машину). Если вы пытаетесь сделать это на сервере OS с несколькими пользователями, вам также нужно рассмотреть возможность специального лицензирования (поскольку одна лицензия Excel не будет охватывать несколько пользователей более чем вероятно).

Вы можете рассмотреть возможность использования OpenXML SDK для Office в качестве способа выполнения некоторых общих действий в файле Excel, как описано здесь . Поскольку это библиотека .NET, вы сможете использовать ее изнутри PowerShell.

Нет времени выполнения, как и доступа.

Там есть зритель, если это вам поможет.

Обзор

С помощью средства просмотра Excel можно открывать, просматривать и печатать книги Excel, даже если у вас не установлен Excel. Вы также можете скопировать данные из Excel Viewer в другую программу. Тем не менее, вы не можете редактировать данные, сохраните книгу или создайте новую книгу.

Вместо COM можно использовать активные X-объекты данных (ADO), например

Похожие вопросы:

Мне нужно закончить заявку в C#. Теперь я хочу получить функцию, которая управляет файлом Excel для получения данных. Я использовал getActiveObject(Excel.Application) , но это ничего не возвращает.

У меня есть набор документов, чтобы запросить, чтобы пользователь открыл версию только для чтения(опция рекомендуется только для чтения). Я хотел бы открыть документ excel без чтения только в.

Я ищу разъяснений относительно влияния New на объекты и сценарий. Я понимаю, что если мне нужно выполнить действия над документом excel и приложение закрыто, то я должен использовать новый.

Я пытался получить доступ к COM объектам всех экземпляров Excel 2010, зарегистрированных в ROT в Visual C# Express 2010. Я нашел код на.

Есть ли способ преобразовать .xls в .csv без установки Excel с помощью Powershell? У меня нет доступа к Excel на конкретной машине, поэтому я получаю ошибку при попытке: New-Object -ComObject.

У меня есть powershell скрипт, который использует -ComObject Word.Application. Я хотел бы использовать это в сервере windows, но у него нет Word. На данный момент , когда я выполняю, у меня есть эта.

У меня есть небольшой скрипт, который позволяет мне объединить несколько .csv к А.файлы XLSX: $path = C:UsersFrancescoMDesktopCSVResults* $csvs = Get-ChildItem $path -Include *.csv $y =.

Я столкнулся с проблемой на Powershell Excel ComObject, где я не могу принять разделитель, отличный от запятой , . Некоторые из внешних .Полученные файлы csv используют другой разделитель, например.

Понравилась статья? Поделить с друзьями:
  • Ошибка сбой активации продукта word
  • Ошибка ресурсы excel закончились
  • Ошибка пути microsoft excel
  • Ошибка приложению word не удалось создать рабочий файл проверьте переменную среды temp
  • Ошибка приложению word не удалось прочитать документ