Word application недопустимая строка с указанием класса

   Tornadius

27.02.19 — 07:50

Доброго дня всем!   Кто сталкивался с подключением Word  на платформе 8.2?

Имеем платформу «1С:Предприятие 8.2 (8.2.19.130)» и конфигурацию УСО (1.3.116.2) Клиент-серверный вариант. MS Word 2013 c ProgID «Word.Application.15» и ProgIndependentID «Word.Application»

Задача печатать договоры с клиентами из Word.

При использовании классического способа выдает:

{ОбщийМодуль.ОбщиеПроцедуры.Модуль(167)}: Ошибка при вызове конструктора (COMOBject)

    WD = Новый COMOBject(«Word.Application»);

по причине:

Недопустимая строка с указанием класса

Подскажите как победить такую бяку. Под 8.3 работает. но переход пока исключен. нужно именно на 8.2

   dmpl

1 — 27.02.19 — 07:55

(0) Word какой — x86 или x64? Этот общий модуль где работает — на сервере или на клиенте?

   Tornadius

2 — 27.02.19 — 08:09

(1) х64, Модуль работает на клиенте используется «толстый» клиент

   dmpl

3 — 27.02.19 — 08:45

(2) Ну а как 32-битный клиент достучится до 64-битной библиотеки? Нужно или донастроить Word, или поставить 32-битную версию.

   МимохожийОднако

4 — 27.02.19 — 08:49

Практика показала, что меньше проблем на 32х

   Tornadius

5 — 27.02.19 — 10:41

Заменил Офис на 32 разрядный — ошибка та же.

   Василий Алибабаевич

6 — 27.02.19 — 10:55

(5) В реестре есть что-нибудь по теме «Word.Application»? Должен быть раздел в ветке классов.

ЗЫ. Word.Application не InProc. Посему пофиг на 32 или 64. Оно работает в своем адресном пространстве.

   Nyarlathotep

7 — 27.02.19 — 10:57

(0) Проверь, работает ли вообще на клиенте ком соединение из 1с? Любое, куда угодно. Если нет — переустанавливай его или перерегистрируй comcntr.dll.

   Nyarlathotep

8 — 27.02.19 — 11:01

(0) Не очень помню, как все это в 1с, но, возможно, если у тебя на клиенте 8.2 и 8.3, возможно, ком-библиотека зарегистрирована от 8.3, а надо от 8.2.

   Василий Алибабаевич

9 — 27.02.19 — 11:12

(7) Какое отношение «comcntr.dll» от 1С имеет к Ворду? То что исполняются на одном компьютере? Или то, что за них пишут в одном интернете?

   Tornadius

10 — 27.02.19 — 11:16

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

Правда в службе компонентов делал объекты V82COMConnector и V83COMConnector в которых привязывал comcntr.dll

Но думаю, что эта dll тут не причем.

   Tornadius

11 — 27.02.19 — 11:18

В реестре есть word c ProgID «Word.Application.15» и ProgIndependentID «Word.Application»

   Василий Алибабаевич

12 — 27.02.19 — 11:22

(11) Пробуй с прогайди «Word.Application.15».

ЗЫ. Ворд ставил со сборки? При нормальной установке должен быть раздел и не привязанный к версии. Просто «Word.Application».

   singlych

13 — 27.02.19 — 11:24

(0) «Под 8.3 работает.» — как проверял, ту же конфу на 8.3 запускал?

«Модуль работает на клиенте» — там галка клиент и все?

   Василий Алибабаевич

14 — 27.02.19 — 11:26

+ (12) Кстати АйДи классов у «Word.Application» и «Word.Application.15» один и тот же. «{000209FF-0000-0000-C000-000000000046}»

Это при установленном МСО 13.

Кроме «Word.Application» оно еще должно зарегистрировать «Word.Document»

   Скиурус

15 — 27.02.19 — 11:26

COM — это лютое легаси, которое очень плохо, медленно и нестабильно работает на современных системах — это факт. Поэтому советую обдумать, не получится ли у вас обойтись без него? Например, прямой правкой внутренностей docx файла. Если стоит задача заполнить какой-нибудь красивый шаблон, очень часто это достаточно просто делается таким способом — там внутри простой и логичный xml.

   Василий Алибабаевич

16 — 27.02.19 — 11:28

