|
|||
Vstur
05.02.14 — 11:04 |
Существуют обработки, организующие выводж в XLS-файлы. На компьютерах OpenOffice 3.3 Беру новый OpenOffice 4.0.1. Удаляю OO 3.3, ставлю ОО 4.0.1. Запускаю в 1с обработку Падается в строке: Попытка ServiceManager = Новый COMОбъект(«com.sun.star.ServiceManager»); Исключение Предупреждение(ОписаниеОшибки() + Символы.ПС + «программа OpenOffice не установлена на данном компьютере!»); Возврат; КонецПопытки; с ошибкой: «Ошибка при вызове конструктора COM-объекта. Не удается найти указанный файл.» Удаляю ОО 4.0.1, возвращаю ОО 3.3, все опять работает. Кто-нибудь сталкивался ? Укрощали ОО 4.xx ? |
||
Dmitry1c
1 — 05.02.14 — 11:09 |
>Не удается найти указанный файл в реестре к COM-объекту указан путь, по которому нужной dll-ки нету |
||
Dmitry1c
2 — 05.02.14 — 11:11 |
> C:Program Files (x86)LibreOffice 4programsoffice.exe —nodefault —nologo у меня по такому вот адресу |
||
Vstur
3 — 05.02.14 — 12:07 |
Странно, что при установке ОО 4.xx не прописывается, получается, что при установке 3.3 прописывалось, а сейчас нет… |
||
Vstur
4 — 05.02.14 — 12:39 |
Переустановил 4.x, поправил реестр в -HKEY_LOCAL_MACHINE -HKEY_CLASSES_ROOT -HKEY_CURRENT_USER процесс пошел… |
||
Torquader
5 — 05.02.14 — 14:01 |
Не знаю, 4.0.0 ставил после 3.Х (правда на Windows XP) всё работало из коробки (только нужно ответить «Да» на удаление третьей версии — иначе он на неё ссылки оставит). |
||
Vstur
6 — 05.02.14 — 16:49 |
Хоть и выводит в файлы, нормально так и не работает… В статичных данных случайным образом выдает ошибки при выводе в xls в абс. примитивных конструкциях вида: Sheet.getCellByPosition(2,НомерСтроки).setString(…чего-то там…); ругаясь на setString. То же самое на ОО 3.3 работает без всяких проблем. Пришлось на 3.3 откатиться… |
||
Vstur
7 — 05.02.14 — 16:54 |
В общем, после ОО 3.3, похоже, мигрировать дальше некуда… |
||
EvgeniuXP
8 — 05.02.14 — 20:06 |
(7) как говорится, работает — не трожь! |
||
Torquader
9 — 05.02.14 — 21:20 |
(7) В четвёрке какие-то режимы поменяли, причём, если ячейки объединены, то попытка получить пропущенную ячейку честно возвращает Null. |
||
Vstur 10 — 06.02.14 — 11:38 |
Не, у меня там примитив, никаких объединений и т.п. Просто заметил, в свое время пытался с ОО 3.3 на 3.4 перейти, получил такие же ошибки на рабочих обработках. Думал, может с 4.хх проблем не будет. Видимо знак, не слезать с 3.3 |
TurboConf — расширение возможностей Конфигуратора 1С |
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку «Обновить» в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Содержание:
1. Почему может возникнуть ошибка при вызове конструктора (COM-объект 1С)?
2. С помощью чего можно исправить ошибку при вызове конструктора (COM-объект 1С)?
3. Параметры при вызове конструктора (COM-объект 1С), которые регистрируют компоненты строки кода перед регистрируемым dll-файлом
1. Почему может возникнуть ошибка при вызове конструктора (COM-объект 1С)?
Когда ты начинающий специалист 1С, то иногда приходится чувствовать себя шаманом с бубном, так как не знаешь причин ошибки и как её исправить тоже.
Сегодня мы разберем одну из ошибок, которые появляются при работе с базой, а именно ошибку при вызове конструктора (COM-объект 1С).
Ситуацию такую, мы можем наблюдать при загрузке с Excel при использовании (COM-объекта 1С), при обмене между базами. Ситуаций, когда возникает данное сообщение с возникшей проблемой довольно много при работе с программой.
Как правило, данная ошибка возникает из-за того, что при установке платформы1С не произошла автоматическая регистрация 64-х разрядной компоненты, которая отвечает за использование COM-соединения 1С 8.3. А почему это произошло, спросите? Все очень просто и в то же время сложно, если не знаешь, в чем все ядро проблемы. А причина в том, что те, у кого выдаются такие ошибки, используют 32(86) – разрядную операционную систему и ставят вместо платформы необходимой разрядности их системы, платформу 1С предназначенную для совсем другой системы.
2. С помощью чего можно исправить ошибку при вызове конструктора (COM-объект 1С)?
Исправить данную ошибку, довольно легко. Для этого необходимо всего лишь зарегистрировать библиотеку dll в реестре при помощи командной строки или программы PowerShell, в зависимости от того, что любите использовать, и команды regsvr32.
Для того чтобы выполнить команду, достаточно будет в строке написать такой текст команды «regsvr32 «C:Program Files1cv88.3.ХХ.ХХХХbincomcntr.dll»». Вместо «ХХ.ХХХХ» необходимо указать необходимый релиз платформы, библиотеку которой, необходимо зарегистрировать в реестре системы.
Если все выполнено правильно и регистрация произошла успешно, то должно выдать сообщение, как на скриншоте, об успешной регистрации библиотеки.
Администратор: Командная строка
3. Параметры при вызове конструктора (COM-объект 1С), которые регистрируют компоненты строки кода перед регистрируемым dll-файлом
Также есть некоторые особенности команды, которая регистрирует компоненты.
На данный момент я знаю только 4 параметра (которые при написании строки кода указываются перед регистрируемым dll-файлом):
· /u — параметр, отменяет регистрацию
· /i — параметр, который позволяет при необходимости, в зависимости от библиотеки.
· /n —параметр используется только для установки компоненты 1С, в основном пишется вместе с предыдущим (/I);
· /s – возможность отключить все сообщения при регистрации;
Существует, также, один немаловажный момент, что в зависимости от версии командной строки, иногда приходится прописывать путь к самой утилите.
Кстати, существуют специальные программы-инструменты, которые помогают регистрировать компоненты, без знания команд и утилит администрирования, зарегистрировать библиотеку и продолжить работать дальше.
Таких программ достаточно много и писать, какое-то одно название смысла нет.
Для того чтобы быстро и качественно решать такие проблемы, необходимо изучать разнообразные статьи, для повышения уровня знаний и квалификации.
Специалист компании «Кодерлайн»
Олег Мороз
Ошибка при вызове конструктора (COMObject) по причине: Интерфейс не поддерживается
Ошибка происходит при попытке загрузить из Excel в 1С, когда код обработчика выполняется не на клиенте, а на сервере и в большинстве случаев текст ошибки говорит об отсутствии прав у пользователя сервера 1С.
Быстрый переход
- Особенности
- Устранение:
- Может оказаться, что «Microsoft Excel Application» отсутствует в списке, в данном случае
- Заключение
Особенности
Кодом со стороны 1С без изменения места исполнения не устраняется, использование других функций подключения Com также не дает положительных результатов.
Убедиться в причине ошибки возможно, если посмотреть логи системы.
Устранение:
- на сервере убиваем excel (taskkill /im excel.exe /f)
- открываем оснастку «Службы компонентов» (Пуск->Администрирование->Службы компонентов)
- в ней раскрываем ветку Службы компонентов->Компьютеры->Мой компьютер->Настройка DCOM
- справа в списке находим Microsoft Excel Application, открываем Свойства, вкладка Удостоверение, выбираем пользователя с администраторскими правами, ОК.
Может оказаться, что «Microsoft Excel Application» отсутствует в списке, в данном случае
- Запускаем REGEDIT
- Открываем ветку ComputerHKEY_CLASSES_ROOTAppIDEXCEL.EXE, если ее нет, то создаем
- Создаем в ней строковый параметр AppID = {00020812-0000-0000-C000-000000000046}
- Выполняем команду «mmc comexp.msc /32», которая делает то же что и DCOMCONFIG, но позволяет видеть 32 битные компоненты.
- После этого в Component Services должен появиться «Microsoft Excel Application»
Чтобы решить эту проблему, я включил пользователя USRV82, под которым запускается сервер приложений 1С Предприятия 8.3, в группу Distributed COM Users, но ошибка сразу не ушла, потребовалась перезагрузка.
Для правки использовалась оснастка Локальные пользователи и группы (lusrmgr.msc) — это инструмент, предназначенный для управления локальными пользователями и группами. Локальный пользователь или группа — это учетная запись, которой могут быть предоставлены разрешения и права на вашем компьютере.
Осложняло проблему то, что ошибка плавала: периодически выходила, либо в момент создания объекта, либо уже в момент вызова методов excel-application.
Так что нельзя однозначно сказать, что же решило проблему.
Заключение
В большинстве случаев уйти от дополнительной настройки операционной системы возможно, если использовать вызова Com-Объекта на клиенте. При правильной установке объектов они работают даже при различных по битности 1с и Excel, OS.
В моем же случае клиентские компьютеры работали на Ubuntu, поэтому вся обработка перенесена на сервер.
Бывает такое: вы прописываете для компонента пользователя и пароль.
Затем через некоторое время меняете пароль и компонент перестает работать: выходит такая же ошибка «Интерфейс не поддерживается». Следует просто вбить новый пароль.
Впервые в истории планеты Земля все люди во всех странах задались единой целью: заработать столько денег, чтобы уподобиться героям рекламы.
-
13.11.2018, 09:23
#31
Пришел за помощью
Re: Ошибка при вызове конструктора (COMObject)
Сообщение от avm3110
А сколько есть попыток угадать какую именно библиотеку ставил «2 раза»? Где ставил (на клиенте или на сервере)? под какими правами (пользователя или админа)?
Да и по синтаксису… У тебя в диагностике:
Что явно указывает на ошибку — «лишняя запятая». Параметр «Excel.Application» должен быть
первым
правильно:
ExcelApplication = Новый COMObject(«Excel.Application»);Теперь ошибка немного другая
{ВнешняяОбработка.Загрузка ВITIL.Форма.Форма.Форма(123)}: Ошибка при вызове конструктора (COMObject)
ExcelApplication = Новый COMObject(«Excel.Application»);
по причине:
-2147024891(0x80070005): Отказано в доступе.
-
13.11.2018, 12:13
#32
Гордость форума PRO
Re: Ошибка при вызове конструктора (COMObject)
Сообщение от Akbar11
Регистрировал библиотеку на клиенте, под администратором. Той платформы которую запускаю
Продолжаю занудно. Какую библиотеку регистрируете? Какой командой? У вас база файловая или клиент-сервер?
Опишите поподробнее — как именно регистрируете «под администратором».
-
14.11.2018, 06:04
#33
Пришел за помощью
Re: Ошибка при вызове конструктора (COMObject)
Сообщение от avm3110
Продолжаю занудно. Какую библиотеку регистрируете? Какой командой? У вас база файловая или клиент-сервер?
Опишите поподробнее — как именно регистрируете «под администратором».Регистрация библиотеки командой regsvr32 «C:Program Files1cv88.3.10.2466bincomcntr.dll»
Клиент — сервер
Процес, нажимаю вин + Q, пишу командная строка строка, контекстное меню запустить от имени админа, запускаю, Логин + пароль и регистрирую библиотеку
-
14.11.2018, 07:05
#34
Гордость форума PRO
Re: Ошибка при вызове конструктора (COMObject)
Сообщение от Akbar11
Регистрация библиотеки командой regsvr32 «C:Program Files1cv88.3.10.2466bincomcntr.dll»
Клиент — сервер
Процес, нажимаю вин + Q, пишу командная строка строка, контекстное меню запустить от имени админа, запускаю, Логин + пароль и регистрирую библиотекуМдя-я-я… все как в анекдоте…
«Пьяный ходит вокруг фонаря ночью и о чем-то материться. Прохожий хочет помочь и участливо спрашивает в чем дело.
Да я ключи потерял и уже полчаса не могу найти — следует ответ.
прохожий оглядывает место под фонарем и удивляется. Да тут же ровный асфальт, сухо и отлично видно что ключей тут нет. Ты уверен что именно тут потерял?
Да нет.. потерял я в грязной луже, вон там в подворотне. Но там же очень темно искать и очень грязно и очень мокро — поэтому я ищу именно тут».Уважаемый… У Вас диагностика «не зарегистрирован класс Excel.Application». Ну и что же вы хотите добиться «упорством достойного лучшего применения» регистрируя библиотеку 1с предприятия????
-
Пользователь сказал cпасибо:
-
14.11.2018, 07:10
#35
Гордость форума PRO
Re: Ошибка при вызове конструктора (COMObject)
Сообщение от Akbar11
Теперь ошибка немного другая
{ВнешняяОбработка.Загрузка ВITIL.Форма.Форма.Форма(123)}: Ошибка при вызове конструктора (COMObject)
ExcelApplication = Новый COMObject(«Excel.Application»);
по причине:
-2147024891(0x80070005): Отказано в доступе.А эта ошибка показывает, что пользователю под которым выполняется строка
ExcelApplication = Новый COMObject(«Excel.Application»);
нет прав на создание ком-объекта.У вас база клиент-серверная или файловая? Для файловой запустите 1с с правами администратора и попробуйте выполнить внешнюю обработку под админом с полными правами и правами администрирования.
-
14.11.2018, 08:14
#36
Пришел за помощью
Re: Ошибка при вызове конструктора (COMObject)
Сообщение от avm3110
А эта ошибка показывает, что пользователю под которым выполняется строка
ExcelApplication = Новый COMObject(«Excel.Application»);
нет прав на создание ком-объекта.У вас база клиент-серверная или файловая? Для файловой запустите 1с с правами администратора и попробуйте выполнить внешнюю обработку под админом с полными правами и правами администрирования.
В файловой все работает, даже не под админимон
-
14.11.2018, 13:33
#37
Гордость форума PRO
Re: Ошибка при вызове конструктора (COMObject)
Сообщение от Akbar11
В файловой все работает, даже не под админимон
Поднимите файловую на сервере и там попробуйте.
Если интерактивно в файловой будет работать, а в запущенном клиенте на сервере в клиент-сервере — нет. нужно смотреть права пользователя под которым работает 1С предприятие. А есть еще ряд настоек которые нужно будет проверять.
Пришлите вначале результаты этого тестирования
-
27.11.2018, 03:06
#38
Пришел за помощью
Re: Ошибка при вызове конструктора (COMObject)
Сообщение от avm3110
Поднимите файловую на сервере и там попробуйте.
Если интерактивно в файловой будет работать, а в запущенном клиенте на сервере в клиент-сервере — нет. нужно смотреть права пользователя под которым работает 1С предприятие. А есть еще ряд настоек которые нужно будет проверять.
Пришлите вначале результаты этого тестирования
Здравствуйте. В файловой на сервере все работает
Последний раз редактировалось Akbar11; 27.11.2018 в 03:23.
-
27.11.2018, 03:26
#39
Пришел за помощью
Re: Ошибка при вызове конструктора (COMObject)
На сервере ошибка
{ВнешняяОбработка.Загрузка ВITIL.Форма.Форма.Форма(123)}: Ошибка при вызове конструктора (COMObject)
ExcelApplication = Новый COMObject(«Excel.Application»);
по причине:
-2147467262(0x80004002): Интерфейс не поддерживается
-
27.11.2018, 07:59
#40
Гордость форума PRO
Re: Ошибка при вызове конструктора (COMObject)
Сообщение от Akbar11
В файловой на сервере все работает
На сервере ошибкану е-е-е-е… еще раз.. выше уже писал… Если на одном и том же компе одна и та же база поднята в файловом режиме, а затем в клиент-серверном (когда и сервер и клиент это один и тот же ком). И при этом на файловом «все работает», а на клиент-сервере подобная ошибка — следовательно проблема в правах под которым работает база.
При файл серверном — это права пользователя под которым идет запуск базы, а на клиент сервере это права пользователя под которым крутиться сервер 1С предприятия.
Решение — смотреть и фиксить эти права. Например как описано тут: — http://buh.ruboard.ru/public/196323/
Похожие темы
-
Ответов: 1
Последнее сообщение: 08.06.2017, 00:12
-
Ответов: 9
Последнее сообщение: 16.04.2014, 12:50
-
Ответов: 0
Последнее сообщение: 27.02.2014, 22:04
-
Ответов: 2
Последнее сообщение: 12.08.2013, 13:34
-
Ответов: 1
Последнее сообщение: 27.06.2013, 19:33
Социальные закладки
Социальные закладки
Ваши права
- Вы не можете создавать новые темы
- Вы не можете отвечать в темах
- Вы не можете прикреплять вложения
- Вы не можете редактировать свои сообщения
- BB коды Вкл.
- Смайлы Вкл.
- [IMG] код Вкл.
- [VIDEO] код Вкл.
- HTML код Выкл.
Правила форума
В этой статье речь пойдет об ошибках в COM-соединениях. Один из вариантов ошибки –
это «Ошибка при вызове конструктора (COMObject):
-2147221164(0x80040154): Класс не зарегистрирован…». Бывают и другие варианты
сообщений, все я перечислять не буду, в большинстве случаев — это означает, что
при установке платформы компонента comcntr.dll не смогла зарегистрироваться
автоматически. COM — соединения используются в обменах между конфигурациями.
У меня в готовых решениях есть обработка
загрузки сотрудников из ЗУП, в которой тоже используется COM — соединение и у
пользователей тоже может появиться ошибка. В случае с моей обработкой, при
проверке соединения, может появиться сообщение, что невозможно установить
соединение с конфигурацией ЗУП. Это
может произойти, если Вы неправильно указали настройки подключения, неправильно
настроены права пользователя, через которого Вы подключаетесь или чаще всего – проблема
в компоненте comcntr.dll, которая при смене платформы автоматически не
зарегистрировалась. Вот и рассмотрим, как ее зарегистрировать вручную.
Первое что нужно сделать, это запустить
командную строку от имени администратора.
В командной строке Windows набираете cmd, в
писке выбора появится программа с таким названием, устанавливаете курсор на эту
программу и выбираете из контекстного меню «Запуск под администратором» (см.
картинку ниже).
Затем ввести команду (можно двумя способами):
1.
regsvr32
«C:Program Files (x86)1cv8[версия платформы]bincomcntr.dll»
2.
C:Program
Files (x86)1cv8[версия платформы]bin>regsvr32 comcntr.dll
Прежде чем ввести эти команды нужно
переместиться по каталогам. Допустим, при запуске командной строки появляется
совсем другой каталог, пример можно увидеть на картинке ниже.
Для смены каталога нужно написать cd, после которого установить пробел, а
затем указать тот путь, который нам нужен, например C:Program Files (x86)1cv8[версия платформы]bin, затем после указания пути к каталогу нажимаете Enter. Смотрите пример смены каталога на
картинке ниже.
Вот теперь
рядом с каталогом можно ввести regsvr32 comcntr.dll, нажать Enter и
зарегистрировать компоненту (смотрите пример на картинке ниже).
Если все
сделали правильно, то получите сообщение (см. картинку ниже).
Если компоненту не удалось
зарегистрировать, проверьте как вы запустили командную строку, возможно, что
забыли запустить от имени администратора. Если все в порядке, то нужно отключить
службу агента сервера 1С:Предприятия и все программы, использующие эту DLL.
После сообщения об успешной регистрации,
можно вновь запустить обмен или обработку, с которой у вас возникли проблемы.
21.02.05 — 11:57
Проблема сдедующая: написал на Visual Studio Com объект…при компиляции получилась dll и на том компе, где я компилирую проект — все ОК в реестре эта dll регистрируется и я могу из 1С с ним работать, но если я хочу зарегистрировать эту dll (COM объект) на другом компе с помощью regsvr32.exe, то выдается такое сообщение:
C:srcclass.dll was loaded,but the DllRegisterServer entry point not found…и т.д.
подскажите в чем может быть проблема и как ее решить
1 — 21.02.05 — 12:16
Проблема в привязке ДЛЛ к машине , т.е. к реестру, т.к. там прописывается информация о внешних компонентах в разделе AddIn, возможно на другой машине этого раздела нет, а в ДЛЛ при регистрации реакция на этот случай не предусмотренна. У меня была подобная проблема, дело было в выше описанной причине…
2 — 21.02.05 — 12:18
А как с этим бороться-то?
3 — 21.02.05 — 12:27
Так а какая у тя точно ошибка, и что вообще говорит 1С когда происходит загрузка внешней компонеты??? А то могу тя в заблуждение ввести, а пока на первый взгляд в ДЛЛ недостаточно необходимых интерфейсов… и что вообще делает ДЛЛ, содержит набор методов???
4 — 21.02.05 — 12:34
Dll содержит одну единственную функцию, которая возвращает мне авторизованный SoapClient в Dll реализован всего один интерфейс AddInLib.IInitDone
Ошибку regsvr32 пишет такую которую я описал выше
1С при попытке создания COM объекта говорит, что недопустимая строка с указанием класса
5 — 21.02.05 — 12:43
Небось .Net сборку мучаешь?
6 — 21.02.05 — 12:46
(5) да, а что?
7 — 21.02.05 — 12:50
(6)
To register or unregister a .NET class with COM, you must run a command-line tool called the Assembly Registration Tool (Regasm.exe). Regasm.exe adds information about the class to the system registry so COM clients can use the .NET class transparently.
8 — 21.02.05 — 12:51
Во-во, все правильно, я над тем же бился… оказывается лечится все просто, тока нигде это не описано… Дело в том, что нельзя менять имя класса AddIn на что-либо другое, ето типа зарезервированный класс, по которому 1С обшается со внешними СОМ объектами, а у тебя он AddInLib, естественно 1С не знает такого класса, попробуй в ДЛЛ убрать Lib…
9 — 21.02.05 — 12:52
(8)Как говорится:
«Слышал звон, да не знаю, где он»
10 — 21.02.05 — 13:03
Точно в реестре все прописал, там наверное путь до сервера неверно указан?
11 — 21.02.05 — 13:11
(9) в реестре прописалась dll — все ОК, но при попытке в 1С создать com объект выдается ошибка:
{Форма.Форма(120)}: Ошибка при вызове конструктора (COMОбъект): Не удается найти указанный файл.
чего я сделал не так?
12 — 21.02.05 — 13:23
Я запустил regasm с ключом /regfile у меня создался файл Class.reg запустив его добавил данные в реестр, но выдается такая ошибка
13 — 21.02.05 — 13:35
А содержимое Class.reg проверил?
14 — 21.02.05 — 13:40
(to Gloom) В очередной раз говорю тебе огромное спасибо…разобрался с этой утилитой — теперь все работает
15 — 21.02.05 — 17:16
(to Gloom) Уважаемый Gloom, в продолжение темы возник такой вопрос:
а могу ли я зарегистрировать .net сброку на компе без .net framework?
16 — 21.02.05 — 17:19
(15)Зарегистрировать, в принципе, можно.
Вот только работать нифига не будет…
17 — 21.02.05 — 17:25
(16) это я уже заметил, что в реестре ветка появляется, но 1С говорит, что класс не зарегистрирован.
Т.е. на компе пользователя, где я захочу использовать этот COM объект обязательно нужно .net framework ставить? так чтоли получается? только вопрос — а зачем он пользователю нужен?
18 — 21.02.05 — 17:29
19 — 21.02.05 — 17:35
(18) ok…обязательно почитаю это
я сейчас вот эту статью читаю
http://starcat.nm.ru/vbnet/book/gl15.html#1<br>похоже, что нельзя на компе без framework зарегистрировать сборку .net так ведь?
20 — 21.02.05 — 17:46
(19).Net сборки могут выполняться только в среде выполнения .Net — CLR(Common Language Runtime).
В частности, если ты заглянешь в раздел InprocServer32 для своего COM-сервера(значение по умолчанию), то увидишь там не путь к самой dll(как обычно), а именно к .NET Runtime Execution Engine — mscoree.dll…
alexxey
21 — 21.02.05 — 17:49
(20) да…так и есть..
понятно, спасибо
Автор Golickoff, 03 июн 2015, 02:49
0 Пользователей и 1 гость просматривают эту тему.
Всем привет.
Есть самописная компонента для 1с, сделанная по технологии COM. С её подключением возникают проблемы и методы их решения, описанные на всевозможных сайтах, не помогают. Ошибки меняются с каждой новой попыткой устранить проблему. Приводить код взаимодействия с компонентой целиком нет смысла, т.к. ошибка возникает на второй строке:
ПодключитьВнешнююКомпоненту("COM.dll");
Компонента = Новый COMОбъект("COM.FID");
Ошибка следующая:
Цитировать{Документ.СтиркаПриём.Форма.ФормаДокумента.Форма(6)}: Ошибка при вызове конструктора (COMОбъект)
Компонента = Новый COMОбъект(«COM.FID»);
по причине:
-2147024894(0x80070002): Не удается найти указанный файл.
В интернете пишут, что это может быть вызвано некорректно прописанным путём к библиотеке в реестре, но путь указан верно. Компонента точно рабочая, т.к. уже проверялась ранее. Кто-нибудь может помочь с её подключением? И ещё, есть ли описание подключения подобных объектов в каких-либо курсах по 1С? Информация в ИТС кажется довольно неполной.
Версия 1С: 8.3, ОС: Windows 8.1
Правило поведения на форуме №6: Не следует пытаться привлечь внимание к своему сообщению … рассылкой персональных сообщений и/или электронных писем отдельным участникам форума с просьбой ответить в теме.
Компонента лежит в папке bin каталога 1С, поэтому я не прописываю путь к ней.
Добавлено: 03 июн 2015, 05:37
Возможно, эта информация будет полезной: компонента изменялась, после чего начались проблемы с её запуском. После череды неудачных попыток я решил остановиться на старой версии компоненты. Заново зарегистрировал её и понеслась.
Правило поведения на форуме №6: Не следует пытаться привлечь внимание к своему сообщению … рассылкой персональных сообщений и/или электронных писем отдельным участникам форума с просьбой ответить в теме.
В общем, если кто-то однажды попадёт в эту ветку через поисковик в поисках ответов, есть следующая проверенная инфа:
1) Если компонента отказывается работать через 1С, но вы на 100% уверены что она рабочая, запускайте её через jscript. Достоинства данного способа заключаются в том, что компоненту не нужно вызывать через 1С и можно сэкономить нервы. К недостаткам можно отнести необходимость умения работать с jscript.
2) Если первый способ не подходит, ставьте на нужную машину свою среду разработки компоненты (в моём случае это Visual Studio) и компилируйте компоненту непосредственно на этом компьютере. При компиляции она регистрируется автоматически и работать в 1С будет железобетонно. Если мне всё же удастся понять, как протекает процесс регистрации при компиляции библиотеки и нормально зарегистрировать её без установки компилятора, я отпишусь здесь позже… Или не отпишусь, если забуду. В любом случае, я постараюсь помочь, если кто-то напишет мне ЛС.
Правило поведения на форуме №6: Не следует пытаться привлечь внимание к своему сообщению … рассылкой персональных сообщений и/или электронных писем отдельным участникам форума с просьбой ответить в теме.
V0vchik 12 / 12 / 13 Регистрация: 06.03.2011 Сообщений: 166 |
||||
1 |
||||
1C 8.x 30.05.2015, 08:41. Показов 4782. Ответов 16 Метки нет (Все метки)
COM библиотека. Зарегистрировал с помощью regasm, все прошло успешно, в регистре она тоже есть, но когда пытаюсь использовать в 1с пишет: Почему так? Что я делаю не так?
0 |
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
30.05.2015, 08:41 |
Ответы с готовыми решениями: Ошибка об отсутствии MSVCP140D.dll, ucrtbased.dll, CONCRT140D.dll, VCRUNTIME140D.dll Кто может поделиться файлами ogg.dll, vorbis.dll и vorbisfile.dll — 32-х и 64-битными версиями? Затупил, скажите где взять libmysqld.dll, libmysqld50.dll, libmysqld51.dll Сборка Qt: отучение Qt от mingw10.dll, libgcc_s_dw2-1.dll и других Qt***.dll 16 |
Модератор 3724 / 2918 / 575 Регистрация: 10.03.2011 Сообщений: 11,491 Записей в блоге: 1 |
|
01.06.2015, 14:20 |
2 |
COMRFID.RFID Что это? Обычно COM реализовывается в dll
0 |
12 / 12 / 13 Регистрация: 06.03.2011 Сообщений: 166 |
|
02.06.2015, 10:03 [ТС] |
3 |
Dethmontt, COMRFID это сама библиотека, а RFID это класс. Сама библиотека зарегистрирована через regasm и в регистре я ее вижу, но вызвать функционал не могу. Добавлено через 3 часа 27 минут
0 |
Dethmontt Модератор 3724 / 2918 / 575 Регистрация: 10.03.2011 Сообщений: 11,491 Записей в блоге: 1 |
||||||||
03.06.2015, 00:22 |
4 |
|||||||
Для C# Добавлено через 23 минуты
0 |
V0vchik 12 / 12 / 13 Регистрация: 06.03.2011 Сообщений: 166 |
||||
03.06.2015, 06:58 [ТС] |
5 |
|||
Dethmontt, не работает. Добавил изображения. Код почти тотже что и у вас:
Миниатюры
0 |
12 / 12 / 13 Регистрация: 06.03.2011 Сообщений: 166 |
|
03.06.2015, 08:07 [ТС] |
6 |
Dethmontt, все с com разобрался, но счас другая проблема. На моем ноутбуке в 1с работает нормально, а на других компьютерах не вызывается. Пишет что класс не зарегистрирован. Хотя если я из JavaScript с помощью cscript все работает и в регистре она есть. В чем может быть дело?
0 |
Модератор 3724 / 2918 / 575 Регистрация: 10.03.2011 Сообщений: 11,491 Записей в блоге: 1 |
|
03.06.2015, 09:40 |
7 |
Зачем /tlb и /codebase при регистрации?
0 |
12 / 12 / 13 Регистрация: 06.03.2011 Сообщений: 166 |
|
03.06.2015, 09:49 [ТС] |
8 |
Dethmontt, тоже гдето это видел. codebase для регистрации в gac а tlb без понятия. Как правильно это делать? И после второй компиляции на моем ноутбуке тоже перестает работать, а если создать новый проект с абсолютно темже кодом то все работает. Как это все вообще работает никак не могу понять?
0 |
Модератор 3724 / 2918 / 575 Регистрация: 10.03.2011 Сообщений: 11,491 Записей в блоге: 1 |
|
03.06.2015, 09:56 |
9 |
Ну это особенности RegAsma Добавлено через 29 секунд https://msdn.microsoft.com/ru-… .110).aspx
0 |
12 / 12 / 13 Регистрация: 06.03.2011 Сообщений: 166 |
|
03.06.2015, 14:22 [ТС] |
10 |
Dethmontt, всеравно както непонятно почему эти dll не работают в 1с на других компьютерах. На другом компьютере зарегистрировал и через JS я могу вызывать эту библиотеку, но через 1с нет. В чем может быть дело? Может в 1с еще что-то нужно подкидывать чтоб она их подхватывала? Или куда-то именно в 1с
0 |
Модератор 3724 / 2918 / 575 Регистрация: 10.03.2011 Сообщений: 11,491 Записей в блоге: 1 |
|
03.06.2015, 14:25 |
11 |
Синт. помощник 1С COMОбъект (COMObject) Новый COMОбъект(<Имя>, <ИмяСервера>) <Имя> (обязательный) Тип: Строка. Тип: Строка. Создает COM-объект внешнего приложения. Word = Новый COMОбъект(«Word.Application»); V8 = Новый COMОбъект(«V8.Application»);
0 |
12 / 12 / 13 Регистрация: 06.03.2011 Сообщений: 166 |
|
04.06.2015, 06:35 [ТС] |
12 |
Dethmontt, все таже проблема. JS на другом компьютере вызывает эту библиотеку и без проблем ее использует а 1с говорит мне что она не зарегистрирована. ProgId использую тотже
0 |
V0vchik 12 / 12 / 13 Регистрация: 06.03.2011 Сообщений: 166 |
||||||||||||
04.06.2015, 07:57 [ТС] |
13 |
|||||||||||
Dethmontt,
Если вкратце то вызываем StartReading() -> MessageTags() -> StopReading() -> DisconnectFromReader()
В JS работает а в 1с нет. Добавил пару скриншотов работы. Вообще не понимаю что не так. Миниатюры
0 |
Dethmontt Модератор 3724 / 2918 / 575 Регистрация: 10.03.2011 Сообщений: 11,491 Записей в блоге: 1 |
||||
05.06.2015, 13:36 |
14 |
|||
Сообщение было отмечено V0vchik как решение РешениеV0vchik, база файловая? Добавлено через 6 минут Вот пример:
1 |
12 / 12 / 13 Регистрация: 06.03.2011 Сообщений: 166 |
|
06.06.2015, 08:27 [ТС] |
15 |
Dethmontt, кажется да. Добавлено через 9 минут
function Eprst() Какая интересная функция
0 |
12 / 12 / 13 Регистрация: 06.03.2011 Сообщений: 166 |
|
07.06.2015, 09:24 [ТС] |
16 |
Dethmontt, мне нужно вызывать RFID.GetAllTags() которые возвращает строку. Тут такой способ может не подойти. Можно ли в 1с из JS скрипта получить это значение?
0 |
Модератор 3724 / 2918 / 575 Регистрация: 10.03.2011 Сообщений: 11,491 Записей в блоге: 1 |
|
07.06.2015, 23:56 |
17 |
V0vchik, просто так не получить!
0 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
07.06.2015, 23:56 |
17 |
Содержание:
1. Что такое COM и COM объект 1С
COM – это объектная модель данных, выстроенная на Майкрософт компоненте, которая является независимой от платформы и распределённой объектной системой. Данная объектная модель служит для создания компонентов в двоичном программном обеспечении, при условии взаимодействия компонентов.
Главным, единым, условием языка программирования, который сможет обеспечить объектную модель COM сервера 1С, является возможность писать структуры указателей и ними вызывать различные функции.
Рассмотрим, что такое COM объект 1С – это некий объект, доступ к данным которого можно получить только при помощи функций, которые связаны. Набор из таких функций называют интерфейсом платформы 1С, а функции внутри наборов называются методами.
Помимо этого, в модели COM сервера 1С необходимо, чтобы для получения доступа к интерфейсным методам нужно было обращаться к указателям на интерфейсы платформы 1С.
2. Ошибка вызова конструктора COMОбъекта в 1С
Ошибка возникает в некоторых случаях, когда бывает, что во время установки системы 1С не регистрируется файл с названием «comcntr.dll», из-за чего работать с COM соединением сервера 1С нельзя ни при каких условиях.
В этом случае, при решении ошибки, важно учитывать нюансы при работе с операционной системой Windows (при этом, версия Windows должна быть выше XP, т.е. будем рассматривать выход для новых версий) и с администрированием системы 1С.
3. Устранение ошибки при вызове конструктора COMОбъект
Ошибка при вызове конструктора COMОбъект в 1С имеет следующее отображение: «2147221164 (0х80040154): Класс не зарегистрирован» либо «Ошибка при вызове конструктора COMОбъект: Недопустимая строка с указанием класса 1С»), вид ошибки представлен на скриншоте ниже:
Выполняем такие действия:
· Для начала, переходим в режим администратора и запускаем командную строку. Важно обратить внимание, что в командной строке должно быть написано: «C:windowssystem32» (либо 64 в конце, если это 64-х битная версия операционной системы). Получаем, что корректный путь для корневой строки должен выглядеть таким образом:
· Следующий шаг – это написать команду «regsvr32», она будет выглядеть так: «C:Program Files1cv88.3.ХХ.ХХХХbincomcntr.dll». Стоит отметить, что нужно прописать свой точный номер релиза платформы, а путь к самой библиотеке нужно брать в кавычки, конечный итог продемонстрирован ниже:
После этих действий, ошибка полностью устранена. В скриншотах-примерах была показана версия платформы 1С под номером «8.3.11.2867 х64».
Специалист компании «Кодерлайн»
Лев Туренко