Решения по использованию программ 1С. Техподдержка. Сопровождение. Услуги программистов.
При этом 1С не удается произвести подключение к информационной базе. Ошибка связана с регистрацией одной компоненты в системе.
На что обратить внимание
- Зарегистрируйте библиотеку comcntr вручную. При выполнении операции или открытия командной строки используйте запуск от имени администратора (полные права).
Например,
regsvr32 «C:\Program Files\1cv8\8.3.xx.xxxx\bin\comcntr.dll»
или
regsvr32 «C:\Program Files (x86)\1cv8\8.3.xx.xxxx\bin\comcntr.dll»
, где 8.3.xx.xxxx — версия целевой технологической платформы. Путь к каталогу «Program Files» зависит от разрядности вашей ОС и клиента 1С.
★ Возможно, потребуется удалить или отменить регистрацию старой версии, которая была ранее активна (запуск regsvr32 с ключом «/u» — отмена регистрации через DllUnregisterServer).
- Проверьте соответствие разрядности библиотеки и клиента 1С, который вызывает com-коннектор.
- Проверьте настройки в « Администрирование — Службы компонентов — Приложения COM+ — V83COMConnector
» с помощью оснастки comexp. Подробная регистрация коннектора — в заметке
(п. 3). - Перезагрузите ПК.
Бывает, что программа установки не может автоматически зарегистрировать новую DLL, поэтому приходится делать регистрацию comcntr из каталога bin установленной версии вручную.
Ошибка -2147221005(0x800401F3) возникает в 1С преимущественно при инициации синхронизации данных в ручном порядке, но может появиться и без видимых причин, во время фоновой работы. Количество случаев резко увеличивается после каждого обновления 1С Бухгалтерии. Чтобы обмен данными с базой заработал нормально, придется выполнить несколько действий вручную, так как без вмешательства извне здесь не обойтись.
Ошибка при вызове конструктора (COMObject) по причине: -2147221005(0x800401F3): Недопустимая строка с указанием класса
Причины
Спровоцировать ошибку могут разные неполадки и в тексте сообщения может быть указан виновник сбоя. Так бывает не всегда, порой дополнительной информации там не указано и приходится искать в ручном режиме.
Основные причины ошибки -2147221005(0x800401F3):
- отсутствует регистрация определенного СОМ-объекта, к которому сейчас происходит обращение;
- недостаточно прав для выполнения процедуры, хотя обычно в этом случае появляется другая ошибка;
- попытка запроса устаревшего или отсутствующего объекта.
Как исправить ошибку -2147221005(0x800401F3)?
Как следует из перечня причин ошибки, может быть несколько решений данного сбоя. И первым делом стоит проверить права пользователя, который запустил процедуру, спровоцировавшую ошибку. Возможно, нужно повысить его полномочия, расширив доступ к важным компонентам. К примеру, служба Агента сервера 1С запускается с технологической записью, но обмен данными требует использование файловой ИБ. В этом случае следует добавить разрешение NTFS для конкретного доступа. Это довольно банальное действие, поэтому расписывать не имеет смысла.
Регистрация объектов
Очень часто причиной сбоя становится незарегистрированная библиотека comcntr.dll, но не она одна. Чтобы провести регистрацию, нужно ввести в командную строку несколько команд: C:\Windows\SysWOW64\regsvr32 /u «c:\Program Files\1cv8\8.3.17.1851\bin\comcntr.dll»
и C:\Windows\SysWOW64\regsvr32 «c:\Program Files\1cv8\8.3.17.1851\bin\comcntr.dll»
. Если результат будет неожиданным, скорее всего в вашей системе вместо Program Files нужно использовать Program Files (x86).
Если в тексте сообщения есть указание проблемного COM-объекта, нужно поработать с ним. Например, у некоторых пользователей проблема в MSXML2. XMLHTTP.4.0
. Решением будет его регистрация или редактирование объекта. В конкретном случае нужно просто запустить редактор реестра, в поиск ввести MSXML2. XMLHTTP.4.0
и заменить значение с 4.0 на 6.0.
Отказ от устаревших объектов
Еще одна из наиболее вероятных проблем – обращение к устаревшему объекту. Если у вас где-то в коде есть строка COMConnector = Новый COMObject(«V82. COMConnector»);, то нужно заменить на актуальную версию V83. COMConnector. То же самое и с другими объектами, которые сейчас не поддерживаются.
Преимущественно одно из действий помогает устранить ошибку -2147221005(0x800401F3) в 1С. За редкими исключениями все должно работать стабильно. Мы же ожидаем, что вы напишете – удалось ли решить проблему и что было сделано.
Как правило, ошибка возникает при фоновом обмене данными между базами 1С или запуске синхронизации вручную. Что делать при появлении этой ошибки и куда смотреть.
Текст: « Ошибка при вызове конструктора (COMObject) по причине: -2147221005(0x800401F3): Недопустимая строка с указанием класса
».
Причины связаны с незарегистрированными в системе компонентами — comcntr.dll, ошибками доступа (недостаточно прав).
Решение — в регистрации библиотеки comcntr.dll из каталога программы для корректного вызова COMConnector.
Подготовительные действия
- отключите службу Агента сервера 1С:Предприятия и программы, возможно использующие регистрируемую DLL;
- если ранее использовалась библиотека устаревшей версии, удалите регистрацию comcntr.dll, запустив команду вызова regsvr32 с ключом /u.
Подходы к решению
1. Регистрация библиотеки comcntr.dll
В командной строке с правами Администратора выполните команду:
regsvr32 "<путь к каталогу установки 1С>\bin\comcntr.dll"
При удачном выполнении вы увидите сообщение: « Успешное выполнение DllRegisterServer в comcntr.dll
».
2. Переустановка платформы с внесением исправлений
Переустановите технологическую платформу 1С в режиме «Исправить» и отметьте COM-соединение.
3. Регистрация коннектора вручную
Регистрация приложения и коннектора вручную:
- запускаем консоль «Службы компонентов»;
- добавляем новый элемент, переходим «Компьютеры» — «Мой компьютер» — из списка выбираем «Приложения COM+»;
- выбираем «Создать» — «Приложение»;
- в Мастере установки выбираем второй вариант «Создать новое приложение», в поле «Введите имя нового приложения:» вводим « V83COMConnector
», «Способ активации» устанавливаем «Серверное приложение», нажимаем «Далее»; - выбираем учетную запись под которой запускается приложение, по умолчанию — «Текущий (вошедший в систему) пользователь»;
- на этапах «Добавление ролей приложения» и «Добавление пользователей для ролей» нажимаем «Далее», а затем «Готово».
В ветке только что созданного приложения переходим в подветку «Компоненты» и создаем компонент:
- в контекстном меню выбираем «Создать» — «Компонент»;
- кликаем по первому варианту «Установка новых компонентов»;
- в открывшемся диалоге выбираем необходимый файл comcntr.dll и нажимаем «Открыть»;
- нажимаем «Далее» и «Готово».
Обратите внимание: после установки измените свойства объекта. Для этого переходим к ветке V83COMConnector:
- открываем свойства созданного компонента, переходим в ветку V83COMConnector — «Свойства»;
- на вкладке «Безопасность», в «Авторизация» снимаем флаг «Принудительная проверка доступа для приложений»;
- в «Политика программных ограничений» устанавливаем флаг «Применить политику программных ограничений» и выбираем «Уровень ограничений:» — «Неограниченный»;
- нажимаем «Применить» — «ОК».
Полная версия со снимками экранов — в статье на Дзен-канале
.
Класс V83COMConnector зарегистрирован и доступен для подключения к информационным базам. Обмен данными между базами восстановлен, и фоновый процесс завершается без ошибок.
5.
sssss_aaaaa_2011
Сейчас в теме
( 1
) smaximaa, то, что такая ошибка выскакивает и при незарегистрированности comcntr.dll не говорит о том, что дело именно в ней. Дело в отсутствии регистрации СОМ-объекта. Того объекта, который пытаешься использовать. Раз ошибка выскакивает на строке MSXML = Новый COMОбъект(“MSXML2. XMLHTTP.4.0”);, то речь, надо полагать, идет об отсутствии регистрации MSXML2. XMLHTTP.4.0
Дальше разжевывать?
2.
Boosted
Сейчас в теме
система файловая, клиент серверная?
компонета, о которой вы пишите, устанавливается и регистируется по умолчанию при установке платформы.
Возможно ошибка прав на ее использование у пользователя, под которым идет обращение к ней.
3.
jokereinherjar
Сейчас в теме
Файловая система. Тоже так думал, но при регистрации компоненты ошибок не было. Обычно если недостаточно прав, то соответствующая ошибка выходит.
4.
Boosted
Сейчас в теме
а если запустиь 1С под администратором?
8.
jokereinherjar
Сейчас в теме
( 4
) Boosted, Пробовал но не вышло
( 5
) sssss_aaaaa_2011, Да. То есть надо зарегистрировать MSXML2. XMLHTTP.4.0?
6.
Boosted
Сейчас в теме
подскажите, пожалуйста, где в windows можно получить информацию о зарегистированных COM объектах?
7.
sssss_aaaaa_2011
Сейчас в теме
Запускаешь regedit, в нем жмешь Ctrl_F, вводишь MSXML2. XMLHTTP.4.0 и жмешь Enter.
10.
Boosted
Сейчас в теме
( 7
) sssss_aaaaa_2011, спассибо.
9.
Alex_E
Сейчас в теме
11.
jokereinherjar
Сейчас в теме
( 9
) Alex_E, Спасибо, буду читать.
12.
sssss_aaaaa_2011
Сейчас в теме
( 9
) Alex_E, наврят ли поможет ибо совершенно про другое, хоть там тоже упоминается аббревиатура COM, которая относится далеееееееко не только к 1С.
13.
jokereinherjar
Сейчас в теме
Решил проблему, заменил в XMLHTTP.4.0 на 6.0.
Спасибо sssss_aaaaa_2011 за подсказку в реестре поискать компоненту.
После обновления платформы 1С при синхронизации данных может появляться сообщение об ошибке -2147221005(0x800401F3). Данная ошибка обычно сопровождается строкой «Недопустимая строка с указанием класса» и связана с неверным кодом программы, не зарегистрированными в системе компонентами и другими релевантными факторами.
Например, во время синхронизации возникает ошибка Обмен данными. ОбменЗарплата3Бухгалтерия3. Отправка данных
со следующим содержимом:
Не удалось подключится к другой программе: -2147221005(0x800401F3): Недопустимая строка с указанием класса {ОбщийМодуль. ОбщегоНазначенияСлужебныйКлиентСервер. Модуль(393)}: COMConnector = Новый COMObject(ОбщегоНазначенияКлиентСервер. ИмяCOMСоединителя()); // "V83. COMConnector" {ОбщийМодуль. ОбщегоНазначения. Модуль(2830)}: Возврат ОбщегоНазначенияСлужебныйКлиентСервер. УстановитьВнешнееСоединениеСБазой(Параметры, ПодключениеНедоступно, КраткоеОписаниеОшибки); {ОбщийМодуль. ОбменДаннымиСервер. Модуль(12564)}: ЗаполнитьПараметрыПодключенияВнешнегоСоединения(СтруктураНастроек)); {ОбщийМодуль. ОбменДаннымиПовтИсп. Модуль(1185)}: РегистрыСведений. НастройкиТранспортаОбменаДанными. НастройкиТранспорта( {ОбщийМодуль. ОбменДаннымиПовтИсп. Модуль(1164)}: Результат = ВнешнееСоединениеДляУзлаИнформационнойБазы(УзелИнформационнойБазы); {ОбщийМодуль. ОбменДаннымиСервер. Модуль(6701)}: ВнешнееСоединение = ОбменДаннымиПовтИсп. ПолучитьВнешнееСоединениеДляУзлаИнформационнойБазы( {ОбщийМодуль. ОбменДаннымиСервер. Модуль(3952)}: ВыполнитьДействиеОбменаДляУзлаИнформационнойБазыПоВнешнемуСоединению(Отказ, {Обработка. ВыполнениеОбменаДанными. МодульМенеджера}: ОбменДаннымиСервер. ВыполнитьОбменДаннымиДляУзлаИнформационнойБазы( {}:Обработки. ВыполнениеОбменаДанными. ВыполнитьЗапускОбменаДанными(Параметры[0],Параметры[1]) {ОбщийМодуль. ОбщегоНазначения. Модуль(5113)}: Выполнить ИмяМетода + "(" + ПараметрыСтрока + ")"; {ОбщийМодуль. ДлительныеОперации. Модуль(1036)}: ОбщегоНазначения. ВыполнитьМетодКонфигурации(ИмяПроцедуры, ПараметрыВызова); {ОбщийМодуль. ДлительныеОперации. Модуль(1026)}: ВызватьПроцедуру(ВсеПараметры. ИмяПроцедуры, ВсеПараметры. ПараметрыПроцедуры); по причине: -2147221005(0x800401F3): Недопустимая строка с указанием класса