(15) «COM — это лютое легаси, которое очень плохо, медленно и нестабильно работает на современных системах — это факт.»

ТаТыШо? А как жешЬ оно работает в АДО? Или каждое приложение работу со скулем в себя линкует?

   Tornadius

17 — 27.02.19 — 13:16

(13) была отдельная конфа на 8.3 в которой все работает, ее полностью объединили с конфой на 8.2 — добавили функционал — перестало работать

   Tornadius

18 — 27.02.19 — 13:18

На всякий случай MS Office у нас лицензионный, т.е. не сборка.

   Tornadius

19 — 27.02.19 — 13:21

Я думаю причина в стороне вызова «Клиент-Сервер» но где понять не могу. Ведь на 8.2 работают выгрузки/загрузки в тот-же Excel. А вот с Word- ом головняк. Вроде вызывается из Общего модуля, там без разницы. Завтра напишу обработку с вызовом на клиентской стороне посмотрю как отстреляется

  

singlych

20 — 27.02.19 — 13:27

(19) В обычном приложении, емнип, в клиент-серверной базе общие серверные модули исполняются реально на сервере. Может, поэтому.

  1. Имеется строчка: WordApp = Новый COMОбъект(«Word.Application»);
    И на ней появляется ошибка: -2147221005(0x800401F3): Недопустимая строка с указанием класса
    Строка находится в общем модуле, работающем на стороне Клиента и Сервера.
    В этом же модуле есть метод, который точно также нормально использует эту строку.
    В чем может быть проблема?


  2. nomad_irk

    Offline

    nomad_irk
    Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.878
    Симпатии:
    1.027
    Баллы:
    204

    в том, что Word не установлен либо на клиенте, либо на сервере.

  3. у меня файловая версия. И я же говорю, что такая же строка нормально обрабатывается в соседнем методе.


  4. nomad_irk

    Offline

    nomad_irk
    Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.878
    Симпатии:
    1.027
    Баллы:
    204

    Значит ошибка в имени класса Word.Application.
    Скопируйте от туда, где работает нормально.

  5. Код итак скопирован был. В этом то и вопрос.


  6. nomad_irk

    Offline

    nomad_irk
    Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.878
    Симпатии:
    1.027
    Баллы:
    204

  7. Вам кажется это смешным? Думаете, если есть сертификаты, то можно вот так бросаться своими шуточками?
    Да, вопрос может выглядеть тупым. Но для того и создан форум — чтобы советоваться. Так что не надо язвить пожалуйста.


  8. alexburn

    Offline

    alexburn
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    15.150
    Симпатии:
    560
    Баллы:
    204

    Так у вас может уже открыт com ? В процессах точно нет открытых процессов word-а ?

  9. Нет. К счастью или к сожалению диспетчер задач молчит о ворде.

  10. Доброго, проверьте, что у вас «Word.Application» прописан латиницей

    — Объединение сообщений, 1 авг 2016

    Было бы замечательно, если бы вы делали инициализацию объекта через попытку, и обрабатывали сообщение в исключении, пример :

        Попытка
            КомОбъект = Новый COMОбъект("Word.Application");
        Исключение
            ТекстОшибки = ОписаниеОшибки();
            СделатьЗаписьВЖурналРегистрации(ТекстОшибки);
        КонецПопытки;
    

  11. Dem0lisher

    Offline

    Dem0lisher
    Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.270
    Симпатии:
    106
    Баллы:
    104

    Мистер говорит, что скопировал и соседний метод работает.
    Попытка — хорошо, но похоже она и тут скажет тоже самое
    -2147221005(0x800401F3): Недопустимая строка с указанием класса

    Может еще права проверить. Под каким пользователем работает? win и 1С

    Последнее редактирование: 1 авг 2016
  12. нужно убедиться, что в реестре есть :
    upload_2016-8-1_13-58-3.png

    — Объединение сообщений, 1 авг 2016

    Возможно, нужно отказаться от использования имени переменной «WordApp» для COM объекта, слишком короткое, возможно используется где-то, лучше наименование более развернутое (более уникальное), что то вроде — «ЗаполняемыйМакетWordДокумент», вообщем как нравиться

    — Объединение сообщений, 1 авг 2016

    Поскольку база файловая, (то с большим успехом можно) нужно ставить точку останова на инициализации объекта и пощупать переменные по «Вычислить выражение»

    Последнее редактирование: 1 авг 2016


