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
1 — 27.02.19 — 07:55
(0) Word какой — x86 или x64? Этот общий модуль где работает — на сервере или на клиенте?
2 — 27.02.19 — 08:09
(1) х64, Модуль работает на клиенте используется «толстый» клиент
3 — 27.02.19 — 08:45
(2) Ну а как 32-битный клиент достучится до 64-битной библиотеки? Нужно или донастроить Word, или поставить 32-битную версию.
4 — 27.02.19 — 08:49
Практика показала, что меньше проблем на 32х
5 — 27.02.19 — 10:41
Заменил Офис на 32 разрядный — ошибка та же.
6 — 27.02.19 — 10:55
(5) В реестре есть что-нибудь по теме «Word.Application»? Должен быть раздел в ветке классов.
ЗЫ. Word.Application не InProc. Посему пофиг на 32 или 64. Оно работает в своем адресном пространстве.
7 — 27.02.19 — 10:57
(0) Проверь, работает ли вообще на клиенте ком соединение из 1с? Любое, куда угодно. Если нет — переустанавливай его или перерегистрируй comcntr.dll.
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С имеет к Ворду? То что исполняются на одном компьютере? Или то, что за них пишут в одном интернете?
10 — 27.02.19 — 11:16
Ком соединения работают, постоянно идет обмен между разными базами на разных версиях платформы.
Правда в службе компонентов делал объекты V82COMConnector и V83COMConnector в которых привязывал comcntr.dll
Но думаю, что эта dll тут не причем.
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».
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 — это лютое легаси, которое очень плохо, медленно и нестабильно работает на современных системах — это факт.»
ТаТыШо? А как жешЬ оно работает в АДО? Или каждое приложение работу со скулем в себя линкует?
17 — 27.02.19 — 13:16
(13) была отдельная конфа на 8.3 в которой все работает, ее полностью объединили с конфой на 8.2 — добавили функционал — перестало работать
18 — 27.02.19 — 13:18
На всякий случай MS Office у нас лицензионный, т.е. не сборка.
19 — 27.02.19 — 13:21
Я думаю причина в стороне вызова «Клиент-Сервер» но где понять не могу. Ведь на 8.2 работают выгрузки/загрузки в тот-же Excel. А вот с Word- ом головняк. Вроде вызывается из Общего модуля, там без разницы. Завтра напишу обработку с вызовом на клиентской стороне посмотрю как отстреляется
singlych
20 — 27.02.19 — 13:27
(19) В обычном приложении, емнип, в клиент-серверной базе общие серверные модули исполняются реально на сервере. Может, поэтому.
-
Имеется строчка: WordApp = Новый COMОбъект(«Word.Application»);
И на ней появляется ошибка: -2147221005(0x800401F3): Недопустимая строка с указанием класса
Строка находится в общем модуле, работающем на стороне Клиента и Сервера.
В этом же модуле есть метод, который точно также нормально использует эту строку.
В чем может быть проблема? -
Offline
nomad_irk
Гуру в 1С- Регистрация:
- 20 окт 2008
- Сообщения:
- 9.878
- Симпатии:
- 1.027
- Баллы:
- 204
в том, что Word не установлен либо на клиенте, либо на сервере.
-
у меня файловая версия. И я же говорю, что такая же строка нормально обрабатывается в соседнем методе.
-
Offline
nomad_irk
Гуру в 1С- Регистрация:
- 20 окт 2008
- Сообщения:
- 9.878
- Симпатии:
- 1.027
- Баллы:
- 204
Значит ошибка в имени класса Word.Application.
Скопируйте от туда, где работает нормально. -
Код итак скопирован был. В этом то и вопрос.
-
Offline
nomad_irk
Гуру в 1С- Регистрация:
- 20 окт 2008
- Сообщения:
- 9.878
- Симпатии:
- 1.027
- Баллы:
- 204
-
Вам кажется это смешным? Думаете, если есть сертификаты, то можно вот так бросаться своими шуточками?
Да, вопрос может выглядеть тупым. Но для того и создан форум — чтобы советоваться. Так что не надо язвить пожалуйста. -
Offline
alexburn
Модераторы
Команда форума
Модератор- Регистрация:
- 5 янв 2009
- Сообщения:
- 15.150
- Симпатии:
- 560
- Баллы:
- 204
Так у вас может уже открыт com ? В процессах точно нет открытых процессов word-а ?
-
Нет. К счастью или к сожалению диспетчер задач молчит о ворде.
-
Доброго, проверьте, что у вас «Word.Application» прописан латиницей
— Объединение сообщений, 1 авг 2016 —
Было бы замечательно, если бы вы делали инициализацию объекта через попытку, и обрабатывали сообщение в исключении, пример :
Попытка КомОбъект = Новый COMОбъект("Word.Application"); Исключение ТекстОшибки = ОписаниеОшибки(); СделатьЗаписьВЖурналРегистрации(ТекстОшибки); КонецПопытки;
-
Offline
Dem0lisher
Профессионал в 1С- Регистрация:
- 4 авг 2009
- Сообщения:
- 1.270
- Симпатии:
- 106
- Баллы:
- 104
Мистер говорит, что скопировал и соседний метод работает.
Попытка — хорошо, но похоже она и тут скажет тоже самое
-2147221005(0x800401F3): Недопустимая строка с указанием классаМожет еще права проверить. Под каким пользователем работает? win и 1С
Последнее редактирование: 1 авг 2016 -
нужно убедиться, что в реестре есть :
— Объединение сообщений, 1 авг 2016 —
Возможно, нужно отказаться от использования имени переменной «WordApp» для COM объекта, слишком короткое, возможно используется где-то, лучше наименование более развернутое (более уникальное), что то вроде — «ЗаполняемыйМакетWordДокумент», вообщем как нравиться
— Объединение сообщений, 1 авг 2016 —
Поскольку база файловая, (то с большим успехом можно) нужно ставить точку останова на инициализации объекта и пощупать переменные по «Вычислить выражение»
Последнее редактирование: 1 авг 2016
Как правило, ошибка возникает при фоновом обмене данными между базами 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
- Форум
- Обратная связь
- Купить программу
- Вход и регистрация
Ссылка на сообщение
Копирование прямой ссылки этого сообщения, для сохранения в буфере обмена
Подтвердите действие
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 |
Не планируется, так как эти пакеты не предоставляют такой возможности, в отличии от пакета MS. Но вы всегда можете сохранять вордовские файлы в формат HTML и импортировать их без наличия офиса на компьютере (где-то видел в интернете пакетные переобразователи) |
21 января 2011, 17:21 | |
Kamysh Зарегистрирован: 02 января 2011, 20:38 |
Версия стартер, не портативная. В эксель экспорт не работает, пишет: Недопустимая строка с указанием класса, ProgID: «Excel.Application» |
22 января 2011, 04:50 | |
admin Зарегистрирован: 10 апреля 2012, 00:00 |
На сколько мне известно Стартер — это версия оффиса в которую входят обрезанные по функционалу Эксель и Ворд. Скорее всего обрезали именно возможность взаимодействия с продуктами сторонних разработчиков. И выше описанная ошибка тому подтверждение: класса «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 |
Найдите в службах «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 |
434 / 305 / 92 Регистрация: 28.05.2014 Сообщений: 1,247 |
|
13.12.2017, 13:53 |
2 |
Владислаучык, в той же статье автор пишет ещё следующее: Скорее всего проблема в ворде или в правах системы. Он корректно установлен? Попробуйте другую версию Ворда. Ну или на крайний случай можно проделать это на другой машине.
1 |
3 / 3 / 7 Регистрация: 21.03.2013 Сообщений: 638 |
|
13.12.2017, 14:09 [ТС] |
3 |
0 |
Владислаучык 3 / 3 / 7 Регистрация: 21.03.2013 Сообщений: 638 |
||||||||
13.12.2017, 16:52 [ТС] |
4 |
|||||||
Phil, Да, такой тип Добавлено через 2 часа 42 минуты
Так макет нельзя вернуть, а если на сервере сделать сразу, то тоже ошибка отсутствует отображение типа для ActiveDocument
0 |
polax 1828 / 1246 / 445 Регистрация: 16.01.2015 Сообщений: 5,457 |
||||
14.12.2017, 10:25 |
5 |
|||
Владислаучык, Вот рабочий код. Неделю назад делал ВПФ с макетом в Ворде
0 |
3 / 3 / 7 Регистрация: 21.03.2013 Сообщений: 638 |
|
15.12.2017, 15:15 [ТС] |
6 |
polax, Приложение = Новый ComObject («Word.Application»); — вот тут ошибка, Ошибка при вызове конструктора (ComObject)
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 |
Либо делаете не на сервере я путаю? может наоборот — делаете на сервере?
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 |