Причины возникновения ошибки -2147221005(0x800401F3)
Данная ошибка относится к регулярно встречающимся ошибкам 1С, и фиксируется у многих пользователей. Единственного и эффективного рецепта её решения не существует, так как она может иметь уникальную основу, и вызывается особенностями программного кода в конкретной системе.
Тем не менее к числу наиболее популярных причин ошибки -2147221005(0x800401F3) относятся следующие:
- Пользователь использует устаревшую конфигурацию 1С;
- Наличие некорректного кода программы (к примеру, обращение к устаревшему «V82. COMConnector» вместо «V83. COMConnector»);
- В системе не зарегистрирована библиотека comcntr.dll;
- У пользователя, запускающего определённый комплекс 1С, нет достаточных прав для работы с ним (к примеру, запуск выполняется из гостевой учётной записи, вместо учётной записи администратора).
Обновление конфигурации до последней версии
Вопрос обновления конфигурации 1С
на примере «1С:Бухгалтерия 3.0» я рассматривал ранее. Поэтому здесь не имеет смысла описывать данный процесс.
Запускайте 1С с правами администратора
Убедитесь, что вы запускаете систему под учётной записью администратора, а не ограниченного в правах «Гостя» или аналога.
Измените код программы
В некоторых случаях код программы может устареть и не соответствовать текущей версии 1С. Эффективным решением ошибки -2147221005(0x800401F3) является замена строки кода:
COMConnector = Новый COMObject(«V82.COMConnector»);
COMConnector = Новый COMObject(«V83.COMConnector»);
После указанной замены проблема может быть решена.
Регистрация в системе компоненты comcntr.dll
Довольно часто ошибка возникает после обновления платформы, когда во время установки новой версии не регистрируется компонента comcntr.dll
.
Для регистрации компоненты вручную необходимо выполнить в PowerShell от имени администратора следующие команды:
C:\Windows\SysWOW64\regsvr32 /u "c:\Program Files\1cv8\8.3.17.1851\bin\comcntr.dll"
или C:\Windows\SysWOW64\regsvr32 /u "c:\Program Files (x86)\1cv8\8.3.17.1851\bin\comcntr.dll"
C:\Windows\SysWOW64\regsvr32 "c:\Program Files\1cv8\8.3.17.1851\bin\comcntr.dll"
или C:\Windows\SysWOW64\regsvr32 "c:\Program Files (x86)\1cv8\8.3.17.1851\bin\comcntr.dll"
«8.3.17.1851» вам необходимо заменить на вашу версию платформы 1С.