1C-pro.ru - форум по 1С:Предприятию 7.7, 8.0, 8.1, 8.2, 8.3

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

Текст: «Ошибка при вызове конструктора (COMObject) по причине: -2147221005(0x800401F3): Недопустимая строка с указанием класса».

Причины связаны с незарегистрированными в системе компонентами — comcntr.dll, ошибками доступа (недостаточно прав).

Решение — в регистрации библиотеки comcntr.dll из каталога программы для корректного вызова COMConnector.

Подготовительные действия

  • отключите службу Агента сервера 1С:Предприятия и программы, возможно использующие регистрируемую DLL;
  • если ранее использовалась библиотека устаревшей версии, удалите регистрацию comcntr.dll, запустив команду вызова regsvr32 с ключом /u.

Подходы к решению

1. Регистрация библиотеки comcntr.dll

В командной строке с правами Администратора выполните команду:

regsvr32 "<путь к каталогу установки 1С>bincomcntr.dll"

При удачном выполнении вы увидите сообщение: «Успешное выполнение DllRegisterServer в comcntr.dll».

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

Переустановите технологическую платформу 1С в режиме «Исправить» и отметьте COM-соединение.

3. Регистрация коннектора вручную

Регистрация приложения и коннектора вручную:

  • запускаем консоль «Службы компонентов»;
  • добавляем новый элемент, переходим «Компьютеры» — «Мой компьютер» — из списка выбираем «Приложения COM+»;
  • выбираем «Создать» — «Приложение»;
  • в Мастере установки выбираем второй вариант «Создать новое приложение», в поле «Введите имя нового приложения:» вводим «V83COMConnector», «Способ активации» устанавливаем «Серверное приложение», нажимаем «Далее»;
  • выбираем учетную запись под которой запускается приложение, по умолчанию — «Текущий (вошедший в систему) пользователь»;
  • на этапах «Добавление ролей приложения» и «Добавление пользователей для ролей» нажимаем «Далее», а затем «Готово».

В ветке только что созданного приложения переходим в подветку «Компоненты» и создаем компонент:

  • в контекстном меню выбираем «Создать» — «Компонент»;
  • кликаем по первому варианту «Установка новых компонентов»;
  • в открывшемся диалоге выбираем необходимый файл comcntr.dll и нажимаем «Открыть»;
  • нажимаем «Далее» и «Готово».

Обратите внимание: после установки измените свойства объекта. Для этого переходим к ветке V83COMConnector:

  • открываем свойства созданного компонента, переходим в ветку V83COMConnector — «Свойства»;
  • на вкладке «Безопасность», в «Авторизация» снимаем флаг «Принудительная проверка доступа для приложений»;
  • в «Политика программных ограничений» устанавливаем флаг «Применить политику программных ограничений» и выбираем «Уровень ограничений:» — «Неограниченный»;
  • нажимаем «Применить» — «ОК».

Полная версия со снимками экранов — в статье на Дзен-канале.

Класс V83COMConnector зарегистрирован и доступен для подключения к информационным базам. Обмен данными между базами восстановлен, и фоновый процесс завершается без ошибок.

Если не получается и требуется дополнительная поддержка — наши специалисты готовы вам помочь → +7-911-500-10-11

  • О программе
  • Новости
  • Помощь
    • Документация
    • Руководство
    • Статьи
    • Скриншоты
    • Видео
    • FAQ
  • Форум
  • Обратная связь
  • Купить программу
  • Вход и регистрация

Zebroid, Зеброид

Ссылка на сообщение

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

Подтвердите действие

06 января 2011, 10:28

Kamysh
Зарегистрирован:
02 января 2011, 20:38

Не могу понять о каком пакете речь. У меня word установлен. Может нужно какое-то дополнение для зеброида поставить?

07 января 2011, 15:55

admin
Зарегистрирован:
10 апреля 2012, 00:00

Программа с вордом обращается через OLE сервис, это он ей говорит, что ворда на компе нету. Если он у вас установлен то:

а) либо у вас портативная версия

б) либо в реестре нету каких-то записей нужных для идентификации офиса

в) либо глючит OLE/Винда

г) еще что-то

По правда говоря за столько времени это первый подобный случай. Думаю переустановки офиса должно быть достаточно.

Кстати экспорт в эксель работает?

17 января 2011, 09:49

JIe0n
Зарегистрирован:
07 января 2011, 19:27

та же ошибка, но у меня LibreOffice, очень не хотелось бы ставить от ms, планируется ли поддержка LibreOffice, OpenOffice?

17 января 2011, 11:56

admin
Зарегистрирован:
10 апреля 2012, 00:00

та же ошибка, но у меня LibreOffice, очень не хотелось бы ставить от ms, планируется ли поддержка LibreOffice, OpenOffice?

Не планируется, так как эти пакеты не предоставляют такой возможности, в отличии от пакета MS. Но вы всегда можете сохранять вордовские файлы в формат HTML и импортировать их без наличия офиса на компьютере (где-то видел в интернете пакетные переобразователи)

21 января 2011, 17:21

Kamysh
Зарегистрирован:
02 января 2011, 20:38

Программа с вордом обращается через OLE сервис, это он ей говорит, что ворда на компе нету. Если он у вас установлен то:

а) либо у вас портативная версия

б) либо в реестре нету каких-то записей нужных для идентификации офиса

в) либо глючит OLE/Винда

г) еще что-то

По правда говоря за столько времени это первый подобный случай. Думаю переустановки офиса должно быть достаточно.

Кстати экспорт в эксель работает?

Версия стартер, не портативная.

В эксель экспорт не работает, пишет: Недопустимая строка с указанием класса, ProgID: «Excel.Application»

22 января 2011, 04:50

admin
Зарегистрирован:
10 апреля 2012, 00:00

Версия стартер, не портативная.

В эксель экспорт не работает, пишет: Недопустимая строка с указанием класса, ProgID: «Excel.Application»

На сколько мне известно Стартер — это версия оффиса в которую входят обрезанные по функционалу Эксель и Ворд. Скорее всего обрезали именно возможность взаимодействия с продуктами сторонних разработчиков. И выше описанная ошибка тому подтверждение: класса «Excel.Application» может не быть только в 2 случаях:

1. не установлен оффис

2. Установлен оффис без поддержки взаимодействия (это версии до 2000 и по видимому стартер)

23 января 2011, 20:25

bork75
Зарегистрирован:
21 сентября 2010, 01:15

А что мешает просто поставить Word ?

Я им тоже не пользуюсь, стоит OpenOffice и microsoft office 2003, для всех файлов поставил — открывать в OpenOffice, про Word вообще забыл, живёт где-то в компе )

Такой ошибки в зебройде не выскакивает.

24 января 2011, 15:59

Kamysh
Зарегистрирован:
02 января 2011, 20:38

Вместо стартера поставил стандарт. Теперь такое сообщение: «Сервер RPC недоступен». Win7 x64, если что.

24 января 2011, 16:14

admin
Зарегистрирован:
10 апреля 2012, 00:00

Вместо стартера поставил стандарт. Теперь такое сообщение: «Сервер RPC недоступен». Win7 x64, если что.

Найдите в службах «DCOM Server Process Launcher» и запустите (если не запущен). Если не поможет — номер аськи в ЛС, завтра с вами свяжусь и будем решать.

3 / 3 / 7

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

Сообщений: 638

1

13.12.2017, 12:05. Показов 17432. Ответов 10


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

Добрый день, вот пытаюсь напечатать документ MSWorld в обработке, делаю по примеру, вот так

ОбработкаОбъект = РеквизитФормыВЗначение(«Объект»);
СсылкаМакет = ОбработкаОбъект.ПолучитьМакет(«Макет»);

MSWord = СсылкаМакет.Получить();// И вот тут выдает ошибку

Ошибка при вызове метода контекста (Получить)

Подскажите плз где ошибка?

http://programmist1s.ru/pechat… 8-3-i-8-2/ — вот брал отсюда

Добавлено через 22 минуты
Да, делаю это все на сервере



0



Эксперт 1С

434 / 305 / 92

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

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

13.12.2017, 13:53

2

Владислаучык,
что в переменной СсылкаМакет ?
У макета тип ActiveDocument?

в той же статье автор пишет ещё следующее:

Скорее всего проблема в ворде или в правах системы. Он корректно установлен? Попробуйте другую версию Ворда. Ну или на крайний случай можно проделать это на другой машине.