После регистрации библиотеки скорей всего синхронизация заработает.

1.
Aitbay
Сейчас в теме
еще нужно добавить, если настройка делается на сервере 1с-Предприятие и агент 1с работает от доменного пользователя, то лучше переключить у службы галку на вход “С системной учетной записью”, победить с пользователем домена для использования в паре агент + comcntr с танцами и бубном не получилось, в итоге работаем с “системной учетной записью”
2.
GreenDragon
Сейчас в теме
( 1
) COM на сервере? Вы хотите, чтобы вас сожгли на костре как еретика? Никогда так не делайте.
Цитата из документации:
При работе на сервере «1С:Предприятия» допустимо использовать только компоненты, разработанные по технологии Native API, которые могут быть как отдельными файлами, так и упакованными в специальные zip-архивы.
https://its.1c.ru/db/v838doc/bookmark/dev/TI000001197
4.
Aitbay
Сейчас в теме
( 2
) Если сильно нужно тогда можно) по сути если компания 1с не рекомендует использовать COM на сервере? с чего же они до сих свою же компоненту не сделали NativeApi
3.
Famza
Сейчас в теме
5.
TerveRus
Сейчас в теме
А если и это не поможет, то сначала надо удалить регистрацию с ключом /u
regsvr32 /u “c:\Program Files\1cv8\8.3.13.1644\bin\comcntr.dll”
а потом регистрируете без “/u”, как обычно.
6.
slavik_s
Сейчас в теме
regsvr32 /u “c:\Program Files\1cv8\8.3.13.1644\bin\comcntr.dll”
Не помогает ни удаление ни регистрация. Пишет что зарегистрирована успешно но дальше Ошибка при вызове конструктора (COMObject): -2147221005(0x800401F3): Недопустимая строка с указанием класса
7.
TerveRus
Сейчас в теме
( 6
) пробовали запускать regsvr32 из “c:\windows\syswow64”?
8.
texnic79
Сейчас в теме
( 6
). Тоже уже все перепробовал. Решили тогда этот вопрос?
После проведенных манипуляций тестовая (файловая) база работает, клиент-серверная вс равно не хочет
11.
natterru
Сейчас в теме
И чем у Вас это закончилось?
12.
cryptonit
Сейчас в теме
13.
cryptonit
Сейчас в теме
( 12
) Также установите на клиенте
17.
Vancy43
Сейчас в теме
( 12
) Спасибо огромное! ВСе получилось. Вечер убила на регистрацию. А тут 3 секунды и готово. Плюсую!
14.
flyDrag
Сейчас в теме
15.
mezel1
Сейчас в теме
Добрый ночер!
Спасибо большое автору статьи!
Святой человек.
При вечно “некогда” нашего программиста, сама исправила ошибку.
Дело 2 минут. Пишите чаще такие полезные, а главное актуальные решения для проблем.
COMОбъект: -2147221005(0x800401F3): Недопустимая строка с указанием класса
☑
0
Mikhail Volkov
✎
Перестало работать OLE-соединение “V83. Application”: Ошибка при вызове конструктора (COMОбъект): -2147221005(0x800401F3): Недопустимая строка с указанием класса. Тема заезженная, везде предлагают выполнить перерегистрацию платформы. Стоит 8.3.10.2466 х64, но клиентская часть 32-разрядная, делаю (под админом): regsvr32 “c:\Program Files\1cv8\8.3.10.2466\bin\comcntr.dll” (или надо regsvr32 “c:\Program Files (x86)\1cv8\8.3.10.2466\bin\comcntr.dll”?). Дальше надо сервер перезагрузить, или необязательно?
Читал статьи Ошибка V82. COMConnector на сервере 64. Решение проблемы ( http://catalog.mista.ru/1c/articles/197627/
) и Решение проблемы «Недопустимая строка
с указанием класса ( https://efsaver.ru/docs/reshenie-problemy-nedopustimaya-stroka-s-ukazaniem-klassa.html
), кое-что изменил/добавил в приложение COM+ V8COMConnector. Чтобы изменения вступили в силу, как перезапустить?
1
Mikhail Volkov
✎
2
Kigo_Kigo
✎
не помню что конкретно сделал, но статья с инфостарта не помогла, по моему привел разрядность к одному знаменателю
3
Kigo_Kigo
✎
сижу уже с начала создания темы вспоминаю как эту бяку победил, хоть убей не помню, помню точно что по статье делал, не вылечилось и сервант ребутил и клиента
4
ДенисЧ
✎
Взять regsvr32 не из system, а из SysWOW ?
5
Mikhail Volkov
✎
6
ДенисЧ
✎
Если SysWOW, то (x86)
И наоборот
7
Kigo_Kigo
✎
как ты пытаешься вызвать х64 ком объект с х32 разрядного клиента? ответ, никак, регистрируй на клиенте х32 компненту
8
Mikhail Volkov
✎
Чтоб в силу вступило, что сделать?
9
Kigo_Kigo
✎
Ничего, так должно все работать, у тебя из сабжа не создается ком объект, потому что он ее не видит, а точнее видит другой разрядности, это не проблема подключений к базе через ком(сервер х64,х32, не важно), это проблема создания объекта как такого
10
Kassern
✎
(0) делай обертку через службы компонентов для библиотеки comcntr.dll
11
Mikhail Volkov
✎
Дык, как правильно ее регистрировать?
Вроде все сделано. Описание: 1CV83 COM Connector Class, DLL: C:\Program Files\1cv8\8.3.10.2466\bin\comcntr.dll
12
Kigo_Kigo
✎
а у тебя точно регистрация проходит?
13
Kigo_Kigo
✎
И так, делает reg.bat файл , вставляем туда строку
C:\Windows\System32\regsvr32.exe “C:\Program Files\1cv8\8.3.15.1830\bin\comcntr.dll”
pause
сохраняем, запускаем от имени администратора, пробуй, скрин о регистрации сюда
14
Kigo_Kigo
✎
Пути поменять на свои, лучше полные
15
Kigo_Kigo
✎
для х32 путь в C:\Program Files (x86)\
16
arsik
✎
17
Mikhail Volkov
✎
18
Kigo_Kigo
✎
1С конечно надо перезапустить
19
Mikhail Volkov
✎
Не помогло.
20
ZDenis
✎
У тебя com соединение на сервере ведь создается, причем тут клиентская часть. Вот на сервере и регистрируй dll. Причем, если сервер 64х, то и dll нужно соответствующую. Сперва лучше отмени уже сделанную регистрацию, чтобы в реестре путаницы не было.
21
Мимохожий Однако
✎
В БСП и типовых конфигурациях есть функция ЗарегистрироватьCOMСоединитель()
22
TormozIT
✎
О да тут похоже все не понимают, что COMСоединитель и OLEAutomation (V8*. Application) – разные вещи и имеют существенные отличия в отношении контроля совместимости версий платформы и способа регистрации.
Кто хочет прокачать теорию, читайте тут все разжевано http://catalog.mista.ru/1c/articles/387577/
Кому нужно решение, в уже дали ссылки – там все сделано очень универсально (как и весь ИР). Картинка на странице описания правда старовата уже. Запускать эту приблуду надо на том компьютере, где будет создаваться COM-объект (COM-клиент).
23
Mikhail Volkov
✎
24
Mikhail Volkov
✎
Где, в какой ветке реестра Windows прописывается регистрация платформы?
25
TormozIT
✎
Если ты пробовал все, что я рекомендовал, то покажи скриншот с COM классами в ИР.
26
Mikhail Volkov
✎
Как это сделать? Это с помощью инструментов ? У меня их нет.
27
TormozIT
✎
Почему у тебя их нет? Что ты делал, чтобы они у тебя появились?
28
Mikhail Volkov
✎
29
TormozIT
✎
Поздравляю. Ты сделал первый шаг в правильном направлении – осознал, что “стоит поставить”. Представляй, что я крепко держу тебя за руку, и потому делай уверенно следующий шаг.
30
XLife
✎
“C:\Program Files (x86)\1cv8\8.3.10.2466\bin\1cv8.exe” /regserver
31
Mikhail Volkov
✎
Не понял, что скачивать: ИНСТРУМЕНТЫ РАЗРАБОТЧИКА ПОРТАТИВНЫЕ 1С 8.2+ V5.67P или 1С 8.3 V5.67E (1С 8.2 смущает)?
В командной строке (под админом)?
32
XLife
✎
33
Мимохожий Однако
✎
не смущайся. Скачивай
34
TormozIT
✎
Там не 8.2, а 8.2+. Качай портативные
35
Mikhail Volkov
✎
36
TormozIT
✎
Только это не из-за , а из-за
. Ну хоть кто то здесь знает разницу из
.
37
Mikhail Volkov
✎
Все же, в какой ветке реестра Windows прописывается регистрация платформы?
Статью в
читал, но по другому поводу: Альфа-Авто обычно ведет Com-обмены с УПП/КА1. Когда поддержка КА1 кончилась, создали базу ERP/КА2, но она потребовала более высокую версию платформы. С OLE-обменом возникли проблемы: https://i.ibb.co/pdrH9Wy/COM.jpg
. Меняю версию зарегистрированной платформы, тогда нормально. Даже функции написал:
// Определяет версию подключаемого приложения, при не соответствии требуемой переключает ее для OLE
// для пользователей с административными правами
Функция ВерсияПодключаемогоПриложения(СтрокаПодключения) Экспорт
СисИнфо = Новый СистемнаяИнформация;
ТекущаяВерсия = СисИнфо. ВерсияПриложения;
Если Найти(ТекущаяВерсия, “8.3”) = 0 Тогда
Возврат ТекущаяВерсия;
КонецЕсли;
ТребуемаяВерсия = ?(ПодключенаВысокаяВерсия(СтрокаПодключения), ВысокаяВерсия, ПрежняяВерсия);
х86 = Не ПодключенаВысокаяВерсия(СтрокаПодключения);
WshShell = Новый COMОбъект(“WScript. Shell”); Ключ = “”;
Значение = ЗначениеКлючаЗарегистрированнойВерсииV83Application(WshShell, Ключ);
// Перключение версии OLE
// Если Не ПустаяСтрока(Значение) И Найти(Значение, ТребуемаяВерсия) = 0 Тогда // ТекущаяВерсия <> ТребуемаяВерсия
// Значение = СтрЗаменить(Значение, “Program Files” + ?(х86, “”, ” (x86)”), “Program Files” + ?(х86, ” (x86)”, “”));
// Значение = СтрЗаменить(Значение, ТекущаяВерсия, ТребуемаяВерсия);
// WshShell. RegWrite(Ключ, Значение);
// ЗапуститьПриложение(“taskkill.exe /f /im dllhost.exe”,, Истина);
// Сообщить(“Переключили версию платформы на ” + ТребуемаяВерсия, СтатусСообщения. Информация);
// КонецЕсли;
Возврат ?(ПустаяСтрока(Значение), ТекущаяВерсия, ТребуемаяВерсия);
КонецФункции // ВерсияПодключаемогоПриложения()
// Переключает на старую версию платформы для OLE-соединения, если она переключена на новую версию
// для пользователей с административными правами
Процедура ЗвершитьПодключениеOLE() Экспорт
WshShell = Новый COMОбъект(“WScript. Shell”); Ключ = “”;
Значение = ЗначениеКлючаЗарегистрированнойВерсииV83Application(WshShell, Ключ);
Если ПустаяСтрока(Значение) Или Найти(Значение, “Program Files (x86)\1cv8\” + ПрежняяВерсия) > 0 Тогда
Возврат;
КонецЕсли;
WshShell. RegWrite(Ключ, “C:\Program Files (x86)\1cv8\” + ПрежняяВерсия + “\bin\1cv8.exe”);
ЗапуститьПриложение(“taskkill.exe /f /im dllhost.exe”,, Истина);
КонецПроцедуры // ЗвершитьПодключениеOLE()
Но это только для пользователей с административными правами, пришлось от них отказаться. А метод COM (не OLE) нормально работает. Нашел на http://catalog.mista.ru/public/1042208/
метод открытия объекта по ссылке в другой базе (подобно OLE), написал:
// Открытие объекта по ссылке в базе ERP/КА2, работающей на более высокой версии платформы
//
Процедура ОткрытьОбъектВБазеВысокойВерсии(Ссылка) Экспорт
Если обЗначениеНеЗаполнено(Ссылка) Тогда
Предупреждение(“Объект в ” + БазаОрганизации(ОрганизацияТекущегоПодключенияКА()) + “не найден!”, 60);
Возврат;
КонецЕсли;
ИмяСервера = Сред(ОбъектКА. СтрокаСоединенияИнформационнойБазы(), 7, Найти(ОбъектКА. СтрокаСоединенияИнформационнойБазы(), “;Ref=”) – 8); // “andromeda:1641”;
ИмяБазы = Сред(ОбъектКА. СтрокаСоединенияИнформационнойБазы(), Найти(ОбъектКА. СтрокаСоединенияИнформационнойБазы(), “;Ref=”) + 6, СтрДлина(ОбъектКА. СтрокаСоединенияИнформационнойБазы()) – Найти(ОбъектКА. СтрокаСоединенияИнформационнойБазы(), “;Ref=”) – 7); // “PatrERP”;
Если Не БазаКАОткрытаПользователем() Тогда
Предупреждение(“База ‘” + ИмяБазы + “‘ не открыта под пользователем ‘” + СокрЛП(ПараметрыСеанса. Пользователь) + “‘”, 60);
Возврат;
КонецЕсли;
Объект = Ссылка. ПолучитьОбъект();
ТипОбъекта = СокрЛП(Объект. Метаданные(). ПолноеИмя());
GUID = ОбъектКА. XMLСтрока(Ссылка. УникальныйИдентификатор());
НавигационныйGUID = Сред(GUID, 20 ,4) + Сред(GUID, 25, 12) + Сред(GUID, 15, 4) + Сред(GUID, 10, 4) + Сред(GUID, 1, 8);
ПутьОбъекта = “e1cib/data/” + ТипОбъекта + “?ref=” + НавигационныйGUID;
НазваниеОкна = СокрЛП(ОбъектКА. Константы. ЗаголовокСистемы. Получить()); // “КА2 ИП Патрушева Г. М.”;
НазваниеОкна = СтрЗаменить(НазваниеОкна, “”””, “”””””);
НазваниеОкна = СтрЗаменить(НазваниеОкна, ” “, “”” “””);
СерверБаза = ИмяСервера + “\” + ИмяБазы;
СерверБаза = “/S””” “””” + СерверБаза + “””” “””/URL””” “””” + ПутьОбъекта; // после СерверБаза? ” /N””Администратор”” /P””2001221″
ПутьКФайлу = “\\corp.akit\workspace$\1c\1с_Архивы\”;
ПолныйПутьКФайлу = ПутьКФайлу + “ОткрытьСсылкуВДругойБазе.exe”;
ПолныйПутьОткрытияОбъекта = “”””””; // вроде не нужно СтрЗаменить(“c:\Program Files\1cv8\common\1cestart.exe ENTERPRISE ” + СерверБаза,” “,””” “””);
Файл = Новый Файл(ПолныйПутьКФайлу);
Если Не Файл. Существует() Тогда
Сообщить(“Файл: ‘” + ПолныйПутьКФайлу + “‘ не существует.”, СтатусСообщения. Информация);
Возврат;
КонецЕсли;
Приложение = ПолныйПутьКФайлу
+ ” ” + НазваниеОкна
+ ” ” + ПутьОбъекта
+ ” ” + СерверБаза
+ ” ” + ПолныйПутьОткрытияОбъекта;
// Сообщить(Приложение, СтатусСообщения. Информация);
ЗапуститьПриложение(Приложение);
КонецПроцедуры // ОткрытьОбъектВБазеВысокойВерсии()
38
acht
✎
> ПолныйПутьКФайлу = ПутьКФайлу + “ОткрытьСсылкуВДругойБазе.exe”;
/URL <адрес>
— указывает необходимость перехода по ссылке. Поддерживаются ссылки формата e1c:
Если указана внешняя ссылка – выполняется поиск запущенного клиентского приложения с той же строкой соединения, которая указана в параметре. В найденном клиентском приложении не должно быть открыто модальное или блокирующее окно. После этого выполняется попытка перехода по локальной ссылке из исходной навигационной ссылки и активизируется основное окно приложения. В случае неудачи клиентское приложение продолжает работу. Если исходная навигационная ссылка не содержит локальной ссылки (содержит только адрес информационной базы), то попытка перехода не выполняется, активируется основное окно найденного клиентского приложения.
Если подходящего клиентского приложения не найдено, строка соединения определяется из параметра командной строки /URL.
Если указана локальная ссылка – клиентское приложение запускается в общем порядке. После запуска выполнится попытка перехода по переданной локальной ссылке.
Для ссылок формата http(s) всегда запускается (или находится активный) тонкий клиент.
39
Mikhail Volkov
✎
Что-то не понял к чему это, о чем?
40
Mikhail Volkov
✎
Не сразу заметил эту (0) ошибку, потому что в ЖР в отборе на вкладке Данные отмечаю лишь объекты заслуживающие внимание (например, по кассе). Тогда ошибки по другим объектам не видны. Можно как-то настроить отбор, чтобы события с ошибками все отображались. А события Информация – только отмеченные на вкладке Данные?
41
acht
✎
ОткрытьСсылкуВДругойБазе.exe не нужен
42
Mikhail Volkov
✎
43
Mikhail Volkov
✎
На счет ЖР , смотреть либо ошибки, либо отмеченные объекты? Вместе никак?
( 1
)Платформа одна и та же для ЗУП 2.5 и ЗУП 3?
12.
eksdak
Сейчас в теме
( 5
) Да в том и дело платформа одна. 8.3.10.2522
13.
ben19791010
Сейчас в теме
Регистрировал библиотеку Regsvr32
я тогда стесняюсь спросить где Вы регили библиотэку?
2.
YannikAlx
Сейчас в теме
3.
eksdak
Сейчас в теме
( 2
) по данной теме действительно много написано. Я уже сделал все что вычитал. Добавлял сам компоненту. Возможно я что-то делаю не так. Прошу подсказать.
4.
Denis_CFO
Сейчас в теме
( 3
) код (часть кода, где инициализация происходит) покажи.
11.
eksdak
Сейчас в теме
( 4
) НовыйПодключенныйОбъект = Новый COMОбъект(“V83. COMConnector”);
Попытка
Enterprise = НовыйПодключенныйОбъект. Connect(“Srvr=” + ОсновнойСервер1С + “;Ref=upp_vc;Usr=robot;Pwd=123;”);
Исключение
Сообщить(“Ошибка открытия базы 1С УПП!”, СтатусСообщения. ОченьВажное);
Возврат;
КонецПопытки;
15.
Denis_CFO
Сейчас в теме
“Srvr=” + ОсновнойСервер1С +
у пользователя, под которым 1с сервер крутится, права на доступ к компоненте есть?
17.
eksdak
Сейчас в теме
(
15
) с Зуп 2.5 подключается спокойно и все данные подтягивает под тем же пользователем запускаю Зуп 3 на управляемых формах не отрабатывает код.
18.
Denis_CFO
Сейчас в теме
( 17
) значение константы ОсновнойСервер1С из ЗУП 2.5 скопируй в ЗУП 3.0
19.
eksdak
Сейчас в теме
( 18
)Я заполнил константу. Проблема возникает не в момент выполнения метода Connect, а в момент выполнения конструктора
“Новый COMОбъект(“V83. COMConnector”)”
20.
Denis_CFO
Сейчас в теме
( 19
) сервер 1с “сколькибитный”?
22.
eksdak
Сейчас в теме
(
20
) если я правильно понимаю 64 разрядная операционная система, а сервер 1с написано x86-64. Установлена 1с в папке C:\Program Files
6.
ben19791010
Сейчас в теме
возможно про разные компоненты речь 1с82applicaton 1с83applicaton
это можно в настроке DCOM глянуть
7.
YannikAlx
Сейчас в теме
Картинку покажи с вручную добавленными компонентами
14.
eksdak
Сейчас в теме
23.
YannikAlx
Сейчас в теме
Если у тебя вот так – значит – его надо пересоздавать
24.
eksdak
Сейчас в теме
28.
YannikAlx
Сейчас в теме
Рецепт – установи 32 битную платформу если она не стоит.
Удали свой компонент и создай заново (изменить его параметры не получится)
И измени вариант comcntr из другой папки C:\Program Files (x86)\1cv8\bin\comcntr.dll
8.
YannikAlx
Сейчас в теме
9.
Denis_CFO
Сейчас в теме
флуд,конечно, но НЕ + НЕ = Истина 🙂
ТС-у: Проблему в коде покажи.
флуд,конечно, но НЕ + НЕ = Истина 🙂
Там между НЕ и НЕ ещё один глагол ПОМОГАТЬ.
Если бы было НЕ можем НЕ помогать, то вы правы.
16.
eksdak
Сейчас в теме
( 8
) ситуация простая. вот два скриншота. На одном сервере, одна версия платформы. В зуп 2.5 отрабатывает конструктор а в Зуп 3 нет.
25.
YannikAlx
Сейчас в теме
26.
eksdak
Сейчас в теме
( 25
) а что влияет на мою проблему?
29.
YannikAlx
Сейчас в теме
( 26
) Влияет то что ты зарегистрировал comcntr из 64х платформы
27.
ben19791010
Сейчас в теме
грохни платформу-переставь-перерегь компоненту и 1ым попробуй 3.1
30.
eksdak
Сейчас в теме
Я что-то явно не понимаю. &НаСервере у меня в ЗУП 3 не запускается создание “Новый ComОбъект”.
А вот решил проверить запустится ли &НаКлиенте и как видите он создал объект. Хотя в свойствах написано что выполняется и на “сервере”.
Глаза бы мое это не видели.
32.
YannikAlx
Сейчас в теме
31.
ben19791010
Сейчас в теме
34.
eksdak
Сейчас в теме
Все проблема Решена.
Все же у меня 1с установлена 64 разрядная а библиотека зарегистрирована была 32.
Ответ:
“Если фоновый процесс COM-соединения оканчивается ошибкой
, то нужно зарегистрировать библиотеку ComConnector comcntr.dll из каталога программы.
В 32-битной версии сервера проблема решилась бы командой
regsvr32 «C:\Program Files (x86)\1cv8\8.3.5.1119\bin\comcntr.dll»
но в 64-битной версии команда будет примерно такой * :
C:\Windows\SysWOW64\regsvr32 «C:\Program Files (x86)\1cv8\8.3.5.1119\bin\comcntr.dll»
Затем перезайдите в 1С Предприятие и попробуйте установить COM-соединение снова.
* если команда регистрации не помогла, то нужно предварительно удалить регистрацию библиотеки comcntr.dll, запустив ту же команду вызова regsvr32 с ключом /u
** если и это не помогло, попробуйте переустановить платформу 1С в режиме Исправить, а затем зарегистрируйте библиотеку, как написано выше ”
{Т.е. я выполнил отмену регистрации в cmd: regsvr32 /u “.путь к dll”
и зарегистрировал заново уже C:\Windows\SysWOW64\regsvr32 «C:\Program Files (x86)\1cv8\____\bin\comcntr.dll }
35.
Denis_CFO
Сейчас в теме
( 34
) спасибо всем за советы, я решил сам. 🙂
36.
Xatori111
Сейчас в теме
( 34
) Недавно была примерно такая же ситуация в файловой базе ЗУП 3.1 , решилось через удаление.
39.
rule6
Сейчас в теме
( 34
) Помогла отмена регистрации и регистрация заново.
C:\Windows\SysWOW64>regsvr32.exe /u “C:\Program Files\1cv8\8.3.13.1644\bin\comcntr.dll”
C:\Windows\SysWOW64>regsvr32.exe “C:\Program Files\1cv8\8.3.13.1644\bin\comcntr.dll”
42.
mikl79
Сейчас в теме
Помогла отмена регистрации и регистрация заново
спасибо, помогло
сначала тоже подумал, что придётся устанавливать 32 разрядную платформу, но заработало полностью на 64 разрядной!
40.
improg
Сейчас в теме
( 34
) Да решение помогло спасибо.
37.
wolder
Сейчас в теме
Да действительно!
Хочу описать свой пример:
Имею WinServer 2012 R2 Standart x64
Имею 1С: Сервер 1С лицензия платформа 8.3.13.1513 х64 и базы Postgree 9.6.7
Для конфигурарации УВС 2.0 (Управление ветеринарными сертификатами) встроенный обмен с учетной системой, у нас УТ 10.3.
Так вот после всех попыток зарегить comcntr.dll в папке платформы х64, и да же установкой вручную компоненты в консоле Службы компонеты, соединение так и не открывалось.
Только после того, как я помимо платформы 1С для х64 ещё установил платформу для х32, того же номера (без сервера конечно), я зарегал comcntr.dll из платформы х32, и компоненту добавил из платформы х32, у меня стало подключаться! ! Хотя работает сервак 1С и платформа на х64.
Вывод:
компонента comcntr.dll их платформы x64 не рабочая! !
38.
wolder
Сейчас в теме
Причем для тех кто не понял.
Для файловой версии библиотека comcntr.dll регистрируется на локальном компе откуда запускается 1С.
Для клиент-серверных баз: библиотека регистрируется только на сервере1с, причем не важно как вы будете подключаться к этой базе, тонким, толстым клиентом с другого ПК или RDP, все равно регистрацию библиотеки нужно выполнять под админом на сервере, и не забудьте в права доступа к компоненте прописать пользователя под которым запускается сервер1с как служба.
права доступа к компоненте
Можно подробнее, где выставить права к чему?
!