1



3 / 3 / 7

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

Сообщений: 638

13.12.2017, 14:09

 [ТС]

3

Получение макета ActiveDocument



0



Владислаучык

3 / 3 / 7

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

Сообщений: 638

13.12.2017, 16:52

 [ТС]

4

Phil, Да, такой тип

Добавлено через 2 часа 42 минуты
И если дело в ворлде, то как тогда переделать? пробовал так

1C
1
2
3
4
5
6
7
8
9
//ВремФайл = ПолучитьИмяВременногоФайла("doc");
//  MSWord = Новый COMОбъект("Word.Application");
//MSWord.Displayalerts = 0;
//ДокументН = MSWord.Application.Documents.Add();
//ДокументН.SaveAs(ВремФайл,0);                
//MSWord.Quit();
 
//Макет = ВернутьМакет();
//MSWord = Макет.Получить();
1C
1
2
3
4
5
6
7
8
&НаСервере
Функция ВернутьМакет()
    
        
    ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
    СсылкаМакет = ОбработкаОбъект.ПолучитьМакет("Макет");
    Возврат СсылкаМакет;
КонецФункции

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



0



polax

1828 / 1246 / 445

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

Сообщений: 5,457

14.12.2017, 10:25

5

Владислаучык, Вот рабочий код. Неделю назад делал ВПФ с макетом в Ворде

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
&НаСервере
Функция ПолучитьДокументВордИзМакета (ИмяМакета)
    Макет = РеквизитФормыВЗначение("Объект").ПолучитьМакет("Макет");
    ИмяФайла = ПолучитьИмяВременногоФайла ("doc");
    Макет.Записать (ИмяФайла);
    
    Приложение = Новый ComObject ("Word.Application");
    
    ДокументыВорда = Приложение.Documents;
    Документ = ДокументыВорда.Open (ИмяФайла);
    Документ.Activate ();
    
    Selection = Приложение.Selection;
    Selection.WholeStory ();
    Selection.Copy ();
    
    НовыйДокумент = ДокументыВорда.Add ();
    НовыйДокумент.Activate ();
    Selection = Приложение.Selection;
    Selection.WholeStory ();
    Selection.PasteAndFormat (0);
    
    Документ.Close ();
    УдалитьФайлы (ИмяФайла);
    
    Данные = Новый Структура;
    Данные.Вставить ("Приложение", Приложение);
    Данные.Вставить ("Документ", НовыйДокумент);
    
    Возврат Данные;
КонецФункции // ПолучитьДокументВордИзМакета



0



3 / 3 / 7

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

Сообщений: 638

15.12.2017, 15:15

 [ТС]

6

polax, Приложение = Новый ComObject («Word.Application»); — вот тут ошибка, Ошибка при вызове конструктора (ComObject)
Приложение = Новый ComObject («Word.Application»);
по причине:
-2147221005(0x800401F3): Недопустимая строка с указанием класса



0



1828 / 1246 / 445

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

Сообщений: 5,457

15.12.2017, 18:19

7

Владислаучык, Либо делаете не на сервере, либо на компьютере не установлен Ворд



1



1155 / 702 / 203

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

Сообщений: 5,218

Записей в блоге: 1

15.12.2017, 21:17

8

Цитата
Сообщение от polax
Посмотреть сообщение

Либо делаете не на сервере

я путаю? может наоборот — делаете на сервере?
ексель,ворд же надо открывать локально?



1



1828 / 1246 / 445

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

Сообщений: 5,457

15.12.2017, 22:24

9

Лучший ответ Сообщение было отмечено Владислаучык как решение

Решение

Владислаучык, Yulunga, не то что ошибся, а высказал неправильно. Вот здесь описано http://1clancer.ru/article/oso… ie_8.2_847



1



0 / 0 / 0

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

Сообщений: 2

15.06.2022, 11:55

10

polax, У вас есть код для Exel макета active document?



0



1828 / 1246 / 445

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

Сообщений: 5,457

15.06.2022, 15:54

11

Dfolt, Вот из моих закладок по которым делаю подобное



0



Понравилась статья? Поделить с друзьями:
  • Word application не работает
  • Word application не может открыть файл
  • Word application закрыть документ
  • Word application для delphi
  • Word application вставить текст